Ανίχνευση Εκμεταλλεύσεων Μορφής Αρχείων (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
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Αυτή η σελίδα συνοψίζει πρακτικές τεχνικές για τον εντοπισμό 0‑click mobile exploit αρχείων επαληθεύοντας δομικές αμεταβλητές των φορμάτ αντί να βασίζεται σε byte signatures. Η προσέγγιση γενικεύει μεταξύ δειγμάτων, πολυμορφικών παραλλαγών και μελλοντικών exploits που καταχρώνται την ίδια λογική parser.
Κύρια ιδέα: κωδικοποιήστε δομικές αδυνατότητες και ασυμφωνίες μεταξύ πεδίων που εμφανίζονται μόνο όταν επιτυγχάνεται κατάσταση ευάλωτου decoder/parser.
See also:
Γιατί δομή, όχι 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:
# 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:
# 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.
Ψευδο-λογική:
# 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.
Ψευδο‑λογική:
# 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):
# 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
Αναφορές
- ELEGANTBOUNCER: When You Can't Get the Samples but Still Need to Catch the Threat
- ElegantBouncer project (GitHub)
- Researching FORCEDENTRY: Detecting the exploit with no samples
- Researching BLASTPASS – Detecting the exploit inside a WebP file (Part 1)
- Researching BLASTPASS – Analysing the Apple & Google WebP PoC file (Part 2)
- Researching TRIANGULATION – Detecting CVE‑2023‑41990 with single‑byte signatures
- CVE‑2025‑43300: Critical vulnerability found in Apple’s DNG image processing
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
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.