kierennicolas/irscanner

GitHub: kierennicolas/irscanner

一个使用 ANSI Fortran 77 编写的事件响应二进制初步分析工具,用于在各类系统上快速检测可疑文件的熵值异常及还原简单 XOR 混淆。

Stars: 0 | Forks: 0

# IRSCANNER IRSCANNER 是一个小型的事件响应(incident-response)二进制初步分析工具,使用严格的 ANSI Fortran 77 编写。 它旨在对可疑或未知文件进行初步检查。它不能替代完整的取证工作流,但可以快速突显在事件响应、恶意软件分类和基本二进制检查中通常有用的属性。由于它是用 F77 编写的,因此可以在较旧的遗留系统和 IoT 上轻松编译,并且没有依赖项。 ## 用途 IRSCANNER 将目标文件作为原始字节读取,并生成一份人类可读的报告,涵盖: - 文件大小和读取模式 - 某些常见格式的识别文件签名 - 全局 Shannon 熵 - 滑动窗口熵 - 主导字节和空字节百分比 - 单字节 XOR 检测和可能的密钥恢复 - 短密钥的重复密钥 XOR 检测和可能的密钥恢复 - 字节多样性 - 长重复字节运行 - 最高字节频率 - 当 XOR 恢复足够强时的短解码预览 这使其适用于发现以下内容: - 压缩或打包的内容 - 看起来像加密的数据块 - 全零文件 - 稀疏或空字节密集的文件 - 可能经过 XOR 混淆的载荷 - 异常重复的区域 - 明显的文件头,如 ELF、ZIP、PDF、PNG、JPEG 和类似格式 IRSCANNER 是一个分类工具。其输出是启发式的,应被视为分析师的指导,而非正式证据。 ## 操作系统 源代码是使用严格的 ANSI Fortran 77 编写的,旨在可移植到任何拥有合适 Fortran 编译器并以通常方式支持直接访问无格式文件 I/O 的系统。 它旨在运行于: - Linux - 其他类 Unix 系统 - 配备 Acorn Norcroft Fortran 编译器的 RISC OS 系统 - Windows,如果使用合适的 Fortran 编译器编译 在实践中,最直接的目标是: - 配有 `gfortran` 的 Linux - 配有 `gfortran` 或其他兼容 Fortran 编译器的类 Unix 系统 - 配有 Acorn/Norcroft 兼容 Fortran 环境的 RISC OS 本 README 主要关注 Linux 和 Unix 用法。 ## 支持的运行时行为 在标准的按字节寻址运行时(如 Linux 上的 `gfortran`)上,IRSCANNER 执行精确到字节的读取。 源代码还包含针对使用基于字的直接访问记录单元的运行时的逻辑。在此类系统上,其行为设计为仍可用于分类,但特定于平台的编译器和运行时细节可能仍然有影响。 ## 在 Linux / Unix 上构建 ### 使用 gfortran ``` gfortran -std=legacy -O2 -o irscanner irscanner.f ``` 如果你想要一个更独立的 Linux 二进制文件,你也可以尝试: ``` gfortran -std=legacy -O2 -static-libgfortran -static-libgcc \ -o irscanner irscanner.f ``` 静态链接并不一定在所有系统上都可用。 ### 编译器说明 源代码是以固定格式 Fortran 77 风格编写的。如有必要,请使用接受传统固定格式源代码的编译器模式。 ## 在 Linux / Unix 上使用 IRSCANNER IRSCANNER 从标准输入读取目标文件名。 像这样运行它: ``` ./irscanner ``` 它会提示: ``` Enter target filename: ``` 输入文件路径并按 Enter 键。 ### 非交互式使用 你也可以通过标准输入传递文件名: ``` printf 'sample.bin\n' | ./irscanner ``` ### 保存报告 ``` printf 'sample.bin\n' | ./irscanner > sample_report.txt ``` ### 测试多个文件 ``` for f in plain.txt zeros.bin random.bin xor_text.bin elf_sample.bin xor_rep.bin do echo "===== $f =====" printf '%s\n' "$f" | ./irscanner echo done ``` ## 解读报告 ### 文件摘要 显示字节计数、读取路径和任何识别出的文件格式签名。 ### 熵分析 较高的熵可能表示加密、压缩或打包的数据。较低的熵通常表示纯文本、结构化数据或重复内容。 ### XOR 部分 IRSCANNER 可以尝试识别: - 单字节 XOR - 短重复密钥 XOR,目前仅限于短密钥 当证据足够充分时,它会报告可能的密钥和简短的解码预览。 这些发现仍然是启发式的。可能的密钥恢复是一个强有力的线索,而非自动保证。 ### 字节多样性 显示文件中出现了多少个不同的字节值。极低的多样性可能表示非常受限的编码、填充、测试文件或全零文件。 ### 重复字节运行 标记相同字节的长运行。在某些情况下,这可能表示填充、对齐、填充模式或暂存区域。 ### 最高字节频率 显示最常见的字节值及其近似百分比。 ## 示例测试文件 以下无害文件可用于测试: - 一个小文本文件 - 一个全零文件 - 来自 `/dev/urandom` 的随机文件 - 一个普通可执行文件,如 `/bin/ls` - 一个用单字节 XOR 编码的文件 - 一个用短重复密钥 XOR 编码的文件 示例命令: ``` printf 'This is a plain text test file.\n' > plain.txt dd if=/dev/zero of=zeros.bin bs=1 count=4096 dd if=/dev/urandom of=random.bin bs=1 count=4096 cp /bin/ls elf_sample.bin python3 - <<'PY' data = b'This is a test of single-byte XOR recovery.\n' * 20 key = 0x5A open('xor_text.bin', 'wb').write(bytes([b ^ key for b in data])) PY python3 - <<'PY' data = b'This is repeating-key XOR test data.\n' * 30 key = b'ICE' out = bytearray() for i, b in enumerate(data): out.append(b ^ key[i % len(key)]) open('xor_rep.bin', 'wb').write(out) PY ``` ## 局限性 - IRSCANNER 是一个分类工具,而不是一个完整的恶意软件分析框架。 - 基于熵和频率的发现是启发式的。 - XOR 检测仅限于单字节 XOR 和短重复密钥 XOR。 - 文件签名识别基于一小部分常见头部。 - 识别出的签名或可能恢复的密钥仍应使用其他工具进行验证。 ## Linux / Unix 上的典型工作流 一个简单的工作流是: 1. 编译该工具 2. 针对可疑文件运行它 3. 检查熵、XOR、格式和重复模式部分 4. 如果发现异常,使用更深入的工具进行跟进 例如: ``` gfortran -std=legacy -O2 -o irscanner irscanner_v1_9_ansi_f77.f printf 'suspect.bin\n' | ./irscanner > suspect_report.txt less suspect_report.txt ```
标签:DNS 反向解析, Fortran, IoT 安全, XOR 解码, 二进制分析, 云安全运维, 云资产清单, 加壳检测, 取证工具, 可疑文件分析, 启发式检测, 字节频率分析, 文件签名识别, 文档结构分析, 混淆检测, 熵分析, 网络信息收集, 逆向工程