ParcoursOuvrir l'appli

La sécurité mobile (Android)

Sécurité et hacking éthique · 50 min

Ce qu'il y a dans une application Android

Ton téléphone est un ordinateur, et ses applications peuvent être analysées comme n'importe quel logiciel, pour celles que tu possèdes : les tiennes, ou des applications volontairement vulnérables faites pour l'entraînement.

Dans l'APK Contenu
AndroidManifest.xml la carte d'identité de l'app : nom, permissions, composants
classes.dex le code, compilé en bytecode DEX (pas du Java lisible directement)
res/, assets/ images, sons, fichiers
lib/ code natif (C/C++) pour chaque type de processeur (ARM...)

Le manifeste : permissions et composants

Le AndroidManifest.xml est la première chose qu'examine un auditeur de sécurité mobile. Deux points l'intéressent.

Exercice : Auditer les permissions d'une app

Tu analyses une app « lampe torche ». Une lampe torche n'a besoin que de la permission CAMERA (pour le flash). Écris permissions_suspectes(demandees, necessaires) qui renvoie la liste triée des permissions demandées mais non nécessaires : celles qui sont de trop.

Voir une solution
demandees = ["CAMERA", "READ_SMS", "READ_CONTACTS", "ACCESS_FINE_LOCATION", "INTERNET"]
necessaires = ["CAMERA"]


def permissions_suspectes(demandees, necessaires):
    """Renvoie les permissions demandées en trop, triées."""
    return sorted(p for p in demandees if p not in necessaires)


print(permissions_suspectes(demandees, necessaires))

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : Repérer un composant exporté dangereux

Tu analyses le manifeste d'une app bancaire d'entraînement. Chaque composant a un nom, un attribut exported (vrai/faux) et un niveau sensible (vrai/faux). Un composant sensible ET exporté est une faille : une autre app pourrait l'appeler directement.

Écris failles(composants) qui renvoie la liste triée des noms des composants à la fois sensibles et exportés.

Voir une solution
composants = [
    {"nom": "EcranConnexion", "exported": True, "sensible": False},
    {"nom": "EcranSolde", "exported": True, "sensible": True},
    {"nom": "Transfert", "exported": True, "sensible": True},
    {"nom": "Reglages", "exported": False, "sensible": True},
]


def failles(composants):
    """Renvoie les noms, triés, des composants sensibles ET exportés."""
    return sorted(c["nom"] for c in composants if c["exported"] and c["sensible"])


print(failles(composants))

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

La suite : devenir vraiment bon

Tu as maintenant vu les grands piliers de la sécurité offensive : mots de passe et hachage, cassage, failles web, reconnaissance, sécurité mobile. Tu as codé toi-même chaque mécanisme, ce qui vaut mille explications.

Pour continuer, par la pratique, et toujours légalement :

  1. Monte ton laboratoire : VirtualBox + Kali Linux, et une cible comme Metasploitable ou Juice Shop. C'est le vrai point de départ.
  2. TryHackMe, parcours « Complete Beginner » puis « Jr Penetration Tester » : guidé, progressif, légal.
  3. PortSwigger Web Security Academy : gratuit, le meilleur pour les failles web, avec des labs intégrés.
  4. Les CTF : commence par des CTF « débutants » (picoCTF). Résoudre des défis et les documenter remplit un GitHub qui parle aux recruteurs.
  5. Des certifications, plus tard : eJPT (abordable, pour débuter), puis OSCP (la référence, exigeante), CEH.