MVT is a forensic tool to look for signs of infection in smartphone devices
Go to file
Donncha Ó Cearbhaill 41db117168 Improve performance when checking URLs and domains
Some MVT modules such as the WhatsApp module can be very slow as it was taking a naive approach to look for IOCs. The code was checking URLs (potentially more than 100k) against
1000's of IOC domains resulting in a quadratic run-time with hundreds of millions of comparisons as the number of IOCs increases.

This commit add an Aho-Corasick library which allows the efficient search in a string (the URL in this case) for all matches in set of keys (the IOCs). This data structure is perfect for this use case.

A quick measurement shows a 80% performance improvement for a WhatsApp database with 100k entries. The slow path is now the time spent fetching and expanding short URLs found in the database. This
can also be sped up significantly by fetching each URL asynchronously. This would require reworking modules to split the URL expansion from the IOC check so I will implement in a separate PR.
2023-06-29 14:14:44 +02:00
.github/workflows Adapts linter workflow to black 2023-06-14 01:05:14 +02:00
dev Removed AUTHORS file in favor of explicit copyright notice 2022-05-08 14:53:50 +02:00
docs Improves documentation 2023-04-13 16:11:55 +02:00
mvt Improve performance when checking URLs and domains 2023-06-29 14:14:44 +02:00
scripts Linted code using isort + autoflake + black, fixed wrong use of Optional[bool] 2023-06-01 23:40:26 +02:00
tests Linted code using isort + autoflake + black, fixed wrong use of Optional[bool] 2023-06-01 23:40:26 +02:00
.gitignore Add Sublime Text project files to .gitignore 2022-03-25 20:16:20 +01:00
.readthedocs.yaml Improves documentation 2021-07-18 16:33:34 +02:00
CONTRIBUTING.md Improved type hints and code style enforcement 2022-08-16 13:39:55 +02:00
Dockerfile Dockerfile improvements, support arm64 builds 2022-06-02 09:22:07 +02:00
LICENSE Updated LICENSE 2021-07-25 12:01:23 +02:00
Makefile Adapts linter workflow to black 2023-06-14 01:05:14 +02:00
mkdocs.yml Added some notes in documentation about using VirusTotal 2022-06-20 11:32:57 +02:00
README.md Using remote picture so to not break pypi etc. 2022-06-14 18:13:21 +02:00
ruff.toml Improves code PEP8 compliance and adds ruff check 2023-03-01 16:43:08 -05:00
SECURITY.md Added SECURITY.md 2022-08-14 19:28:30 +02:00
setup.cfg Improve performance when checking URLs and domains 2023-06-29 14:14:44 +02:00
setup.py Update copyright information 2023-02-08 20:18:16 +01:00

Mobile Verification Toolkit

Documentation Status CI Downloads

Mobile Verification Toolkit (MVT) is a collection of utilities to simplify and automate the process of gathering forensic traces helpful to identify a potential compromise of Android and iOS devices.

It has been developed and released by the Amnesty International Security Lab in July 2021 in the context of the Pegasus project along with a technical forensic methodology and forensic evidence.

Warning: MVT is a forensic research tool intended for technologists and investigators. Using it requires understanding the basics of forensic analysis and using command-line tools. This is not intended for end-user self-assessment. If you are concerned with the security of your device please seek expert assistance.

Installation

MVT can be installed from sources or from PyPi (you will need some dependencies, check the documentation):

pip3 install mvt

For alternative installation options and known issues, please refer to the documentation as well as GitHub Issues.

Usage

MVT provides two commands mvt-ios and mvt-android. Check out the documentation to learn how to use them!

License

The purpose of MVT is to facilitate the consensual forensic analysis of devices of those who might be targets of sophisticated mobile spyware attacks, especially members of civil society and marginalized communities. We do not want MVT to enable privacy violations of non-consenting individuals. In order to achieve this, MVT is released under its own license. Read more here.