Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
AMDH — Durcissement des appareils mobiles Android | Kitploit
Outils/GitHubGitHub/a-yatta/amdh
Sécurité AndroidAnalyse StatiquePentesting d'Applications MobilesAudit de ConfigurationAnalyse ForensiqueAnalyse de MalwareSécurité Mobile
GitHuba-yatta/amdh

AMDH

Durcissement des appareils mobiles Android

Voir le dépôt
22227il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

AMDH

Android Mobile Device Hardening écrit en python3.

Version Android, PObY-A (Privacy Owned by You - Android), avec analyses des malwares et des paramètres, disponible sur le Play Store et le code source se trouve ICI

Motivations

AMDH a été créé pour aider à automatiser l'analyse des applications installées sur les appareils Android, détecter certains malwares connus et aussi protéger la vie privée.

Fonctionnalités

  • Vérifier et durcir les paramètres système basés sur certains contrôles de référence CIS (Center of Internet Security) pour les appareils Android et la documentation des paramètres de la branche master d'Android (Paramètres globaux et Paramètres sécurisés)
  • Lister les processus utilisateur en cours et tuer ceux sélectionnés
  • Analyser les applications actuellement installées sur l'appareil :
    • lister les autorisations dangereuses
      et les révoquer
    • comparer avec les autorisations utilisées par les malwares
    • générer un rapport au format JSON
  • Lister les applications :
    • désinstaller/désactiver une application
    • révoquer les récepteurs administrateurs
  • Extraire les APK des applications installées
  • Vérifier si le système a des mises à jour en attente

Prérequis

  • Python3
  • Android Debug Bridge (ADB) installé
  • androguard
  • pwntools

Installation

root@kitploit:~
$ git clone https://github.com/SecTheTech/AMDH.git; cd AMDH
$ python3 -m venv amdh
$ source amdh/bin/activate
(amdh) $ pip install -r requirement.txt

Utilisation

Note : Sous Windows, vous devez spécifier le chemin d'ADB ou modifier la variable "adb_windows_path" dans "config/main.py".

Attention : lors de l'utilisation de l'argument -l avec l'option d'application activée '-t e', les applications système seront listées. Désinstaller des applications système peut casser votre système Android. L'utilisation de 'disable' plutôt que 'uninstall' est recommandée pour les applications système.

root@kitploit:~
$ python amdh.py -h
usage: amdh.py [-h] [-d DEVICES] [-sS] [-sA] [-H] [-a ADB_PATH] [-t {e,d,3,s}] [-D APKS_DUMP_FOLDER] 
          [-rar] [-R] [-l] [-P] [-S SNAPSHOT_DIR] [-cS SNAPSHOT_REPORT] [-rS SNAPSHOT_TO_RESTORE] [-o OUTPUT_DIR]

Android Mobile Device Hardening

optional arguments:
  -h, --help            show this help message and exit
  -d DEVICES, --devices DEVICES
                        list of devices separated by comma or "ALL" for all connected devices
  -sS                   Scan the system settings
  -sA                   Scan the installed applications
  -H                    Harden system settings /!\ Developer Options and ADB will be disabled /!\ 
  -a ADB_PATH, --adb-path ADB_PATH
                        Path to ADB binary
  -t {e,d,3,s}          Type of applications:
                                e: enabled Apps
                                d: disabled Apps
                                3: Third party Apps
                                s: System Apps
  -D APKS_DUMP_FOLDER, --dump-apks APKS_DUMP_FOLDER
                        Dump APKs from device to APKS_DUMP_FOLDER directory
  -rar                  Remove admin receivers: Remove all admin receivers if the app is not a system App
                        Scan application option "-sA" is required
  -R                    For each app revoke all dangerous permissions
                        Scan application option "-sA" is required
  -l                    List numbered applications to disable, uninstall or analyze
  -P                    List current users processes
  -S SNAPSHOT_DIR, --snapshot SNAPSHOT_DIR
                        Snapshot the current state of the phone to a json file and backup applications into SNAPSHOT_DIR
  -cS SNAPSHOT_REPORT, --cmp-snapshot SNAPSHOT_REPORT
                        Compare SNAPSHOT_REPORT with the current phone state
  -rS SNAPSHOT_TO_RESTORE, --restore-snapshot SNAPSHOT_TO_RESTORE
                        Restore SNAPSHOT_TO_RESTORE
  -o OUTPUT_DIR, --output-dir OUTPUT_DIR
                        Output directory for reports and logs. Default: out

Documentation & Aide

Tests et version CIS

  • Testé sur Android 7.1.1, 8, 9 et 10
  • Version CIS : 1.3.0

Détection de malwares

