xtr4ng3-oxlgr/oxlgr-pe-sentinel
GitHub: xtr4ng3-oxlgr/oxlgr-pe-sentinel
一款企业级C++编写的Windows PE文件静态分析工具,通过解析熵值、导入表、节区和字符串等指标为安全团队提供不执行文件即可完成的防御性技术分诊。
Stars: 0 | Forks: 0
# OXLGR PE Sentinel
**OXLGR PE Sentinel** 是一款用 **C++17** 编写的防御性 Windows **PE**(`.exe`、`.dll`、`.sys`)可执行文件静态分析企业级工具。
它专为安全团队、蓝队分析师、高级学生、恶意软件分析实验室、防御性资产盘点以及需要在未执行二进制文件前对其进行初步技术评估的分流(triage)流程而设计。
**作者:** `xtr4ng3-oxlgr`
**内部标签:** `xtr4ng3-oxlgr 🕷️`
**许可证:** MIT
**状态:** 免费、防御性且对社区开放。
## 执行理念
在二进制分析中,第一个错误往往是过早地执行文件。
OXLGR PE Sentinel 的出发点恰恰相反:**在运行任何内容之前,先读取、测量、分类和报告**。
该工具直接从字节层面检查 PE 结构,解析 headers、sections、imports、strings 以及防御面指标。它不试图判定文件的“恶意性质”。其目的是提供一个坚实的技术视图,以便分析师能够决定哪些内容值得进一步深入检查。
其主要价值在于将多个信号组合到一份单一的报告中:
- PE 结构、
- 架构、
- entry point、
- sections 及权限、
- 全局 entropy、
- 各 section 的 entropy、
- 敏感 imports、
- 指标性 strings、
- overlay 存在情况、
- 基础缓解措施、
- 分类发现、
- 风险指导性评分。
这使得它非常适合那些需要速度且不牺牲判断力的环境:未知二进制文件的初步审查、可疑附件的分流、内部分类、实验室文档记录、学术分析或自有软件的防御性验证。
## 分析内容
### PE 结构
- DOS Header.
- NT Headers.
- Optional Header.
- Machine type.
- PE32 / PE32+.
- Entry Point RVA.
- Image Base.
- Subsystem.
- Number of sections.
- Size of image.
- Size of headers.
- DLL Characteristics.
### Sections
每个 section 的:
- 名称、
- RVA、
- 虚拟大小、
- raw offset、
- raw 大小、
- `R/W/X` 权限、
- Shannon entropy、
- 可执行且可写的 sections、
- 包含虚拟数据但无 raw data 的 sections、
- 具有高 entropy 的 sections。
### Entropy
Entropy 是该工具最重要的轴线之一。
OXLGR PE Sentinel 计算:
- 文件的全局 entropy、
- sections 的平均 entropy、
- 每个 section 的单独 entropy、
- overlay 的 entropy(如果存在)。
高 entropy 并不自动意味着恶意软件。它可能表示压缩、加密、加壳、密集的资源或合法的混淆。该工具将其视为**防御性信号**,而不是定罪。
### Imports
从 Import Table 中提取 imports,并标记相关类别:
- 内存、
- 动态执行、
- 进程、
- 线程、
- 网络、
- 注册表、
- 服务、
- 持久化。
被观察到视为敏感的 API 示例:
- `VirtualAlloc`
- `VirtualProtect`
- `WriteProcessMemory`
- `CreateRemoteThread`
- `LoadLibraryA/W`
- `GetProcAddress`
- `CreateProcessA/W`
- `RegSetValueExA/W`
- `CreateServiceA/W`
- `InternetOpenA/W`
- `URLDownloadToFileA/W`
- `socket`
- `connect`
这些 API 可能完全是合法的。其目的是让它们出现在报告中,以加快分流速度。
### 指标性 Strings
提取相关的 ASCII strings 并按上下文进行分类:
- URLs、
- 命令、
- 对 PowerShell 或 CMD 的引用、
- 持久化路径、
- 外部服务、
- 潜在的 tokens/webhooks、
- 对 `.dll` 或 `.exe` 的引用。
### Overlay
检测附加在主 PE 镜像之后的数据。
Overlay 在安装程序、签名、加壳工具或混合格式中可能很常见。它在防御性分析中也可能具有相关性。因此,该工具会报告:
- 是否存在、
- offset、
- 大小、
- entropy。
## 不做的事项
OXLGR PE Sentinel 不是一款攻击性工具。
它不做:
- 执行二进制文件、
- 漏洞利用、
- 注入、
- 绕过、
- 主动脱壳、
- 连接互联网、
- 动态分析、
- 修改文件、
- 删除文件、
- 自动分类为恶意软件。
报告必须结合上下文进行解读。
## 编译
### Linux / macOS / Windows 环境下使用 CMake
```
cmake -S . -B build
cmake --build build --config Release
```
### Windows 环境下使用 Visual Studio Developer Prompt
```
cmake -S . -B build
cmake --build build --config Release
```
生成的可执行文件将位于类似于以下的路径:
```
build/Release/oxlgr-pe-sentinel.exe
```
或者:
```
build/oxlgr-pe-sentinel
```
具体取决于所使用的生成器。
## 使用方法
```
oxlgr-pe-sentinel archivo.exe
```
生成报告:
```
oxlgr-pe-sentinel archivo.exe --json report.json --md report.md
```
限制 strings 的数量:
```
oxlgr-pe-sentinel archivo.exe --max-strings 100
```
## 输出示例
```
OXLGR PE Sentinel
Autor: xtr4ng3-oxlgr
Etiqueta interna: xtr4ng3-oxlgr 🕷️
------------------------------------------------------------
Archivo: sample.exe
Valido PE: si
Tamaño: 924672 bytes
Clase: PE32+
Arquitectura: x64
Subsistema: Windows GUI
EntryPoint RVA: 0x14000
ImageBase: 0x140000000
Secciones: 6
Imports: 142
Strings relevantes: 31
Entropia archivo: 6.873
Entropia media secciones: 5.921
Overlay: si (181248 bytes, entropia 7.611)
Puntaje de riesgo orientativo: 64/100
```
## 评分解读
该评分仅供参考。
```
0 - 25 Bajo interés inicial
26 - 50 Revisión recomendada
51 - 75 Triage defensivo prioritario
76 - 100 Alta densidad de señales
```
高分并不能证明一个文件是恶意的。它表明该二进制文件包含足够多的结构性信号,值得进行更深入的审查。
## 项目结构
```
oxlgr-pe-sentinel/
│
├─ CMakeLists.txt
├─ README.md
├─ LICENSE
├─ SECURITY.md
├─ CONTRIBUTING.md
├─ include/
│ └─ oxlgr/
│ ├─ byte_reader.hpp
│ ├─ entropy.hpp
│ ├─ indicators.hpp
│ ├─ pe_parser.hpp
│ ├─ report.hpp
│ ├─ strings.hpp
│ └─ types.hpp
├─ src/
│ ├─ main.cpp
│ ├─ entropy.cpp
│ ├─ indicators.cpp
│ ├─ pe_parser.cpp
│ ├─ report.cpp
│ └─ strings.cpp
├─ docs/
├─ examples/
├─ tests/
└─ .github/
└─ workflows/
└─ cmake.yml
```
## 负责任的使用
本工具旨在用于防御性分析、学习、文档记录和授权的分流处理。
不可用于证明对某个文件的自动指控,也不可用于替代动态分析、沙盒测试、特征码、遥测或人工调查。
## 许可证
MIT。可免费使用、学习、修改和分享。
标签:Bash脚本, C++17, DAST, HTTP头分析, PE文件分析, 云安全监控, 恶意软件分析, 逆向分析, 静态分析