mahesh70953/secureinspect
GitHub: mahesh70953/secureinspect
一款纯离线的 Python 静态恶意软件与隐写术分析 CLI 工具,支持对多种文件格式进行本地安全检测并生成风险评分报告。
Stars: 0 | Forks: 0
# 🛡 SecureInspect
**离线文件安全与隐写术分析器。**
SecureInspect 是一个 Python CLI 工具,用于静态分析文件——包括图像、音频、PDF、Office 文档、APK 和 Windows 可执行文件——以检测恶意软件指标和隐藏的/隐写载荷。它完全在 **100% 本地** 运行。任何文件、哈希值或结果都不会被上传到任何地方。
## 检测内容
| 类别 | 检查项 |
|---|---|
| **通用** | MD5/SHA1/SHA256 哈希、Shannon 熵、扩展名与签名不匹配、IOC 提取(IP、URL、电子邮件、域名、BTC 地址)、可疑关键字/API 扫描、离线 YARA 规则匹配 |
| **Windows EXE/DLL** | PE 结构验证、分节熵(壳检测)、可疑 Win32 API 导入、Authenticode 签名存在情况 |
| **PDF** | 嵌入式 JavaScript、`/Launch` 操作、嵌入式文件、嵌入式 URI、加密标志 |
| **Office (docx/xlsx/pptx/doc/xls)** | VBA 宏检测、自动执行触发器(`AutoOpen`、`Document_Open`...)、可疑宏关键字(`Shell`、`CreateObject`、下载调用) |
| **APK** | 权限(通过 androguard,如果解析失败则回退到 ZIP/清单字符串解析)、危险权限标志(SMS、Accessibility Service、overlay、install-packages 等) |
| **图像 (PNG/JPG/GIF/BMP)** | 附加在图像真实结束标记之后的尾部数据(经典的“在图片中隐藏 ZIP/EXE”技巧)、LSB(最低有效位)统计随机性测试、EXIF 元数据 + GPS 曝光 |
| **音频 (WAV/MP3)** | 附加在音频流预期结束位置之后的尾部数据、基于 16 位 PCM 采样的 LSB 随机性测试 |
每次扫描都会生成一个 **风险评分 (0–100%)**、一个 **判定** (`LIKELY SAFE` / `LOW RISK` / `MEDIUM RISK` / `HIGH RISK`),以及一个用通俗易懂的英文列出的 *原因* 清单。
## 安装
```
git clone https://github.com//secureinspect.git
cd secureinspect
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
```
需要 Python 3.9+。
## 用法
```
python cli.py --out reports/
```
这会在终端打印一份摘要,并写入:
- `reports/_report.json` — 完整的机器可读结果
- `reports/_report.html` — 可共享的可视化报告
示例:
```
python cli.py samples/suspicious_invoice.pdf
=======================================================
SecureInspect Report: suspicious_invoice.pdf
=======================================================
Detected type : pdf
SHA256 : c68194...
Entropy : 4.99 (Moderate (typical for normal files))
Risk Score : 37%
Verdict : LOW RISK
Reasons:
- 2 suspicious keyword(s)/API reference(s) found: ['/javascript', '/js']
- Embedded JavaScript in PDF.
=======================================================
```
仅打印原始 JSON(适用于通过管道传递给其他工具):
```
python cli.py sample.apk --json-only
```
## 项目结构
```
secureinspect/
├── cli.py # entry point - dispatches file to the right module(s)
├── core/
│ ├── hashing.py # MD5/SHA1/SHA256
│ ├── entropy.py # Shannon entropy
│ ├── iocs.py # IOC + suspicious keyword extraction
│ ├── filetype.py # signature-based file type detection
│ ├── risk_engine.py # combines all findings into one score/verdict
│ └── report.py # JSON + HTML report generation
├── modules/
│ ├── pe_scan.py # EXE/DLL analysis (pefile)
│ ├── pdf_scan.py # PDF analysis
│ ├── office_scan.py # VBA macro analysis (oletools)
│ ├── apk_scan.py # APK permission/manifest analysis (androguard)
│ ├── image_stego.py # image steganography detection
│ ├── audio_stego.py # audio steganography detection
│ └── yara_scan.py # offline YARA rule engine
├── rules/
│ └── generic_rules.yar # sample YARA rules (extend with your own)
├── samples/ # put test files here (gitignored by default)
├── reports/ # generated reports land here (gitignored)
├── requirements.txt
└── README.md
```
## 隐写术检测的工作原理
两项独立的、可解释的检查(没有黑盒):
1. **尾部数据检查。** PNG 文件以 `IEND` 块结束;JPEG 文件以 `FFD9` 标记结束。附加在该点*之后*的任何内容对普通图像查看器来说都是不可见的,但这是人们在图片中隐藏 ZIP/EXE/文本文件的最常见方式。SecureInspect 会在该尾部数据中查找已知的文件签名(ZIP、RAR、EXE、PDF 等)。
2. **LSB 随机性测试。** 真正的 LSB(最低有效位)隐写术会将位平面的统计分布扁平化,趋向于均匀的 50/50 分布。卡方风格的测试会将图像的实际 LSB 平面与该预期进行比较——自然照片噪点很少看起来如此均匀。同样的两个思路也适用于 16 位 PCM WAV 音频。
## 扩展功能
- **添加 YARA 规则:** 将 `.yar` 文件放入 `rules/` 目录并更新 `modules/yara_scan.py` 中的 `RULES_PATH`,或者合并像 [Yara-Rules/rules](https://github.com/Yara-Rules/rules) 这样的公共规则集。
- **添加新的文件类型:** 编写一个返回字典的 `modules/_scan.py`,在 `cli.py` 的 `scan_file()` 中对其进行分发,并在 `core/risk_engine.py` 中添加其评分贡献。
- **批量扫描 / Web UI** 是自然的下一步——核心逻辑(`cli.py` 中的 `scan_file()`)已经与终端输出解耦,因此可以直接被 Flask/FastAPI 应用导入。
## 将其部署到 GitHub
在 `secureinspect/` 文件夹内:
```
git init
git add .
git commit -m "Initial commit: SecureInspect offline file security & steganography analyzer"
```
在 GitHub 上创建一个新的 **空** 仓库(不要包含 README/license/gitignore —— 我们已经有了这些),然后:
```
git branch -M main
git remote add origin https://github.com//secureinspect.git
git push -u origin main
```
如果您使用 SSH 而不是 HTTPS:
```
git remote add origin git@github.com:/secureinspect.git
```
**推送之前:** 包含的 `.gitignore` 已经排除了 `venv/`、`reports/*`、`samples/*` 和 `__pycache__/`,因此您不会意外提交生成的报告、您的虚拟环境或测试恶意软件样本。如果您确实想为了演示目的而跟踪几个 *安全的* 示例文件,请使用 `git add -f` 单独添加它们,而不是删除忽略规则。
在 GitHub 上添加主题以提高可发现性:`cybersecurity`、`malware-analysis`、`steganography`、`dfir`、`python`、`static-analysis`、`yara`。
## 免责声明
此工具用于教育和防御性安全目的:分析您拥有或被授权测试的文件。它不会执行或引爆任何文件 —— 所有分析都是静态的。风险评分是启发式的,并非法律或明确的恶意软件判定。
标签:DNS 反向解析, PE文件分析, Python, YARA, 云资产可视化, 安全分析工具, 无后门, 网络信息收集, 逆向工具, 隐写术检测, 静态恶意软件检测