arivu14/Soc-Malware-Triage

GitHub: arivu14/Soc-Malware-Triage

一个为SOC家庭实验室设计的静态恶意软件鉴别工具,通过行为模式检测和YARA规则对可疑脚本进行威胁评分。

Stars: 0 | Forks: 0

# SOC 恶意软件鉴别工具 ### 静态分析扫描器 | SOC 家庭实验室项目 ![Version](https://img.shields.io/badge/version-3.0-blue) ![Language](https://img.shields.io/badge/language-Bash-green) ![Samples](https://img.shields.io/badge/malware%20samples-15-red) ![YARA Rules](https://img.shields.io/badge/YARA%20rules-8-orange) ## 项目简介 这是一个为 SOC 家庭实验室环境构建的**静态恶意软件鉴别工具**。 它分析可疑脚本文件,并根据已知的恶意行为模式对其进行评分——**无需执行文件**。 该工具旨在理解和检测真实攻击者使用的混淆技术,并映射到 MITRE ATT&CK 框架。 ## 为什么构建这个项目 大多数 SOC L1 工具都是黑盒——你输入一个文件,得到一个判定结果。 我想理解**为什么**某些模式是恶意的,而不仅仅是知道它们是恶意的。所以我从头构建了一个扫描器,故意用逃避技术破坏它,然后修复它。这个项目记录了整个学习循环。 ## 项目结构 ``` soc-malware-triage/ │ ├── triage.sh ← Main scanner (run this) │ ├── samples/ ← 15 malware samples, one per technique │ ├── sample_01_basic_base64.sh │ ├── sample_02_hex_encoding.sh │ ├── sample_03_double_encoding.sh │ ├── sample_04_variable_splitting_plus.sh │ ├── sample_05_variable_splitting_join.sh │ ├── sample_06_variable_splitting_full.sh │ ├── sample_07_reversed_strings.sh │ ├── sample_08_external_fetch_curl.sh │ ├── sample_09_external_fetch_download.sh │ ├── sample_10_python_base64_exec.py │ ├── sample_11_python_double_encoding.py │ ├── sample_12_python_subprocess_eval.py │ ├── sample_13_heredoc_obfuscation.sh │ ├── sample_14_php_base64_exec.php │ └── sample_15_combined_techniques.sh │ ├── yara_rules/ ← 8 YARA rules, one per technique │ ├── rule_01_decode_functions.yar │ ├── rule_02_execution_functions.yar │ ├── rule_03_decode_execute_combo.yar │ ├── rule_04_double_encoding.yar │ ├── rule_05_variable_splitting.yar │ ├── rule_06_external_fetch.yar │ ├── rule_07_reversed_strings.yar │ ├── rule_08_heredoc_payload.yar │ └── yara_simulate.py ← Python YARA simulator (no install needed) │ └── docs/ └── FINDINGS.md ← Detection results for all 15 samples ``` ## 快速开始 ``` # Clone the repo git clone https://github.com/YOUR_USERNAME/soc-malware-triage cd soc-malware-triage # Make triage script executable chmod +x triage.sh # 扫描文件 ./triage.sh samples/sample_01_basic_base64.sh # Scan all samples at once for f in samples/*; do echo "--- $f ---"; ./triage.sh "$f" | grep "VERDICT"; done ``` ### 环境要求 - Bash 4.0+ - Python 3.6+ (用于 YARA 模拟) - 可选: `yara` CLI 工具用于原生 YARA 扫描 (`sudo apt install yara`) ## 扫描器工作原理 扫描器对每个文件运行 **10 项基于行为的检查** + **8 条 YARA 规则**。 它**不执行**文件——完全是静态分析。 ### 检测项 | 检查项 | 检测内容 | 重要性 | |-------|---------|--------| | 01 | 二进制/可执行文件身份 | 打包的恶意软件隐藏在可执行文件中 | | 02 | 解码函数 (所有语言) | 编码-执行模式的前半部分 | | 03 | 执行函数 (所有语言) | 编码-执行模式的后半部分 | | 04 | 解码 + 执行组合 | #1 通用恶意软件指标 | | 05 | 熵值测量 | 高熵值 = 混淆载荷 | | 06 | 双重编码 | 嵌套 base64 绕过单次扫描器 | | 07 | 变量分割 | 工具名称被分割成片段以绕过 grep | | 08 | 外部获取 | 载荷位于远程服务器——文件看起来很干净 | | 09 | 反转字符串 | 关键字倒写以绕过关键字搜索 | | 10 | Heredoc 混淆 | 多行载荷绕过单行 grep | ### 威胁评分 每个警报都会向威胁分数增加加权分数: | 分数 | 判定结果 | |-------|---------| | 70+ | 🔴 高风险 — 隔离并上报 | | 40–69 | 🟡 中风险 — 人工审查 | | 10–39 | 🟠 低风险 — 监控 | | 0–9 | 🟢 干净 | ### 多语言支持 该工具检测 5 种语言的恶意模式: | 行为 | Bash | Python | PHP | JavaScript | Perl | |-----------|------|--------|-----|------------|------| | Base64 decode | `base64 -d` | `b64decode()` | `base64_decode()` | `atob()` | `decode_base64()` | | Execute command | `\| sh` | `os.system()` | `system()` | `eval()` | `system()` | | Hex decode | `\x` escape | `bytes.fromhex()` | `hex2bin()` | `fromCharCode()` | `unpack()` | | Remote fetch | `curl/wget` | `urllib/requests` | `file_get_contents()` | `fetch()` | `LWP` | ## 恶意软件样本说明 所有 15 个样本都使用**无害载荷** (`echo 'Hacked!'`),但展示了 真实的攻击者技术。每个文件都记录了技术、MITRE ID、难度和说明。 | 样本 | 技术 | 语言 | 难度 | |--------|-----------|----------|------------| | 01 | Basic base64 | Bash | 低 | | 02 | Hex encoding `\x` | Bash | 低 | | 03 | Double base64 encoding | Bash | 中 | | 04 | Variable splitting `+=` | Bash | 中 | | 05 | Variable splitting `${V1}${V2}` | Bash | 中-高 | | 06 | Variable splitting — hiding interpreter too | Bash | 高 | | 07 | Reversed strings `echo "hsab" \| rev` | Bash | 中 | | 08 | External fetch `curl URL \| sh` | Bash | 高 | | 09 | External fetch download+execute | Bash | 高 | | 10 | Python base64 + os.system | Python | 中 | | 11 | Python double encoding | Python | 中-高 | | 12 | Python subprocess + eval | Python | 中-高 | | 13 | Heredoc payload obfuscation | Bash | 中-高 | | 14 | PHP base64 + system() | PHP | 中 | | 15 | Combined — 4 techniques chained | Bash | 极高 | ## YARA 规则 包含 8 条 YARA 规则,每种混淆技术一条。 它们遵循与 Bash 检查相同的逻辑,但采用真实 SOC 工具使用的 **行业标准 YARA 格式**。 原生运行 (需要安装 `yara`): ``` # Run one rule yara yara_rules/rule_03_decode_execute_combo.yar samples/sample_10_python_base64_exec.py # Run all rules against a file yara yara_rules/*.yar suspicious_file.sh # 扫描整个目录 yara yara_rules/*.yar samples/ ``` 如果未安装 YARA,`triage.sh` 会自动使用 `yara_simulate.py` 用 Python 复制相同的逻辑——无需安装。 ## MITRE ATT&CK 映射 | 技术 ID | 名称 | 样本 | |-------------|------|---------| | T1027 | Obfuscated Files or Information | 01, 02, 04, 05, 06, 07, 13 | | T1027.001 | Binary Padding / Layered Obfuscation | 03, 11 | | T1059 | Command and Scripting Interpreter | 01–09, 13 | | T1059.006 | Python Scripting | 10, 11, 12 | | T1059.004 | Unix Shell via PHP | 14 | | T1105 | Ingress Tool Transfer | 08, 09, 15 | | T1140 | Deobfuscate/Decode Files | 01–15 | ## 检测结果 所有 15 个样本均被评为高风险,威胁评分从 85 到 255 不等: ``` sample_01_basic_base64.sh Score: 175 HIGH RISK sample_02_hex_encoding.sh Score: 120 HIGH RISK sample_03_double_encoding.sh Score: 230 HIGH RISK sample_04_variable_splitting.sh Score: 115 HIGH RISK sample_05_variable_splitting.sh Score: 155 HIGH RISK sample_06_variable_splitting.sh Score: 90 HIGH RISK sample_07_reversed_strings.sh Score: 115 HIGH RISK sample_08_external_fetch_curl.sh Score: 130 HIGH RISK sample_09_external_fetch_dl.sh Score: 85 HIGH RISK sample_10_python_base64.py Score: 230 HIGH RISK sample_11_python_double.py Score: 255 HIGH RISK sample_12_python_subprocess.py Score: 240 HIGH RISK sample_13_heredoc.sh Score: 175 HIGH RISK sample_14_php_base64.php Score: 85 HIGH RISK sample_15_combined.sh Score: 180 HIGH RISK ``` ## 已知局限性 这是一个**静态分析**工具。它无法捕获: - **无文件恶意软件** — 存在于内存中,从不接触磁盘 - **加密载荷** — 没有密钥内容不可读 - **被滥用的合法工具** — `curl` 和 `base64` 也用于正常脚本 - **新颖的混淆** — 尚未在规则集中的新技术 真实的 SOC 环境会叠加使用: - EDR (行为运行时检测) - SIEM (跨事件关联) - Sandbox (受控沙箱执行) ## 构建心得 最大的收获:**攻击者不改变目标,只改变形式**。 我们检测到的每种混淆技术都共享相同的基础行为: 1. 隐藏载荷 (编码) 2. 在运行时解码 3. 执行 无论有多少层混淆——反转字符串、分割变量、十六进制编码、双重 base64——行为链 解码 → 执行 总是 存在。这就是检测器的目标,而不是表面层次的关键字。 ## 使用的工具 - Bash scripting - Python 3 (YARA simulation) - YARA (pattern matching engine) - MITRE ATT&CK Framework (technique mapping) ## 作者 构建为 SOC 家庭实验室作品集项目的一部分。 灵感来源于蓝队行动中使用的真实鉴别工作流。
标签:AMSI绕过, Base64解码, Cloudflare, DAST, DNS信息、DNS暴力破解, DNS 反向解析, DNS枚举, IPv6支持, MITRE ATT&CK, Shell脚本分析, SOC家庭实验室, YARA规则, 云安全监控, 威胁检测, 安全运营中心, 应用安全, 恶意软件分析, 混淆检测, 结构化查询, 网络信息收集, 网络安全工具, 网络安全项目, 网络映射, 自动化安全, 静态分析