mvt/docs/android/backup.md

56 lines
3.3 KiB
Markdown
Raw Permalink Normal View History

2021-08-17 14:36:48 +00:00
# Check an Android Backup (SMS messages)
2021-07-18 14:33:34 +00:00
2021-08-17 14:36:48 +00:00
Android supports generating a backup archive of all the installed applications which supports it. However, over the years this functionality has been increasingly abandoned in favor of enabling users to remotely backup their personal data over the cloud. App developers can therefore decide to opt out from allowing the apps' data from being exported locally.
2021-07-18 14:33:34 +00:00
2021-08-17 14:36:48 +00:00
At the time of writing, the Android Debug Bridge (adb) command to generate backups is still available but marked as deprecated.
2021-07-18 14:33:34 +00:00
2021-08-17 14:36:48 +00:00
That said, most versions of Android should still allow to locally backup SMS messages, and since messages are still a prime vehicle for phishing and malware attacks, you might still want to take advantage of this functionality while it is supported.
2021-07-18 14:33:34 +00:00
2021-08-17 14:36:48 +00:00
## Generate a backup
Because `mvt-android check-backup` currently only supports checking SMS messages, you can indicate to backup only those:
2021-07-18 14:33:34 +00:00
```bash
2022-03-08 13:17:41 +00:00
adb backup -nocompress com.android.providers.telephony
2021-07-18 14:33:34 +00:00
```
2021-08-17 14:36:48 +00:00
In case you nonetheless wish to take a full backup, you can do so with
2021-07-18 14:33:34 +00:00
```bash
2022-03-08 13:17:41 +00:00
adb backup -nocompress -all
2021-08-17 14:36:48 +00:00
```
2022-03-08 13:17:41 +00:00
Some recent phones will enforce the utilisation of a password to encrypt the backup archive. In that case, the password will obviously be needed to extract and analyse the data later on.
2021-08-17 14:36:48 +00:00
2022-03-08 13:17:41 +00:00
## Unpack and check the backup
MVT includes a partial implementation of the Android Backup parsing, because of the implementation difference in the compression algorithm between Java and Python. The `-nocompress` option passed to adb in the section above allows to avoid this issue. You can analyse and extract SMSs containing links from the backup directly with MVT:
2021-08-17 14:36:48 +00:00
```bash
2022-03-08 13:17:41 +00:00
$ mvt-android check-backup --output /path/to/results/ /path/to/backup.ab
14:09:45 INFO [mvt.android.cli] Checking ADB backup located at: backup.ab
INFO [mvt.android.modules.backup.sms] Running module SMS...
INFO [mvt.android.modules.backup.sms] Processing SMS backup file at
apps/com.android.providers.telephony/d_f/000000_sms_backup
INFO [mvt.android.modules.backup.sms] Extracted a total of 64 SMS messages containing links
2021-07-18 14:33:34 +00:00
```
2022-03-08 13:17:41 +00:00
If the backup is encrypted, MVT will prompt you to enter the password.
2021-08-17 14:36:48 +00:00
2022-03-08 13:17:41 +00:00
Through the `--iocs` argument you can specify a [STIX2](https://oasis-open.github.io/cti-documentation/stix/intro) file defining a list of malicious indicators to check against the records extracted from the backup by MVT. Any matches will be highlighted in the terminal output.
2021-10-12 10:20:50 +00:00
2022-03-08 13:17:41 +00:00
## Alternative ways to unpack and check the backup
2021-07-18 14:33:34 +00:00
2022-03-08 13:17:41 +00:00
If you encounter an issue during the analysis of the backup, you can alternatively use [Android Backup Extractor (ABE)](https://github.com/nelenkov/android-backup-extractor) to convert it to a readable file format. Make sure that java is installed on your system and use the following command:
2021-07-18 14:33:34 +00:00
```bash
2022-03-08 13:17:41 +00:00
java -jar ~/path/to/abe.jar unpack backup.ab backup.tar
tar xvf backup.tar
2021-07-18 14:33:34 +00:00
```
2022-03-08 13:17:41 +00:00
If the backup is encrypted, ABE will prompt you to enter the password.
Alternatively, [ab-decrypt](https://github.com/joernheissler/ab-decrypt) can be used for that purpose.
You can then extract SMSs containing links with MVT by passing the folder path as parameter instead of the `.ab` file: `mvt-android check-backup --output /path/to/results/ /path/to/backup/` (the path to backup given should be the folder containing the `apps` folder).