MattStefano/Threat-Hunting-Scenario-Helpdesk-Deception

GitHub: MattStefano/Threat-Hunting-Scenario-Helpdesk-Deception

帮助台欺骗场景下的威胁狩猎工具

Stars: 0 | Forks: 0

# 威胁狩猎报告:帮助台欺骗 ## 利用的平台和语言 - 日志分析工作区 - Kusto 查询语言 (KQL) ## 场景 一个常规的支持请求本应以重置和保证结束。相反,所谓的“帮助”留下了一串异常,这些异常无法解释。 被描述为故障排除的行为更像是对系统的审计.. 探测、编目、在其身后留下微妙的痕迹。以可疑的顺序连锁行动:首先获得立足点,然后扩大范围,然后为会话结束后长时间停留做准备。 就在活动应该引起质疑的时候,一个整洁的解释出现了。一个明目张胆植入的故事,旨在为需要审查的行为辩解。 这不是远程协助。这是一种误导。 这次你的任务是重建时间线,连接这个“支持会话”的零散碎片,并决定什么是合法的,什么是安排好的。 证据就在这里。问题是你是否能看穿这个故事,还是相信它。 ## 📍 起始点 在你正式开始旗帜之前,你必须首先确定从哪里开始狩猎。根据以下情报确定狩猎的起始点: 1. 部门中的多台机器开始从下载文件夹中启动进程。这种意外的场景发生在十月的上半月。 2. 发现几台机器共享相同类型的文件。类似的可执行文件、命名模式和其它特征。 3. 在发现的文件中,常见的关键词包括“desk”、“help”、“support”和“tool”。 4. 实习生的机器似乎受到了一定程度的影响。 🕵️ **根据给定条件,确定最可疑的机器。** 查询: ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-10-01) .. datetime(2025-10-16)) | where FileName contains "desk" or FileName contains "help" or FileName contains "support" or FileName contains "tool" | where DeviceName contains "intern" and DeviceName !contains "internal.cloudapp" | project TimeGenerated, AccountName, AccountDomain, DeviceName, FolderPath, FileName ``` image

✅ **答案:** `gab-intern-vm` **旁注:** 结果还显示了相关的账户名称:`g4bri3lintern` ## 🚩 旗帜 1 - 初始执行检测 **目标:** 检测可能代表入口点的最早异常执行。 **要寻找什么:** 寻找不符合正常用户行为或基线模式的典型脚本或交互式命令活动。 **思考:** 确定第一次不寻常的执行有助于你锚定时间线并跟踪攻击者的父/子进程链。 **提示:** 1. 下载 2. 二 🕵️ **在可疑程序的执行过程中,第一个 CLI 参数名称是什么?** 查询: ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-10-01) .. datetime(2025-10-16)) | where DeviceName == "gab-intern-vm" | where AccountName == "g4bri3lintern" | where ProcessCommandLine has @"\Downloads\" or InitiatingProcessCommandLine has @"\Downloads\" | where FileName in ("powershell.exe", "cmd.exe") | project TimeGenerated, AccountName, DeviceName, FileName, ProcessCommandLine, InitiatingProcessCommandLine ``` image

✅ **答案:** `-ExecutionPolicy` 🔎 **分析师推理:** 查询将活动缩小到用户下载文件夹中的命令行执行,这与提示相符,同时也暴露了可疑的 `SupportTool.ps1` 执行。在该命令行中,`-ExecutionPolicy` 紧接在 `powershell.exe` 之后出现,使其成为第一个 CLI 参数。 ## 🚩 旗帜 2 - 防御禁用 **目标:** 识别表明试图暗示或模拟更改安全态势的指标。 **要寻找什么:** 搜索包含篡改相关内容或提示的文件创建或短暂进程活动,而不假设实际配置更改已发生。 **思考:** 植入或安排好的篡改指标是意图的信号。将其视为意图,而不是实际缓解更改的证据。 **提示:** 1. 文件被手动访问 🕵️ **与此次漏洞相关的文件名称是什么?** 查询: ``` DeviceFileEvents | where TimeGenerated between (datetime(2025-10-01) .. datetime(2025-10-16)) | where DeviceName == "gab-intern-vm" | where InitiatingProcessAccountName == "g4bri3lintern" | where ActionType == "FileCreated" | where FolderPath contains @"\AppData\Roaming\Microsoft\Windows\Recent\" | where InitiatingProcessFileName == "explorer.exe" | project TimeGenerated, ActionType, FileName, FolderPath, InitiatingProcessFileName ``` image

