内网渗透指南

月影
2023-09-08 / 2 评论 / 33 阅读 / 正在检测是否收录...

0x00 前言

什么是内网渗透:

内网是一个只有组织工作人员才能访问的专用网络,简而言之就是不可简单地通过外部公网ip进行访问到的公司内部网络。对于一个大型公司的网络系统,通过信息收集找到网站漏洞可以顺利通过公网进入公司内部网络时,进一步对公司内部网络的渗透攻击即为内网渗透。

与外网渗透区别:

1、外网渗透更侧重于找漏洞寻找突破口,考验的是白帽的综合能力,外网渗透的最终还是为了进入内网。

2、内网渗透更侧重于对目标的熟悉程度,对环境是否足够熟悉?对目标的情况是否了然于胸?哪里有敏感信息等等。

内网渗透分类:

内网渗透分为域渗透和工作组渗透两类,亦分为域环境渗透和非域环境渗透。

0x01 内网渗透基础知识

在内网中会出现许多名词和概念,如工作组、域、活动目录、域控、安全域、域权限等等。

(一)工作组

工作组简单理解就是根据工作特性不同而划分的计算机组。在一个局域网中,不同的计算机可以按照功能或部门的不同列入不同的工作组,例如销售部的计算机列入“销售部”工作组。财务部的计算机列入”财务部“工作组,技术部的计算机列入”技术部“工作组,这样下来当想要访问某个部门的资源时,只要在”网络“中单击部门的工作组名就可以找到看到其下的所有的计算机,从而提升了网络中的管理层次。

个人笔记本正常下就是处于工作组里的。工作组里的电脑都是平等的,是最常见最普通的资源管理模式,在网络中工作组是可以自由进入和退出的,同时工作组没有集中管理功能。

(二)域

域是一个有安全边界的计算机集合,域通过安全边界来隔离本域和外部资源。用户如果想要访问域内资源则需要以合法的权限登录域。而登陆域则需要经过“域内保安”-域控制器(Domain Controller,DC)的审核,域控制器负责对连入的计算机和用户的验证工作,它本身存有整个域中关键信息(包括账号、密码、计算机名等)的数据库,其中身份验证主要经过以下几个步骤:

1、该计算机是否属于本域
2、登录账号是否存在
3、密码是否正确

在通过域控的身份认证后才能访问本域资源,进入域后则需要知道自己处于哪个域环境中:
1、单域:一般情况下至少存在两台域服务器,分别为DC和备份DC。活动目录的数据库是存储于DC中的,备份DC的作用是当主域瘫痪时可以替代主域控直至恢复瘫痪的DC
2、父域和子域:出于管理等需求在网络中划分多个域,而第一个域被称为父域,各分部的域被称为子域。例如父域为mac.com,那么子域就为*.mac.com
3、域树:域树是多个域通过建立信任关系组成的集合。建立信任关系的两个域可以互相访问。而域树内的父域和子域不仅可以按需相互管理,还可以跨网络分配文件等资源,在一个域树中,父域可以拥有多个子域,子域也只能以父域的名字作为后缀名
4、域森林:域森林是指多个域树建立信任关系组成的集合,例如某公司有域树mac.com,原来就有自己的域树mac.top,而mac.com无法挂在mac.top域树下,所以需要通过建立信任关系来构成域森林。通过域树之间的信任关系,可以管理和使用整个域森林中的资源。
5、域名服务器:一般来说域控制器就是DNS服务器,用于实现域名和IP地址的转换。

(三)活动目录

活动目录(ActiveDirectory,AD)是指域环境中提供目录服务的组件,目录是用于存储有关网络对象的信息,目录服务是指帮助用户快速、准备地从目录中找到其所需要的信息,而活动目录实现了目录服务,为企业提供了网络环境好中的集中式管理机制。

在活动目录中存在逻辑架构,包括组织单元(OU)、域、域树、域森林。同一域树的所有域共享一个活动目录,其中的数据分散存储在各个域中,且每个域只存储该域的数据。比如我有一个名为M的集团,下面存在A、B、C三个子公司,子公司下包含各个部门,那么就可以以M集团(域森林)>子公司(域树)>部门(域)>员工(域用户)为结构。活动目录的这种层次结构使企业网络具有极强的可扩展性,便于住址、管理以及目录定位。

活动目录实现了目录服务,为企业提供了网络环境的集中式管理机制,活动目录的主要功能:

  1. 账号集中管理:所有账号都存储在服务器中
  2. 软件集中管理:统一推送软件、安装软件
  3. 环境集中管理:统一客户端桌面、IE设置
  4. 增强安全性:统一部署杀毒软件和病毒扫描任务、统一制定用户密码策略。

