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
f31f6776b9
commit
8589c19df7
@ -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)
|
||||
|
@ -1,79 +1,172 @@
|
||||
# Podstawowa Metodologia Kryminalistyczna
|
||||
# Podstawowa metodologia informatyki śledczej
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Tworzenie i Montowanie Obrazu
|
||||
## Tworzenie i montowanie obrazu
|
||||
|
||||
|
||||
{{#ref}}
|
||||
../../generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md
|
||||
{{#endref}}
|
||||
|
||||
## Analiza Złośliwego Oprogramowania
|
||||
## Malware Analysis
|
||||
|
||||
To **niekoniecznie jest pierwszy krok do wykonania po otrzymaniu obrazu**. Jednak możesz używać tych technik analizy malware niezależnie, jeśli masz plik, obraz systemu plików, obraz pamięci, pcap... więc warto **mieć te działania na uwadze**:
|
||||
|
||||
To **nie jest koniecznie pierwszy krok do wykonania, gdy masz obraz**. Ale możesz używać tych technik analizy złośliwego oprogramowania niezależnie, jeśli masz plik, obraz systemu plików, obraz pamięci, pcap... więc dobrze jest **mieć te działania na uwadze**:
|
||||
|
||||
{{#ref}}
|
||||
malware-analysis.md
|
||||
{{#endref}}
|
||||
|
||||
## Inspekcja Obrazu
|
||||
## Analiza obrazu
|
||||
|
||||
Jeśli otrzymasz **obraz forensyczny** urządzenia, możesz rozpocząć **analizę partycji i używanego systemu plików** oraz **odzyskiwanie** potencjalnie **interesujących plików** (nawet usuniętych). Dowiedz się jak w:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
partitions-file-systems-carving/
|
||||
{{#endref}}# Podstawowa metodologia informatyki śledczej
|
||||
|
||||
|
||||
|
||||
## Tworzenie i montowanie obrazu
|
||||
|
||||
|
||||
{{#ref}}
|
||||
../../generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md
|
||||
{{#endref}}
|
||||
|
||||
## Malware Analysis
|
||||
|
||||
To **niekoniecznie jest pierwszy krok do wykonania po otrzymaniu obrazu**. Jednak możesz używać tych technik analizy malware niezależnie, jeśli masz plik, obraz systemu plików, obraz pamięci, pcap... więc warto **mieć te działania na uwadze**:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
malware-analysis.md
|
||||
{{#endref}}
|
||||
|
||||
## Analiza obrazu
|
||||
|
||||
Jeśli otrzymasz **obraz forensyczny** urządzenia, możesz rozpocząć **analizę partycji i używanego systemu plików** oraz **odzyskiwanie** potencjalnie **interesujących plików** (nawet usuniętych). Dowiedz się jak w:
|
||||
|
||||
Jeśli otrzymasz **obraz kryminalistyczny** urządzenia, możesz zacząć **analizować partycje, system plików** używany i **odzyskiwać** potencjalnie **interesujące pliki** (nawet usunięte). Dowiedz się jak w:
|
||||
|
||||
{{#ref}}
|
||||
partitions-file-systems-carving/
|
||||
{{#endref}}
|
||||
|
||||
W zależności od używanych systemów operacyjnych, a nawet platform, należy szukać różnych interesujących artefaktów:
|
||||
W zależności od używanych systemów operacyjnych i platform, należy szukać różnych potencjalnie interesujących artefaktów:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
windows-forensics/
|
||||
{{#endref}}
|
||||
|
||||
|
||||
{{#ref}}
|
||||
linux-forensics.md
|
||||
{{#endref}}
|
||||
|
||||
|
||||
{{#ref}}
|
||||
docker-forensics.md
|
||||
{{#endref}}
|
||||
|
||||
## Głęboka inspekcja specyficznych typów plików i oprogramowania
|
||||
|
||||
Jeśli masz bardzo **podejrzany** **plik**, to **w zależności od typu pliku i oprogramowania**, które go stworzyło, kilka **sztuczek** może być przydatnych.\
|
||||
Przeczytaj następującą stronę, aby poznać kilka interesujących sztuczek:
|
||||
{{#ref}}
|
||||
ios-backup-forensics.md
|
||||
{{#endref}}
|
||||
|
||||
## Szczegółowa analiza konkretnych typów plików i oprogramowania
|
||||
|
||||
Jeśli masz bardzo **podejrzany** **plik**, to **w zależności od typu pliku i oprogramowania**, które go stworzyło, przydatnych może być kilka **sztuczek**.\
|
||||
Przeczytaj następującą stronę, aby poznać kilka ciekawych trików:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
specific-software-file-type-tricks/
|
||||
{{#endref}}
|
||||
|
||||
Chcę szczególnie wspomnieć o stronie:
|
||||
Chcę szczególnie wskazać stronę:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
specific-software-file-type-tricks/browser-artifacts.md
|
||||
{{#endref}}
|
||||
|
||||
## Inspekcja Zrzutu Pamięci
|
||||
## Analiza zrzutu pamięci
|
||||
|
||||
|
||||
{{#ref}}
|
||||
memory-dump-analysis/
|
||||
{{#endref}}
|
||||
|
||||
## Inspekcja Pcap
|
||||
## Analiza pcap
|
||||
|
||||
|
||||
{{#ref}}
|
||||
pcap-inspection/
|
||||
{{#endref}}
|
||||
|
||||
## **Techniki Anty-Kryminalistyczne**
|
||||
## **Techniki anty-forensyczne**
|
||||
|
||||
Miej na uwadze możliwe użycie technik anty-forensycznych:
|
||||
|
||||
Pamiętaj o możliwym użyciu technik anty-kryminalistycznych:
|
||||
|
||||
{{#ref}}
|
||||
anti-forensic-techniques.md
|
||||
{{#endref}}
|
||||
|
||||
## Polowanie na Zagrożenia
|
||||
## Threat Hunting
|
||||
|
||||
|
||||
{{#ref}}
|
||||
file-integrity-monitoring.md
|
||||
{{#endref}}
|
||||
|
||||
|
||||
|
||||
## Szczegółowa analiza konkretnych typów plików i oprogramowania
|
||||
|
||||
Jeśli masz bardzo **podejrzany** **plik**, to **w zależności od typu pliku i oprogramowania**, które go stworzyło, przydatnych może być kilka **sztuczek**.\
|
||||
Przeczytaj następującą stronę, aby poznać kilka ciekawych trików:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
specific-software-file-type-tricks/
|
||||
{{#endref}}
|
||||
|
||||
Chcę szczególnie wskazać stronę:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
specific-software-file-type-tricks/browser-artifacts.md
|
||||
{{#endref}}
|
||||
|
||||
## Analiza zrzutu pamięci
|
||||
|
||||
|
||||
{{#ref}}
|
||||
memory-dump-analysis/
|
||||
{{#endref}}
|
||||
|
||||
## Analiza pcap
|
||||
|
||||
|
||||
{{#ref}}
|
||||
pcap-inspection/
|
||||
{{#endref}}
|
||||
|
||||
## **Techniki anty-forensyczne**
|
||||
|
||||
Miej na uwadze możliwe użycie technik anty-forensycznych:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
anti-forensic-techniques.md
|
||||
{{#endref}}
|
||||
|
||||
## Threat Hunting
|
||||
|
||||
|
||||
{{#ref}}
|
||||
file-integrity-monitoring.md
|
||||
|
@ -0,0 +1,124 @@
|
||||
# Analiza kopii zapasowych iOS (triage ukierunkowany na komunikatory)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Ta strona opisuje praktyczne kroki umożliwiające odtworzenie i analizę kopii zapasowych iOS pod kątem śladów dostarczenia exploitów 0‑click za pomocą załączników w aplikacjach komunikacyjnych. Koncentruje się na przekształceniu haszowanego układu kopii zapasowej Apple w czytelne ścieżki, a następnie na enumeracji i skanowaniu załączników w popularnych aplikacjach.
|
||||
|
||||
Cele:
|
||||
- Odtworzyć czytelne ścieżki z Manifest.db
|
||||
- Wyenumerować bazy danych komunikatorów (iMessage, WhatsApp, Signal, Telegram, Viber)
|
||||
- Rozwiązać ścieżki załączników, wyodrębnić osadzone obiekty (PDF/obrazy/czcionki) i przekazać je do detektorów strukturalnych
|
||||
|
||||
|
||||
## Odtwarzanie kopii zapasowej iOS
|
||||
|
||||
Kopie zapasowe przechowywane w MobileSync używają haszowanych nazw plików, które nie są czytelne dla człowieka. Baza danych SQLite Manifest.db mapuje każdy przechowywany obiekt na jego logiczną ścieżkę.
|
||||
|
||||
Procedura ogólna:
|
||||
1) Otwórz Manifest.db i odczytaj rekordy plików (domain, relativePath, flags, fileID/hash)
|
||||
2) Odtwórz oryginalną hierarchię folderów w oparciu o domain + relativePath
|
||||
3) Skopiuj lub utwórz hardlink dla każdego przechowywanego obiektu do jego odtworzonej ścieżki
|
||||
|
||||
Przykładowy przebieg za pomocą narzędzia, które realizuje to 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!
|
||||
```
|
||||
Notatki:
|
||||
- Obsłuż zaszyfrowane kopie zapasowe, podając extractorowi hasło do backupu
|
||||
- Zachowaj oryginalne znaczniki czasowe/ACL, gdy to możliwe ze względu na wartość dowodową
|
||||
|
||||
|
||||
## Enumeracja załączników aplikacji wiadomości
|
||||
|
||||
Po rekonstrukcji wyodrębnij listę załączników dla popularnych aplikacji. Dokładna struktura schematu różni się w zależności od aplikacji/wersji, ale podejście jest podobne: zapytaj bazę danych wiadomości, połącz wiadomości z załącznikami i rozwiąż ścieżki na dysku.
|
||||
|
||||
### iMessage (sms.db)
|
||||
Kluczowe tabele: message, attachment, message_attachment_join (MAJ), chat, chat_message_join (CMJ)
|
||||
|
||||
Przykładowe zapytania:
|
||||
```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;
|
||||
```
|
||||
Attachment paths may be absolute or relative to the reconstructed tree under Library/SMS/Attachments/.
|
||||
|
||||
### WhatsApp (ChatStorage.sqlite)
|
||||
Typowe powiązanie: tabela message ↔ tabela media/attachment (nazewnictwo różni się w zależności od wersji). Zapytaj wiersze tabeli media, aby uzyskać ścieżki na dysku.
|
||||
|
||||
Example (generic):
|
||||
```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;
|
||||
```
|
||||
Dostosuj nazwy tabel/kolumn do wersji aplikacji (ZWAMESSAGE/ZWAMEDIAITEM są powszechne w buildach iOS).
|
||||
|
||||
### Signal / Telegram / Viber
|
||||
- Signal: message DB jest zaszyfrowana; jednak załączniki buforowane na dysku (i miniatury) zwykle dają się przeskanować
|
||||
- Telegram: sprawdź katalogi cache (photo/video/document caches) i powiąż z czatami, gdy to możliwe
|
||||
- Viber: Viber.sqlite zawiera tabele wiadomości/załączników z odniesieniami na dysku
|
||||
|
||||
Wskazówka: nawet gdy metadane są zaszyfrowane, skanowanie katalogów media/cache nadal ujawnia złośliwe obiekty.
|
||||
|
||||
|
||||
## Skanowanie załączników pod kątem structural exploits
|
||||
|
||||
Gdy masz ścieżki do załączników, przekaż je do structural detectors, które walidują file‑format invariants zamiast signatures. Example with 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)
|
||||
```
|
||||
Detections covered by structural rules include:
|
||||
- PDF/JBIG2 FORCEDENTRY (CVE‑2021‑30860): niemożliwe stany słownika JBIG2
|
||||
- WebP/VP8L BLASTPASS (CVE‑2023‑4863): nadmiernie rozbudowane konstrukcje tabel Huffmana
|
||||
- TrueType TRIANGULATION (CVE‑2023‑41990): niedokumentowane bytecode opcodes
|
||||
- DNG/TIFF CVE‑2025‑43300: niezgodności między metadanymi a komponentami strumienia
|
||||
|
||||
|
||||
## Walidacja, zastrzeżenia i fałszywe pozytywy
|
||||
|
||||
- Konwersje czasu: iMessage przechowuje daty w epokach/jednostkach Apple w niektórych wersjach; przelicz odpowiednio podczas raportowania
|
||||
- Schema drift: schematy SQLite aplikacji zmieniają się w czasie; potwierdź nazwy tabel/kolumn dla wersji urządzenia
|
||||
- Recursive extraction: PDF-y mogą osadzać strumienie JBIG2 i fonty; wydobądź i przeskanuj wewnętrzne obiekty
|
||||
- False positives: heurystyki strukturalne są konserwatywne, ale mogą zgłaszać rzadkie, niepoprawne, lecz nieszkodliwe media
|
||||
|
||||
|
||||
## 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 @@
|
||||
# Sztuczki dotyczące konkretnych typów plików/oprogramowania
|
||||
# Specyficzne sztuczki dla oprogramowania i typów plików
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Tutaj znajdziesz interesujące sztuczki dotyczące konkretnych typów plików i/lub oprogramowania:
|
||||
Poniżej znajdziesz interesujące sztuczki dotyczące konkretnych typów plików i/lub oprogramowania:
|
||||
|
||||
|
||||
{{#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 @@
|
||||
# Structural File‑Format Exploit Detection (0‑Click Chains)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Ta strona podsumowuje praktyczne techniki wykrywania mobilnych plików‑eksploitów 0‑click poprzez weryfikację niezmienników strukturalnych ich formatów zamiast polegania na sygnaturach bajtowych. Podejście uogólnia się na próbki, warianty polimorficzne oraz przyszłe exploity wykorzystujące tę samą logikę parsera.
|
||||
|
||||
Kluczowa idea: zakodować strukturalne niemożliwości i niespójności między polami, które pojawiają się tylko gdy osiągnięty zostaje podatny stan dekodera/parsera.
|
||||
|
||||
Zobacz też:
|
||||
|
||||
{{#ref}}
|
||||
pdf-file-analysis.md
|
||||
{{#endref}}
|
||||
|
||||
|
||||
## Dlaczego struktura, a nie sygnatury
|
||||
|
||||
Gdy próbki uzbrojone są niedostępne a bajty ładunku mutują, tradycyjne wzorce IOC/YARA zawodzą. Wykrywanie strukturalne sprawdza zadeklarowany układ kontenera w porównaniu z tym, co jest matematycznie lub semantycznie możliwe dla implementacji formatu.
|
||||
|
||||
Typowe kontrole:
|
||||
- Weryfikuj rozmiary tabel i zakresy wyprowadzone ze specyfikacji i bezpiecznych implementacji
|
||||
- Oznacz nielegalne/nieudokumentowane opcodes lub przejścia stanów w osadzonym bytecode
|
||||
- Porównaj metadata z rzeczywistymi zakodowanymi komponentami strumienia
|
||||
- Wykryj sprzeczne pola wskazujące na zamieszanie parsera lub przygotowania do integer overflow
|
||||
|
||||
Poniżej znajdują się konkretne, w praktyce przetestowane wzorce dla wielu łańcuchów o dużym znaczeniu.
|
||||
|
||||
---
|
||||
|
||||
## PDF/JBIG2 – FORCEDENTRY (CVE‑2021‑30860)
|
||||
|
||||
Target: JBIG2 symbol dictionaries embedded inside PDFs (often used in mobile MMS parsing).
|
||||
|
||||
Structural signals:
|
||||
- Sprzeczny stan słownika, który nie występuje w treści nieszkodliwej, ale jest wymagany do wywołania overflow w arithmetic decoding.
|
||||
- Podejrzane wykorzystanie global segments połączone z nieprawidłową liczbą symboli podczas refinement coding.
|
||||
|
||||
Pseudo‑logika:
|
||||
```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")
|
||||
```
|
||||
Praktyczny triaż:
|
||||
- Zidentyfikuj i wyodrębnij strumienie JBIG2 z PDF
|
||||
- pdfid/pdf-parser/peepdf do zlokalizowania i zrzucenia strumieni
|
||||
- Zweryfikuj flagi kodowania arytmetycznego i parametry słownika symboli względem specyfikacji JBIG2
|
||||
|
||||
Uwagi:
|
||||
- Działa bez osadzonych sygnatur payloadu
|
||||
- Niskie FP w praktyce, ponieważ oznaczony stan jest matematycznie niespójny
|
||||
|
||||
---
|
||||
|
||||
## WebP/VP8L – BLASTPASS (CVE‑2023‑4863)
|
||||
|
||||
Target: WebP lossless (VP8L) Huffman prefix‑code tables.
|
||||
|
||||
Sygnały strukturalne:
|
||||
- Całkowity rozmiar skonstruowanych tablic Huffmana przekracza bezpieczny górny limit oczekiwany przez implementacje referencyjne/załatane, co sugeruje warunek wstępny przepełnienia.
|
||||
|
||||
Pseudologika:
|
||||
```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")
|
||||
```
|
||||
Practical triage:
|
||||
- Sprawdź WebP container chunks: VP8X + VP8L
|
||||
- Parsuj VP8L prefix codes i oblicz faktyczne zaalokowane rozmiary tabel
|
||||
|
||||
Notes:
|
||||
- Odporny na polimorfizm payloadu na poziomie bajtów
|
||||
- Granica wynika z analizy limitów i poprawek upstream
|
||||
|
||||
---
|
||||
|
||||
## TrueType – TRIANGULATION (CVE‑2023‑41990)
|
||||
|
||||
Target: TrueType bytecode inside fpgm/prep/glyf programs.
|
||||
|
||||
Structural signals:
|
||||
- Obecność nieudokumentowanych/zabronionych opcodes w interpreterze Apple używanym przez exploit chain.
|
||||
|
||||
Pseudo‑logic:
|
||||
```pseudo
|
||||
# Flag undocumented TrueType opcodes leveraged by TRIANGULATION
|
||||
switch opcode:
|
||||
case 0x8F, 0x90:
|
||||
mark_malicious("Undocumented TrueType bytecode")
|
||||
default:
|
||||
continue
|
||||
```
|
||||
Praktyczne triage:
|
||||
- Zrzucić tabele fontów (np. używając fontTools/ttx) i przeskanować programy fpgm/prep/glyf
|
||||
- Nie trzeba w pełni emulować interpretera, aby uzyskać wartość ze sprawdzeń obecności
|
||||
|
||||
Uwaga:
|
||||
- Może powodować rzadkie fałszywe pozytywy (FP), jeśli niestandardowe fonty zawierają nieznane opcodes; zweryfikuj za pomocą dodatkowych narzędzi
|
||||
|
||||
---
|
||||
|
||||
## DNG/TIFF – CVE‑2025‑43300
|
||||
|
||||
Target: DNG/TIFF image metadata VS actual component count in encoded stream (e.g., JPEG‑Lossless SOF3).
|
||||
|
||||
Structural signals:
|
||||
- Niespójność między polami EXIF/IFD (SamplesPerPixel, PhotometricInterpretation) a liczbą komponentów sparsowaną z nagłówka strumienia obrazu używanego przez pipeline.
|
||||
|
||||
Pseudo‑logic:
|
||||
```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")
|
||||
```
|
||||
Practical triage:
|
||||
- Parsuj główne tagi IFD i EXIF
|
||||
- Znajdź i parsuj osadzony nagłówek JPEG‑Lossless (SOF3) oraz porównaj liczbę komponentów
|
||||
|
||||
Notes:
|
||||
- Zgłaszano wykorzystania w rzeczywistych atakach; doskonały kandydat do kontroli spójności strukturalnej
|
||||
|
||||
---
|
||||
|
||||
## Wzorce implementacji i wydajność
|
||||
|
||||
Praktyczny skaner powinien:
|
||||
- Automatycznie wykrywać typ pliku i uruchamiać tylko odpowiednie analizatory (PDF/JBIG2, WebP/VP8L, TTF, DNG/TIFF)
|
||||
- Przetwarzać strumieniowo/parsować częściowo, aby zminimalizować alokacje i umożliwić wcześniejsze zakończenie
|
||||
- Uruchamiać analizy równolegle (thread‑pool) przy przetwarzaniu wsadowym
|
||||
|
||||
Przykładowy przebieg pracy z ElegantBouncer (otwartoźródłowa implementacja w Rust tych sprawdzeń):
|
||||
```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
|
||||
```
|
||||
---
|
||||
|
||||
## Wskazówki DFIR i przypadki brzegowe
|
||||
|
||||
- Embedded objects: Pliki PDF mogą osadzać obrazy (JBIG2) i fonty (TrueType); wyodrębnij je i przeskanuj rekurencyjnie
|
||||
- Decompression safety: używaj bibliotek, które narzucają twarde limity na tabele/bufory przed alokacją
|
||||
- Fałszywe alarmy: utrzymuj reguły konserwatywne, preferuj sprzeczności, które są niemożliwe zgodnie ze specyfikacją
|
||||
- Version drift: ponownie ustal granice (np. rozmiary tabel VP8L), gdy parsery upstream zmieniają limity
|
||||
|
||||
---
|
||||
|
||||
## Related tools
|
||||
|
||||
- ElegantBouncer – skaner strukturalny dla powyższych detekcji
|
||||
- pdfid/pdf-parser/peepdf – ekstrakcja obiektów PDF i analiza statyczna
|
||||
- pdfcpu – linter/sanitizer dla PDF
|
||||
- fontTools/ttx – wyodrębnianie tabel TrueType i bytecode
|
||||
- exiftool – czytanie metadanych TIFF/DNG/EXIF
|
||||
- dwebp/webpmux – parsowanie metadanych i chunków WebP
|
||||
|
||||
---
|
||||
|
||||
## 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)
|
||||
- [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