Linux/SSHDoor.A: usando una versión troyanizada de SSH para robar contraseñas

El siguiente texto es una adaptación del publicado por nuestro compañero Sébastien Duquette en el blog del laboratorio de ESET en Norteamérica.

En las predicciones para este año realizadas por los investigadores de seguridad de ESET, Stephen Cobb hizo hincapié en los constantes esfuerzos realizados por los creadores de malware para atacar al sistema operativo Linux. Al parecer, Stephen estaba en lo cierto. En un post publicado en el blog de Sucuri el pasado miércoles se describe una versión del demonio SSH que incluye un backdoor y que se encontraba alojada en un servidor comprometido. Esta puerta trasera fue usada en conjunto con el módulo malicioso de Apache Linux/Chapro.A del que hablamos recientemente.

SSH es un protocolo muy popular que se usa para una comunicación segura de datos. Se usa de forma muy extendida en sistemas Unix para gestionar servidores remotos, enviar ficheros, etc. El demonio SSH descrito en este artículo, Linux/SSHDoor.A, está diseñado para robar usuarios y contraseñas y permitir el acceso remoto al servidor usando una contraseña predefinida o una llave SSH.

Las cadenas relacionadas con los comportamientos ocultos están cifradas con XOR. Esto se hace para evitar una identificación fácil al buscar el binario en búsqueda de cadenas sospechosas. Hemos identificado un total de 16 cadenas cifradas. La imagen a continuación muestra la parte del código responsable de descifrar los datos ocultos al cifrarlos con XOR con la constante 0x23.

eset-nod32-linux-ssh-backdoor-1

El  protocolo HTTP se usa para enviar datos robados a un servidor remoto. La información se cifra primero usando una llave RSA de 1024 bits almacenada en el binario y luego codificada en Base 64. Los datos se envían usando una solicitud HTTP POST al servidor usado para recibir esta información.

eset-nod32-linux-ssh-backdoor-2

El binario que hemos analizado contiene dos nombres de host para los servidores usados para recopilar información: openssh.info y linuxrepository.org. Ambos nombres se eligieron probablemente para evitar sospechas de los administradores de los servidores comprometidos. En estos momentos, ambos nombres de host apuntan a un servidor alojado en Islandia cuya IP es 82.221.99.69.

Cuando el demonio se inicia, el backdoor envía la IP y el puerto en el cual está funcionando el servicio y el nombre de host del servidor.

eset-nod32-linux-ssh-backdoor-3

Cada vez que un usuario se registra en el servidor comprometido el usuario y contraseña también se envían al servidor remoto.

eset-nod32-linux-ssh-backdoor-4

Además de robar credenciales, el backdoor, garantiza la persistencia del atacante en el host comprometido de dos formas diferentes. Para empezar cuenta con una contraseña predefinida introducida en el código. Si cualquier usuario se registra usando esta contraseña, automáticamente se le proporciona acceso al servidor comprometido. La siguiente imagen muestra la comparación de cadenas entre la contraseña proporcionada por un usuario que intenta registrarse y la contraseña predefinida.

eset-nod32-linux-ssh-backdoor-5

Como segundo paso, el binario modificado también contiene una llave SSH. Si un usuario se registra en el servidor con la llave privada correspondiente a la llave pública predefinida, se le proporciona acceso automáticamente.

eset-nod32-linux-ssh-backdoor-6

Este backdoor también puede recibir información del fichero /var/run/.options. Si este fichero existe, el backdoor usará el nombre del host, la contraseña del backdoor y la llave SSH almacenada en él. Las variables se almacenen una por línea en texto plano.

Tal y como sucedía con Linux/Chapro.A es difícil averiguar cómo esta versión troyanizada del demonio SSH consiguió acceder a un servidor comprometido pero el uso de versiones vulnerables de aplicaciones o unas contraseñas débiles podrían ser los responsables. Encontrar ficheros que han sido troyanizados puede resultar problemático para la mayoría de administradores de sistemas. Para eso, recomendamos el uso periódico de herramientas de revisión de la integridad además de revisar las conexiones salientes de red y un análisis periódico de todos los ficheros utilizando un antivirus.

Agradecimientos especiales para Peter Kosinar, Pierre-Marc Bureau y Olivier Bilodeau por su ayuda.

Hash MD5 de la muestra analizada: 90dc9de5f93b8cc2d70a1be37acea23a

Traducido y adaptado por Josep Albors

Un comentario

Comentar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Atención: nuestra página utiliza cookies Al utilizar nuestro sitio web, consiente nuestra política de uso.

Aceptar y ocultar este mensaje