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、XOR、32-bit 演算が見られる。
  • .data にある lookup tables (S-boxes) またはランタイムで生成されるテーブル。
  • 0x100 イテレーションを繰り返すループは RC4 を示唆する。

Windows crypto/compression APIs

CryptDeriveKey / CryptCreateHash

これらが使われている場合、第2引数は ALG_ID です:

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

RtlCompressBuffer / RtlDecompressBuffer

しばしば組み込みの Windows 圧縮 (LZNT1, XPRESS, など) を示します。

Constants & tables

時々、定数(またはテーブルの最初の dword)をオンラインで検索することでハッシュ/暗号をフィンガープリントできます。

AES テーブルの例:

RC4 recognition notes

RC4 はしばしば以下で認識できます:

  • 256 イテレーションのループが2回(init + KSA)
  • その後 % 256 を使用し、データと keystream を XOR する PRGA ループ

Unpacking binaries

Technique

Packers はバイナリを変形させ、静的解析を誤誘導します(ジャンクコード、暗号化されたセクション、ランタイムでの unpacking)。目標は、次の瞬間を捉えることです:

  • メモリに本物のコードを allocate/decrypt する
  • それを実行可能にマークする
  • そのコードへジャンプする

Identifying packed binaries

  • strings がほとんどない(または packer の strings のみ)
  • 多くの strings に xrefs がない(商用 packers)
  • packer-ID ツールを使用:
  • PEiD
  • Exeinfo PE

Basic recommendations

  • 分析は下から始めて上へ進む;unpackers はしばしば遅い段階でジャンプする。
  • JMP/CALL reg パターンやスタックトリック(push addr; retn)を探す。
  • VirtualAlloc/VirtualProtect にブレークポイントを置き、RWX 領域を追跡する。
  • ジャンプ後に突然 strings が爆発的に増えるのは、unpacked code に到達したことを示すことが多い。
  • メモリをダンプし、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をサポートする