(四)域权限

在域内由于账号太多,管理员在为其分配权限时会浪费许多时间,便有了安全组的概念,它将处于同一权限的账户放置在同一组中,而管理员只需要设置组的访问权限就可以管理组内的一大批账户,可以大大简化网络维护和管理工作。接下来就简单介绍下域本地组、全局组、通用组的概念和区别。

1、域本地组

多域用户访问单域资源(访问同一域),不能嵌套在其他组中,只能在其所在域内指派权限。

2、全局组

单域用户访问多域资源(必须是一个域里面的用户),能嵌套在其他组中,可在林中的任何域指派权限。

3、通用组 多域用户访问多域资源,能嵌套在其他组中,可在该域树或该林中的任何域中指派权限。

A-G-DL-P策略:

A:Account,用户账号
G:Global Group,全局组
U:Universal Group,通用组
DL:Domain Local Group,域本地组
P:Permission,许可
A-G-DL-P策略是将用户策略添加到全局组中,将全局组添加到域本地组中,然后会域本地组分配资源权限。通过该策略对用户进行组织和管理是非常容易的,当需要给某一个用户添加到某个权限时,只要把这个用户添加到某个域本地组就可以了。比如存在两个域,分别为A域和B域,A域内有个A用户,B域内有个B用户,这两个用户都需要访问B域内的某个文件夹C,可以先在A、B两个域内各建一个全局组,然后在B域中建立一个域本地组,将这两个全局组都加入到这个域本地组中,再将C文件夹的访问权限赋予给这个域本地组。那么这个两个用户也就都能访问到B域内的C文件夹了,且A域管理员可以管理A用户,B域管理员可以管理B用户。如果不使用该策略,当A域的访问用户发生变化时,A域管理员会通知B域管理员,而由B域管理员更改域本地组的成员。既浪费了时间又增加了管理难度。

(五)域控制器DC

是域中的一台类似管理服务器的计算机,负责所有接入的计算机和用户的验证工作,也就是说域内所有用户的密码Hash都保存在域控制器中。

0x02 内网渗透基本流程

(一)信息收集

判断是否有域的几种方法:
ipconfig /all

2023-09-08T01:04:48.png

Systeminfo

2023-09-08T01:05:06.png

如果显示workgroup则不在域里面

2023-09-08T01:05:23.png

net time /domain (这个有三种情况):

1)存在域并且当前用户是域用户 :

2023-09-08T01:06:54.png

2)存在域,当前用户不是域用户:

2023-09-08T01:07:12.png

3)不存在域:

2023-09-08T01:07:22.png

查看当前登录域:

net config workstation

2023-09-08T01:07:59.png

利用 netbios 探测主机存活:

工具:nbtscan

利用 icmp 协议探测内网:

ping命令:

for /L %I in(1,1,254) DO @ping -w 1 -n 1 192.168.110.%I | findstr "TTL="

2023-09-08T01:08:45.png

利用 arp 扫描探测内网:

工具:arp-scan

arp.exe -t IP

2023-09-08T01:09:01.png

域内端口扫描:

telnet 命令扫描

metasploit 端口扫描模块

auxiliary/scanner/portscan/tcp

端口利用速查

https://www.cnblogs.com/iAmSoScArEd/p/10564262.html

查找域控制器:

nltest /DCLIST:域名

2023-09-08T01:09:37.png

net group "Domain Controllers" /domain

2023-09-08T01:09:46.png

netdom query pdc

2023-09-08T01:09:58.png

nslookup -type=SRV _LDAP._tcp

2023-09-08T01:10:07.png

net time /domain

2023-09-08T01:10:16.png

获取域内用户和管理员:

查询所有域用户列表:

net user /domain

2023-09-08T01:10:29.png

wmic useraccount get /all

2023-09-08T01:10:38.png

dsquery user

2023-09-08T01:10:46.png

net localgroup administrators /domain

2023-09-08T01:10:55.png

查询域管理员用户组:

net group "Enterprise Admains" /domain

2023-09-08T01:11:04.png

定位域管理员:

推荐三个工具

PsLoggedon.exe
AdFind.exe
PVEFindADUser.exe -current

2023-09-08T01:11:16.png

查找域管理进程:

本机检查:

net group "Domain Admins"/domain //获取域管理员列表

2023-09-08T01:11:30.png

