ryoshu404/statica
GitHub: ryoshu404/statica
模块化静态分析管道,从文件中提取哈希、字符串和 IOC 指标,输出结构化 JSON。
Stars: 0 | Forks: 0
# Statica
Statica 是一个使用 Python 编写的模块化静态分析管道,用于执行轻量级文件分析并生成适用于自动化和安全工作流的结构化 JSON 输出。Statica 的目标是提供一种简单、易于自动化集成的静态分析工具,可集成到安全工作流、分类管道和检测工具中。
该工具可提取文件哈希、可打印字符串以及常见的威胁指标,如 IP 地址、URL、域和可疑文件痕迹。
# 功能
Statica 目前实现了以下功能:
- 文件哈希计算(MD5, SHA256)
- 可打印 ASCII 字符串提取
- 可配置的最小字符串长度
- IPv4 IOC 检测
- URL IOC 检测
- 域 IOC 检测
- 可疑文件痕迹检测
- IOC 输出去重
- 结构化 JSON 输出
- 模块化分析管道
- 命令行接口
该工具设计轻量且可扩展,以便在不修改现有管道组件的情况下添加额外的分析阶段。
# 架构
Statica 遵循简单的模块化管道架构,其中每个阶段执行单一分析任务并将结果传递给下一阶段。
管道流程:
文件(字节)
↓
HashExtractor
↓
StringExtractor(用户指定最小长度)
↓
StringExtractor(IOC 候选提取)
↓
IOCExtractor
↓
ReportBuilder
↓
JSONFormatter
↓
stdout
每个提取器负责单一职责:
| 组件 | 职责 |
|-----------|---------------|
| HashExtractor | 计算 MD5 和 SHA256 文件哈希 |
| StringExtractor | 提取可打印 ASCII 字符串 |
| IOCExtractor | 使用正则表达式检测威胁指标 |
| ReportBuilder | 组装结构化分析结果 |
| JSONFormatter | 生成确定性 JSON 输出 |
这种分离允许以对现有代码最小影响的方式添加新的分析阶段。
# 设计决策
## 两阶段字符串提取
Statica 执行**两阶段字符串提取**。
1. 第一阶段使用用户提供的 `--minlen` 值提取字符串,用于**分析师可见的输出**。
2. 第二阶段使用较低的固定阈值(`min_len = 4`)提取字符串,专门用于 **IOC 候选检测**。
这种设计确保即使分析师增加显示的字符串长度阈值,仍能检测到诸如域、URL 和文件痕迹等较短的指标。
这种分离在保持可配置的分析师输出的同时,提高了检测覆盖率。
## 确定性输出
IOC 结果在内部使用集合存储,并作为**排序后的列表**返回。
优点:
- 指标去重
- 确定性 JSON 输出
- 更易于自动化和下游处理
- 多次运行结果一致
## 模块化提取器架构
每个分析功能都作为独立的提取器模块实现。
优势:
- 职责分离明确
- 易于测试
- 扩展直观
- 代码库可维护
未来的提取器(文件元数据、熵分析、PE 解析等)可以在不修改现有组件的情况下添加。
# 仓库结构
```
statica/
├── src/
│ └── statica/
│ ├── cli.py
│ ├── pipeline.py
│ ├── report.py
│ ├── extractors/
│ │ ├── hash_extractor.py
│ │ ├── string_extractor.py
│ │ └── ioc_extractor.py
│ └── formatters/
│ └── json_formatter.py
├── samples/
│ └── test_iocs.txt
├── tests/
├── README.md
└── pyproject.toml
```
# 安装
需要 Python 3.11+
克隆仓库:
```
git clone https://github.com/ryoshu404/statica.git
cd statica
```
创建虚拟环境:
```
python -m venv .venv
source .venv/bin/activate
```
以可编辑模式安装项目:
```
pip install -e .
```
验证安装:
```
statica --version
```
# 用法
对文件运行 Statica:
```
statica samples/test_iocs.txt
```
指定最小字符串长度:
```
statica samples/test_iocs.txt --minlen 8
```
查看可用选项:
```
statica --help
```
查看已安装版本:
```
statica --version
```
# 输出示例
Statica 生成的 JSON 输出示例:
```
{
"tool": {
"name": "statica",
"version": "1.0.0"
},
"input": {
"path": "samples/test_iocs.txt"
},
"hashes": {
"md5": "c1a5c0f5a3b9f23f...",
"sha256": "ab84e9b8d3b8d..."
},
"iocs": {
"ipv4": [
"192.168.1.1"
],
"urls": [
"http://example.com"
],
"domains": [
"malicious-domain.com"
],
"files": [
"payload.exe"
]
},
"strings": [
"example string",
"another extracted string"
],
"errors": []
}
```
# 示例测试文件
包含一个示例 IOC 测试文件:
samples/test_iocs.txt
该文件包含用于验证提取管道的各种指标。
# 路线图
未来潜在的改进包括:
- 更多 IOC 类型
- 文件元数据提取
- 熵分析
- 更多输出格式
- 威胁情报增强
- 与 IOC 关联服务集成
# 相关项目
本项目是更大型安全工具组合的一部分。
### [macollect](https://github.com/ryoshu404/macollect) (v1.0)
使用 Python 编写的模块化 macOS 取证痕迹收集器。通过八个独立的收集模块,收集持久化机制、进程快照、代码签名元数据、TCC 权限和统一日志活动。
### IOC 关联服务(计划中)
使用 Go 编写的威胁情报关联服务。未来将作为 Statica 和 macollect 输出的增强集成层。
### Swift ESF 遥测工具(计划中)
使用 Apple Endpoint Security Framework 的 macollect 实时内核事件流伴侣工具。
# 作者
R. Santos
GitHub: https://github.com/ryoshu404
# 许可证
MIT
标签:API安全, FTP漏洞扫描, IOC提取, JSON输出, Python, 云安全监控, 哈希计算, 威胁情报, 字符串提取, 安全编排, 开发者工具, 恶意代码分析, 攻击指标, 数字取证, 文件分析, 文档结构分析, 无后门, 模块化架构, 沙箱, 管道模式, 结构化查询, 网络安全, 自动化安全, 自动化脚本, 轻量级工具, 配置文件, 隐私保护, 静态分析