Yapısal Dosya Formatı İstismar Tespiti (0‑Click Chains)

Reading time: 6 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Bu sayfa, byte imzalarına dayanmak yerine formatların yapısal invariyantlarını doğrulayarak 0‑click mobil exploit dosyalarını tespit etmeye yönelik pratik teknikleri özetler. Yaklaşım, aynı parser mantığını kötüye kullanan örnekler, polimorfik varyantlar ve gelecekteki exploitler arasında genelleştirilebilir.

Ana fikir: yalnızca zayıf bir decoder/parser durumuna ulaşıldığında görünen yapısal imkansızlıkları ve alanlar arası tutarsızlıkları kodlamak.

See also:

PDF File analysis

Neden yapı, imzalar değil

Silahlandırılmış örnekler mevcut olmadığında ve payload byte'ları değiştiğinde, geleneksel IOC/YARA desenleri başarısız olur. Yapısal tespit, konteynerin beyan edilen düzenini format uygulaması için matematiksel veya semantik olarak mümkün olanla karşılaştırır.

Tipik kontroller:

  • Spec ve güvenli uygulamalardan türetilen tablo boyutlarını ve sınırlarını doğrulayın
  • Gömülü bytecode içindeki yasadışı/dokümante edilmemiş opcod'ları veya durum geçişlerini işaretleyin
  • Metadata'yı gerçek kodlanmış akış bileşenleriyle çapraz kontrol edin
  • Parser karışıklığına veya integer overflow kuruluma işaret eden çelişkili alanları tespit edin

Aşağıda birden çok yüksek etkili zincir için saha testli somut desenler bulunmaktadır.


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

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

Yapısal sinyaller:

  • Benign içerikte oluşamayacak, ancak aritmetik çözümlemede taşmayı tetiklemek için gerekli olan çelişkili sözlük durumu.
  • refinement coding sırasında anormal sembol sayılarıyla birleşen global segmentlerin şüpheli kullanımı.

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 triyaj:

  • PDF'ten JBIG2 akışlarını belirleyin ve çıkarın
  • Akışları bulmak ve dökmek için pdfid/pdf-parser/peepdf kullanın
  • Aritmetik kodlama bayraklarını ve sembol sözlüğü parametrelerini JBIG2 spesifikasyonuna göre doğrulayın

Notes:

  • Gömülü payload imzaları olmadan çalışır
  • Pratikte yanlış pozitif (FP) oranı düşüktür çünkü işaretli durum matematiksel olarak tutarsızdır

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

Target: WebP kayıpsız (VP8L) Huffman prefix‑code tabloları.

Yapısal sinyaller:

  • Oluşturulan Huffman tablolarının toplam boyutu, referans/düzeltilmiş uygulamaların beklediği güvenli üst sınırı aşıyor; bu, taşma (overflow) önkoşulunu gösterir.

Sözde-mantik:

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

Pratik triyaj:

  • WebP container chunk'larını kontrol et: VP8X + VP8L
  • VP8L prefix kodlarını ayrıştır ve gerçek ayrılan tablo boyutlarını hesapla

Notlar:

  • Payload'ın bayt‑düzeyindeki polimorfizmine karşı dayanıklı
  • Sınır, upstream limitleri ve yama analizinden türetilir

TrueType – TRIANGULATION (CVE‑2023‑41990)

Hedef: fpgm/prep/glyf programları içindeki TrueType bytecode.

Yapısal sinyaller:

  • Exploit zincirinin kullandığı Apple’ın interpreter'ında belgelenmemiş/yasak opcode'ların varlığı.

Sözde‑mantık:

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

Pratik triaj:

  • Font tablolarını dök (ör. fontTools/ttx kullanarak) ve fpgm/prep/glyf programlarını tara
  • Varlık kontrollerinden değer elde etmek için yorumlayıcıyı tamamen emüle etmeye gerek yok

Notes:

  • Standart dışı fontlar bilinmeyen opcode'lar içeriyorsa nadir yanlış pozitifler (FP) üretebilir; ikincil araçlarla doğrula

DNG/TIFF – CVE‑2025‑43300

Hedef: DNG/TIFF görüntü metadata'sı ile kodlanmış akıştaki gerçek bileşen sayısı arasındaki uyumsuzluk (ör. JPEG‑Lossless SOF3).

Yapısal sinyaller:

  • EXIF/IFD alanları (SamplesPerPixel, PhotometricInterpretation) ile pipeline tarafından kullanılan görüntü akış başlığından ayrıştırılan bileşen sayısı arasındaki tutarsızlık.

Sözde mantık:

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

Pratik ön değerlendirme:

  • Birincil IFD ve EXIF etiketlerini ayrıştırın
  • Gömülü JPEG‑Lossless header (SOF3)'ü bulun ve ayrıştırarak bileşen sayılarını karşılaştırın

Notlar:

  • Sahada exploit edildiği bildirildi; yapısal tutarlılık kontrolleri için mükemmel bir aday

Uygulama kalıpları ve performans

Pratik bir tarayıcı şunları yapmalıdır:

  • Dosya türünü otomatik algılayıp yalnızca ilgili analizörlere yönlendirin (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
  • Tahsisleri en aza indirmek ve erken sonlandırmaya izin vermek için stream/partial‑parse kullanın
  • Toplu ön değerlendirme için analizleri paralel (thread‑pool) çalıştırın

ElegantBouncer ile örnek iş akışı (bu kontrollerin açık kaynaklı Rust uygulaması):

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 ipuçları ve uç durumlar

  • Gömülü nesneler: PDF'ler görüntüleri (JBIG2) ve yazı tiplerini (TrueType) içerebilir; çıkarın ve özyinelemeli olarak tarayın
  • Decompression safety: tahsisattan önce tabloları/buffer'ları katı bir şekilde sınırlandıran kütüphaneleri kullanın
  • False positives: kuralları ihtiyatlı tutun, spesifikasyona göre imkansız olan çelişkileri tercih edin
  • Version drift: upstream parser'lar limitleri değiştirdiğinde sınırları yeniden belirleyin (ör. VP8L tablo boyutları)

İlgili araçlar

  • ElegantBouncer – yukarıdaki tespitler için yapısal tarayıcı
  • pdfid/pdf-parser/peepdf – PDF nesne çıkarımı ve statik analiz
  • pdfcpu – PDF linter/temizleyici
  • fontTools/ttx – TrueType tablolarını ve bytecode'u dökme
  • exiftool – TIFF/DNG/EXIF meta verilerini okuma
  • dwebp/webpmux – WebP meta verilerini ve chunk'ları ayrıştırma

Kaynaklar

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking'i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin