Crypto in Malware / Reverse Engineering

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Dieser Unterabschnitt hilft, wenn du Crypto/Kompression in Binärdateien siehst und sie schnell erkennen möchtest.

Erkennen von kryptographischen / Kompressions-Algorithmen

Heuristiken — technikbasiert

  • Viele shifts/rotates, XORs und 32-Bit-Arithmetik in engen Schleifen.
  • Lookup-Tabellen (S-boxes) in .data oder zur Laufzeit erzeugt.
  • Wiederholte Schleifen mit 0x100 Iterationen deuten auf RC4 hin.

Windows crypto/compression APIs

CryptDeriveKey / CryptCreateHash

Wenn diese verwendet werden, ist der zweite Parameter ein ALG_ID:

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

RtlCompressBuffer / RtlDecompressBuffer

Deutet oft auf eingebaute Windows-Kompression hin (LZNT1, XPRESS, etc).

Konstanten & Tabellen

Manchmal kann man einen Hash/Cipher durch Suchen nach Konstanten (oder dem ersten dword von Tabellen) online identifizieren.

Beispiel für AES-Tabellen:

Hinweise zur Erkennung von RC4

RC4 ist oft erkennbar an:

  • Zwei Schleifen mit 256 Iterationen (init + KSA)
  • Danach eine PRGA-Schleife, die % 256 verwendet und einen Keystream mit den Daten XORt

Unpacking von Binärdateien

Technik

Packers verändern ein Binary so, dass statische Analyse irreführend ist (Junk-Code, verschlüsselte Sections, zur Laufzeit entpackt). Ziel ist es, den Moment zu erwischen, in dem es:

  • echten Code im Speicher alloziert/dechiffriert
  • ihn ausführbar markiert
  • hinein springt

Erkennen gepackter Binärdateien

  • Mangel an Strings (oder nur Packer-Strings)
  • Viele Strings ohne xrefs (kommerziellen packern)
  • Packer-ID-Tools verwenden:
  • PEiD
  • Exeinfo PE

Grundlegende Empfehlungen

  • Beginne die Analyse von unten nach oben; unpackers springen oft spät.
  • Suche nach JMP/CALL reg-Mustern oder Stack-Tricks (push addr; retn).
  • Breakpoint auf VirtualAlloc/VirtualProtect setzen und RWX-Regionen verfolgen.
  • Eine plötzliche Explosion von Strings nach einem Jump deutet oft darauf hin, dass man unverpackten Code erreicht hat.
  • Speicher dumpen und Header mit Tools wie PE-bear reparieren.

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks