Crypto in Malware / Reverse Engineering

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

本小节在你在二进制文件中看到 crypto/compression 时,帮助你快速识别。

Identifying cryptographic / compression algorithms

Technique-first heuristics

  • 在紧密循环中大量的 shifts/rotates、XORs 和 32-bit 算术运算。
  • .data 中的 lookup tables (S-boxes),或运行时生成的表。
  • 重复的 0x100 次循环通常暗示 RC4。

Windows crypto/compression APIs

CryptDeriveKey / CryptCreateHash

如果使用了这些,第二个参数是一个 ALG_ID

Table: https://learn.microsoft.com/en-us/windows/win32/seccrypto/alg-id

RtlCompressBuffer / RtlDecompressBuffer

通常表示使用内置的 Windows compression(LZNT1、XPRESS 等)。

Constants & tables

有时可以通过在线搜索常量(或表的第一个 dword)来指纹化某个 hash/cipher。

AES tables example:

RC4 recognition notes

RC4 往往可通过以下特征识别:

  • 两个 256 次的循环(init + KSA)
  • 随后是使用 % 256 的 PRGA 循环,并用 keystream 对数据进行 XOR

Unpacking binaries

Technique

Packers 会变换二进制,使静态分析产生误导(垃圾代码、加密的 section、运行时解包)。目标是捕捉到它在下列时刻的行为:

  • 在内存中分配/解密真实代码
  • 将其标记为可执行
  • 跳转进入该代码

Identifying packed binaries

  • 缺乏 strings(或只有 packer 的 strings)
  • 许多 strings 没有 xrefs(商业 packer)
  • 使用 packer-ID 工具:
  • PEiD
  • Exeinfo PE

Basic recommendations

  • 从底部开始向上分析;unpackers 通常较晚跳转。
  • 查找 JMP/CALL reg 模式或栈技巧(push addr; retn)。
  • VirtualAlloc/VirtualProtect 上设置断点并跟踪 RWX 区域。
  • 跳转后 strings 突然激增通常表示你到达了解包后的代码。
  • 使用工具(如 PE-bear)转储内存并修复头信息。

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks