Strukturele Lêer‑formaat Eksploit Opsporing (0‑Click Chains)

Reading time: 7 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Hierdie bladsy som praktiese tegnieke op om 0‑click mobiele exploit lêers te ontdek deur die strukturele invarianties van hul formate te valideer in plaas daarvan om op byte‑handtekeninge te vertrou. Die benadering generaliseer oor monsters, polymorphic variants, en toekomstige exploits wat dieselfde parser logic misbruik.

Belangrikste idee: enkodeer strukturele onmoontlikhede en kruis‑veld inkonsekwenthede wat slegs verskyn wanneer 'n kwesbare decoder/parser‑toestand bereik word.

See also:

PDF File analysis

Waarom struktuur, nie handtekeninge nie

Wanneer weaponized samples onbeskikbaar is en payload bytes muteer, faal tradisionele IOC/YARA patrone. Strukturele opsporing inspekteer die houer se verklaarde uitleg teenoor wat wiskundig of semanties moontlik is vir die formaat‑implementering.

Tipiese kontroles:

  • Valideer tabelgroottes en grense wat afgelei is uit die spesifikasie en veilige implementerings
  • Merk onwettige/ondokumenteerde opcodes of toestandsoorgange in ingesluit bytecode
  • Kruis‑kontroleer metadata VS werklike gekodeerde stroomkomponente
  • Detecteer teenstrydige velde wat parser‑verwarring of integer overflow‑opstellings aandui

Hieronder is konkrete, veld‑getoetste patrone vir verskeie hoë‑impak chains.


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

Target: JBIG2 symbol dictionaries ingebed binne PDFs (dikwels gebruik in mobiele MMS parsing).

Strukturele seine:

  • Teenstrydige dictionary‑toestand wat nie in goedaardige inhoud kan voorkom nie maar vereis word om die overflow in arithmetic decoding te trigger.
  • Verdagte gebruik van global segments gekombineer met abnormale symbol counts tydens 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")

Praktiese triage:

  • Identifiseer en ekstraheer JBIG2-strome uit die PDF
  • pdfid/pdf-parser/peepdf om strome te lokaliseer en te dump
  • Verifieer aritmetiese koderingvlae en simboolwoordeboek-parameters teen die JBIG2-spesifikasie

Aantekeninge:

  • Werk sonder ingesette payload-handtekeninge
  • Lae FP in praktyk omdat die geflagte toestand wiskundig inkonsistent is

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

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

Strukturele seinale:

  • Totale grootte van die saamgestelde Huffman-tabelle oortref die veilige boonste grens wat deur die verwysings-/gepatchte implementasies verwag word, wat die oorloop-voorwaarde impliseer.

Pseudo‑logika:

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")

Praktiese triage:

  • Kontroleer WebP container chunks: VP8X + VP8L
  • Ontleed VP8L prefix codes en bereken werklike toegewezen tabelgroottes

Aantekeninge:

  • Robuust teen byte‑vlak polimorfisme van die payload
  • Grens is afgelei van upstream-limiete/patch-analise

TrueType – TRIANGULATION (CVE‑2023‑41990)

Teiken: TrueType bytecode binne fpgm/prep/glyf programme.

Strukturele seine:

  • Aanwesigheid van ongedokumenteerde/verbode opcodes in Apple’s interpreter wat deur die exploit chain gebruik word.

Pseudo‑logika:

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

Praktiese triage:

  • Eksporteer font‑tabelle (bv. met fontTools/ttx) en skandeer fpgm/prep/glyf‑programme
  • Geen behoefte om die tolk volledig te emuleer om waarde uit aanwesigheidskontroles te kry

Aantekeninge:

  • Kan seldsame FPs produseer as nie‑standaard fonte onbekende opkodes bevat; valideer met sekondêre gereedskap

DNG/TIFF – CVE‑2025‑43300

Doelwit: DNG/TIFF beeldmetadata VS werklike komponenttelling in die gekodeerde stroom (bv. JPEG‑Lossless SOF3).

Strukturele seine:

  • Inkonsekwentheid tussen EXIF/IFD‑velde (SamplesPerPixel, PhotometricInterpretation) en die komponenttelling wat gepars word uit die beeldstroom‑header wat deur die pipeline gebruik word.

Pseudo‑logika:

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")

Praktiese triage:

  • Ontleed primêre IFD- en EXIF-tags
  • Vind en ontleed die ingeslote JPEG‑Lossless-kop (SOF3) en vergelyk komponenttelle

Aantekeninge:

  • In die veld gerapporteer as uitgebuit; uitstekende kandidaat vir strukturele konsekwentheidskontroles

Implementasiepatrone en prestasie

'n Praktiese skandeerder moet:

  • Outomaties lêertipe herken en slegs toepaslike ontleders aanroep (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
  • Stroom-/gedeeltelike ontleding om toewysings te minimaliseer en vroeë beëindiging moontlik te maak
  • Voer ontledings parallel uit (thread‑pool) vir massa‑triage

Voorbeeld‑werkstroom met ElegantBouncer (open‑source Rust‑implementering van hierdie kontroles):

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 wenke en randgevalle

  • Ingebedde objekte: PDFs kan beelde (JBIG2) en lettertipes (TrueType) inbed; onttrek en rekursief skandeer
  • Decompressiebeveiliging: gebruik biblioteke wat tabelle/buffers streng beperk voordat hulle geallokeer word
  • Valse positiewe: hou reëls konservatief, gee voorkeur aan teenstrydighede wat onmoontlik is volgens die spesifikasie
  • Weergawe‑drift: stel die grondlyn vir grenswaardes weer (bv. VP8L-tabelgroottes) wanneer upstream parsers hul grense verander

Verwante gereedskap

  • ElegantBouncer – strukturele skandeerder vir bogenoemde deteksies
  • pdfid/pdf-parser/peepdf – PDF-objek-uittrekking en statiese ontleding
  • pdfcpu – PDF-linter/saniteerder
  • fontTools/ttx – lees TrueType-tabelle en bytekode uit
  • exiftool – lees TIFF/DNG/EXIF-metadata
  • dwebp/webpmux – ontleed WebP-metadata en chunks

References

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks