greg1125/Detection-Rules
GitHub: greg1125/Detection-Rules
这是一个基于 Elastic Security 构建的 SOC 检测工程实验室项目,旨在通过模拟真实攻击行为来开发和验证基于行为的安全检测规则。
Stars: 0 | Forks: 0
# **SOC 检测工程实验室**
## **概述**
本项目演示了在受控实验室环境中构建的完整安全运营中心 (SOC) 检测工程工作流。该实验室的主要目标是模拟真实的攻击者行为,生成相关的遥测数据,并使用 Elastic Security 开发基于行为的检测规则。
该实验室中的检测不是基于静态指标或已知签名构建的,而是围绕攻击者技术以及系统和身份验证日志中的可观察模式构建的。每个检测都映射到 MITRE ATT&CK 技术,并通过受控的攻击模拟进行验证。
该实验室反映了现代 SOC 环境的运作方式,即根据可用的遥测数据开发检测,对其进行持续测试,并将其集成到警报和响应流程中。
## **目标**
本项目的主要目标是构建实用的、真实世界的检测工程技能。
这包括生成真实的攻击活动、分析日志、创建检测规则、验证警报以及将检测集成到 SOC 工作流中。一个关键重点是了解攻击者在系统中的行为方式,以及如何通过日志数据识别这些行为,而不是依赖已知签名或静态指标。
## **实验室环境**
实验室环境是使用分段虚拟网络构建的,用于模拟企业基础架构。
该环境包括 Windows 终端、Linux 终端、一台攻击机器以及用于集中日志记录和检测的 Elastic Stack 部署。Elastic Agent 部署在各个终端上,以收集遥测数据,例如 Windows 事件日志和 Linux 身份验证日志。
这些日志被摄取到 Elasticsearch 中,并使用 KQL 和基于 EQL 的检测规则在 Kibana 中进行分析。使用 Impacket、Ncrack、Mythic 和原生系统实用程序等工具执行攻击模拟,以生成真实的对手活动。
## **检测工程方法**
本实验室中的所有检测均遵循基于行为的方法。
检测不是围绕特定的工具名称或静态工件构建的,而是围绕活动序列、异常阈值、权限更改和表明恶意行为的身份验证模式构建的。这种方法确保即使攻击者修改工具、随机化名称或更改执行方法,检测仍然有效。
每个检测都是根据实验室环境中实际可用的遥测数据设计的,反映了现实世界中可见性经常受限的情况。
## **已实施的检测**
## **暴力破解身份验证 (SSH & RDP)**
## **检测规则**
```
/* SSH */
system.auth.ssh.event:"Failed" and user.name:*
/* RDP */
event.code:4625 and winlog.event_data.LogonType:"10"
```
## **阈值逻辑**
检测按源 IP 地址、用户名和主机名分组。当在 5 分钟窗口内发生 5 次或更多次失败的身份验证尝试时,将触发警报,表明登录行为异常。
## **描述**
此检测识别在短时间窗口内重复出现的失败身份验证尝试。
SSH 暴力破解尝试是使用 Linux 身份验证日志检测的,而 RDP 暴力破解尝试是使用日志类型为 10 的 Windows 事件 ID 4625 识别的。
基于阈值的方法突出了异常的登录行为,其中来自单个源的多次失败表明正在进行密码猜测活动。
## MITRE ATT&CK
T1110 – Brute Force (暴力破解)
## **PsExec 横向移动**
## **检测规则**
```
sequence by host.name with maxspan=2m
[authentication where event.code == "4624" and winlog.event_data.LogonType == "3"]
[any where event.code == "7045" and winlog.event_data.ImagePath != null]
```
## **描述**
此检测通过远程身份验证后的服务创建来识别横向移动。
该规则将成功的网络登录事件与随后的服务安装事件相关联。此活动序列与 Impacket PsExec 等工具的行为一致,即使服务名称和可执行文件被随机化也是如此。
通过关注行为模式而不是静态标识符,此检测对经过修改的攻击者工具仍然有效。
## MITRE ATT&CK
T1021 – Remote Services (远程服务)
T1569.002 – Service Execution (服务执行)
## **计划任务持久化**
## **检测规则**
```
event.code:4698 AND (
winlog.event_data.TaskContent:(*cmd.exe* OR *powershell.exe*)
OR winlog.event_data.TaskName:("*update*" OR "*svc*" OR "*service*" OR "*system*" OR "*win*")
)
```
## **描述**
此检测通过计划任务的创建来识别持久化机制,重点关注可疑的执行行为和任务命名模式。
它监控 Windows 事件 ID 4698,该事件表示已创建新的计划任务。该检测评估任务内容,以识别命令解释器(如 cmd.exe 和 powershell.exe)的执行,这些解释器通常被攻击者用来建立持久化。
除了执行行为外,该检测还分析任务命名模式中的关键字,例如 update、svc、service、system 和 win。这些命名约定经常被攻击者使用,以将恶意任务伪装成合法的系统活动。
这种组合方法通过识别任务的意图以及试图与正常系统进程融合的行为来提高检测保真度。该检测是根据实验室环境中可用的遥测数据设计的,因为进程创建日志并不总是可用,因此需要依赖任务创建事件和相关元数据。
## MITRE ATT&CK
T1053.005 – Scheduled Task/Job (计划任务/作业)
## **管理员组权限提升**
## **检测规则**
```
sequence by host.name with maxspan=5m
[any where event.code == "4624" and winlog.logon.type == "3"]
[any where event.code == "4732" and group.name == "Administrators"]
```
## **描述**
此检测通过修改本地管理员组来识别权限提升。
它将远程登录事件与随后的组成员身份更改(将用户添加到管理员组)相关联。此行为与攻击者利用有效凭据获取提升访问权限的行为一致。
这种基于相关性的方法通过识别有意义的活动序列而不是孤立事件来提高检测保真度。
## MITRE ATT&CK
T1078 – Valid Accounts (有效账户)
T1098 – Account Manipulation (账户操作)
## **Mythic C2 活动检测**
## **检测规则**
```
event.code:1 and (
winlog.event_data.Image:"C:\\Users\\Public\\Downloads\\windows-update.exe" or
winlog.event_data.Hashes:"*73566D8212E86361C50A1186C07FCB67A3497370273E963C9C472FF4493BB1D5*"
)
```
## **描述**
此检测通过 Windows 终端上的可疑进程执行来识别潜在的 Mythic 命令与控制 (C2) 活动。
该检测专注于进程创建事件(事件 ID 1),并识别由 Mythic 框架交付的 Payload 的执行。在本实验室中,Payload 是从 Public 用户文件夹中的非标准目录执行的,这是攻击者经常滥用的目录,以避免检测。
此外,该检测结合了与 Payload 关联的已知文件哈希,在识别恶意执行时提供额外的验证层。
## **检测逻辑**
该检测旨在识别偏离正常系统行为的进程执行。
该规则不是仅依赖文件名,而是评估来自非常规目录的执行,并在可用时选择性地验证文件哈希。这确保即使 Payload 被重命名,仍然可以识别可疑的执行模式。
通过监控进程创建事件,该检测捕获了利用后早期阶段的活动,这对于识别命令与控制行为至关重要。
## MITRE ATT&CK
T1059 – Command and Scripting Interpreter (命令和脚本解释器)
T1105 – Ingress Tool Transfer (入口工具传输)
T1055 – Process Injection (进程注入)
## **验证**
该检测通过在 Windows 终端上执行 Mythic Payload 并确认在 Elastic Security 中生成了进程创建日志进行了验证。
Payload 是从指定目录执行的,并且基于文件路径和哈希条件成功触发了警报。执行了多次执行,以确保一致的警报行为。
Kibana 中存在警报证实该检测准确识别了实验室环境中的 Mythic 相关活动。
## **检测验证****
每个检测都通过受控的攻击模拟进行验证,以确保可靠性和一致性。
使用不同的变体多次执行攻击场景,以确认检测不依赖于单个静态值。在 Elastic Security 中审查日志,以验证生成了相关事件并且警报始终被触发。
```
# SSH 暴力破解
ncrack -p 22
# RDP 暴力破解
ncrack -p 3389
# 计划任务持久化
schtasks /create /tn "Updater" /tr "C:\temp\malware.exe" /sc once /st 00:00
# 管理员组提权
net localgroup administrators user /add
```
验证确保日志生成正确,检测规则按预期触发,并且在重复的测试场景中警报保持一致。
## **SOC 自动化流程****
使用 Elasticsearch、n8n、Gmail 和 osTicket 将检测集成到自动化的 SOC 工作流中。
Elastic 中生成的警报被写入自定义索引。n8n 工作流持续轮询此索引,该工作流检索警报数据,规范化关键字段,并将信息格式化为结构化警报。
然后,格式化的警报通过电子邮件发送到 osTicket 实例,在那里它被自动摄取并转换为工单。这创建了一个完整的从检测到响应的流程,模拟了现实世界的 SOC 环境。
此架构设计为通过避免 Webhook 连接器并使用基于索引的警报来在 Elastic 免费版中运行。
## **关键要点**
本项目表明,有效的检测工程是以理解攻击者行为为中心,而不是识别特定工具。
基于行为的检测提供了更强的覆盖范围,并且对诸如工具修改和混淆等规避技术具有弹性。根据可用的遥测数据构建检测至关重要,因为现实世界环境中的可见性往往有限。
将检测集成到完整的 SOC 工作流中可确保警报具有可操作性,并直接有助于事件响应过程。
## **未来改进**
本实验室未来的增强功能包括将检测覆盖范围扩展到其他攻击技术,集成基于云的遥测数据(例如 AWS CloudTrail 和 GuardDuty),以及开发自动响应能力。
额外的改进将侧重于提高检测保真度,减少误报,以及创建结构化的调查手册以支持事件响应。
标签:AMSI绕过, Cloudflare, EDR, Elasticsearch, Elastic Security, ELK Stack, EQL, Impacket, KQL, Linux日志, MITRE ATT&CK, MIT许可证, Mythic, n8n, Ncrack, OpenCanary, osTicket, PsExec, TGT, Windows日志, 威胁检测, 安全告警, 安全运营中心, 攻防演练, 数据展示, 横向移动, 渗透测试模拟, 端点检测与响应, 红队, 红队行动, 编程规范, 网络安全实验室, 网络映射, 网络调试, 脆弱性评估, 脱壳工具, 自动化, 越狱测试