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, 云安全监控, 字符串匹配, 恶意软件扫描, 无后门, 特权检测, 网络安全研究, 逆向工具, 静态分析