Compare les autorisations accordées avec les autorisations décrites dans le fichier malware_perms.json. Le fichier contient trois nœuds :

  • malware_only : autorisations utilisées uniquement par les malwares
  • all : autorisations utilisées par les malwares et les applications légitimes
  • combinations : combinaisons d'autorisations utilisées principalement par les malwares

Autorisations exclusives aux malwares

Les autorisations exclusives aux malwares sont celles utilisées uniquement par les malwares. Les malwares analysés proviennent des dépôts :

  • https://github.com/ashishb/android-malware
  • https://github.com/sk3ptre/AndroidMalware_2018
  • https://github.com/sk3ptre/AndroidMalware_2019
  • https://github.com/sk3ptre/AndroidMalware_2020
  • https://github.com/MalwareSamples/Android-Malware-Samples

La commande "aapt" a été utilisée pour extraire les autorisations. La deuxième partie consistait à extraire les autorisations des applications légitimes (environ 400 applications). Les autorisations exclusives aux malwares sont celles utilisées par les malwares et jamais apparues dans les applications légitimes analysées.

Toutes les autorisations

Toutes les autorisations sont utilisées à la fois par les malwares et les applications légitimes. Les valeurs sont le pourcentage de l'utilisation de ces autorisations par les malwares par rapport aux applications légitimes.

Analyse statique

  • Trouver, extraire et lister les autorisations dangereuses des APK empaquetés à l'aide d'androguard
  • Extraire les bibliothèques et analyser les fonctions natives de malwares connus à l'aide de pwntools

Instantané

L'instantané peut aider à surveiller l'état du système et sauvegarder les données du téléphone :

  • applications et leurs autorisations
  • paramètres système
  • Contacts
  • SMS

Problèmes connus

  • La commande "pm revoke" renvoie un code de succès mais ne révoque pas les autorisations pour certains malwares.
  • La sauvegarde des SMS peut échouer sur certains appareils car le shell ADB n'a pas l'autorisation d'accéder à la base de données SMS. Si cela se produit, veuillez créer un ticket (issue).

Exemples

Analyse

  • Analyser les applications
root@kitploit:~
(amdh)$ python amdh.py -d SERIAL1,SERIAL2,SERIAL3 -sA -o reports

Deux fichiers sont générés pour chaque appareil dans le dossier "reports" :

  • SERIAL.log
  • SERIAL_report_apps.json : fichier JSON qui contient pour chaque application ses autorisations accordées et celles considérées comme dangereuses. Chaque entrée est la suivante :
root@kitploit:~
{
    "com.package.name": {
        "malware": true,
        "permissions": {
            "all_permissions": [
                "com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE",
                "com.google.android.c2dm.permission.RECEIVE",
                "com.google.android.providers.gsf.permission.READ_GSERVICES",
                "android.permission.WRITE_SYNC_SETTINGS",
                "android.permission.RECEIVE_BOOT_COMPLETED",
                "android.permission.AUTHENTICATE_ACCOUNTS"
            ],
            "dangerous_perms": {
                "android.permission.ACCESS_FINE_LOCATION": "This app can get your location based on GPS or network location sources such as cell towers and Wi-Fi networks. These location services must be turned on and available on your phone for the app to be able to use them. This may increase battery consumption.",
                "android.permission.READ_EXTERNAL_STORAGE": "Allows the app to read the contents of your SD card.",
                "android.permission.ACCESS_COARSE_LOCATION": "This app can get your location based on network sources such as cell towers and Wi-Fi networks. These location services must be turned on and available on your phone for the app to be able to use them.",
                "android.permission.CAMERA": "This app can take pictures and record videos using the camera at any time.",
                "android.permission.WRITE_EXTERNAL_STORAGE": "Allows the app to write to the SD card."
            },
            "is_device_admin": false,
        }
    }
}
  • Analyser les paramètres
root@kitploit:~
(amdh)$ python amdh.py -sS

Un rapport est généré avec le nom "SERIAL_report_settings.json" dans le dossier "out" (dossier de sortie par défaut).

Durcissement

  • Durcissement des applications
root@kitploit:~
(amdh)$ python amdh.py -sA -R -rar

Même rapport que l'analyse des applications avec l'ajout de ces deux clés :

root@kitploit:~
   "is_device_admin_revoked": true,
   "revoked_dangerous_pemissions": "succeeded"

La clé is_device_admin_revoked ne sera pas dans le résultat si l'application n'est pas administrateur de l'appareil

  • Durcissement des paramètres
root@kitploit:~
(amdh)$ python amdh.py -sS -H -o reports

Un rapport et un fichier journal sont générés dans le répertoire "reports".

Analyse statique et désinstallation/désactivation multiple d'applications (interactif)

root@kitploit:~
(amdh)$ python amdh.py -l

Lister les processus utilisateur en cours d'exécution

root@kitploit:~
(amdh)$ python amdh.py -P -d SERIAL1,SERIAL2 

