0r1ng/shellcode_analyzer

GitHub: 0r1ng/shellcode_analyzer

面向蓝队的静态 shellcode 提取与分析工具,从多种日志和文件格式中安全地检测编码、反汇编代码并提取 IOC。

Stars: 1 | Forks: 0

# Shellcode 分析器 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Python](https://img.shields.io/badge/Python-3.10%2B-blue.svg)](https://www.python.org/) [![静态分析](https://img.shields.io/badge/Analysis-Static%20Only-success.svg)](#安全指南) Shellcode Analyzer 是一款用于蓝队(Blue Team)取证和静态 payload 检查的防御性 Python 工具。它可以从原始样本、日志、文本文件、结构化安全导出文件、Windows 事件日志、目录和归档文件中提取可能的字节序列。 该工具会测试可逆编码,对 x86 和 x64 反汇编候选项进行评分排名,提取指标,并生成人类可读或 JSON 格式的报告,且全程不会执行输入的字节序列。 ## 功能 * 直接支持转义十六进制、纯十六进制、Base64、原始文件、标准输入和目录扫描 * 支持 LOG、TXT、CEF、LEEF、JSON、JSONL、NDJSON、CSV、TSV、XML、HTML、YAML 和常见脚本导出文件 * 支持 ZIP、TAR、TGZ、GZIP、BZIP2 和 XZ 归档文件扫描 * 可选通过 `python-evtx` 解析 Windows EVTX 文件 * 提取转义十六进制、字节数组、十进制数组、URL 编码字节、Base64、Base64URL、分隔十六进制、连续十六进制和十六进制转储(hexdump) * SHA-256 去重,同时保留每个来源字段、行和归档成员的位置信息 * 支持 RAW、XOR、ADD、SUB、ROL 和 ROR 转换测试 * 自动进行 x86 和 x64 评分,并检测可能的入口偏移量 * 提取 ASCII 和 UTF-16LE 字符串 * 检测 URL、域名、IPv4、IPv6、电子邮件、路径、注册表、命名管道、PE、ELF 和 ZIP 指标 * 检测可疑的 Windows 和 Linux API 关键字 * 带有注释的 Capstone 反汇编 * 人类可读和 JSON 格式的报告 * 导出解码后的二进制文件 * 仅进行静态分析;绝不执行提供的 payload ## 环境要求 * Python 3.10 或更高版本 * Capstone Python 绑定 * 可选:用于处理 EVTX 文件的 `python-evtx` ## 安装说明 ``` git clone cd python3 -m venv .venv source .venv/bin/activate python3 -m pip install --upgrade pip python3 -m pip install capstone ``` 可选的 EVTX 支持: ``` python3 -m pip install python-evtx ``` 显示所有可用选项: ``` python3 shellcode_analyzer.py --help ``` ## 快速开始 分析转义十六进制: ``` python3 shellcode_analyzer.py '\x55\x8b\xec\x33\xc0\xc3' ``` 分析纯十六进制: ``` python3 shellcode_analyzer.py 558bec33c0c3 ``` 分析 Base64: ``` python3 shellcode_analyzer.py VYvsM8DD ``` 分析来自标准输入的原始字节: ``` cat sample.bin | python3 shellcode_analyzer.py --stdin ``` ## 分析文件和安全导出文件 `--file` 选项会自动处理原始二进制文件、常见的文本和结构化导出文件、归档文件、EVTX 文件和目录。 分析原始二进制文件: ``` python3 shellcode_analyzer.py --file sample.bin ``` 分析日志或文本文件: ``` python3 shellcode_analyzer.py --file security.log python3 shellcode_analyzer.py --file investigation.txt ``` 分析结构化导出文件: ``` python3 shellcode_analyzer.py --file alerts.json python3 shellcode_analyzer.py --file alerts.csv python3 shellcode_analyzer.py --file sandbox_report.xml python3 shellcode_analyzer.py --file siem_events.cef ``` 分析 EVTX 文件: ``` python3 shellcode_analyzer.py --file Microsoft-Windows-Sysmon.evtx ``` 分析归档文件: ``` python3 shellcode_analyzer.py --file incident_bundle.zip ``` 递归扫描目录: ``` python3 shellcode_analyzer.py --file ./security_exports ``` 禁用递归扫描: ``` python3 shellcode_analyzer.py --file ./security_exports --no-recursive ``` ## 报告与输出 生成 JSON 报告: ``` python3 shellcode_analyzer.py --file alerts.json --json > shellcode_report.json ``` 保存排名最高的解码 payload: ``` python3 shellcode_analyzer.py --file security.log --write-decoded decoded_payload.bin ``` 保存所有已接受的解码结果: ``` python3 shellcode_analyzer.py --file ./security_exports --output-dir decoded_artifacts ``` 报告包括: * 源文件和源位置 * 原始和解码后的 SHA-256 哈希值 * 编码或转换方式 * 候选架构 * 置信度分数 * 熵 * 提取的字符串 * 可疑关键字 * 网络和主机指标 * 带注释的反汇编代码 ## 分析控制 强制指定架构: ``` python3 shellcode_analyzer.py --file sample.bin --arch x86 python3 shellcode_analyzer.py --file sample.bin --arch x64 ``` 保留更多排名候选: ``` python3 shellcode_analyzer.py --file sample.bin --top 15 ``` 更改反汇编基地址: ``` python3 shellcode_analyzer.py --file sample.bin --base-address 0x400000 ``` 限制打印的指令数量: ``` python3 shellcode_analyzer.py --file sample.bin --max-instructions 50 ``` 使用更严格的制品(artifact)阈值以减少误报: ``` python3 shellcode_analyzer.py --file ./security_exports --min-score 70 ``` 使用较低的阈值进行更深入的手动审查: ``` python3 shellcode_analyzer.py --file ./security_exports --min-score 0 ``` 分析更多提取的 payload: ``` python3 shellcode_analyzer.py --file alerts.json --max-artifact-payloads 100 ``` 提高单文件或归档成员的大小限制: ``` python3 shellcode_analyzer.py --file incident_bundle.zip --max-file-bytes 52428800 ``` ## 可识别的 Payload 表示形式 ``` \xfc\x48\x83\xe4\xf0 0xfc, 0x48, 0x83, 0xe4, 0xf0 252, 72, 131, 228, 240 [252, 72, 131, 228, 240] %FC%48%83%E4%F0 fc 48 83 e4 f0 fc4883e4f0 /EmD5PA= ``` 提取器不会将常规的 MD5、SHA-1、SHA-256 和 SHA-512 字段视为 payload,除非周围字段能够明确标识该值为 payload 数据。 ## 工作原理 1. **摄取(Ingest)** 直接输入的值、文件、安全导出文件、归档文件、EVTX 文件或目录。 2. **提取** 字段、行、数组和十六进制转储中的候选字节序列。 3. **去重** 通过 SHA-256 识别并去除相同的 payload,同时保留每一次出现的位置记录。 4. **转换** 使用 RAW、XOR、ADD、SUB、ROL 和 ROR 测试候选项。 5. **反汇编** 并对 x86 和 x64 的解析结果进行评分。 6. **丰富** 利用字符串、API 名称、路径、网络指标和嵌入式签名来丰富分析结果。 7. **报告** 在终端或以 JSON 格式输出排名后的结果。 ## 示例工作流 扫描导出的告警目录: ``` python3 shellcode_analyzer.py --file ./exports --min-score 60 --output-dir decoded_findings ``` 创建 JSON 报告: ``` python3 shellcode_analyzer.py --file ./exports --min-score 60 --json > analysis_report.json ``` 使用逆向工程工具(如 Ghidra、IDA、Binary Ninja 或 Cutter)手动审查排名最高的发现。 ## 安全指南 * 使用隔离的虚拟机或恶意软件分析环境。 * 在分析前保留原始证据。 * 在处理前后计算哈希值。 * 不要假定高分即代表恶意。 * 不要假定低分即代表安全。 * 在使用其他工具打开解码输出之前,请先进行手动审查。 * 避免将私人日志、客户数据、凭据或活跃的恶意软件上传到公共代码库。 * 将归档文件和解码后的二进制文件视为具有潜在威胁。 * 请勿在生产系统上执行提取的 payload。 ## 局限性 * 检测基于启发式算法,可能会产生误报或漏报。 * 分析目前侧重于 x86 和 x64 代码。 * 该工具不会模拟或执行指令。 * 自定义循环、多字节、多态或依赖环境的编码器可能需要额外的解码模块。 * 不支持受密码保护的归档文件。 * 专有或加密的供应商格式必须先导出为 JSON、JSONL、CSV、XML、TXT、CEF、LEEF、EVTX 或其他受支持的格式。 * 刻意实施文件和归档大小限制,以降低内存耗尽和解压炸弹风险。 * 有效的反汇编结果并不自动意味着这些字节就是可执行的 shellcode。 ## 退出代码 | 代码 | 含义 | | ---: | ------------------------------------------------------------ | | `0` | 分析成功完成并产生了可接受的结果 | | `1` | 制品扫描已完成,但没有 payload 满足阈值要求 | | `2` | 输入或配置无效 | | `3` | 写入解码输出失败 | ## 开发 检查脚本的语法错误: ``` python3 -m py_compile shellcode_analyzer.py ``` 运行直接输入测试: ``` python3 shellcode_analyzer.py 558bec33c0c3 ``` 运行安全导出测试: ``` python3 shellcode_analyzer.py --file test_exports --min-score 0 --json > test_report.json ``` ## 负责任的使用 本项目旨在用于授权的防御性安全工作、事件响应、恶意软件取证、研究和教育。 用户需对以下事项负责: * 获得适当的授权 * 遵守适用的法律和组织政策 * 保护敏感证据 * 使用隔离的分析环境 * 避免未经授权部署或执行恶意代码 ## 许可证 本项目根据 MIT 许可证授权。 有关完整的许可证文本,请参阅 [`LICENSE`](LICENSE) 文件。 ``` MIT License Copyright (c) 2026 0r1ng Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` ## 免责声明 本项目仅供防御和教育目的使用。维护者不对涉及本软件的误用、损害、数据丢失或未经授权的活动承担责任。
标签:DNS 反向解析, Python, Shellcode分析, 库, 应急响应, 恶意代码分析, 无后门, 网络信息收集, 逆向分析, 逆向工具, 配置文件