红日靶场实战:CS与MSF联动内网渗透从外网到域控全流程解析

红日靶场实战:CS与MSF联动内网渗透从外网到域控全流程解析 1. 项目概述一次贴近实战的内网攻防演练最近在复现红日靶场这确实是一个非常好的内网渗透学习环境。它模拟了一个典型的企业网络从外网的一台Web服务器入手逐步渗透到内网最终目标是拿下域控制器。整个过程几乎涵盖了从信息收集、漏洞利用、权限提升、横向移动到域渗透的完整攻击链。很多朋友在复现时可能会卡在某些环节比如如何将CSCobalt Strike和MSFMetasploit这两个神器联动起来实现优势互补。今天我就结合自己的实战踩坑经验把这个从外网打到域控的完整流程以及工具联动的核心技巧掰开揉碎了讲清楚。这个靶场环境的核心价值在于它的“真实性”。它不是孤立的漏洞利用而是构建了一个包含DMZ区、办公网、核心服务器区的多层次网络。攻击者需要像真正的渗透测试人员一样思考如何突破边界、在内网隐蔽移动、定位关键资产如域控、并最终获取最高权限。在这个过程中CS负责团队协作、Payload投递和持久化控制而MSF则凭借其庞大的漏洞利用库和后期利用模块提供强大的火力支援。两者的结合能让你的渗透测试如虎添翼。无论你是想巩固内网渗透知识体系的新手还是希望优化自己攻击流程的老手这次演练都能给你带来实实在在的收获。2. 环境搭建与拓扑理解2.1 靶场环境还原与网络配置红日靶场通常提供的是虚拟机镜像文件我们需要在VMware或VirtualBox中将其还原。常见的环境包含三台虚拟机一台作为外网攻击机我们自己的Kali Linux一台是靶场的外网Web服务器通常为Windows Server 2008双网卡另一台则是内网的域控制器Windows Server 2012。Web服务器扮演着关键角色它一块网卡连接着模拟的互联网与我们的Kali在同一网段如192.168.1.0/24另一块网卡连接着内部办公网络如192.168.52.0/24。域控制器则只存在于内网中。在启动所有虚拟机后第一件事不是急着攻击而是理清网络拓扑。你需要确认各台机器的IP地址。在Kali上使用arp-scan或nmap扫描整个网段找到Web服务器的外网IP。然后通过Web服务器获取到的shell去探测其内网网卡信息进而发现内网网段。这个步骤看似基础却至关重要因为后续所有的横向移动都依赖于对网络结构的清晰认知。我个人的习惯是画一张简单的拓扑图标明每个IP、角色和可能的攻击路径这样在复杂的渗透过程中不容易迷失方向。注意确保你的攻击机Kali的网络适配器设置为“桥接模式”或与靶场外网段在同一NAT网络下否则无法与靶机通信。同时靶场的内网虚拟机之间应使用“仅主机模式”或自定义的私有网络连接以模拟真实的内网隔离环境。2.2 攻击工具栈准备Kali、CS与MSF工欲善其事必先利其器。我们的核心工具是Kali Linux它预装了MSF。你需要确保MSF更新到最新状态虽然红日靶场的漏洞相对固定但保持工具更新是好习惯。命令很简单sudo apt update sudo apt upgrade metasploit-framework。更关键的是Cobalt StrikeCS的部署。由于CS是商业工具我们需要使用其团队服务器TeamServer。你可以将CS的jar包上传到一台VPS用于真实演练或者就在本地Kali上运行用于本地靶场测试。启动TeamServer的命令类似./teamserver 你的VPS_IP 连接密码 [配置文件]。启动后在你的Windows客户端上或Kali上使用Java运行客户端连接这个团队服务器。CS客户端的配置主要是设置连接地址、端口和密码。成功连接后你就拥有了一个可视化的攻击指挥中心。接下来是联动配置。CS的强大之处在于它可以作为MSF的一个“中转站”或“载荷投递器”。我们需要在MSF中启动一个监听器并允许CS的会话回连。通常我们在MSF中利用exploit/multi/handler模块设置好Payload如windows/meterpreter/reverse_http和LHOST/LPORT。然后在CS的“攻击”菜单中选择“MSF Payload联动”填写MSF监听器的IP和端口。这样当CS投递的载荷被执行后会话不仅会回到CS也会同时反弹到MSF实现会话共享。这一步的细节和常见错误我们会在后面的联动技巧部分详细展开。3. 外网突破信息收集与漏洞利用3.1 全方位信息收集与端口扫描面对外网的Web服务器我们首先要进行全面的信息收集。使用nmap进行端口扫描是第一步。命令可以这样组合以获取尽可能详细的信息nmap -sS -sV -O -p- -T4 -A 目标IP。-sS是SYN半开扫描相对隐蔽-sV探测服务版本-O尝试识别操作系统-p-扫描所有65535个端口-T4设置速度-A启用操作系统和版本检测、脚本扫描和路由跟踪。扫描结果可能会显示开放了80HTTP、443HTTPS、21FTP、3306MySQL等常见端口。红日靶场的外网入口通常是一个Web应用。因此我们需要对Web服务进行深度探测。使用dirb、gobuster或ffuf进行目录爆破寻找后台登录页面、上传点、配置文件等。同时用浏览器访问网站手工测试每一个功能点查看前端源码寻找注释、隐藏链接或JS文件中的敏感信息。用nikto或Wappalyzer浏览器插件识别Web框架、中间件和组件版本这些信息是寻找已知漏洞的关键。除了自动工具手动测试至关重要。检查是否存在默认口令如admin/admin、查看robots.txt文件、测试URL参数是否存在SQL注入或文件包含。对于发现的任何输入点都要用Burp Suite抓包进行详细的参数测试。这个阶段切忌急躁细致的信息收集往往能发现意想不到的突破口比如一个暴露的phpMyAdmin页面或者一个存在弱口令的FTP服务都可能成为进入内网的捷径。3.2 Web漏洞利用与初始立足点获取在红日靶场中外网突破的常见路径是通过Web漏洞。假设我们通过目录扫描发现了一个/admin/login.php后台并且通过弱口令爆破使用hydra或Burp的Intruder成功登录。进入后台后寻找文件上传功能是获取Webshell的经典方法。如果存在文件上传我们需要绕过可能的防护。常见的防护有前端JS验证、后端MIME类型检查、后缀名黑名单等。对于前端验证直接抓包修改文件名即可绕过。对于后端检查可以尝试多种绕过技巧将一句话木马写入图片的EXIF信息用exiftool然后上传时修改Content-Type为image/jpeg或者使用双写后缀如shell.pphphp、大小写混淆Shell.PhP、在末尾加空格或点shell.php.Windows系统可能会自动去除最后的点更高级的可以利用解析漏洞如IIS6.0的/xx.asp;.jpg。上传成功后我们需要用CS或MSF生成一个Payload。这里以CS为例在“攻击” - “生成后门”中选择“Windows可执行文件Stageless”监听器选择你事先在CS中创建好的如windows/beacon_http/reverse_http。生成一个.exe文件。但是直接上传exe可能被拦截。更好的方法是上传一个图片马然后利用文件包含漏洞执行其中的代码。或者如果服务器允许上传一个.txt文件然后通过本地文件包含LFI结合日志注入、PHP伪协议php://input等方式来执行代码。一旦找到方法将我们的Payload上传并执行我们就在Web服务器上获得了最初的立足点——一个反弹shell会话。这个会话会回连到我们的CS团队服务器在CS的“视图” - “主机”中你应该能看到新上线的主机。至此我们成功从外网打入了内网边界。4. 内网横向移动与权限提升4.1 内网信息收集与凭据窃取拿到Web服务器的shell后我们相当于进入了内网的“前哨站”。接下来的首要任务是以这台机器为跳板进行内网信息收集。在CS的Beacon命令行中我们可以执行一系列命令。输入shell whoami /all查看当前权限和所属组。输入ipconfig /all查看内网网卡IP、DNS服务器很可能就是域控的IP。输入net view或net group “domain computers” /domain如果已加入域查看域内机器。更深入的信息收集需要借助工具。我们可以将CS内置的mimikatz插件注入到当前进程直接抓取内存中的明文密码或哈希。命令是在Beacon中输入mimikatz然后执行privilege::debug提权再执行sekurlsa::logonpasswords。如果成功你可能会获取到本地管理员密码甚至是域用户的密码哈希。这些凭据是横向移动的“通行证”。除了mimikatz还可以使用hashdump命令直接导出SAM数据库中的本地用户哈希。如果获取到的是NTLM哈希我们可以尝试进行“哈希传递”攻击。例如使用CS的psexec或psexec_psh模块指定目标内网机器IP和获取到的哈希尝试进行横向移动。另一种方法是使用net use命令配合获取的明文密码直接连接目标共享。这个阶段的目标是尽可能多地收集内网主机信息、用户凭据和网络拓扑为下一步的横向扩散做准备。4.2 系统漏洞利用与权限提升在横向移动过程中我们可能会遇到权限不足的情况。例如我们通过凭据窃取获得了某台内网主机的普通用户权限但需要提升到SYSTEM或管理员权限才能进行更深度的操作。这时就需要进行本地权限提升。首先在CS的Beacon中输入run post/windows/gather/enum_patches这是一个MSF模块通过CS的execute-assembly或psinject功能运行来枚举系统已安装的补丁。然后将缺失的补丁编号与公开的提权漏洞库如windows-kernel-exploits进行对比寻找可用的本地提权EXP。例如如果发现系统缺少MS17-010永恒之蓝补丁虽然它主要是一个横向移动漏洞但其部分利用链也可用于本地提权。更常见的是利用一些经典的本地提权漏洞如CVE-2021-36934HiveNightmare、CVE-2021-1675PrintNightmare等。我们可以将对应的EXP可执行文件上传到目标主机然后通过Beacon的shell命令执行。或者使用MSF中对应的本地提权模块通过CS与MSF的会话联动将MSF的会话迁移到目标进程再运行getsystem命令。除了漏洞利用还可以利用系统配置错误。例如检查是否有服务路径权限问题可写服务路径、AlwaysInstallElevated策略是否启用、计划任务是否有可写脚本等。使用PowerUp.ps1这样的PowerShell脚本可以自动化检测这些常见的提权向量。我们可以通过CS的powershell-import和powershell命令在内存中加载并执行该脚本快速识别提权机会。提升权限后我们就能更自由地抓取密码、安装后门、并以此为新的跳板向网络深处如域控制器进发。5. 域渗透与域控提权5.1 域内定位与关键信息搜集当我们通过横向移动控制了一台域成员机器后渗透的重心就转向了域环境本身。首先需要精准定位域控制器。之前通过ipconfig看到的DNS服务器地址大概率就是域控的IP。我们可以用nslookup命令查询域名的SRV记录来确认nslookup -typeSRV _ldap._tcp.dc._msdcs.域名。接下来进行深入的域内信息枚举。在CS的Beacon中可以输入一系列net命令net group “domain admins” /domain查看域管理员组有哪些成员net group “domain controllers” /domain查看所有域控net user /domain列出所有域用户net user 用户名 /domain查看指定域用户的详细信息包括最后登录时间、所属组等。这些信息能帮助我们描绘出域内的权力结构和攻击路径。更高效的工具是BloodHound。我们需要在攻击机上运行BloodHound的采集器SharpHound.exe。通过CS的upload功能将其上传到已控的域成员主机然后在Beacon中执行shell SharpHound.exe -c All。采集完成后会生成一个.zip文件将其下载回本地并导入到BloodHound图形化界面中。BloodHound会自动分析域内用户、组、计算机之间的关系并以可视化图表的形式清晰地展示出从当前已控机器到域管理员的最短攻击路径例如“谁对哪台机器有本地管理员权限”、“哪些用户是敏感组的成员”等。这能极大提高我们攻击的针对性和效率。5.2 攻击域控制器与获取域管权限根据信息收集的结果我们通常有几种路径攻击域控。最经典的莫过于“金票攻击”。前提是我们要获取到krbtgt用户的NTLM哈希。krbtgt是域控上用于加密和签署Kerberos票据的账户。一旦拿到它的哈希我们就可以伪造任意用户的黄金票据Golden Ticket从而获得域内任意服务的访问权限。要获取krbtgt哈希通常需要先获得域控的SYSTEM权限。我们可以通过之前提到的横向移动方法比如利用MS17-010漏洞攻击域控或者通过控制了一台对域控有管理员权限的成员服务器通过BloodHound发现使用psexec或WMI等方式在域控上执行命令。在域控上使用mimikatz执行lsadump::dcsync /domain:域名 /user:krbtgt这个命令会模拟域控制器之间的同步协议直接拉取指定用户这里是krbtgt的哈希而无需在域控上运行mimikatz的sekurlsa模块后者需要更高的调试权限。获取到哈希后在任意已加入域的机器上用mimikatz生成黄金票据并注入内存kerberos::golden /domain:域名 /sid:域SID /rc4:krbtgt哈希 /user:任意用户名如fakeadmin /ptt执行klist查看当前票据如果能看到刚刚伪造的票据就说明成功了。之后你就可以使用dir \\域控主机名\c$这样的命令直接访问域控的共享或者通过psexec等工具获取一个域控的SYSTEM权限shell。另一种常见方法是“MS14-068 Kerberos漏洞”提权它允许一个普通的域用户将自己提升到域管理员权限。或者利用“委派攻击”如果发现某台服务器被配置了约束委派或基于资源的约束委派也可能成为通往域控的跳板。最终当我们成功在域控上执行命令并抓取到域内所有用户的哈希使用mimikatz的lsadump::lsa /patch就意味着完全控制了整个域环境。6. CS与MSF深度联动技巧实录6.1 会话传递与流量中转配置CS和MSF的联动核心在于会话的共享和流量的路由。最基础的联动方式我们之前提过在MSF上启动一个exploit/multi/handlerPayload设置为windows/meterpreter/reverse_http然后CS生成Payload时选择“MSF Payload联动”指向这个监听器。这样生成的Payload会同时回连CS和MSF。但更强大的用法是“会话传递”。当我们通过CS的Beacon已经控制了一台内网机器跳板机而MSF无法直接访问内网的其他目标时我们可以将CS的Beacon会话“传递”给MSF让MSF通过这个Beacon作为代理去攻击内网。首先在CS的Beacon中执行socks 1080命令在CS团队服务器上开启一个SOCKS4a代理端口是1080。然后在MSF中设置代理setg Proxies socks4:你的CS团队服务器IP:1080。这样MSF的所有扫描和攻击流量都会通过这台跳板机发出。另一种方法是“会话派生”。在CS中右键已上线的Beacon选择“Spawn”。在弹出的对话框中选择“Foreign Payload”然后填写MSF监听器的信息如windows/meterpreter/reverse_tcp LHOST是MSF所在IPLPORT是MSF监听端口。点击“Choose”CS会利用当前Beacon的会话在目标机器上启动一个新的进程并注入MSF的Payload。稍等片刻你就能在MSF的handler上收到一个来自内网目标的meterpreter会话。这个新会话是完全独立于CS Beacon的MSF会话你可以使用MSF的全部模块对其进行操作。6.2 模块互用与实战避坑指南CS和MSF各有千秋。CS擅长团队协作、钓鱼攻击、隐蔽的C2通信和强大的后渗透扩展如Aggressor Script。MSF则拥有海量的漏洞利用模块、后期利用模块Post模块和辅助扫描模块。联动能让它们优势互补。场景一用MSF扫描内网用CS维持控制。通过CS的socks代理我们可以在MSF中使用auxiliary/scanner/portscan/tcp模块扫描内网网段。发现开放服务后使用MSF对应的漏洞利用模块如exploit/windows/smb/ms17_010_eternalblue进行攻击。一旦利用成功获得一个meterpreter会话。此时我们可以将这个MSF会话“迁移”到CS。在meterpreter中使用run命令执行一个由CS生成的stageless Payload例如一个PowerShell脚本或者使用meterpreter的upload和execute功能运行CS的beacon.exe。这样我们就将不稳定的漏洞利用会话转换成了由CS稳定控制的Beacon会话。场景二用CS投递Payload用MSF进行后期利用。CS在生成钓鱼文档或进行水坑攻击方面非常方便。我们可以用CS制作一个恶意Office文档或可执行文件。当目标触发后会先回连CS。在CS的Beacon中我们可以使用psinject或shinject等命令将MSF的meterpreterPayload注入到目标进程从而派生一个MSF会话。然后我们就可以在MSF中使用丰富的Post模块例如post/windows/gather/enum_logged_on_users枚举登录用户、post/windows/manage/migrate进程迁移、post/windows/manage/enable_rdp开启RDP等这些模块在CS中可能没有直接对应或不如MSF的全面。避坑要点防火墙与杀软MSF生成的默认meterpreterPayload很容易被现代杀毒软件检测。而CS的Artifact Kit和Malleable C2 Profile可以高度定制Payload和通信流量绕过静态和动态检测。因此初始投递建议使用CS生成经过混淆的Payload。会话稳定性MSF的meterpreter会话在网络波动或目标进程结束时可能断开。CS的Beacon支持多种通信协议和心跳机制通常更稳定。重要目标在取得初始立足点后应尽快通过spawn或inject的方式迁移到CS Beacon。路径与权限在通过Beacon执行MSF模块或上传文件时注意目标系统的路径和当前进程权限。系统目录如C:\Windows\System32\通常需要高权限才能写入。可以使用cd命令切换到可写目录如用户临时目录%TEMP%再进行操作。监听器配置确保CS和MSF的监听器配置正确特别是IP地址和端口。在多层网络环境下如攻击机在公网CS团队服务器在另一台VPS要仔细设置LHOST参数确保它是Payload能够真正回连到的地址。通过灵活的联动你可以让CS作为指挥和控制中心负责Payload投递、会话管理和横向移动的调度而MSF则作为强大的武器库负责漏洞利用、深度扫描和专项的后期利用。两者结合能让你在内网渗透中更加游刃有余。