Crypto in Malware / Reverse Engineering

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Αυτό το υποκεφάλαιο βοηθά όταν βλέπετε crypto/compression μέσα σε binaries και θέλετε να τα αναγνωρίσετε γρήγορα.

Αναγνώριση αλγορίθμων κρυπτογράφησης / συμπίεσης

Ευρετικές τεχνικές

  • Πολλές μετατοπίσεις/περιστροφές, XORs, και 32-bit αριθμητικές πράξεις σε στενούς βρόχους.
  • Lookup tables (S-boxes) στο .data ή δημιουργούνται κατά το runtime.
  • Επαναλαμβανόμενοι βρόχοι 0x100 επαναλήψεων που υποδηλώνουν RC4.

Windows crypto/compression APIs

CryptDeriveKey / CryptCreateHash

Αν αυτές χρησιμοποιούνται, η δεύτερη παράμετρος είναι ALG_ID:

Πίνακας: https://learn.microsoft.com/en-us/windows/win32/seccrypto/alg-id

RtlCompressBuffer / RtlDecompressBuffer

Συχνά υποδηλώνει ενσωματωμένη Windows συμπίεση (LZNT1, XPRESS, κ.λπ.).

Σταθερές & πίνακες

Μερικές φορές μπορείτε να ταυτοποιήσετε ένα hash/cipher αναζητώντας τις σταθερές (ή το πρώτο dword των πινάκων) online.

Παράδειγμα πινάκων AES:

Σημειώσεις αναγνώρισης RC4

Το RC4 αναγνωρίζεται συχνά από:

  • Δύο βρόχοι των 256 επαναλήψεων (init + KSA)
  • Έπειτα ένας βρόχος PRGA που χρησιμοποιεί % 256 και XOR-άρει ένα keystream με τα δεδομένα

Unpacking binaries

Τεχνική

Οι packers μετασχηματίζουν ένα binary ώστε η στατική ανάλυση να είναι παραπλανητική (junk code, encrypted sections, runtime unpacking). Ο στόχος είναι να πιάσετε τη στιγμή που:

  • κατανέμει/αποκρυπτογραφεί τον πραγματικό κώδικα στη μνήμη
  • το σηματοδοτεί ως executable
  • κάνει jump σε αυτό

Identifying packed binaries

  • Έλλειψη strings (ή μόνο packer strings)
  • Πολλά strings χωρίς xrefs (commercial packers)
  • Χρησιμοποιήστε εργαλεία packer-ID:
  • PEiD
  • Exeinfo PE

Βασικές συστάσεις

  • Ξεκινήστε την ανάλυση από το κάτω μέρος και δουλέψτε προς τα πάνω· οι unpackers συχνά κάνουν jump αργά.
  • Ψάξτε για μοτίβα JMP/CALL reg ή κόλπα στο stack (push addr; retn).
  • Βάλτε breakpoint σε VirtualAlloc/VirtualProtect και παρακολουθήστε περιοχές RWX.
  • Μια ξαφνική έκρηξη strings μετά από ένα jump συχνά υποδηλώνει ότι φτάσατε σε unpacked code.
  • Κάντε dump τη μνήμη και διορθώστε headers με εργαλεία όπως PE-bear.

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks