Ανίχνευση Εκμεταλλεύσεων Μορφής Αρχείων (0‑Click Chains)

Reading time: 7 minutes

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

Αυτή η σελίδα συνοψίζει πρακτικές τεχνικές για τον εντοπισμό 0‑click mobile exploit αρχείων επαληθεύοντας δομικές αμεταβλητές των φορμάτ αντί να βασίζεται σε byte signatures. Η προσέγγιση γενικεύει μεταξύ δειγμάτων, πολυμορφικών παραλλαγών και μελλοντικών exploits που καταχρώνται την ίδια λογική parser.

Κύρια ιδέα: κωδικοποιήστε δομικές αδυνατότητες και ασυμφωνίες μεταξύ πεδίων που εμφανίζονται μόνο όταν επιτυγχάνεται κατάσταση ευάλωτου decoder/parser.

See also:

PDF File analysis

Γιατί δομή, όχι signatures

Όταν weaponized samples δεν είναι διαθέσιμα και τα payload bytes μεταλλάσσονται, τα παραδοσιακά IOC/YARA patterns αποτυγχάνουν. Η δομική ανίχνευση εξετάζει τη δηλωμένη διάταξη του container σε σχέση με το τι είναι μαθηματικά ή σημασιολογικά δυνατό για την υλοποίηση του format.

Τυπικοί έλεγχοι:

  • Validate table sizes and bounds derived from the spec and safe implementations
  • Flag illegal/undocumented opcodes or state transitions in embedded bytecode
  • Cross‑check metadata VS actual encoded stream components
  • Detect contradictory fields that indicate parser confusion or integer overflow set‑ups

Παρακάτω υπάρχουν συγκεκριμένα, field‑tested μοτίβα για πολλαπλές high‑impact αλυσίδες.


PDF/JBIG2 – FORCEDENTRY (CVE‑2021‑30860)

Στόχος: JBIG2 symbol dictionaries ενσωματωμένα μέσα σε PDFs (συχνά χρησιμοποιούνται στο mobile MMS parsing).

Δομικά σήματα:

  • Αντιφατική κατάσταση dictionary που δεν μπορεί να συμβεί σε αβλαβές περιεχόμενο αλλά απαιτείται για να πυροδοτήσει το overflow στην arithmetic decoding.
  • Ύποπτη χρήση global segments συνδυασμένη με μη φυσιολογικούς αριθμούς symbols κατά τη διάρκεια refinement coding.

Pseudo‑logic:

pseudo
# Detecting impossible dictionary state used by FORCEDENTRY
if input_symbols_count == 0 and (ex_syms > 0 and ex_syms < 4):
mark_malicious("JBIG2 impossible symbol dictionary state")

Practical triage:

  • Εντοπίστε και εξαγάγετε JBIG2 streams από το PDF
  • pdfid/pdf-parser/peepdf για εντοπισμό και dump των streams
  • Επαληθεύστε τα arithmetic coding flags και τα symbol dictionary parameters σε σχέση με το JBIG2 spec

Notes:

  • Λειτουργεί χωρίς embedded payload signatures
  • Χαμηλό FP στην πράξη επειδή η επισημασμένη κατάσταση είναι μαθηματικά ασυνεπής

WebP/VP8L – BLASTPASS (CVE‑2023‑4863)

Target: WebP lossless (VP8L) Huffman prefix‑code tables.

Structural signals:

  • Το συνολικό μέγεθος των κατασκευασμένων Huffman πινάκων υπερβαίνει το ασφαλές άνω όριο που αναμένεται από τις reference/patched implementations, υπονοώντας την προϋπόθεση overflow.

Pseudo‑logic:

pseudo
# Detect malformed Huffman table construction triggering overflow
let total_size = sum(table_sizes)
if total_size > 2954:   # example bound: FIXED_TABLE_SIZE + MAX_TABLE_SIZE
mark_malicious("VP8L oversized Huffman tables")

Πρακτική διαλογή:

  • Ελέγξτε τα WebP container chunks: VP8X + VP8L
  • Αναλύστε τους κώδικες προθέματος VP8L και υπολογίστε τα πραγματικά εκχωρημένα μεγέθη πινάκων

Σημειώσεις:

  • Ανθεκτικό απέναντι στο byte‑level polymorphism του payload
  • Το όριο προκύπτει από την ανάλυση upstream limits/patch

TrueType – TRIANGULATION (CVE‑2023‑41990)

Στόχος: TrueType bytecode μέσα σε προγράμματα fpgm/prep/glyf.