tasklist /v // 列出本机所有进程及进程用户
然后寻找是否有进程所有者为域管理员的进程。

2023-09-08T01:11:45.png

查询域控制器的域用户会话:

net group "Domain Controllers"/domain  // 收集域控制器的列表
net group "Domain Admins"/domain   // 收集域管理员列表

2023-09-08T01:12:05.png

使用 Netsess.exe 查询每个域控制器,收集所有活动域会话的列表,将域管理员列表与活动会话列表交叉引用,以确定哪些 IP 地址具有活动域令牌:

Netsess.exe -h

2023-09-08T01:12:18.png

扫描远程系统上运行的任务:

前提是目标使用了本地域管理员共享账户

FOR /F %i in (ips.txt) DO @echo [+] %i && @tasklist/V /S %i /U user /P password 2>NUL > output.txt && FOR /F %n in(names.txt) DO @type output.txt | findstr %n > NUL && echo [!] %nwas found running a process on %i && pause

扫描远程系统上 NetBIOS 信息:

for /F %i in (ips.txt) do @echo [+] Checking %i &&nbtstat -A %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt)DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n wasfound logged into %i

利用 PowerShell 收集域内信息:

PowerShell 常用的执行权限共有四种。

Restricted:默认设置,不允许执行任何脚本。
Allsigned:只能运行经过证书验证的脚本。
Unrestricted:权限最高,可以执行任意脚本。
RemoteSigned:本地脚本无限制,但是对来自网络的脚本必须经过签名。

在 PowerShell 中输入“Get-ExecutionPolicy”,看到为默认Restricted 权限,如果想执行一个 PowerShell 脚本,需要修改 PowerShell 的默认权限为执行权限。

Set-Executionpolicy Unrestricted

2023-09-08T01:13:00.png

PowerView 集成在PowerSploit 工具包中:

下载地址为

https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1

PowerView 中的常用命令

Get-NetDomain    // 获取当前用户所在的域名称。
Get-NetUser    // 返回所有用户的详细信息。
Get-NetDomainController    // 获取所有域控制器。
Get-NetComputer    // 获取所有域内机器的详细信息。
Get-NetOU    // 获取域中的 OU 信息。
Get-NetGroup    // 获取所有域内组和组成员信息。
Get-NetFileServer    // 根据 SPN 获取当前域使用的文件服务器。
Get-NetShare    // 获取当前域内所有网络共享。
Get-NetSession    // 获取在指定服务器存在的会话信息。
Get-NetRDPSession    // 获取在指定服务器存在的远程连接信息。
Get-NetProcess    // 获取远程主机的进程信息。
Get-UserEvent    // 获取指定用户的日志信息。
Get-ADObject    // 获取活动目录的对象信息。
Get-NetGPO    // 获取域所有组策略对象。
Get-DomainPolicy    // 获取域默认或域控制器策略。
Invoke-UserHunter    // 用于获取域用户登录计算机及该用户是否有本地管理权限。

如果在实战中目标powershell 的权限是不允许执行任意脚本,那么可以用 -exec bypass 来进行绕过
powershell -exec bypass "import-module c:\powerview.ps1;get-netuser"

(二)获取权限

权限的划分:

1)system账户

Windows系统最高级别的权限是System用户权限,有一些操作需要System权限才能完成,比如修改注册表核心键值、强制结束恶意应用程序进程等。

2)管理员账户

具有最高的管理和使用权限,能改变系统所有设置,可以安装和删除程序,能访问计算机上所有的文件。除此之外,它还拥有控制其他用户的权限。

3)普通用户账户

某些功能的使用,是受到一定限制的账户,在系统中可以创建多个此类账户,也可以改变其账户类型。该账户可以访问已经安装在计算机上的程序,可以设置自己账户的图片、密码等,但无权更改大多数计算机的设置。

案例演示:

上传后门文件后我们拿到一台webshell权限:

2023-09-08T01:13:52.png

systeminfo查看补丁信息:

2023-09-08T01:14:03.png

https://i.hacking8.com/tiquan/
把补丁放到这里看一下未修补的漏洞

2023-09-08T01:14:20.png

2023-09-08T01:14:29.png

根据指定exp进行提权操作。

Windows提权漏洞集合:

https://github.com/SecWiki/windows-kernel-exploits
Linux提权漏洞集合:

https://github.com/SecWiki/linux-kernel-exploits

0

评论 (2)

取消
  1. 头像
    1
    MacOS · Google Chrome

    画图

    回复
  2. 头像
    1
    MacOS · Google Chrome

    画图

    回复