✅ **答案:** `DefenderTamperArtifact.lnk` 🔎 **分析师推理:** 查询将结果缩小到用户 Windows “最近”文件夹中的 `FileCreated` 事件,这很有用,因为手动打开的文件通常会在那里生成 `.lnk` 快捷方式。`DefenderTamperArtifact.lnk` 是关键发现,因为它作为与用户活动相关的最近快捷方式出现,并与篡改相关的目标相一致。 ## 🚩 旗帜 3 - 快速数据探测 **目标:** 发现对易于获取的敏感内容的短暂、机会主义检查。 **要寻找什么:** 寻找尝试读取终端上常见临时数据源的短暂操作。 **思考:** 攻击者首先寻找低成本的胜利;这些快速探测通常在更广泛的侦察之前发生。 **提示:** 1. 剪贴板 **旁注:1/2** 1. 有查询 🕵️ **提供与此次漏洞相关的命令值。** 查询: ``` DeviceFileEvents | where TimeGenerated between (datetime(2025-10-01) .. datetime(2025-10-16)) | where DeviceName == "gab-intern-vm" | where InitiatingProcessAccountName == "g4bri3lintern" | where InitiatingProcessCommandLine contains "clip" | project TimeGenerated, ActionType, FileName, FolderPath, InitiatingProcessFileName, InitiatingProcessCommandLine ``` image

✅ **答案:** `"powershell.exe" -NoProfile -Sta -Command "try { Get-Clipboard | Out-Null } catch { }"` 🔎 **分析师推理:** 查询专注于包含 `clip` 的命令行,PowerShell 命令 `Get-Clipboard | Out-Null` 显眼,因为它表明了快速尝试访问剪贴板数据而不显示结果。 ## 🚩 旗帜 4 - 主机上下文侦察 **目标:** 找到收集基本主机和用户上下文以告知后续操作的活动。 **要寻找什么:** 显示攻击者收集环境或账户细节但不修改它们的遥测。 **思考:** 上下文收集塑造攻击者的决策(谁、什么和在哪里进行目标定位)。 **提示:** 1. qwi 🕵️ **指出最后一次侦察尝试的时间。** 查询: ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-10-01) .. datetime(2025-10-16)) | where DeviceName == "gab-intern-vm" | where AccountName == "g4bri3lintern" | where FileName contains "qwi" or ProcessCommandLine contains "qwi" or InitiatingProcessCommandLine contains "qwi" | project TimeGenerated, FileName, FolderPath, ProcessCommandLine, InitiatingProcessCommandLine ``` image

✅ **答案:** `2025-10-09T12:51:44.3425653Z` 🔎 **分析师推理:** 查询针对与可疑用户和设备相关的 `qwi` 活动进行筛选,最新的匹配事件显示最后一次侦察尝试发生在 `2025-10-09T12:51:44.3425653Z`。 ## 🚩 旗帜 5 - 存储表面映射 **目标:** 检测发现可能包含有趣数据的本地或网络存储位置。 **要寻找什么:** 寻找枚举文件系统或共享表面的操作和轻量级检查可用存储。 **思考:** 映射数据所在位置是收集和准备的前置步骤。 **提示:** 1. 存储评估 🕵️ **提供与此次活动相关的第二个命令。** 查询: ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-10-01) .. datetime(2025-10-16)) | where DeviceName == "gab-intern-vm" | where AccountName == "g4bri3lintern" | where ProcessCommandLine has_any ("net use", "wmic logicaldisk") | project TimeGenerated, FileName, ProcessCommandLine ``` image

✅ **答案:** `"cmd.exe" /c wmic logicaldisk get name,freespace,size` 🔎 **分析师推理:** 查询针对用于识别网络驱动器和本地磁盘信息的常用命令进行存储发现活动。第二个匹配结果(基于时间最晚)是 `"cmd.exe" /c wmic logicaldisk get name,freespace,size`,它检查驱动器名称、可用空间和总磁盘大小。 ## 🚩 旗帜 6 - 连通性与名称解析检查 **目标:** 识别验证网络可达性和名称解析的检查。 **要寻找什么:** 指示 DNS 或接口查询以及简单外向连通性探测的网络或进程事件。 **思考:** 确认外发是尝试将数据从主机移出之前的一个必要前提条件。 **旁注:2/2** 1. 会话 🕵️ **提供启动父进程的文件名。** 查询: ``` let anchorTime = datetime(2025-10-09T12:51:18.3848072Z); DeviceNetworkEvents | where TimeGenerated between (anchorTime .. (anchorTime + 10m)) | where DeviceName == "gab-intern-vm" | where InitiatingProcessAccountName == "g4bri3lintern" | project TimeGenerated, ActionType, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP, RemotePort ``` image ``` let anchorTime = datetime(2025-10-09T12:51:18.3848072Z); DeviceNetworkEvents | where TimeGenerated between (anchorTime .. (anchorTime + 10m)) | where DeviceName == "gab-intern-vm" | where InitiatingProcessAccountName == "g4bri3lintern" | where InitiatingProcessFileName == "powershell.exe" | project TimeGenerated, RemoteUrl, RemoteIP, RemotePort, InitiatingProcessFileName, InitiatingProcessParentFileName, InitiatingProcessCommandLine ``` image