Δομικά σήματα:

  • Παρουσία μη τεκμηριωμένων/απαγορευμένων opcodes στον Apple’s interpreter που χρησιμοποιούνται από την exploit chain.

Ψευδο-λογική:

pseudo
# Flag undocumented TrueType opcodes leveraged by TRIANGULATION
switch opcode:
case 0x8F, 0x90:
mark_malicious("Undocumented TrueType bytecode")
default:
continue

Πρακτική διαλογή:

  • Εξαγωγή πινάκων γραμματοσειράς (π.χ., χρησιμοποιώντας fontTools/ttx) και σάρωση των προγραμμάτων fpgm/prep/glyf
  • Δεν είναι αναγκαία η πλήρης προσομοίωση του interpreter για να αντληθεί χρήσιμη πληροφορία από ελέγχους παρουσίας

Σημειώσεις:

  • Μπορεί να παράγει σπάνια FPs αν μη-τυπικές γραμματοσειρές περιέχουν άγνωστα opcodes· επικυρώστε με δευτερογενή εργαλεία

DNG/TIFF – CVE‑2025‑43300

Στόχος: τα metadata εικόνας DNG/TIFF έναντι του πραγματικού αριθμού συστατικών στο κωδικοποιημένο stream (π.χ., JPEG‑Lossless SOF3).

Δομικά σήματα:

  • Ασυμφωνία μεταξύ πεδίων EXIF/IFD (SamplesPerPixel, PhotometricInterpretation) και του πλήθους συστατικών που αναλύεται από την κεφαλίδα του image stream που χρησιμοποιείται από την pipeline.

Ψευδο‑λογική:

pseudo
# Metadata claims 2 samples per pixel but stream header exposes only 1 component
if samples_per_pixel == 2 and sof3_components == 1:
mark_malicious("DNG/TIFF metadata vs. stream mismatch")

Πρακτική ταξινόμηση:

  • Ανάλυση των κύριων ετικετών IFD και EXIF
  • Εντοπισμός και ανάλυση του ενσωματωμένου JPEG‑Lossless header (SOF3) και σύγκριση του αριθμού των συστατικών

Σημειώσεις:

  • Αναφέρθηκε ότι έχει εκμεταλλευτεί στο φυσικό περιβάλλον· εξαιρετικός υποψήφιος για ελέγχους δομικής συνέπειας

Πρότυπα υλοποίησης και απόδοση

Ένας πρακτικός σαρωτής θα πρέπει να:

  • Αυτόματη ανίχνευση τύπου αρχείου και δρομολόγηση μόνο στους σχετικούς αναλυτές (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
  • Χρήση stream/μερικής ανάλυσης για ελαχιστοποίηση των κατανομών μνήμης και δυνατότητα πρώιμου τερματισμού
  • Εκτέλεση αναλύσεων παράλληλα (thread‑pool) για μαζική ταξινόμηση

Example workflow with ElegantBouncer (open‑source Rust implementation of these checks):

bash
# Scan a path recursively with structural detectors
$ elegant-bouncer --scan /path/to/directory

# Optional TUI for parallel scanning and real‑time alerts
$ elegant-bouncer --tui --scan /path/to/samples

Συμβουλές DFIR και οριακές περιπτώσεις

  • Ενσωματωμένα αντικείμενα: Τα PDFs μπορεί να ενσωματώνουν εικόνες (JBIG2) και fonts (TrueType)· εξάγετε και σαρώστε αναδρομικά
  • Ασφάλεια αποσυμπίεσης: χρησιμοποιήστε βιβλιοθήκες που επιβάλλουν αυστηρούς περιορισμούς σε πίνακες/buffers πριν την κατανομή
  • Ψευδώς θετικά: κρατήστε τους κανόνες συντηρητικούς, προτιμήστε αντιφάσεις που είναι αδύνατες σύμφωνα με την προδιαγραφή
  • Απόκλιση έκδοσης: επαναπροσδιορίστε τα όρια (π.χ., VP8L table sizes) όταν οι upstream parsers αλλάζουν τα όριά τους

Σχετικά εργαλεία

  • ElegantBouncer – δομικός σαρωτής για τις παραπάνω ανιχνεύσεις
  • pdfid/pdf-parser/peepdf – εξαγωγή αντικειμένων PDF και στατική ανάλυση
  • pdfcpu – ελεγκτής/καθαριστής PDF
  • fontTools/ttx – εξαγωγή πινάκων TrueType και bytecode
  • exiftool – ανάγνωση μεταδεδομένων TIFF/DNG/EXIF
  • dwebp/webpmux – ανάλυση μεταδεδομένων και chunks WebP

Αναφορές

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