Strukturele lêerformaat Exploit-opsoring (0‑Click Chains)

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 strukturele invarianties van hul formate te verifieer in plaas daarvan om op byte‑handtekeninge staat te maak. Die benadering generaliseer oor monsters, polymorfe variante en toekomstige exploits wat dieselfde parser‑logika misbruik.

Key idea: kodeer strukturele onmoontlikhede en kruis‑veld teenstrydighede wat slegs verskyn wanneer ’n kwesbare decoder/parser‑toestand bereik word.

Sien ook:

PDF File analysis

Waarom struktuur, nie handtekeninge nie

Wanneer gewapen­de monsters nie beskikbaar is en payload‑bytes muteer, faal tradisionele IOC/YARA‑patrone. Strukturele opsporing ondersoek 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 van die spesifikasie en veilige implementasies
  • Merk onwettige/ongedokumenteerde opcodes of toestandsoordragte in ingeslote bytecode
  • Kruisverifiëer metadata teen werklike gekodeerde stroomkomponente
  • Ontdek teenstrydige velde wat parser‑verwardheid of heelgetal‑oorloop‑opstellings aandui

Hieronder is konkrete, veldgetoetste patrone vir veelvuldige hoë‑impak kettings.


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

Target: JBIG2 symbol dictionaries embedded inside PDFs (often used in mobile MMS parsing).

Strukturele seine:

  • Teenstrydige woordeboektoestand wat nie in goedaardige inhoud kan voorkom nie maar vereis word om die oorloop in aritmetiese dekodering te aktiveer.
  • Verdagte gebruik van globale segmente gekombineer met abnormale simbooltelling tydens verfyningskodering.

Pseudo‑logika:

# 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
  • gebruik pdfid/pdf-parser/peepdf om strome te lokaliseer en te dump
  • Verifieer arithmetic coding flags en symbol dictionary parameters teen die JBIG2-spec

Aantekeninge:

  • Werk sonder ingebedde payload-handtekeninge
  • Lae FP in die praktyk omdat die gemerkte toestand wiskundig onsamehangend is

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

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

Strukturele seine:

  • Totale grootte van die opgeboude Huffman-tabelle oorskry die veilige boonste grens wat deur die verwysings-/gepatchte implementasies verwag word, wat die oorloop-voorwaarde aandui.

Pseudo‑logika:

# 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 die werklike toegewezen tabelgroottes

Aantekeninge:

  • Robuust teen byte‑vlak polimorfisme van die payload
  • Grens word afgelei van upstream limits/patch analysis

TrueType – TRIANGULATION (CVE‑2023‑41990)

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

Strukturele seine:

  • Aanwezigheid van ongedokumenteerde/verbode opcodes in Apple se interpreter wat deur die exploit chain gebruik word.

Pseudo‑logika:

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

Praktiese triage:

  • Maak ’n dump van font-tabelle (bv. met fontTools/ttx) en skandeer fpgm/prep/glyf-programme
  • Dit is nie nodig om die tolk volledig te emuleer om nut te trek uit teenwoordigheidskontroles nie

Notas:

  • Kan seldsame valse positiewe (FPs) veroorsaak as nie-standaard fonts onbekende opcodes bevat; valideer met sekondêre gereedskap

DNG/TIFF – CVE‑2025‑43300

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

Strukturele seine:

  • Inkonsekwensie tussen EXIF/IFD-velde (SamplesPerPixel, PhotometricInterpretation) en die komponenttelling wat uit die beeldstroomkop gepars is en deur die pipeline gebruik word.

Pseudo‑logika:

# 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 die primêre IFD- en EXIF-tags
  • Lokalisereer en ontleed die ingeslote JPEG‑Lossless-kop (SOF3) en vergelyk komponenttellings

Opmerkings:

  • Gerapporteer uitgebuit in the wild; uitstekende kandidaat vir strukturele konsekwentheidskontroles

DNG/TIFF – Samsung libimagecodec.quram.so (CVE‑2025‑21042) + Appended ZIP payload (LANDFALL)

Target: DNG (TIFF‑afgeleide) beelde wat ’n ingeslote ZIP-argief bevat wat by EOF aangeheg is om native payloads te stage ná parser RCE.

Strukturele seine:

  • Lêermagie dui op TIFF/DNG (II*\x00 or MM\x00*) maar lêernaam naboots JPEG (bv. .jpg/.jpeg WhatsApp-benaming).
  • Aanwesigheid van ’n ZIP Local File Header of EOCD-magic naby EOF (PK\x03\x04 of PK\x05\x06) wat nie deur enige TIFF IFD datareeks (strips/tiles/JPEGInterchangeFormat) verwys word nie.
  • Ongewoon groot naslepende data buite die laaste verwysde IFD-datablok (honderde KB tot MB), ooreenstemmend met ’n gebundelde argief van .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)")

Praktiese triage:

  • Identifiseer formaat vs naam:
  • file sample; exiftool -s -FileType -MIMEType sample
  • Locate ZIP footer/header near EOF and 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
  • Sanity‑check TIFF data regions don’t overlap the carved ZIP region:
  • tiffdump -D sample.dng | egrep ‘StripOffsets|TileOffsets|JPEGInterchangeFormat|StripByteCounts|TileByteCounts|JPEGInterchangeFormatLength’
  • Verify max(offset+length) << zip_off
  • One‑shot carving (coarse): binwalk -eM sample.dng

Notes:

  • Exploited in the wild against Samsung’s libimagecodec.quram.so (CVE‑2025‑21042). The appended ZIP contained native modules (e.g., loader + SELinux policy editor) extracted/executed post‑RCE.

Implementasiepatrone en prestasie

’n Praktiese skandeerder moet:

  • Auto‑detect file type and dispatch only relevant analyzers (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
  • Stream/partial‑parse to minimize allocations and enable early termination
  • Run analyses in parallel (thread‑pool) for bulk triage

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

  • Ingebedde objekte: PDFs kan beelde (JBIG2) en fonts (TrueType) inbed; haal uit en skandeer rekursief
  • Decompressiebeveiliging: gebruik biblioteke wat tabelle/buffers hard beperk voordat hulle gealloceer word
  • Valse positiewe: hou reëls konserwatief; kies teenstrydighede wat onder die spesifikasie onmoontlik is
  • Weergawe‑drift: herbepaal grenswaardes (bv. VP8L tabelgroottes) wanneer upstream parsers limiete verander

Verwante gereedskap

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

Verwysings

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