iOS BackupâForensik (Messagingâzentrierte Triage)
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 delivery via AnhĂ€nge von MessagingâApps zu finden. Sie konzentriert sich darauf, Apples gehashte BackupâStruktur in menschenlesbare Pfade umzuwandeln und anschlieĂend AnhĂ€nge in gĂ€ngigen Apps zu enumerieren und zu scannen.
Ziele:
- Lesbare Pfade aus Manifest.db rekonstruieren
- MessagingâDatenbanken enumerieren (iMessage, WhatsApp, Signal, Telegram, Viber)
- Pfade zu AnhĂ€ngen auflösen, eingebettete Objekte extrahieren (PDF/Bilder/Schriftarten) und diese an StrukturâDetektoren ĂŒbergeben
Rekonstruktion eines iOSâBackups
Unter MobileSync gespeicherte Backups verwenden gehashte Dateinamen, die nicht menschenlesbar sind. Die SQLiteâDatenbank Manifest.db ordnet jedes gespeicherte Objekt seinem logischen Pfad zu.
Ăberblick ĂŒber das Vorgehen:
- Manifest.db öffnen und die DateieintrÀge lesen (domain, relativePath, flags, fileID/hash)
- Die ursprĂŒngliche Ordnerhierarchie basierend auf domain + relativePath rekonstruieren
- Jedes gespeicherte Objekt zu seinem rekonstruierten Pfad kopieren oder per hardlink verknĂŒpfen
Beispielworkflow mit einem Tool, das dies EndeâzuâEnde implementiert (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!
Hinweise:
- Verarbeite verschlĂŒsselte Backups, indem du dem Extractor das Backup-Passwort bereitstellst
- Bewahre, wenn möglich, originale Zeitstempel/ACLs fĂŒr Beweiszwecke
Erfassung & EntschlĂŒsselung des Backups (USB / Finder / libimobiledevice)
- Unter macOS/Finder setze âEncrypt local backupâ und erstelle ein frisches verschlĂŒsseltes Backup, damit keychain items vorhanden sind.
- PlattformĂŒbergreifend:
idevicebackup2(libimobiledevice â„1.4.0) unterstĂŒtzt die BackupâProtokollĂ€nderungen von iOSâŻ17/18 und behebt frĂŒhere Restore-/BackupâHandshakeâFehler.
# Pair then create a full encrypted backup over USB
$ idevicepair pair
$ idevicebackup2 backup --full --encrypt --password '<pwd>' ~/backups/iphone17
IOCâgesteuerte Triage mit MVT
Amnestyâs Mobile Verification Toolkit (mvt-ios) arbeitet jetzt direkt mit verschlĂŒsselten iTunes/Finder-Backups und automatisiert die EntschlĂŒsselung sowie das IOC-Matching fĂŒr FĂ€lle kommerzieller Spyware.
# Optionally extract a reusable key file
$ mvt-ios extract-key -k /tmp/keyfile ~/backups/iphone17
# Decrypt in-place copy of the backup
$ mvt-ios decrypt-backup -p '<pwd>' -d /tmp/dec-backup ~/backups/iphone17
# Run IOC scanning on the decrypted tree
$ mvt-ios check-backup -i indicators.csv /tmp/dec-backup
Outputs land under mvt-results/ (e.g., analytics_detected.json, safari_history_detected.json) and can be correlated with the attachment paths recovered below.
Allgemeine Artefaktanalyse (iLEAPP)
FĂŒr Timeline-/Metadaten ĂŒber Messaging hinaus fĂŒhre iLEAPP direkt im Backup-Ordner aus (unterstĂŒtzt iOS 11â17 Schemata):
$ python3 ileapp.py -b /tmp/dec-backup -o /tmp/ileapp-report
AufzÀhlung von AnhÀngen in Messaging-Apps
Nach der Rekonstruktion AnhĂ€nge beliebter Apps auflisten. Das genaue Schema variiert je nach App/Version, aber das Vorgehen ist Ă€hnlich: die Messaging-Datenbank abfragen, Nachrichten mit AnhĂ€ngen verknĂŒpfen und Pfade auf der Festplatte auflösen.
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;
Attachment-Pfade können absolut sein oder relativ zum rekonstruierten Baum unter Library/SMS/Attachments/.
WhatsApp (ChatStorage.sqlite)
Typische VerknĂŒpfung: message-Tabelle â media/attachment-Tabelle (Benennung variiert je nach Version). Media-Zeilen abfragen, um die Pfade auf dem DatentrĂ€ger zu erhalten. Neuere iOS-Builds geben weiterhin ZMEDIALOCALPATH in ZWAMEDIAITEM preis.
SELECT
m.Z_PK AS message_pk,
mi.ZMEDIALOCALPATH AS media_path,
datetime(m.ZMESSAGEDATE + 978307200, 'unixepoch') AS message_date,
CASE m.ZISFROMME WHEN 1 THEN 'outgoing' ELSE 'incoming' END AS direction
FROM ZWAMESSAGE m
LEFT JOIN ZWAMEDIAITEM mi ON mi.Z_PK = m.ZMEDIAITEM
WHERE mi.ZMEDIALOCALPATH IS NOT NULL
ORDER BY m.ZMESSAGEDATE DESC;
Pfade liegen ĂŒblicherweise unter AppDomainGroup-group.net.whatsapp.WhatsApp.shared/Message/Media/ innerhalb des rekonstruierten Backups.
Signal / Telegram / Viber
- Signal: die NachrichtenâDB ist verschlĂŒsselt; Anlagen, die auf der Festplatte zwischengespeichert sind (und Thumbnails), sind jedoch normalerweise durchsuchbar
- Telegram: Cache verbleibt unter
Library/Caches/innerhalb der Sandbox; iOS 18âBuilds zeigen cacheâclearing bugs, sodass groĂe verbliebene MedienâCaches hĂ€ufige Beweisquellen sind - Viber: Viber.sqlite enthĂ€lt Nachrichten-/Anhangtabellen mit Referenzen auf dem DatentrĂ€ger
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 in strukturelle Scanner ein, die DateiformatâInvarianten anstatt 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)
Erkennungen, die von strukturellen Regeln abgedeckt werden, umfassen:
- PDF/JBIG2 FORCEDENTRY (CVEâ2021â30860): impossible JBIG2 dictionary states
- WebP/VP8L BLASTPASS (CVEâ2023â4863): oversized Huffman table constructions
- TrueType TRIANGULATION (CVEâ2023â41990): undocumented bytecode opcodes
- DNG/TIFF CVEâ2025â43300: metadata vs. stream component mismatches
Validierung, EinschrÀnkungen und Fehlalarme
- Zeitkonvertierungen: iMessage speichert Daten in Apple-Epochen/-Einheiten in einigen Versionen; bei der Berichterstattung entsprechend konvertieren
- Schema-Drift: App-SQLite-Schemata Ă€ndern sich im Laufe der Zeit; Tabellen- und Spaltennamen fĂŒr jeden GerĂ€te-Build bestĂ€tigen
- Rekursive Extraktion: PDFs können JBIG2-Streams und Fonts einbetten; innere Objekte extrahieren und scannen
- Fehlalarme: Strukturelle Heuristiken sind konservativ, können aber seltene, fehlerhafte, jedoch harmlose Medien als verdÀchtig markieren
Quellen
- ELEGANTBOUNCER: When You Canât Get the Samples but Still Need to Catch the Threat
- ElegantBouncer project (GitHub)
- MVT iOS backup workflow
- libimobiledevice 1.4.0 release notes
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.


