Jump ESP, jump!: The RastaLabs体验
引言
11月20日,我开始思考接下来一个月要做什么。我已经辞去了上一份工作,新工作要等到一月份才开始。对某些人来说整月玩PS4可能很有趣,但我知道自己很快就会感到无聊。
虽然我有一些有限的红队经验,但我一直想再次体验获取域管理员权限的兴奋感。我大约在2010年通过哈希传递获得了第一个DA权限,但那已经是很久以前的事了,技术变化很快。
在浏览某个Slack频道的聊天记录时,我注意到有些聊天室在称赞RastaLabs。看了实验室描述后,我觉得"就是它了,这正是我需要的"。能有多难呢?我还有整整一个月时间,肯定能在圣诞节前完成。天哪,我大错特错了。
实验室的初始费用是90英镑,包含第一个月,之后每月20英镑。我感觉就像在从Rastamouse和Hackthebox那里偷钱…怎么会这么便宜?有时候便宜意味着低质量,但这次不是。
我的经验
关于我之前的经验,我已经获得了OSCP、OSCE、SLAE(Securitytube Linux汇编专家)和PSP(渗透测试者PowerShell)认证,这些在实验室中都给了我很大帮助。我还有一些有限的红队经验。我在AV绕过方面有超过平均水平的经验,并且已经接触过Covenant和PowerShell Empire等新型后期利用框架。至于编写漏洞利用程序,我知道缓冲区溢出或格式化字符串攻击的原理,但在绕过ASLR和NX方面缺乏实践。我在Windows 10上使用Mimikatz的经验基本为零。我在2012年使用过Mimikatz,但可能之后再也没用过。我也有很多关于如何做X和Y的知识,了解有用的工具和热门技术,但缺乏最近的使用经验。最后,在黑客攻击速度方面我通常是最慢的,但我总是用毅力来弥补速度的不足。
RastaLabs倒计时3,2,1…
于是我支付了初始费用,拿到了VPN连接包,连接到实验室,然后在…4天后拿到了我的第一个flag。总共有17个flag。这是我第一次开始担心。我做了所有让自己走错路的事情,比如假设了错误的实验室网络地址,扫描的机器太少,通过OSINT找到了错误的面包屑,试图利用已修补的Web服务(就像大多数OSCP考生会做的那样)等等。我还不断与使用的工具作斗争,因为我从来不知道它们是出错了,还是我误用了它们,或者这不是获取flag的正确方式。我相信有运气和经验的人可能在2-3小时内完成这个阶段,但嘿,我是来获取经验的。
在实验室期间,每当我被同一个问题困住超过30-40小时且挫败感很强时,我就会在https://mm.netsecfocus.com/上的官方RastaLabs支持频道ping Rastamouse。我通常这样接近他:“嗨,我尝试了X、Y和Z,但没成功”,然后他回复"嗯,再努力试试Y"。这种信息通常就是我需要的,2-3小时后我就又回到正轨了。他的帮助总是足够,但从不会多到破坏乐趣。Rastamouse的可用性和专业性都是10/10。数十亿美元的大公司都无法提供足够好的支持,而这个人总是随时提供帮助。太神奇了。我强烈建议加入Mattermost频道——看到你不是唯一一个遇到问题的人会对你有很大帮助。但如果你还没有更加努力尝试,请不要直接给他或频道发私信。
实验室中真正可爱的是你可以期待真实世界的场景,有"RastaLabs员工"在电脑上工作、阅读电子邮件、浏览网页等。我相信在这里说在某个时间点你必须提供能绕过机器上MS Defender AV的恶意软件不算剧透。是的,机器上有真正工作的Defender,虽然有点过时,但它可能很快捕获你的默认payload。正如我之前提到的,幸运的是我最近有AV绕过经验,所以这部分对我来说并不新鲜。我强烈建议设置自己的Win10并更新最新的Defender,先在上面测试你的payload。如果在那里有效,在实验室也会有效。这部分尤其令人沮丧,因为你从实验室得到的唯一反馈是什么都没发生,而且无法调试。先在本地测试你的解决方案。
PowerShell Empire对我来说是一个极好的解决方案,它唯一缺少的功能是端口转发。但你可以投放其他工具来有效完成这项工作。
小提示:即使你成功交付了payload并且有一个工作的C&C,也不意味着你的AV绕过任务结束了。Defender很可能会阻止你的后期利用代码。要绕过这个,请阅读Rastamouse所有关于AMSI绕过的博客文章。这很重要。
横向移动
当你最终获得第一个shell时…
一个全新的世界开始了。从现在开始,你将花费大量时间在密码破解、横向移动、持久化和理解Windows AD工作原理上。
过去我玩过很多CTF,时不时会有"是的,虽然这个挑战很有趣,但不现实"的感觉。在RastaLabs期间这从未发生过。所有的挑战和解决方案都是100%真实的,正如RastaLabs的"Ars poetica"所述:
“…这是千真万确的。所有任务都不涉及任何CVE漏洞利用。你需要为这个实验室换一种思维方式。你需要考虑错误配置、可破解的密码、权限滥用和类似问题。但我相信这个实验室仍然比90%的组织更难攻破。唯一的帮助是没有蓝队人员杀死我们的shell。”
关于实验室的架构:当通过VPN连接到实验室时,你基本上处于一个可以标记为"互联网"的网络中,你的目标网络在防火墙后面,就像适当的公司网络应该的那样。
有一批工作站——只有Win10,和一些服务器,如文件服务器、exchange、DC、SQL服务器等。大多数服务器是Windows Server 2016,还有一台Linux服务器。两个站点充分分离并有防火墙保护。
随着时间的推移,我获得了越来越多的flag,开始感受到力量。然后过山车般的体验开始了。我一无是处,我什么都不知道。拿到flag时,我是神。一小时后,我一无是处。
例如,我花了大量时间尝试获取工作站的GUI访问权限。最后我成功做到了,却发现我通过它什么也没实现。由于未知原因,我尝试的所有框架都没有可用的VNC,所以我设置了自己的,这很痛苦。
12月18日,我终于获得了域管理员权限。所以我"完成实验室"在一个月内的估计并不算太离谱。只不过我离完成还很远,因为我还要找到缺失的另外五个flag。你可能会问"你已经有了DA,找到剩下的五个能有多难?"。剧透警告,很难。或者更准确地说,不难,只是具有挑战性且耗时。这也是Mattermost RastaLabs频道连接对我帮助很大的时候。“flag X在机器Y上"这样的提示帮助我保持动力,又没有破坏乐趣。没有这样的提示,我就不会写这篇文章,而是会被多个flag卡住。
关于漏洞利用
还有那个臭名昭著的挑战"ROP the night away”。这与其他16个完全不同。我相信这张图片说明了一切:
如果你不熟悉GDB,嗯,你会很艰难。如果你没有很多绕过NX的实践经验——也就是ROP——像我一样,你会觉得这个挑战很艰难。OSCP和OSCE考试中的二进制漏洞利用挑战远没有这个复杂。如果你有OSEE,你会没问题。对于这个挑战,我使用了GDB-Peda和Python pwntools——如果你不熟悉它们,可以查看一下。对我来说,解决这个挑战花了大约40小时。有经验的CTF人员可能在4小时或更短时间内解决。
结论
我不会向完全初学者推荐参加这个实验室*。如果你每天只有有限的时间,我也不建议做这个实验室,尤其是在家用电脑上工作的话。如果我为这个实验室在云端设置一个专用服务器,我可能会节省数小时甚至数天时间。问题是实验室工作站每天都会重启,这意味着我总是丢失我的shell。“持久性FTW”,你可能会说,但如果工作站重启时你的C&C关闭,你就完蛋了。“计划任务FTW”,你可能会说,但除非你严格规定何时启动电脑,否则你最终会有一堆计划任务,只为了在启动电脑时恢复shell。日复一日,我花了第一个小时回到前一天的位置。直到实验室结束时我才弄清楚为什么我的一些计划任务不工作…
我真的很想知道我花了多少时间连接到实验室。可能总共大约200-250小时,我相信这比我花在OSCP和OSCE上的时间总和还多。但这完全值得。现在我学到了这么多有用的东西,真的感受到了力量。
但考虑到一个月实验室的价格是20英镑,这仍然是练习技能的非常便宜的选择。
- 作为初学者开始,花6个月时间完成实验室完全没问题。那仍然只是190英镑的实验室访问费用,在这段时间里你会获得很多经验。你可能很难达到获得工作shell的阶段,但没关系。你可以在Google上找到所有信息,只需要时间、耐心和到达那里的意愿。
无论如何,不以"获取所有flag"为目标仍然是一个选择。即使只获得前两个flag,你也会在"获得立足点"方面获得重要经验。但对我来说,不获取所有flag从来不是一个选择。
如果你仍然不相信,查看这些其他博客文章: https://jmpesp.me/a-rastalabs-story/ https://www.gerrenmurphy.com/rastalabs-review/
或者看看其他人对RastaLabs的评价。
脚注
如果你开始实验室,请,拜托,遵守规则,不要破坏他人的乐趣。不要到处留下你的工具,不要保持共享驱动器开放,不要到处留下FLAG。让机器保持原样。如果你必须上传文件,把它放在别人不容易找到的文件夹中。这是真实世界红队行动的必要心态。不要忘记每当你自己或别人获得新flag时在聊天中投放一个派对鹦鹉。不要忘记:
OSCP在这里没有力量。哭得更厉害些!
我可能会保持对实验室的订阅,尝试新事物,新的后期利用框架。我要感谢@_rastamouse提供这次伟大体验,@superkojiman提供ROP挑战。感谢Hackthebox以出色的正常运行时间托管实验室。
至于@gentilkiwi和@harmj0y,这两个人推动红队前进的程度可能超过其他所有人的总和。来自@gallopsled的pwntools也非常有帮助。我将永远感激财务部的Bradley,每当我丢失shell时他持续提供的支持。