MR-UNKNOWN8014/repo-security-scanner

GitHub: MR-UNKNOWN8014/repo-security-scanner

一款在克隆 Git 仓库前执行静态分析的安全扫描工具,用于检测恶意代码、后门、危险函数调用及易受攻击的依赖项。

Stars: 0 | Forks: 0

# 仓库安全扫描器 该扫描器对仓库文件执行静态分析,可检测: - 加密货币挖矿程序特征 - 后门特征码 - 数据窃取代码 - 混淆技术 - 危险函数调用 - 易受攻击的依赖项 - 高熵(加密/混淆)文件 ## 快速开始 ``` # Clone 仓库 git clone https://github.com/MR-UNKNOWN8014/repo-security-scanner.git cd repo-security-scanner # 安装依赖 ./setup.sh # Linux/macOS setup.bat # Windows # 扫描仓库 python run_scanner.py https://github.com/user/repo.git ``` ## 1. 安装: **需要 Python 3.8 或更高版本才能运行。** ### 1.2 Linux / macOS ``` # Linux/Mac chmod +x setup.sh # Windows ./setup.sh ``` **安装程序将会**: - 验证 Python 版本 - 安装所有必需的依赖项 - 创建运行脚本 ### 1.3 手动安装 ``` # 创建 virtual environment (可选) python -m venv venv # Linux/Mac source venv/bin/activate # Windows venv\Scripts\activate # 安装依赖 pip install -r requirements.txt ``` ## 2. 用法 ### 2.1 基本命令 ``` # 扫描远程仓库 python run_scanner.py https://github.com/user/repo.git # 扫描本地仓库 python run_scanner.py /path/to/local/repo # 快速扫描 (限制文件数) python run_scanner.py https://github.com/user/repo.git --mode quick # 详细输出的彻底扫描 python run_scanner.py https://github.com/user/repo.git --mode thorough --detailed # 导出报告至 JSON python run_scanner.py https://github.com/user/repo.git --output report.json ``` ### 2.2 命令行参数 | 选项 | 简写 | 描述 | 默认值 | | ---------------- | ----- | --------------------------------------------------------------------- | -------- | | `--mode` | `-m` | 扫描模式:quick、balanced、thorough、smart(类型详见下文) | balanced | | `--output` | `-o` | 将报告导出为 JSON 或 CSV 文件 | None | | `--verbose` | `-v` | 显示详细的扫描进度 | False | | `--detailed` | `-d` | 在报告中显示详细分类 | False | | `--format` | - | 报告格式:simple、multi、categories、detailed、all(类型详见下文) | all | | `--keep-repo` | - | 扫描后保留克隆的仓库 | False | | `--auto-decision`| - | 根据风险评分自动做出决定 | False | ### 2.3 扫描模式 | 模式 | 描述 | 扫描的文件 | | ------------ | ------------------------------ | ---------------------------------------------------------------------------- | | **Quick** | 带有大小限制的快速扫描 | 文件 < 1MB,最多 10,000 个 | | **Balanced** | 适度的覆盖范围和良好的速度 | 所有有效文件 | | **Thorough** | 完全扫描 | 无限制地扫描所有文件(如果文件过多或过大,会花费一些时间) | | **Smart** | 优先处理可执行文件/脚本文件 | 脚本、二进制文件、可执行文件 | ## 3. 报告格式 扫描器支持四种报告格式,外加一个按顺序显示它们的 "all" 选项。 ### 3.1 Simple 格式 带有状态条和风险等级的单个百分比分数。 ``` ============================================================ REPOSITORY: awesome-project RISK SCORE: 23.5% [████████░░░░░░░░░░░░] LOW RISK ============================================================ ``` ### 3.2 Multi-Factor 格式 将风险分为四个类别,并带有各自的分数。 ``` ============================================================ REPOSITORY: awesome-project MULTI-FACTOR ANALYSIS Code Quality: 76.3% [██████████░░░░░░] Security: 76.5% [██████████░░░░░░] Obfuscation: 16.5% [██░░░░░░░░░░░░░░] Malicious: 11.8% [█░░░░░░░░░░░░░░░] OVERALL: 23.5% LOW RISK ============================================================ ``` ### 3.3 Categories 格式 显示风险类别,包含文件细分和建议。 ``` ============================================================ REPOSITORY: awesome-project [LOW] RISK Risk Level: [LOW] Score: 23.5% Findings: 12 issues found Files: 0 high, 3 medium, 9 low Recommendation: REVIEW BEFORE CLONING ============================================================ ``` ### 3.4 Detailed 格式 包含所有发现和统计信息的完整报告。 ``` ============================================================ REPOSITORY: awesome-project [LOW] RISK Risk Level: [LOW] Score: 23.5% Findings: 12 issues found Files: 0 high, 3 medium, 9 low Recommendation: REVIEW BEFORE CLONING ============================================================ FILE BREAKDOWN: Safe: 45 Low Risk: 9 Medium Risk: 3 High Risk: 0 STATISTICS: Total Files: 57 Scan Duration: 4.32s Findings Found: 12 TOP FINDINGS: 1. [MEDIUM] encoding: Multiple base64 strings: 8 2. [MEDIUM] vulnerable_dependency: NPM package 'lodash': Prototype pollution vulnerabilities 3. [LOW] dangerous_function: Dangerous function: eval 4. [LOW] network: Network activity: HTTP request ``` ## 4. 风险评分 ### 4.1 风险等级 |分数|等级|建议| |---|---|---| |0-9|SAFE|可安全克隆| |10-24|LOW RISK|克隆前请审查| |25-49|MEDIUM RISK|请谨慎操作| |50-74|HIGH RISK|避免克隆| |75-100|CRITICAL|严禁克隆| ### 4.2 评分因素 |因素|最高分|描述| |---|---|---| |恶意模式|100|加密货币挖矿程序、后门、数据窃取| |危险函数|100|eval、exec、system、subprocess| |熵分析|20|高熵表明存在加密/混淆| |Base64 编码|10|大型 base64 字符串可能包含 payload| |文件大小|10|大文件可能包含隐藏的 payload| |易受攻击的依赖项|每个包 15 分|已知的易受攻击包| ## 5. 检测能力 ### 5.1 恶意模式类别 |类别|示例模式| |---|---| |加密货币挖矿程序|cryptonight, stratum, xmrig, mining, cpuminer| |后门|socket.bind, socket.connect, base64.b64decode| |数据窃取|requests.post, discord webhook, smtplib, telegram| |混淆|base64, zlib, exec(decode), String.fromCharCode| |Shell 命令|subprocess, os.system, popen, eval| |网络活动|socket, requests, urllib, websocket, ftp| |文件操作|os.remove, shutil.rmtree, file.write, os.chmod| ### 5.2 特定语言检测 |语言|检测的函数| |---|---| |Python|exec, eval, compile, **import**, os.system, subprocess.call, subprocess.Popen, os.popen| |JavaScript|eval, Function, setTimeout, setInterval, document.write, innerHTML| |Bash|exec, eval, source, ., export, alias| |PHP|eval, system, exec, passthru, shell_exec, assert| |Ruby|eval, exec, system, ``, IO.popen, Open3| |Go|os/exec, syscall, reflect, unsafe| |Rust|std::process, std::fs, unsafe, std::mem| |Java|Runtime.exec, ProcessBuilder, System.load, Class.forName| ### 5.3 易受攻击依赖项检测 | 包管理器 | 检测的包 | | -------------- | ------------------------------------------------- | | npm | crypto-js, node-fetch, axios, lodash, request | | pip | requests, urllib3, paramiko, cryptography, pyyaml | ## 6. 项目结构 ``` repo-security-scanner/ ├── setup.sh # Linux/macOS installer ├── setup.bat # Windows installer ├── requirements.txt # Python dependencies ├── README.md # Documentation ├── LICENSE # MIT License ├── .gitignore # Git ignore file ├── run_scanner.py # Entry point │ └── repo_scanner/ # Main package ├── __init__.py ├── config.py # Configuration and constants ├── main.py # Main entry point ├── cli/ # Command-line interface │ ├── __init__.py │ └── arguments.py # Argument parsing │ ├── scanner/ # Core scanning modules │ ├── __init__.py │ ├── core.py # Scanner orchestrator │ ├── file_analyzer.py # Individual file analysis │ ├── pattern_matcher.py # Pattern detection engine │ ├── dependency_checker.py # Dependency scanning │ └── entropy_calculator.py # Entropy analysis │ ├── report/ # Report generation │ ├── __init__.py │ ├── formatter.py # Output formatting │ └── exporters.py # JSON/CSV export │ ├── models/ # Data models │ ├── __init__.py │ └── scan_result.py # Result data structures │ └── utils/ # Utility functions ├── __init__.py ├── file_utils.py # File operations └── git_utils.py # Git operations ``` ## 7. 故障排除 |问题|检查|解决方案| |---|---|---| |未找到 Python|是否安装了 Python?|从 [python.org](https://python.org/) 安装 Python 3.8+| |ModuleNotFoundError|是否安装了依赖项?|运行 `pip install -r requirements.txt`| |Git clone 失败|是否安装了 Git?|从 [git-scm.com](https://git-scm.com/) 安装 Git| |权限被拒绝|文件权限是否正确?|`chmod +x setup.sh` (Linux/macOS)| |扫描耗时过长|是否为大型仓库?|使用 `--mode quick` 或 `--mode smart`| |未生成报告|输出路径是否有效?|检查输出目录的写入权限| |高熵警告|是否为误报?|手动审查文件,这可能是合法的正常现象| ## 8. 未来增强功能 - [ ] Git 历史记录分析 - 扫描提交历史中的机密信息和密钥 - [ ] 机密信息检测 - API key、密码、token、凭证 - [ ] 许可证检查器 - 检测不兼容或限制性的许可证 - [ ] 二进制签名分析 - 验证来自受信任来源的二进制文件 - [ ] 已知恶意仓库数据库 - [ ] Docker 镜像扫描 - [ ] 包注册表扫描 (PyPI, npm, RubyGems) ### 9.1 Pull Request 流程 1. Fork 该仓库 2. 创建功能分支:`git checkout -b feature/AmazingFeature` 3. 提交您的更改:`git commit -m 'Add some AmazingFeature'` 4. 推送到该分支:`git push origin feature/AmazingFeature` 5. 提交 Pull Request ### 9.2 报告问题 在 GitHub 上报告问题时,请包括: - 问题描述 - 复现步骤 - 预期行为 - 实际行为 - 环境(OS、Python 版本) - 日志或截图(如果有) 所有这些信息能让我修复这些 bug 并把工具做得更好。
标签:Git, Python, 安全专业人员, 无后门, 暗色界面, 网络安全研究, 逆向工具, 错误基检测, 静态代码分析