我们的目的是获取redhook.DA域的一个可用的账户,当前攻击者已在公司网络内,但并未在同一个子网。
假设我们已经获取到了Client1的登陆凭据,如果网络足够大,你可以发现存储在某处网络共享上面的其他凭据(通过批量的脚本:vbs,ps1,.net等等)。关于怎么访问网络,你可以使用Cobalt Strike框架。
我们可以这样做:
我们可以通过批量的脚本快速的获得NETBIOS的信息。
在win上,可以用命令nbtstat -A IP获得相同的信息,可以看到机器名是WIN7-ENT-CLI1,属于REDHOOK域。
使用msf的psexec可以很容易的获取到一个shell。BOB是一个本地用户,不用指定SMBDomain参数。
我们也可以使用Impacket’s PsExec,但psexec的好处是可以传递hash。
不要忘了微软自己的PSEXEC有额外的好处,添加一个-s参数会给你一个system的shell。
一些WMI的选项也可以让你远程系统上执行命令。最值得注意的是WMIC,不仅可以在远程系统上执行命令,还可以通过内置的命令获取系统的敏感信息和配置操作系统。
最好使用cmd.exe /c或powershell -exec bypass -command。
我们使用Impacket WmiExec可以获取到一个半交互式的shell,执行命令并获取输出。
最后使用PowerSploit的Invoke-WmiCommand命令。
有时候你只能获取到NTLM的hash值,可以使用msf的psexec或WCE或Mimikatz。
缺点是WCE可能会被发现,而mimikatz是直接加载内存。
也可以使用Impacket’s SecretsDump和Powersploit’s Invoke-Mimikatz来获取。mimikatz的脚本托管在攻击者的服务器上。
可能还有其他技术,但是以上是最经典的。
现在我们有了redhook域里的一台机器并且能连接到不同的子网中,现在开始做一个信息收集。
要查询域的信息,需要有一个域用户,当前的bob用户并不是域用户或system权限,但是我们可以通过
NtQuerySystemInformation来发现其他用户的token,进而模拟他们登陆。
meterpreter有这个插件,使这个过程非常简单。
也可以使用incognito(下载地址:https://labs.mwrinfosecurity.com/blog/2012/07/18/incognito-v2-0-released/)
现在我们有了一个域用户,我们需要尽快扩大战果。
以上命令分别是:
通过简单的信息收集,我们能了解到让我们自己成为域管理员的途径。
最后一个事就是添加路由,让我们通过代理能访问系统,如果使用msf或cobalt strike那么就非常简单。
使用session1 通过socks4a来进行进一步的扫描。
使用proxychains。
共享的本地管理员账户,客户端1和客户端2的TemplateAdmin是通用的账号,密码也一样。
我们可以使用portproxy从client1进行端口转发。
client1监听10.1.1.2:9988向10.0.0.128:9988发送流量。再配置psexec。
在client1上使用netsh手动设置转发规则。
现在有个规则是把流量从10.0.0.129:5678转发到10.1.1.3:445,Impacket’s PsExec需要一个自定义端口,编辑源码来实现。
当完成转发之后,记得清理规则。
C:\Windows\system32> netsh interface portproxy reset
C:\Windows\system32> netsh interface portproxy reset |
如果我们获取不到明文密码,我们仍然可以冒充域管理员的令牌。
我们使用incognito来执行远程命令。
接下来我们就很容易来拖拽文件了。
我们要么获取域管理员的密码,要么我们自己新建一个域管理员。
还记得之前用户socks代理么,我们可以使用它来访问域内几乎所有东西。
win2k12增强了hash的保护性,所以我们这样来获取hash值。
很多时候提取了NTDS 说明渗透要结束了,下面我介绍一下访问本地shell或通过wmi来执行命令的方法。
把文件拖到攻击者的机器里面有很多方法,我介绍一种,可以简单的使用Impacket’s SecretsDump本地解压传输内容。
注意下NTDS可能会包含很多用户,甚至上千,是非常大的,导出的时候要小心。
如果我们有socks代理,则很容易的使用明文密码来执行SecretsDump 。
*原文:fuzzysecurity Mottoin翻译发布
未经允许不得转载:MottoIN » Windows域横向渗透