Instantané

root@kitploit:~
(amdh)$ python amdh.py -S out
[-] INFO: Start ...
Unlock device SERIAL and press ENTER key to continue
[-] INFO: Finished

Le dossier "out" contiendra un sous-dossier "SERIAL_DATE-TIME". Où DATE-TIME est au format "YYYY-MM-DD-hh:mm:ss".

Comparaison d'instantanés

root@kitploit:~
(amdh)$ python amdh.py -cS out/report.json
[-] INFO: Start ...

[-] INFO: Installed Apps after snapshot was taken
{}
[-] INFO: Apps exists in snapshot
{
    "com.package.name1": {
        "firstInstallTime": "2020-07-06 18:53:07",
        "lastUpdateTime": "2020-07-06 18:53:07",
        "grantedPermissions": [
            "com.google.android.c2dm.permission.RECEIVE",
            "android.permission.USE_CREDENTIALS",
            "android.permission.MODIFY_AUDIO_SETTINGS",
            "com.google.android.providers.gsf.permission.READ_GSERVICES",
            "android.permission.MANAGE_ACCOUNTS",
            "android.permission.NFC"
        ],
        "deviceAdmin": false,
        "apk": "com.package.name1.apk"
    },
    "com.package.name2": {
        "firstInstallTime": "2020-07-10 23:57:53",
        "lastUpdateTime": "2020-07-10 23:57:53",
        "grantedPermissions": [
            "android.permission.DOWNLOAD_WITHOUT_NOTIFICATION",
            "com.google.android.c2dm.permission.RECEIVE",
            "android.permission.USE_CREDENTIALS",
            "android.permission.MODIFY_AUDIO_SETTINGS",
            "org.thoughtcrime.securesms.ACCESS_SECRETS",
            "android.permission.ACCESS_NOTIFICATION_POLICY",
            "android.permission.CHANGE_NETWORK_STATE",
            "android.permission.FOREGROUND_SERVICE",
            "android.permission.WRITE_SYNC_SETTINGS"
        ],
        "deviceAdmin": false,
        "backup": "com.package.name2.ab",
        "apk": "com.package.name2.apk"
    }
}
[-] INFO: Uninstalled after snapshot was taken
{
    "com.package.name3": {
        "firstInstallTime": "2020-07-18 07:56:44",
        "lastUpdateTime": "2020-07-18 07:56:44",
        "grantedPermissions": [
            "android.permission.INTERNET",
            "android.permission.ACCESS_NETWORK_STATE"
        ],
        "deviceAdmin": false,
        "backup": "com.package.name3.ab",
        "apk": "com.package.name3.apk"
    }
}
[-] INFO: Changed settings after snapshot was taken
{
    "global": [
        "stay_on_while_plugged_in"
    ],
    "secure": [],
    "system": []
}

Restauration d'instantané : Applications

root@kitploit:~
(amdh)$ python amdh.py -d SERIAL -rS out/report.json
[-] INFO: Start ...
Unlock device SERIAL and press ENTER key to continue
[-] INFO: Starting restore
[-] INFO: Restore finished
[-] INFO: Restore report
{
    "apps": {
        {
            "com.package.name1": {
                "install": "success",
                "backup": "restored"
            },
            "com.package.name2": {
                "install": "success",
                "backup": "NOT FOUND"
            },
            "com.package.name3": {
                "install": "success",
                "backup": "restored"
            }
        }
    }
}

Construction du binaire

root@kitploit:~
(amdh) $ pip install pyinstaller 
(amdh) $ pyinstaller --clean amdh.spec

Binaire de sortie : dist/amdh.

Participation et idées

Merci de l'intérêt porté à ce projet ! Si vous avez des idées pour améliorer cet outil, veuillez créer un nouveau ticket ou soumettre une pull request.

Télécharger l’outil
  • Extraire les APK empaquetés s'ils existent
  • Analyse statique pour la détection de malwares. Malwares actuellement détectés :
    • ActionSpy
    • WolfRat
    • Anubis
  • Prendre un instantané de l'état actuel du téléphone dans un fichier JSON :
    • Applications :
      • APK
      • date de première installation
      • date de dernière mise à jour
      • autorisations actuelles
      • l'application est-elle administrateur de l'appareil
    • SMS : messages SMS actuels
    • Contacts : liste actuelle des contacts
    • Sauvegarder les applications dont la sauvegarde est activée
  • Comparaison des instantanés avec l'état actuel du téléphone
    • Applications
    • Paramètres
  • Restaurer l'instantané
    • Applications
    • Contacts
  • Gérer plusieurs appareils à la fois (la comparaison d'instantanés et la restauration ne sont pas encore prises en charge)
    • Pour chaque appareil, un nouveau thread est créé
  • Rapport HTML