iOS-Backup-Forensik (Messaging‑zentrierte Triage)
Reading time: 5 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Diese Seite beschreibt praktische Schritte, um iOS-Backups zu rekonstruieren und zu analysieren, um Hinweise auf 0‑Click-Exploit‑Lieferungen über Messaging‑App‑Anhänge zu finden. Der Fokus liegt darauf, Apples gehashte Backup-Struktur in menschenlesbare Pfade zu überführen und anschließend Anhänge in gängigen Apps zu enumerieren und zu scannen.
Ziele:
- Lesbare Pfade aus Manifest.db rekonstruieren
- Messaging‑Datenbanken aufzählen (iMessage, WhatsApp, Signal, Telegram, Viber)
- Anhangspfade auflösen, eingebettete Objekte extrahieren (PDF/Bilder/Schriftarten) und sie an strukturelle Detektoren weiterleiten
Rekonstruktion eines iOS-Backups
Backups, die unter MobileSync gespeichert sind, verwenden gehashte Dateinamen, die nicht menschenlesbar sind. Die Manifest.db SQLite‑Datenbank ordnet jedes gespeicherte Objekt seinem logischen Pfad zu.
Vorgehensweise im Überblick:
- Öffne Manifest.db und lese die Dateieinträge (domain, relativePath, flags, fileID/hash)
- Erstelle die ursprüngliche Ordnerhierarchie basierend auf domain + relativePath wieder
- Kopiere oder erstelle Hardlinks für jedes gespeicherte Objekt an seinem rekonstruierten Pfad
Beispiel-Workflow mit einem Tool, das dies End-to-End umsetzt (ElegantBouncer):
# 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!
Notizen:
- Verschlüsselte Backups behandeln, indem Sie das Backup-Passwort an Ihr Extractor übergeben
- Bewahren Sie nach Möglichkeit ursprüngliche Zeitstempel/ACLs zur Beweissicherung
Aufzählung von Anhängen in Messaging-Apps
Nach der Rekonstruktion sollten Sie Anhänge beliebter Apps auflisten. Das genaue Schema variiert je nach App/Version, aber der Ansatz ist ähnlich: die Messaging-Datenbank abfragen, Nachrichten mit Anhängen verknüpfen und Pfade auf der Festplatte ermitteln.
iMessage (sms.db)
Wichtige Tabellen: message, attachment, message_attachment_join (MAJ), chat, chat_message_join (CMJ)
Beispielabfragen:
-- 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;
Pfade zu Anhängen können absolut sein oder relativ zum rekonstruierten Verzeichnisbaum unter Library/SMS/Attachments/.
WhatsApp (ChatStorage.sqlite)
Häufige Verknüpfung: message table ↔ media/attachment table (Benennung variiert je nach Version). Abfragen der media‑Zeilen, um Pfade auf dem Datenträger zu erhalten.
Beispiel (generisch):
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;
Passen Sie Tabellen-/Spaltennamen an Ihre App-Version an (ZWAMESSAGE/ZWAMEDIAITEM sind in iOS-Builds häufig).
Signal / Telegram / Viber
- Signal: die message DB ist verschlüsselt; Anhänge, die auf der Festplatte zwischengespeichert sind (und Thumbnails), sind jedoch normalerweise durchsuchbar
- Telegram: Cache‑Verzeichnisse (photo/video/document caches) untersuchen und, wenn möglich, den Chats zuordnen
- Viber: Viber.sqlite enthält message/attachment-Tabellen mit Verweisen auf der Festplatte
Tipp: Selbst wenn Metadaten verschlüsselt sind, fördert das Scannen der media/cache-Verzeichnisse weiterhin bösartige Objekte zutage.
Scannen von Anhängen auf strukturelle Exploits
Sobald Sie Pfade zu Anhängen haben, geben Sie diese an strukturelle Detektoren, die Dateiformat‑Invarianten statt Signaturen validieren. Beispiel mit ElegantBouncer:
# 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)
Von strukturellen Regeln abgedeckte Erkennungen umfassen:
- PDF/JBIG2 FORCEDENTRY (CVE‑2021‑30860): unmögliche JBIG2-Wörterbuchzustände
- WebP/VP8L BLASTPASS (CVE‑2023‑4863): überdimensionierte Huffman-Tabellenaufbauten
- TrueType TRIANGULATION (CVE‑2023‑41990): undokumentierte Bytecode-Opcodes
- DNG/TIFF CVE‑2025‑43300: Unstimmigkeiten zwischen Metadaten und Stream-Komponenten
Validierung, Vorbehalte und false positives
- Zeitkonversionen: iMessage speichert Datumsangaben in Apple-Epochen/-Einheiten in einigen Versionen; bei der Berichterstattung entsprechend umrechnen
- Schema-Drift: App SQLite-Schemata ändern sich im Laufe der Zeit; prüfen Sie die Tabellen-/Spaltennamen je nach Geräte-Build
- Rekursive Extraktion: PDFs können JBIG2-Streams und Fonts einbetten; innere Objekte extrahieren und scannen
- False positives: strukturelle Heuristiken sind konservativ, können aber seltene, fehlerhafte, aber harmlose Medien markieren
Referenzen
- ELEGANTBOUNCER: Wenn Sie die Samples nicht bekommen können, aber die Bedrohung trotzdem nachweisen müssen
- ElegantBouncer-Projekt (GitHub)
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.