mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/basic-forensic-meth
This commit is contained in:
parent
3722d7bc32
commit
e3f236a5fe
@ -41,6 +41,7 @@
|
||||
- [Anti-Forensic Techniques](generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md)
|
||||
- [Docker Forensics](generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.md)
|
||||
- [Image Acquisition & Mount](generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md)
|
||||
- [Ios Backup Forensics](generic-methodologies-and-resources/basic-forensic-methodology/ios-backup-forensics.md)
|
||||
- [Linux Forensics](generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md)
|
||||
- [Malware Analysis](generic-methodologies-and-resources/basic-forensic-methodology/malware-analysis.md)
|
||||
- [Memory dump analysis](generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md)
|
||||
@ -61,6 +62,7 @@
|
||||
- [Office file analysis](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md)
|
||||
- [PDF File analysis](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md)
|
||||
- [PNG tricks](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md)
|
||||
- [Structural File Format Exploit Detection](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/structural-file-format-exploit-detection.md)
|
||||
- [Video and Audio file analysis](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md)
|
||||
- [ZIPs tricks](generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md)
|
||||
- [Windows Artifacts](generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/README.md)
|
||||
|
@ -4,13 +4,15 @@
|
||||
|
||||
## Creazione e Montaggio di un'Immagine
|
||||
|
||||
|
||||
{{#ref}}
|
||||
../../generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md
|
||||
{{#endref}}
|
||||
|
||||
## Analisi del Malware
|
||||
## Analisi Malware
|
||||
|
||||
Questo **non è necessariamente il primo passo da eseguire una volta che hai l'immagine**. Però puoi usare queste tecniche di malware analysis in modo indipendente se hai un file, un file-system image, memory image, pcap... quindi è bene **tenere a mente queste azioni**:
|
||||
|
||||
Questo **non è necessariamente il primo passo da eseguire una volta ottenuta l'immagine**. Ma puoi utilizzare queste tecniche di analisi del malware in modo indipendente se hai un file, un'immagine del file system, un'immagine di memoria, pcap... quindi è utile **tenere a mente queste azioni**:
|
||||
|
||||
{{#ref}}
|
||||
malware-analysis.md
|
||||
@ -18,30 +20,116 @@ malware-analysis.md
|
||||
|
||||
## Ispezione di un'Immagine
|
||||
|
||||
Se ti viene fornita un'**immagine forense** di un dispositivo, puoi iniziare **ad analizzare le partizioni, il file-system** utilizzato e **recuperare** potenzialmente **file interessanti** (anche quelli eliminati). Scopri come in:
|
||||
Se ti viene fornita un'**immagine forense** di un dispositivo puoi iniziare a **analizzare le partizioni, il file-system** usato e **recuperare** potenzialmente **file interessanti** (anche eliminati). Scopri come in:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
partitions-file-systems-carving/
|
||||
{{#endref}}# Metodologia Forense di Base
|
||||
|
||||
|
||||
|
||||
## Creazione e Montaggio di un'Immagine
|
||||
|
||||
|
||||
{{#ref}}
|
||||
../../generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md
|
||||
{{#endref}}
|
||||
|
||||
## Analisi Malware
|
||||
|
||||
Questo **non è necessariamente il primo passo da eseguire una volta che hai l'immagine**. Però puoi usare queste tecniche di malware analysis in modo indipendente se hai un file, un file-system image, memory image, pcap... quindi è bene **tenere a mente queste azioni**:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
malware-analysis.md
|
||||
{{#endref}}
|
||||
|
||||
## Ispezione di un'Immagine
|
||||
|
||||
Se ti viene fornita un'**immagine forense** di un dispositivo puoi iniziare a **analizzare le partizioni, il file-system** usato e **recuperare** potenzialmente **file interessanti** (anche eliminati). Scopri come in:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
partitions-file-systems-carving/
|
||||
{{#endref}}
|
||||
|
||||
A seconda dei sistemi operativi utilizzati e persino della piattaforma, dovrebbero essere cercati diversi artefatti interessanti:
|
||||
A seconda dei sistemi operativi e della piattaforma usati, dovrebbero essere ricercati diversi artefatti interessanti:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
windows-forensics/
|
||||
{{#endref}}
|
||||
|
||||
|
||||
{{#ref}}
|
||||
linux-forensics.md
|
||||
{{#endref}}
|
||||
|
||||
|
||||
{{#ref}}
|
||||
docker-forensics.md
|
||||
{{#endref}}
|
||||
|
||||
## Ispezione Approfondita di Tipi di File e Software Specifici
|
||||
|
||||
Se hai un **file** molto **sospetto**, allora **a seconda del tipo di file e del software** che lo ha creato, potrebbero essere utili diversi **trucchi**.\
|
||||
Leggi la pagina seguente per scoprire alcuni trucchi interessanti:
|
||||
{{#ref}}
|
||||
ios-backup-forensics.md
|
||||
{{#endref}}
|
||||
|
||||
## Ispezione approfondita di tipi di file e Software specifici
|
||||
|
||||
Se hai un file molto **sospetto**, allora **a seconda del file-type e del software** che lo ha creato, possono essere utili diversi **trucchi**.\
|
||||
Leggi la pagina seguente per apprendere alcuni trucchi interessanti:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
specific-software-file-type-tricks/
|
||||
{{#endref}
|
||||
|
||||
Voglio fare una menzione speciale alla pagina:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
specific-software-file-type-tricks/browser-artifacts.md
|
||||
{{#endref}}
|
||||
|
||||
## Ispezione del memory dump
|
||||
|
||||
|
||||
{{#ref}}
|
||||
memory-dump-analysis/
|
||||
{{#endref}}
|
||||
|
||||
## Ispezione di pcap
|
||||
|
||||
|
||||
{{#ref}}
|
||||
pcap-inspection/
|
||||
{{#endref}}
|
||||
|
||||
## **Tecniche anti-forensi**
|
||||
|
||||
Tieni presente il possibile uso di tecniche anti-forensi:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
anti-forensic-techniques.md
|
||||
{{#endref}}
|
||||
|
||||
## Threat Hunting
|
||||
|
||||
|
||||
{{#ref}}
|
||||
file-integrity-monitoring.md
|
||||
{{#endref}}
|
||||
|
||||
|
||||
|
||||
## Ispezione approfondita di tipi di file e Software specifici
|
||||
|
||||
Se hai un file molto **sospetto**, allora **a seconda del file-type e del software** che lo ha creato, possono essere utili diversi **trucchi**.\
|
||||
Leggi la pagina seguente per apprendere alcuni trucchi interessanti:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
specific-software-file-type-tricks/
|
||||
@ -49,31 +137,36 @@ specific-software-file-type-tricks/
|
||||
|
||||
Voglio fare una menzione speciale alla pagina:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
specific-software-file-type-tricks/browser-artifacts.md
|
||||
{{#endref}}
|
||||
|
||||
## Ispezione del Dump di Memoria
|
||||
## Ispezione del memory dump
|
||||
|
||||
|
||||
{{#ref}}
|
||||
memory-dump-analysis/
|
||||
{{#endref}}
|
||||
|
||||
## Ispezione Pcap
|
||||
## Ispezione di pcap
|
||||
|
||||
|
||||
{{#ref}}
|
||||
pcap-inspection/
|
||||
{{#endref}}
|
||||
|
||||
## **Tecniche Anti-Forensi**
|
||||
## **Tecniche anti-forensi**
|
||||
|
||||
Tieni presente il possibile uso di tecniche anti-forensi:
|
||||
|
||||
Tieni a mente il possibile utilizzo di tecniche anti-forensi:
|
||||
|
||||
{{#ref}}
|
||||
anti-forensic-techniques.md
|
||||
{{#endref}}
|
||||
|
||||
## Ricerca di Minacce
|
||||
## Threat Hunting
|
||||
|
||||
|
||||
{{#ref}}
|
||||
file-integrity-monitoring.md
|
||||
|
@ -0,0 +1,124 @@
|
||||
# Analisi forense di backup iOS (triage incentrato sui messaggi)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Questa pagina descrive passaggi pratici per ricostruire e analizzare backup iOS alla ricerca di segni di delivery di exploit 0‑click tramite allegati di app di messaggistica. Si concentra sul trasformare il layout hashed dei backup Apple in percorsi leggibili dall'uomo, quindi sull'enumerazione e scansione degli allegati nelle app più comuni.
|
||||
|
||||
Obiettivi:
|
||||
- Ricostruire percorsi leggibili da Manifest.db
|
||||
- Enumerare i database di messaggistica (iMessage, WhatsApp, Signal, Telegram, Viber)
|
||||
- Risolvere i percorsi degli allegati, estrarre oggetti embedded (PDF/Images/Fonts) e inviarli a rilevatori strutturali
|
||||
|
||||
|
||||
## Ricostruzione di un backup iOS
|
||||
|
||||
I backup memorizzati sotto MobileSync usano nomi di file hashed che non sono leggibili. Il database SQLite Manifest.db mappa ogni oggetto memorizzato al suo percorso logico.
|
||||
|
||||
Procedura di alto livello:
|
||||
1) Aprire Manifest.db e leggere i record dei file (domain, relativePath, flags, fileID/hash)
|
||||
2) Ricreare la gerarchia di cartelle originale basata su domain + relativePath
|
||||
3) Copiare o creare hardlink di ogni oggetto memorizzato nel suo percorso ricostruito
|
||||
|
||||
Esempio di workflow con uno strumento che implementa questo end‑to‑end (ElegantBouncer):
|
||||
```bash
|
||||
# Rebuild the backup into a readable folder tree
|
||||
$ elegant-bouncer --ios-extract /path/to/backup --output /tmp/reconstructed
|
||||
[+] Reading Manifest.db ...
|
||||
✓ iOS backup extraction completed successfully!
|
||||
```
|
||||
Note:
|
||||
- Gestire i backup cifrati fornendo la password del backup al tuo extractor
|
||||
- Conservare i timestamp/ACL originali quando possibile per valore probatorio
|
||||
|
||||
|
||||
## Enumerazione degli allegati delle app di messaggistica
|
||||
|
||||
Dopo la ricostruzione, enumerare gli allegati per le app più diffuse. Lo schema esatto varia a seconda dell'app/versione, ma l'approccio è simile: interrogare il database dei messaggi, unire i messaggi agli allegati e risolvere i percorsi su disco.
|
||||
|
||||
### iMessage (sms.db)
|
||||
Key tables: message, attachment, message_attachment_join (MAJ), chat, chat_message_join (CMJ)
|
||||
|
||||
Query di esempio:
|
||||
```sql
|
||||
-- List attachments with basic message linkage
|
||||
SELECT
|
||||
m.ROWID AS message_rowid,
|
||||
a.ROWID AS attachment_rowid,
|
||||
a.filename AS attachment_path,
|
||||
m.handle_id,
|
||||
m.date,
|
||||
m.is_from_me
|
||||
FROM message m
|
||||
JOIN message_attachment_join maj ON maj.message_id = m.ROWID
|
||||
JOIN attachment a ON a.ROWID = maj.attachment_id
|
||||
ORDER BY m.date DESC;
|
||||
|
||||
-- Include chat names via chat_message_join
|
||||
SELECT
|
||||
c.display_name,
|
||||
a.filename AS attachment_path,
|
||||
m.date
|
||||
FROM chat c
|
||||
JOIN chat_message_join cmj ON cmj.chat_id = c.ROWID
|
||||
JOIN message m ON m.ROWID = cmj.message_id
|
||||
JOIN message_attachment_join maj ON maj.message_id = m.ROWID
|
||||
JOIN attachment a ON a.ROWID = maj.attachment_id
|
||||
ORDER BY m.date DESC;
|
||||
```
|
||||
I percorsi degli allegati possono essere assoluti o relativi all'albero ricostruito sotto Library/SMS/Attachments/.
|
||||
|
||||
### WhatsApp (ChatStorage.sqlite)
|
||||
Collegamento comune: tabella message ↔ tabella media/attachment (i nomi variano a seconda della versione). Interroga le righe media per ottenere i percorsi sul disco.
|
||||
|
||||
Esempio (generico):
|
||||
```sql
|
||||
SELECT
|
||||
m.Z_PK AS message_pk,
|
||||
mi.ZMEDIALOCALPATH AS media_path,
|
||||
m.ZMESSAGEDATE AS message_date
|
||||
FROM ZWAMESSAGE m
|
||||
LEFT JOIN ZWAMEDIAITEM mi ON mi.ZMESSAGE = m.Z_PK
|
||||
WHERE mi.ZMEDIALOCALPATH IS NOT NULL
|
||||
ORDER BY m.ZMESSAGEDATE DESC;
|
||||
```
|
||||
Adatta i nomi di tabelle/colonne alla versione della tua app (ZWAMESSAGE/ZWAMEDIAITEM sono comuni nelle build iOS).
|
||||
|
||||
### Signal / Telegram / Viber
|
||||
- Signal: il DB dei messaggi è cifrato; tuttavia gli allegati memorizzati nella cache su disco (e le miniature) sono di solito scansionabili
|
||||
- Telegram: ispeziona le directory della cache (cache di foto/video/documenti) e associale alle chat quando possibile
|
||||
- Viber: Viber.sqlite contiene tabelle di messaggi/allegati con riferimenti su disco
|
||||
|
||||
Suggerimento: anche quando i metadati sono cifrati, la scansione delle directory media/cache fa emergere comunque oggetti dannosi.
|
||||
|
||||
|
||||
## Scansione degli allegati per exploit strutturali
|
||||
|
||||
Una volta ottenuti i percorsi degli allegati, forniscili a rilevatori strutturali che validano le invarianti del formato file invece delle firme. Esempio con ElegantBouncer:
|
||||
```bash
|
||||
# Recursively scan only messaging attachments under the reconstructed tree
|
||||
$ elegant-bouncer --scan --messaging /tmp/reconstructed
|
||||
[+] Found N messaging app attachments to scan
|
||||
✗ THREAT in WhatsApp chat 'John Doe': suspicious_document.pdf → FORCEDENTRY (JBIG2)
|
||||
✗ THREAT in iMessage: photo.webp → BLASTPASS (VP8L)
|
||||
```
|
||||
Le rilevazioni coperte dalle regole strutturali includono:
|
||||
- PDF/JBIG2 FORCEDENTRY (CVE‑2021‑30860): stati del dizionario JBIG2 impossibili
|
||||
- WebP/VP8L BLASTPASS (CVE‑2023‑4863): costruzioni di tabelle Huffman sovradimensionate
|
||||
- TrueType TRIANGULATION (CVE‑2023‑41990): opcode di bytecode non documentati
|
||||
- DNG/TIFF CVE‑2025‑43300: incongruenze tra metadati e componenti del flusso
|
||||
|
||||
|
||||
## Validazione, avvertenze e falsi positivi
|
||||
|
||||
- Conversioni temporali: iMessage memorizza le date in epoch/unità Apple in alcune versioni; convertirle adeguatamente durante la redazione del report
|
||||
- Deriva dello schema: gli schemi SQLite delle app cambiano nel tempo; confermare nomi di tabelle/colonne per la build del dispositivo
|
||||
- Estrazione ricorsiva: i PDF possono incorporare stream JBIG2 e font; estrarre e scansionare gli oggetti interni
|
||||
- Falsi positivi: le euristiche strutturali sono conservative ma possono segnalare media rari, malformati ma benigni
|
||||
|
||||
|
||||
## References
|
||||
|
||||
- [ELEGANTBOUNCER: When You Can't Get the Samples but Still Need to Catch the Threat](https://www.msuiche.com/posts/elegantbouncer-when-you-cant-get-the-samples-but-still-need-to-catch-the-threat/)
|
||||
- [ElegantBouncer project (GitHub)](https://github.com/msuiche/elegant-bouncer)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
@ -1,8 +1,8 @@
|
||||
# Specific Software/File Type Tricks
|
||||
# Trucchi per Software/Tipi di File Specifici
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Qui puoi trovare trucchi interessanti per specifici tipi di file e/o software:
|
||||
Qui puoi trovare trucchi interessanti per tipi di file e/o software specifici:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -35,6 +35,11 @@ pdf-file-analysis.md
|
||||
{{#endref}}
|
||||
|
||||
|
||||
{{#ref}}
|
||||
structural-file-format-exploit-detection.md
|
||||
{{#endref}}
|
||||
|
||||
|
||||
{{#ref}}
|
||||
png-tricks.md
|
||||
{{#endref}}
|
||||
|
@ -0,0 +1,173 @@
|
||||
# Rilevamento di exploit su formati di file strutturali (0‑Click Chains)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Questa pagina riassume tecniche pratiche per rilevare file exploit mobili 0‑click validando invarianti strutturali dei loro formati invece di basarsi su firme di byte. L'approccio si generalizza attraverso campioni, varianti polimorfiche e futuri exploit che abusano della stessa logica del parser.
|
||||
|
||||
Idea chiave: codificare impossibilità strutturali e incongruenze tra campi che compaiono solo quando si raggiunge uno stato vulnerabile del decoder/parser.
|
||||
|
||||
Vedi anche:
|
||||
|
||||
{{#ref}}
|
||||
pdf-file-analysis.md
|
||||
{{#endref}}
|
||||
|
||||
|
||||
## Perché la struttura, non le firme
|
||||
|
||||
Quando i campioni weaponizzati non sono disponibili e i byte del payload mutano, i tradizionali pattern IOC/YARA falliscono. La detection strutturale ispeziona il layout dichiarato del contenitore rispetto a ciò che è matematicamente o semanticamente possibile per l'implementazione del formato.
|
||||
|
||||
Controlli tipici:
|
||||
- Validare le dimensioni delle tabelle e i limiti derivati dalla spec e dalle implementazioni sicure
|
||||
- Segnalare opcode illegali/non documentati o transizioni di stato in embedded bytecode
|
||||
- Confrontare metadata VS componenti effettivamente codificati dello stream
|
||||
- Rilevare campi contraddittori che indicano confusione del parser o set‑up per integer overflow
|
||||
|
||||
Di seguito pattern concreti, testati sul campo, per più chain ad alto impatto.
|
||||
|
||||
---
|
||||
|
||||
## PDF/JBIG2 – FORCEDENTRY (CVE‑2021‑30860)
|
||||
|
||||
Target: dizionari di simboli JBIG2 incorporati nei PDF (spesso usati nel parsing di MMS su mobile).
|
||||
|
||||
Segnali strutturali:
|
||||
- Stato del dizionario contraddittorio che non può verificarsi in contenuto benigno ma è necessario per scatenare l'overflow nella decodifica aritmetica.
|
||||
- Uso sospetto di global segments combinato con conteggi di simboli anomali durante la refinement coding.
|
||||
|
||||
Pseudo‑logica:
|
||||
```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 triage:
|
||||
- Identify and extract JBIG2 streams from the PDF
|
||||
- pdfid/pdf-parser/peepdf to locate and dump streams
|
||||
- Verify arithmetic coding flags and symbol dictionary parameters against the JBIG2 spec
|
||||
|
||||
Notes:
|
||||
- Works without embedded payload signatures
|
||||
- Low FP in practice because the flagged state is mathematically inconsistent
|
||||
|
||||
---
|
||||
|
||||
## WebP/VP8L – BLASTPASS (CVE‑2023‑4863)
|
||||
|
||||
Obiettivo: WebP lossless (VP8L) Huffman prefix‑code tables.
|
||||
|
||||
Segnali strutturali:
|
||||
- Total size of constructed Huffman tables exceeds the safe upper bound expected by the reference/patched implementations, implying the overflow precondition.
|
||||
|
||||
Pseudo‑logic:
|
||||
```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")
|
||||
```
|
||||
Triage pratico:
|
||||
- Controllare i chunk del container WebP: VP8X + VP8L
|
||||
- Analizzare i prefix codes VP8L e calcolare le dimensioni effettivamente allocate delle tabelle
|
||||
|
||||
Note:
|
||||
- Robusto contro il polimorfismo a livello di byte del payload
|
||||
- Il vincolo è ricavato dall'analisi dei limiti/patch upstream
|
||||
|
||||
---
|
||||
|
||||
## TrueType – TRIANGULATION (CVE‑2023‑41990)
|
||||
|
||||
Target: bytecode TrueType all'interno dei programmi fpgm/prep/glyf.
|
||||
|
||||
Segnali strutturali:
|
||||
- Presenza di opcode non documentati/proibiti nell'interpreter di Apple usato dalla exploit chain.
|
||||
|
||||
Pseudo‑logica:
|
||||
```pseudo
|
||||
# Flag undocumented TrueType opcodes leveraged by TRIANGULATION
|
||||
switch opcode:
|
||||
case 0x8F, 0x90:
|
||||
mark_malicious("Undocumented TrueType bytecode")
|
||||
default:
|
||||
continue
|
||||
```
|
||||
Triage pratico:
|
||||
- Dump font tables (ad es., usando fontTools/ttx) e scansionare i programmi fpgm/prep/glyf
|
||||
- Non è necessario emulare completamente l'interprete per ottenere valore dai controlli di presenza
|
||||
|
||||
Note:
|
||||
- Può produrre rari FPs se font non standard includono opcodes sconosciuti; convalidare con tooling secondario
|
||||
|
||||
---
|
||||
|
||||
## DNG/TIFF – CVE‑2025‑43300
|
||||
|
||||
Obiettivo: metadati immagine DNG/TIFF vs il reale conteggio dei componenti nello stream codificato (ad es., JPEG‑Lossless SOF3).
|
||||
|
||||
Segnali strutturali:
|
||||
- Incoerenza tra i campi EXIF/IFD (SamplesPerPixel, PhotometricInterpretation) e il conteggio dei componenti estratto dall'header dello stream immagine utilizzato dalla pipeline.
|
||||
|
||||
Pseudo‑logica:
|
||||
```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")
|
||||
```
|
||||
Triage pratico:
|
||||
- Eseguire il parsing dei tag IFD ed EXIF primari
|
||||
- Individuare ed eseguire il parsing dell'header incorporato JPEG‑Lossless (SOF3) e confrontare il conteggio dei componenti
|
||||
|
||||
Note:
|
||||
- Segnalato sfruttato in the wild; eccellente candidato per controlli di coerenza strutturale
|
||||
|
||||
---
|
||||
|
||||
## Pattern di implementazione e prestazioni
|
||||
|
||||
Un scanner pratico dovrebbe:
|
||||
- Rilevare automaticamente il tipo di file ed eseguire solo gli analizzatori rilevanti (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
|
||||
- Parsing in streaming/parziale per minimizzare le allocazioni e consentire la terminazione anticipata
|
||||
- Eseguire le analisi in parallelo (pool di thread) per il triage di massa
|
||||
|
||||
Esempio di flusso di lavoro con ElegantBouncer (implementazione open‑source in Rust di questi controlli):
|
||||
```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 consigli e casi limite
|
||||
|
||||
- Embedded objects: i PDF possono incorporare immagini (JBIG2) e font (TrueType); estrarre e scansionare ricorsivamente
|
||||
- Decompression safety: usare librerie che limitano rigidamente tabelle/buffer prima dell'allocazione
|
||||
- False positives: mantenere le regole conservative, privilegiare contraddizioni che sono impossibili secondo la specifica
|
||||
- Version drift: ricalibrare i limiti di base (es., VP8L table sizes) quando i parser upstream cambiano i limiti
|
||||
|
||||
---
|
||||
|
||||
## Strumenti correlati
|
||||
|
||||
- ElegantBouncer – scanner strutturale per le detections sopra
|
||||
- pdfid/pdf-parser/peepdf – estrazione degli oggetti PDF e analisi statica
|
||||
- pdfcpu – PDF linter/sanitizer
|
||||
- fontTools/ttx – dump delle tabelle TrueType e del bytecode
|
||||
- exiftool – leggere i metadati TIFF/DNG/EXIF
|
||||
- dwebp/webpmux – analizzare i metadati e i chunk WebP
|
||||
|
||||
---
|
||||
|
||||
## Riferimenti
|
||||
|
||||
- [ELEGANTBOUNCER: When You Can't Get the Samples but Still Need to Catch the Threat](https://www.msuiche.com/posts/elegantbouncer-when-you-cant-get-the-samples-but-still-need-to-catch-the-threat/)
|
||||
- [ElegantBouncer project (GitHub)](https://github.com/msuiche/elegant-bouncer)
|
||||
- [Researching FORCEDENTRY: Detecting the exploit with no samples](https://www.msuiche.com/posts/researching-forcedentry-detecting-the-exploit-with-no-samples/)
|
||||
- [Researching BLASTPASS – Detecting the exploit inside a WebP file (Part 1)](https://www.msuiche.com/posts/researching-blastpass-detecting-the-exploit-inside-a-webp-file-part-1/)
|
||||
- [Researching BLASTPASS – Analysing the Apple & Google WebP PoC file (Part 2)](https://www.msuiche.com/posts/researching-blastpass-analysing-the-apple-google-webp-poc-file-part-2/)
|
||||
- [Researching TRIANGULATION – Detecting CVE‑2023‑41990 with single‑byte signatures](https://www.msuiche.com/posts/researching-triangulation-detecting-cve-2023-41990-with-single-byte-signatures/)
|
||||
- [CVE‑2025‑43300: Critical vulnerability found in Apple’s DNG image processing](https://www.msuiche.com/posts/cve-2025-43300-critical-vulnerability-found-in-apples-dng-image-processing/)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
Loading…
x
Reference in New Issue
Block a user