Seongmin1223/Malscan

GitHub: Seongmin1223/Malscan

Malscan 是一款静态恶意软件分析自动化工具,通过整合哈希计算、VirusTotal 查询、PE 分析、字符串提取和 YARA 匹配来快速判定可疑文件风险等级并生成报告。

Stars: 0 | Forks: 0

# MalScan 静态恶意软件分析自动化工具 输入一个可疑文件,它会自动执行哈希计算、VirusTotal 查询、PE 结构分析、字符串提取和 YARA 规则匹配,并生成 HTML 报告。 ## 截图 image image image ## 主要功能 | 功能 | 说明 | |------|------| | 哈希计算 | 自动计算 MD5 / SHA1 / SHA256 | | VirusTotal 查询 | 通过 API 查询 75 个以上防病毒引擎的检测结果 | | PE 结构分析 | 分析头部、节区、Import Table 和熵值 | | 字符串提取 | 提取 URL、IP、电子邮件、注册表路径和可疑命令 | | YARA 规则匹配 | 基于公开规则集检测恶意软件模式 | | 风险度自动判定 | 综合分析结果,判定为 CLEAN ~ CRITICAL 5 个等级 | | 生成 HTML 报告 | 自动生成包含可视化分析结果的报告 | ## 项目结构 ``` malscan/ ├── main.py # CLI 진입점 및 분석 오케스트레이터 ├── requirements.txt # 의존성 목록 ├── analyzer/ │ ├── hash_checker.py # MD5 / SHA1 / SHA256 해시 계산 │ ├── vt_lookup.py # VirusTotal API v3 연동 │ ├── pe_parser.py # PE 파일 구조 분석 │ ├── string_extractor.py # 문자열 추출 및 패턴 매칭 │ ├── yara_scanner.py # YARA 룰 기반 악성코드 탐지 │ └── risk_scorer.py # 위험도 점수 계산 및 등급 판정 ├── report/ │ └── report_generator.py # HTML 보고서 생성 (Jinja2) ├── yara_rules/ │ ├── nanocore_rat.yar # NanoCore / AsyncRAT / RemcosRAT 탐지 │ └── suspicious.yar # 인코딩 PowerShell / 코드인젝션 / 지속성 탐지 ├── samples/ # 분석 대상 파일 (VM 환경에서만 사용) └── output/ # 생성된 보고서 저장 ``` ## 分析流程 ``` 의심 파일 입력 ↓ [1/5] 해시 계산 (MD5, SHA1, SHA256) ↓ [2/5] VirusTotal API 조회 ↓ [3/5] PE 구조 분석 (섹션, Import Table, 엔트로피) ↓ [4/5] 문자열 추출 (URL, IP, 의심 명령어) ↓ [5/5] YARA 룰 매칭 ↓ 위험도 점수 계산 (0~100점) ↓ HTML 보고서 생성 ``` ## 风险度评分体系 为各个分析项目分配权重以计算综合得分。 | 项目 | 分值 | 说明 | |------|------|------| | VirusTotal 检出率 | 最高 40 分 | 75 个防病毒引擎的检测结果 | | 可疑 API 导入 | 最高 25 分 | 代码注入、反调试等危险 API | | 可疑字符串 | 最高 20 分 | C2 地址、可疑命令等 | | YARA 规则匹配 | 最高 20 分 | 匹配已知的恶意软件模式 | | 节区熵值 | 最高 15 分 | 加壳/加密可疑指标 | | 得分 | 等级 | 含义 | |------|------|------| | 0 ~ 15 | CLEAN | 似乎是正常的 | | 16 ~ 35 | LOW | 低风险,建议进一步检查 | | 36 ~ 59 | MEDIUM | 中等风险,需要注意 | | 60 ~ 79 | HIGH | 高风险,建议隔离 | | 80 ~ 100 | CRITICAL | 极度危险,需立即处理 | ## 安装 ``` git clone https://github.com/Seongmin1223/Malscan.git cd Malscan pip install -r requirements.txt ``` **系统要求** - Python 3.8 或更高版本 - pip 包:`pefile`、`requests`、`jinja2`、`yara-python` ## 使用方法 **基本分析** ``` python main.py 파일경로.exe ``` **包含 VirusTotal 查询** ``` python main.py 파일경로.exe --vt-api-key YOUR_API_KEY API_KEY는 https://www.virustotal.com/gui/home/upload에서 sign up -> API_KEY 발급하여 사용 요망 ``` **以 JSON 格式输出** ``` python main.py 파일경로.exe --json ``` **指定输出路径** ``` python main.py 파일경로.exe --output reports/result.html ``` **运行示例** ``` [*] 분석 시작: dontopen.exe -------------------------------------------------- [1/5] 해시 계산 중... MD5 : de52c0a0c0b60dee20c4cb43f5b42a80 SHA256: 6f15b90269632ec13a103642699d06159... [2/5] VirusTotal 조회 중... 탐지율: 60/75 [3/5] PE 구조 분석 중... PE 파일 확인됨 | 섹션 수: 3 [4/5] 의심 문자열 추출 중... URL: 0개 | IP: 3개 | 의심 명령어: 1개 [5/5] YARA 룰 스캔 중... ★ 2개 룰 매칭! (로드된 룰: 2개) └─ Nanocore_RAT └─ Suspicious_Code_Injection ┌─────────────────────────────────────┐ │ 위험도: HIGH 점수: 72/100 │ │ 높은 위험 — 격리 권장 │ └─────────────────────────────────────┘ [+] HTML 보고서 저장됨: output/dontopen_report.html ``` ## HTML 报告包含的内容 - 风险度徽章及各项目得分条 - 文件基本信息(架构、编译时间、入口点) - 文件哈希(MD5 / SHA1 / SHA256) - YARA 匹配结果(规则名称、作者、匹配模式) - VirusTotal 各引擎检测结果表 - PE 节区信息及熵值 - 可疑 API 导入列表 - 完整的 Import Table - URL / IP / 电子邮件 / 注册表路径 - Base64 候选字符串 - 可疑命令字符串 ## 添加 YARA 规则的方法 在 `yara_rules/` 文件夹中添加 `.yar` 或 `.yara` 文件,它们将被自动加载。 ``` rule My_Custom_Rule { meta: author = "작성자" description = "탐지 설명" strings: $s1 = "탐지할 문자열" ascii wide condition: $s1 } ``` 公开规则集参考: - [Florian Roth - signature-base](https://github.com/Neo23x0/signature-base) - [JPCERT - yara_rules](https://github.com/JPCERTCC/jpcert-yara) - [Elastic Security - protections-artifacts](https://github.com/elastic/protections-artifacts) ## 测试样本 - [MalwareBazaar](https://bazaar.abuse.ch/) — 免费的恶意软件样本数据库 - 下载压缩包解压密码:`infected` ## 分析案例 **NanoCore RAT 分析结果** | 项目 | 结果 | |------|------| | VirusTotal | 60/75 检出 | | YARA | 匹配 Nanocore_RAT 规则 | | 节区数量 | 3 个(疑似加壳) | | 熵值 | 7.4(疑似加密) | | 风险度 | MEDIUM ~ HIGH | 虽然是加壳的恶意软件导致 Import Table 被隐藏,但可以通过 YARA 规则和熵值分析进行检测。 ## 局限性 - **加壳的恶意软件**:Import Table 被加密,限制了可疑 API 的检测 - **静态分析局限**:在没有实际执行的情况下,无法确认动态行为(C2 通信、文件创建等) - **YARA 规则范围**:除了默认提供的规则集外,还需要自行编写额外的规则 ## 未来开发计划 - [ ] 集成 ssdeep 模糊哈希(分析变种恶意软件的相似度) - [ ] 文件夹批量分析及 CSV 摘要输出 - [ ] 支持分析 PDF / Office 文档 - [ ] 集成 ANY.RUN API(动态分析) - [ ] 使用 .env 文件管理 API 密钥 ## 开发环境 - Python 3.12 - Windows 11 / Ubuntu 24 (VMware) - 分析环境:VMware Workstation(仅主机模式网络) ## 参考资料 - [pefile 库](https://github.com/erocarrera/pefile) - [VirusTotal API v3 文档](https://developers.virustotal.com/reference) - [YARA 官方文档](https://yara.readthedocs.io/) - [MalwareBazaar](https://bazaar.abuse.ch/) - [Florian Roth YARA 规则集](https://github.com/Neo23x0/signature-base) - [malapi.io](https://malapi.io/) — 可疑 Win32 API 参考
标签:DAST, Python, YARA, 云安全监控, 云资产可视化, 威胁情报, 安全, 开发者工具, 恶意软件分析, 无后门, 网络调试, 自动化, 超时处理, 逆向工具, 静态分析