Ανίχνευση Εκμετάλλευσης Δομικών Μορφών Αρχείων (0‑Click Chains)
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 files ελέγχοντας τα δομικά αμετάβλητα των φορμά τους αντί να βασίζεται σε byte signatures. Η προσέγγιση γενικεύει ανά δείγματα, πολυμορφικές παραλλαγές και μελλοντικά exploits που καταχρώνται την ίδια λογική του parser.
Κεντρική ιδέα: κωδικοποίηση δομικών αδυναμιών και ασυνεπειών μεταξύ πεδίων που εμφανίζονται μόνο όταν επιτυγχάνεται μια ευπαθής κατάσταση decoder/parser.
Δείτε επίσης:
Γιατί δομή, όχι υπογραφές
Όταν weaponized samples δεν είναι διαθέσιμα και τα payload bytes μεταλλάσσονται, οι παραδοσιακές IOC/YARA patterns αποτυγχάνουν. Η δομική ανίχνευση επιθεωρεί τη δηλωμένη διάταξη του container σε σύγκριση με το τι είναι μαθηματικά ή σημασιολογικά δυνατό για την υλοποίηση του format.
Τυπικοί έλεγχοι:
- Επιβεβαιώστε τα μεγέθη πινάκων και τα όρια που προκύπτουν από το spec και τις ασφαλείς υλοποιήσεις
- Σημειώστε μη νόμιμα/μη τεκμηριωμένα opcodes ή state transitions σε embedded bytecode
- Διασταυρώστε το metadata VS τα πραγματικά encoded stream components
- Εντοπίστε αντιφατικά πεδία που υποδεικνύουν parser confusion ή set‑ups για integer overflow
Πιο κάτω υπάρχουν συγκεκριμένα, ελεγμένα στο πεδίο μοτίβα για πολλαπλές υψηλού αντίκτυπου chains.
PDF/JBIG2 – FORCEDENTRY (CVE‑2021‑30860)
Target: JBIG2 symbol dictionaries embedded inside PDFs (often used in mobile MMS parsing).
Δομικά σήματα:
- Αντιφατική κατάσταση του dictionary που δεν μπορεί να συμβεί σε benign content αλλά απαιτείται για να ενεργοποιήσει το 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")
Πρακτική διαλογή:
- Εντοπίστε και εξαγάγετε JBIG2 ροές από το PDF
- pdfid/pdf-parser/peepdf για εντοπισμό και εξαγωγή ροών
- Επαληθεύστε τα arithmetic coding flags και τις παραμέτρους του symbol dictionary σε σχέση με το JBIG2 spec
Σημειώσεις:
- Λειτουργεί χωρίς embedded payload signatures
- Χαμηλά false positives στην πράξη επειδή η κατάσταση που επισημαίνεται είναι μαθηματικά ασύμβατη
WebP/VP8L – BLASTPASS (CVE‑2023‑4863)
Στόχος: WebP lossless (VP8L) Huffman prefix‑code tables.
Δομικά σήματα:
- Το συνολικό μέγεθος των κατασκευασμένων πινάκων Huffman υπερβαίνει το ασφαλές ανώτατο όριο που αναμένεται από τις reference/patched implementations, υπονοώντας την προϋπόθεση overflow.
Ψευδο‑λογική:
# 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: VP8X + VP8L
- Αναλύστε τους prefix κωδικούς VP8L και υπολογίστε τα πραγματικά εκχωρημένα μεγέθη πινάκων
Σημειώσεις:
- Ανθεκτικό σε byte‑level polymorphism του payload
- Το όριο προκύπτει από ανάλυση upstream limits/patch
TrueType – TRIANGULATION (CVE‑2023‑41990)
Στόχος: TrueType bytecode μέσα σε προγράμματα fpgm/prep/glyf.
Δομικά σήματα:
- Παρουσία μη τεκμηριωμένων/απαγορευμένων opcodes στον interpreter της Apple που χρησιμοποιείται από την 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
- Δεν χρειάζεται να εξομοιώσετε πλήρως τον διερμηνέα για να αποκτήσετε χρήσιμες πληροφορίες από ελέγχους παρουσίας
Σημειώσεις:
- Μπορεί να παράγει σπάνια ψευδώς θετικά (FPs) εάν μη τυπικές γραμματοσειρές περιέχουν άγνωστα opcodes· επικυρώστε με δευτερεύοντα εργαλεία
DNG/TIFF – CVE‑2025‑43300
Στόχος: μεταδεδομένα εικόνας DNG/TIFF έναντι του πραγματικού αριθμού συστατικών στην κωδικοποιημένη ροή (π.χ., JPEG‑Lossless SOF3).
Δομικά σήματα:
- Ασυμφωνία μεταξύ των πεδίων EXIF/IFD (SamplesPerPixel, PhotometricInterpretation) και του αριθμού συστατικών που αναλύεται από την κεφαλίδα της ροής εικόνας που χρησιμοποιεί το 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 (SOF3) και σύγκριση αριθμών συνιστωσών
Σημειώσεις:
- Αναφέρθηκε exploited in the wild; εξαιρετικός υποψήφιος για ελέγχους δομικής συνέπειας
DNG/TIFF – Samsung libimagecodec.quram.so (CVE‑2025‑21042) + Appended ZIP payload (LANDFALL)
Target: DNG (TIFF‑derived) images carrying an embedded ZIP archive appended at EOF to stage native payloads after parser RCE.
Structural signals:
- Το magic αρχείου υποδεικνύει TIFF/DNG (
II*\x00orMM\x00*) αλλά το όνομα αρχείου μιμείται JPEG (π.χ..jpg/.jpegWhatsApp naming). - Παρουσία ZIP Local File Header ή EOCD magic κοντά στο EOF (
PK\x03\x04orPK\x05\x06) που δεν αναφέρεται σε καμία περιοχή δεδομένων TIFF IFD (strips/tiles/JPEGInterchangeFormat). - Ασυνήθιστα μεγάλα δεδομένα στο τέλος πέρα από το τελευταίο αναφερόμενο μπλοκ δεδομένων IFD (εκατοντάδες KB έως MB), συμβατά με πακεταρισμένο archive από .so modules.
Pseudo‑logic:
# Detect appended ZIP payload hidden after DNG/TIFF data (Samsung chain)
if is_tiff_dng(magic):
ext = file_extension()
if ext in {".jpg", ".jpeg"}: mark_suspicious("Extension/magic mismatch: DNG vs JPEG")
zip_off = rfind_any(["PK\x05\x06", "PK\x03\x04"], search_window_last_n_bytes=8*1024*1024)
if zip_off >= 0:
end_dng = approx_end_of_tiff_data() # max(end of Strip/Tile/JPEGInterchangeFormat regions)
if zip_off > end_dng + 0x200:
mark_malicious("DNG with appended ZIP payload (LANDFALL‑style)")
Πρακτική διαλογή:
- Αναγνώριση μορφής έναντι του ονόματος:
- file sample; exiftool -s -FileType -MIMEType sample
- Εντοπίστε footer/header του ZIP κοντά στο EOF και carve:
- off=$(grep -aboa -E $‘PK\x05\x06|PK\x03\x04’ sample.dng | tail -n1 | cut -d: -f1)
- dd if=sample.dng of=payload.zip bs=1 skip=“$off”
- zipdetails -v payload.zip; unzip -l payload.zip
- Επαληθεύστε ότι οι περιοχές δεδομένων TIFF δεν επικαλύπτουν την carved ZIP region:
- tiffdump -D sample.dng | egrep ‘StripOffsets|TileOffsets|JPEGInterchangeFormat|StripByteCounts|TileByteCounts|JPEGInterchangeFormatLength’
- Verify
max(offset+length) << zip_off - Μονοβήματο carving (χονδρικό): binwalk -eM sample.dng
Σημειώσεις:
- Εκμεταλλεύτηκε σε πραγματικές επιθέσεις εναντίον της Samsung’s libimagecodec.quram.so (CVE‑2025‑21042). Το appended ZIP περιείχε native modules (π.χ., loader + SELinux policy editor) που εξάχθηκαν/εκτελέστηκαν μετά από RCE.
Σχέδια υλοποίησης και απόδοση
Ένας πρακτικός scanner θα πρέπει να:
- Αυτόματη ανίχνευση τύπου αρχείου και αποστολή μόνο στους σχετικούς analyzers (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
- Stream/partial‑parse για ελαχιστοποίηση των allocations και δυνατότητα πρώιμου τερματισμού
- Εκτέλεση αναλύσεων παράλληλα (thread‑pool) για μαζική διαλογή
Παράδειγμα ροής εργασίας με 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) και γραμματοσειρές (TrueType)· εξαγάγετε και σαρώστε αναδρομικά
- Ασφάλεια αποσυμπίεσης: χρησιμοποιήστε βιβλιοθήκες που επιβάλλουν αυστηρά όρια σε tables/buffers πριν την κατανομή
- Ψευδώς θετικά: διατηρήστε τους κανόνες συντηρητικούς, προτιμήστε αντιφάσεις που είναι αδύνατες σύμφωνα με τις προδιαγραφές
- Απόκλιση εκδόσεων: αναπροσαρμόστε τα βασικά όρια (π.χ., VP8L table sizes) όταν οι upstream parsers αλλάζουν τα όρια
Σχετικά εργαλεία
- ElegantBouncer – δομικός σαρωτής για τις ανιχνεύσεις παραπάνω
- pdfid/pdf-parser/peepdf – Εξαγωγή αντικειμένων PDF και στατική ανάλυση
- pdfcpu – linter/καθαριστής PDF
- fontTools/ttx – εξαγωγή TrueType tables και bytecode
- exiftool – ανάγνωση μεταδεδομένων TIFF/DNG/EXIF
- dwebp/webpmux – ανάλυση WebP metadata και chunks
Αναφορές
- 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
- LANDFALL: New Commercial-Grade Android Spyware in Exploit Chain Targeting Samsung Devices
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.
HackTricks

