El todavía desconcertante rootkit para sshd/libkeyutils

Desde hace unos pocos días se está hablando mucho de un rootkit para SSHD, bastante similar al troyano Ebury, que parece afectar a rpms de muchas distribuciones y aplicaciones incluyendo CloudLinux, CentOS, cPanel, DirectAdmin, Plesk, no-RHEL... y que suele utilizarse para el envío de spam. Se trata de la librería libkeyutils "troyanizada" y todavía se desconoce el vector inicial de ataque, ya que los atacantes necesitarían permisos de root en los servidores comprometidos para sustituirla.

En principio esta librería aparece ofuscada con un simple XOR. Su código decodifica ciertas cadenas de texto e instala lo necesario para funcionar. Es capaz de resolver símbolos para las funciones PEM_write_RSAPrivateKey, PEM_write_DSAPrivateKey, MD5_Init, MD5_Update y MD5_Finaly también hookea las funciones pam_authenticate, pam_start, crypt, audit_log_user_message y audit_log_acct_message para modificar el funcionamiento de SSHD en modo usuario (no afecta al kernel). Es decir, la principal actividad del rootkit es recolectar las credenciales de los usuarios autenticados. Y no sólo un usuario/contraseña, también es capaz de obtener las claves privadas RSA/DSA o cualquier otro mecanismo de autenticación utilizado.
Además al hookear las funciones audit_log*, si el atacante envía cualquier comando al backdoor no se creará ningún log.


La versión actual del rootkit soporta tres comandos:
- Xver para ver la versión del rootkit
- Xcat para mostrar la información recolectada en la sesión del atacante
- Xbnd para instalar un listenet

Luego, para trasmitir las credenciales obtenidas, el rootkit implementa un DGA (Domain Generation Algorithm) para crear dominios .biz, .info y .net aleatoriamente y enviar la información mediante paquetes DNS. Si los dominios no son resueltos por cualquier razón, el rootkit intenta enviar la información a la IP hardcoded 78.47.139.110.

Para detectar el rootkit lo más sencillo es comprobar la integridad del fichero:

# rpm -Vv keyutils-libs-1.2-1.el5
........    /lib/libkeyutils-1.2.so
S.5.....    /lib/libkeyutils.so.1
........    /usr/share/doc/keyutils-libs-1.2
........  d /usr/share/doc/keyutils-libs-1.2/LICENCE.LGPL


Si el checksum MD5 de libkeyutils.so.1 se muestra como anteriormente (no sólo puntos), entonces la librería ha sido troyanizada... O-o


Y ahora los distintos AVs para Linux como ClamAV  o AVG ya han creado firmas para detectarlo.

Fuentes:
SSHD rootkit in the wild
https://isc.sans.edu/diary/SSHD+rootkit+in+the+wild/15229

Discussion:
http://www.webhostingtalk.com/showthread.php?t=1235797

Comentarios