usamasadiq22/ELFscan

GitHub: usamasadiq22/ELFscan

一款用于静态扫描 ELF 二进制文件以检测恶意软件特征和威胁指标的轻量级法证工具。

Stars: 0 | Forks: 0

# ELFscan - 法证二进制扫描器 ELFscan 是一款轻量级的 C99 法证扫描器,专为检测可疑可执行文件、恶意软件特征及威胁指标(IOCs)的 ELF 二进制文件而设计。它通过熵计算、特征匹配和字符串提取进行静态分析。 ## 功能特性 - **ELF 头部解析**:验证 ELF 魔术字节并解析可执行文件头 - **熵分析**:计算香农熵以检测加壳/加密的二进制文件 - **特征匹配**:加载并应用自定义十六进制模式规则(类似 YARA) - **字符串提取**:提取可打印的 ASCII 字符串并标记可疑模式 - **法证报告**:生成带时间戳和判定结论的扫描报告 - **递归扫描**:支持整个目录树的递归扫描与判定汇总 - **IoC 检测**:支持基于哈希和基于特征的检测 ## 构建方法 ``` make ``` 将生成 `./elfscan` 可执行文件。 ## 使用方法 ``` ./elfscan [OPTIONS] ``` ### 选项说明 - `-r, --recursive` 递归扫描目录 - `-R, --rules ` 从文件加载特征规则(默认:rules/default.rules) - `-o, --output ` 将报告写入自定义文件 - `-e, --entropy ` 熵阈值(默认:6.5) - `-v, --verbose` 扫描过程中显示详细输出 - `-h, --help` 显示帮助信息 ### 使用示例 ``` # 扫描单个二进制文件 ./elfscan /usr/bin/ls # 使用自定义规则递归扫描目录 ./elfscan -r -R ./rules/default.rules /usr/local/bin # 使用高熵阈值扫描(降低灵敏度) ./elfscan -e 7.0 /tmp # 使用自定义输出进行详细扫描 ./elfscan -v -o report.txt /home/user/bin ``` ## 判定逻辑 文件分类如下: 1. **恶意**:特征匹配或 IoC 哈希匹配 2. **可疑**: - 高熵值 + 已剥离二进制文件 - 检测到可疑字符串(路径、命令、C&C 模式) 3. **安全**:默认分类(未检测到指标) ## 熵阈值标准 - 0-4.0:明文/低压缩率(极可能为安全) - 4.0-6.5:正常二进制代码(可能为安全) - 6.5-7.2:高压缩率/编码(边界情况,若已剥离则可能为可疑) - 7.2-8.0:极高熵值(可疑,极可能为加壳/加密) ## 系统架构 ### 模块说明 1. **database.c/h**:扫描条目的动态数组 2. **elf_check.c/h**:ELF 魔术字节验证与头部解析 3. **entropy.c/h**:香农熵计算 4. **signature.c/h**:规则加载与模式匹配(Boyer-Moore-Horspool 算法) 5. **strings_ex.c/h**:字符串提取与可疑模式检测 6. **report.c/h**:带时间戳的法证报告生成 7. **scanner.c/h**:调度层(文件/目录遍历、判定逻辑) 8. **main.c**:命令行参数解析与报告协调 ### 数据结构 ``` typedef struct { char path[512]; double entropy; int is_elf; int is_stripped; int sig_match_count; char matched_sigs[8][64]; char strings[64][128]; int string_count; Verdict verdict; } ScanEntry; ``` ## 特征规则格式 规则以纯文本格式存储(默认:`rules/default.rules`): ``` RULE_NAME | HEX_PATTERN | DESCRIPTION ``` 示例: ``` UPX_PACKED | 55 50 58 21 0a 0d 0d 0a | UPX executable packer detected SYSCALL_GADGET | 0f 05 c3 | Direct syscall instruction (potential shellcode) ``` 十六进制模式是由空格分隔的字节序列。模式会在文件中的任意位置进行匹配。 ## 输出格式 报告文件在 `reports/` 目录中生成,带有时间戳: ``` elfscan_20260516_143022.txt ``` 包含内容: - 扫描元数据(日期、目标、设置) - 可疑和恶意文件的详细条目 - 汇总统计(总数、安全、可疑、恶意) - 总扫描耗时 ## 性能指标 - **速度**:约 500-1000 文件/秒(因文件大小和规则数量而异) - **内存**:动态分配,随文件数量扩展 - **依赖项**:仅需 C 标准库 + libm ## 当前限制 - 无基于哈希的检测(MD5/SHA256)- 为保持简洁的设计选择 - ELF 解析较为基础(不读取完整的段头信息) - 特征匹配使用朴素子串搜索(尚未实现 Boyer-Moore-Horspool 优化) - 字符串检测仅限于 6 字节以上的 ASCII 序列 ## 研究角度 - **法证分析**:基于熵的恶意软件检测与二进制分析 - **特征引擎**:类似 YARA 的模式匹配引擎 - **系统编程**:手动 ELF 解析、文件 I/O、内存管理 - **算法应用**:香农熵、字符串提取、模式匹配 - **报告生成**:带判定分类的法证时间线报告 ## 未来改进计划 - [ ] 完整的段头解析以更好地检测已剥离二进制文件 - [ ] Boyer-Moore-Horspool 优化用于特征匹配 - [ ] 支持 YARA 规则格式 - [ ] 基于哈希的 IoC 检测(MD5/SHA256) - [ ] 导入地址表(IAT)挂钩检测 - [ ] 导出/导入分析 ## 许可说明 仅限教育用途。专为数字取证与事件响应(DFIR)培训及应届毕业生作品集设计。
标签:AMSI绕过, ELF格式, IOC检测, 二进制扫描, 云安全监控, 可执行文件检查, 威胁检测, 字符串提取, 客户端加密, 恶意代码分析, 数字取证, 模式匹配, 熵计算, 签名匹配, 自动化脚本, 自动化资产收集, 递归扫描, 配置文件, 静态分析