✅ **答案:** `RuntimeBroker.exe` 🔎 **分析师推理:** 第一个查询使用前一个旗帜答案中的时间戳作为锚点,然后审查接下来的 10 分钟网络活动以识别后续的连通性检查。在 `powershell.exe` 作为创建不寻常外向连接的进程脱颖而出后,第二个查询缩小到这些 PowerShell 事件,并添加了 `InitiatingProcessParentFileName` 字段,显示 `RuntimeBroker.exe` 是启动父进程。 ## 🚩 旗帜 7 - 交互式会话发现 **目标:** 揭示检测主机上交互式或活动用户会话的尝试。 **要寻找什么:** 枚举当前会话状态或已登录会话的信号,而不启动接管。 **思考:** 了解哪些会话是活动的有助于攻击者决定是立即行动还是等待。 🕵️ **提供启动进程的唯一 ID。** 查询: ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-10-01) .. datetime(2025-10-16)) | where DeviceName == "gab-intern-vm" | where AccountName == "g4bri3lintern" | where ProcessCommandLine has_any ("cmd.exe") | where InitiatingProcessFileName !contains "explorer.exe" | project TimeGenerated, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessUniqueId ``` image

✅ **答案:** `2533274790397065` 🔎 **分析师推理:** 查询针对 `cmd.exe` 进行筛选,因为会话发现命令通常通过命令提示符启动,用于检查活动或已登录用户。结果显示 `2533274790397065` 在 `InitiatingProcessUniqueId` 字段中,使其成为启动进程的唯一 ID。 ## 🚩 旗帜 8 - 运行时应用程序清单 **目标:** 检测运行应用程序和服务的枚举,以告知风险和机会。 **要寻找什么:** 捕获广泛的进程/进程列表快照或运行服务的查询的事件。 **思考:** 进程清单显示什么存在以及要避免或收集的目标。 **提示:** 1. 任务 2. 列表 3. 最后 🕵️ **提供在目标主机上最好地演示运行时进程枚举事件的进程文件名。** 查询: ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-10-01) .. datetime(2025-10-16)) | where DeviceName == "gab-intern-vm" | where AccountName == "g4bri3lintern" | where ProcessCommandLine contains "task" or ProcessCommandLine contains "list" or ProcessCommandLine contains "last" | project TimeGenerated, FileName, ProcessCommandLine ``` image

✅ **答案:** `tasklist.exe` 🔎 **分析师推理:** 查询搜索包含提示术语 `task`、`list` 和 `last` 的命令行活动,以识别进程或服务枚举行为。结果显示 `cmd.exe` 启动 `tasklist /v`,然后 `tasklist.exe` 直接执行,使 `tasklist.exe` 成为最佳匹配,因为它是在主机上列出正在运行进程的 Windows 工具。 ## 🚩 旗帜 9 - 权限表面检查 **目标:** 检测尝试了解当前攻击者可用的权限。 **要寻找什么:** 反映查询组成员资格、令牌属性或权限列表的遥测。 **思考:** 权限映射告知攻击者是作为用户还是寻求提升权限。 **提示:** 1. 谁 🕵️ **识别第一次尝试的时间戳。** 查询: ``` DeviceProcessEvents | where TimeGenerated between (datetime(2025-10-01) .. datetime(2025-10-16)) | where DeviceName == "gab-intern-vm" | where AccountName == "g4bri3lintern" | where ProcessCommandLine contains "who" | where ProcessCommandLine !contains "webview" | project TimeGenerated, FileName, ProcessCommandLine ``` image

✅ **答案:** `2025-10-09T12:52:14.3135459Z` 🔎 **分析师推理:** 查询搜索包含 `who` 的命令行活动,这与权限和身份检查(如识别当前用户或账户上下文)相一致。在过滤掉无关的 `webview` 噪音后,最早匹配的事件显示第一次权限发现尝试发生在 `2025-10-09T12:52:14.3135459Z`。 ## 🚩 旗帜 10 - 访问证明与外发验证 **目标:** 找到同时验证外发可达性和尝试捕获主机状态以获取外发价值的行为。 **要寻找什么:** 寻找外发网络检查和创建为证明攻击者可以查看或收集主机数据的证据的文件。 **思考:** 这一步骤展示了访问和将有意义的数据从主机移出的潜力... **旁注:1/3** 1. 支持 🕵️ **首先联系的外发目的地是什么?** 查询: ``` let anchorTime = datetime(2025-10-09T12:51:44.3425653Z); DeviceNetworkEvents | where TimeGenerated between (anchorTime .. (anchorTime + 10m)) | where DeviceName == "gab-intern-vm" | where InitiatingProcessAccountName == "g4bri3lintern" | where InitiatingProcessFileName == "powershell.exe" | where isnotempty(RemoteUrl) | project TimeGenerated, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteUrl, RemoteIP, RemotePort ``` image

✅ **答案:** `www.msftconnecttest.com` 🔎 **分析师推理:** 查询使用前一个旗帜答案中的时间戳 `2025-10-09T12:51:44.3425653Z` 作为锚点,然后审查后续的 PowerShell 网络活动。`www.msftconnecttest.com` 是在该过滤时间线中第一个 `RemoteUrl`,使其成为第一个用于验证网络可达性的外发目的地。 ## 🚩 旗帜 11 - 打包/准备工件 **目标:
标签:BurpSuite集成, DAST, Kusto 查询语言, 威胁情报, 安全事件调查, 安全响应, 安全运营, 开发者工具, 异常检测, 恶意行为分析, 恶意软件分析, 扫描框架, 支持欺骗, 攻击溯源, 日志事件分析, 网络入侵