necat101/github-malware-scanner
GitHub: necat101/github-malware-scanner
一款基于静态分析和 VirusTotal 集成的 Python 工具,用于扫描 GitHub 仓库中的恶意软件并生成风险评分报告。
Stars: 0 | Forks: 0
# GitHub 恶意软件扫描器
一款 Python 工具,使用受 [MalScan](https://github.com/malscan-android/MalScan) 启发的静态分析技术和 VirusTotal 集成来扫描 GitHub 仓库中的恶意软件。
## 功能
- **仓库克隆**:下载 GitHub 仓库进行分析
- **源代码分析**:扫描可疑模式和 API 使用情况
- **二进制分析**:识别并扫描已编译的二进制文件
- **VirusTotal 集成**:使用 70 多种杀毒引擎检查二进制文件
- **调用图分析**:构建函数调用图(受 MalScan 启发)
- **中心性分析**:计算图谱指标以识别混淆代码
- **风险评分**:生成全面的风险评分(0-100)
- **详细报告**:生成易于阅读的安全报告
## 安装说明
```
# 克隆 repository
git clone https://github.com/necat101/github-malware-scanner.git
cd github-malware-scanner
# 安装 dependencies
pip install requests networkx
# 可选:设置 VirusTotal API key
export VIRUSTOTAL_API_KEY="your_api_key_here"
```
## 使用说明
### 基本用法
```
python github-malware-scanner.py https://github.com/user/repo
```
### 使用 VirusTotal API Key
```
python github-malware-scanner.py https://github.com/user/repo --virustotal-key YOUR_KEY
```
### 将报告保存到文件
```
python github-malware-scanner.py https://github.com/user/repo -o report.txt
```
### 输出 JSON 结果
```
python github-malware-scanner.py https://github.com/user/repo --json results.json
```
## 检测技术
此扫描器实现了多种技术,灵感来源于 MalScan 研究论文以及近期 Hacker News 上关于 GitHub 仓库中存在恶意软件的讨论:
### 1. 可疑模式检测
- 网络活动(可疑 IP、Tor 洋葱地址)
- 加密货币挖矿代码
- 凭据窃取模式
- 代码混淆技术
- 持久化机制
- 危险的 API 使用
### 2. API 使用分析(受 MalScan 启发)
跟踪敏感 API 的使用情况:
- 文件系统操作(`os.system`、`subprocess`)
- 网络操作(`socket`、`requests`)
- 代码执行(`eval`、`exec`)
- 系统访问(`ctypes`、`win32api`)
### 3. 调用图分析
构建函数调用图并计算:
- 度中心性
- 接近中心性
- 图密度
- 节点/边数
高图密度可能表明存在代码混淆。
### 4. VirusTotal 集成
- 计算二进制文件的 SHA256 哈希值
- 与 VirusTotal 数据库进行比对检查
- 报告 70 多种引擎的检测率
## 风险评分
风险评分基于以下因素计算:
- 可疑模式匹配(每项 5-20 分)
- VirusTotal 检测(每个引擎 10 分,最高 50 分)
- 高风险 API 使用(每项 5 分)
- 图复杂性指标(10 分)
**评分解读:**
- 0-20:低风险
- 21-40:低中风险
- 41-70:中风险
- 71-100:高风险
## 输出示例
```
======================================================================
GITHUB MALWARE SCAN REPORT
======================================================================
Repository: https://github.com/user/suspicious-repo
Scan Date: 2026-06-18T19:45:00
Risk Score: 75.0/100
SUMMARY:
Total Files: 45
Source Files: 38
Binary Files: 7
Suspicious Files: 3
FINDINGS:
- HIGH RISK: Multiple suspicious patterns detected
- VirusTotal: 2 files flagged as malicious
- Found 3 files with suspicious patterns
SUSPICIOUS FILES (Top 10):
File: /tmp/.../miner.py
Risk Indicators: 5
- crypto_mining: coinhive
- network: \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+
- suspicious_apis: subprocess\.
VIRUSTOTAL RESULTS:
loader.exe: MALICIOUS (15/72)
payload.dll: MALICIOUS (8/72)
```
## 环境要求
- Python 3.7+
- `requests`(用于 VirusTotal)
- `networkx`(用于图谱分析)
- `git`(用于克隆仓库)
## VirusTotal API
在此获取免费的 API key:https://www.virustotal.com/gui/join-us
免费层级包括:
- 每天 500 次请求
- 每分钟 4 次请求
设置你的 API key:
```
export VIRUSTOTAL_API_KEY="your_key_here"
```
## 研究基础
- **MalScan**:通过社交网络中心性分析实现快速的市场级移动恶意软件扫描(ASE 2019)
- https://github.com/malscan-android/MalScan
- **Hacker News 讨论**:“我发现了 1 万个分发木马恶意软件的 GitHub 仓库”
- https://news.ycombinator.com/item?id=48583928
## 局限性
- 仅支持静态分析(无动态执行)
- 简化的调用图构建
- 仅限于模式匹配和 API 使用分析
- 受限于 VirusTotal API 的请求频率限制
- 无法检测所有类型的恶意软件
## 许可证
MIT 许可证 - 详情请参阅 LICENSE 文件
## 免责声明
本工具仅供教育和安全研究目的使用。在采取行动之前,请务必手动验证结果。对于滥用本工具所造成的任何后果,作者概不负责。
标签:Ask搜索, DNS 反向解析, IP 地址批量处理, Python, StruQ, VirusTotal, 云安全监控, 字符串匹配, 恶意软件扫描, 无后门, 特权检测, 网络安全研究, 逆向工具, 静态分析