SET 39 Call For Papers

¿Eres un hacker? Si deseas pasar a formar parte de la historia del hacking hispano, colabora con la próxima edición de SET 39 enviándonos un artículo. No esperes más, esta es tu oportunidad de demostrar lo que sabes. Ayúdanos a construir una revista de hackers para hackers. SET Staff

Backdoors

      4535

Autor: Hades
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
o 10. BACKDOORS                                                             o
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII


Aclaracion:

	El backdoor presentado en esta nota, si bien fue hecho para
la ocasion no es nada original y puede encontrarse en la red sin muchas
complicaciones. El paquete mas conocido es el rootkit, que ademas trae
otros programas como el syslogd, ps, etc.
La idea es mostrar lo simple que puede ser el modificar un programa para
que nos permita mantener el acceso a un sistema y las ventajas que pueden
obtenerse por solo unas lineas de codigo.
Puede compilarse en cualquier Linux.


Introduccion:

	Una vez dentro de un sistema, como se mantiene el acceso ? Una
de las formas mas comunes y eficaces, es reemplazar el login del sistema
por uno modificado para permitir el acceso con privilegios de root con un
usuario y clave predefinidos.
En mi experiencia, es comun que un hacker novato agregue al archivo de
passwords, una cuenta con privilegios de root o simplemente vuelva a obtener
nivel de root desde una cuenta de usuario normal cada vez que acceda. Esto
ultimo es muy lento y deja muchas huellas que borrar, mientras que una cuenta
con privilegios 0:0 en el /etc/passwd llama demasiado la atencion.

He visto varios sistemas de baja seguridad con este tipo de rastros y siempre
los elimine, junto con el acceso del otro hacker, por la simple razon de que
un hacker inexperto puede dejar evidencias que alerten al administrador. Y
una cuenta de con privilegios de root entra definitivamente en esta
categoria ;). Muchas veces vi como alguien con poca experiencia perdia un
sistema, por no haber instalado un backdoor y finalmente el administrador
vio una cuenta extra, un log que no borro, etc. Este es uno de los motivos
para escribir el presente articulo, darle una idea al novato sobre tecnicas
simples, pero que en un principio pueden pasar desapercibidas.
Un login modificado, es sin duda, el backdoor mas utilizado. Es facil de
hacer, y si no tienen ganas de programar, facil de conseguir. Aunque si
se esta dispuesto a escribir unas lineas de codigo es aconsejable hacer
uno mismo sus tools y de esta forma obtener el mayor provecho posible.


Login:

	El login que presento aqui, es extremadamente simple y puede ser
mejorado de muchas formas, pero como ejemplo me parecio razonable hacerlo
asi. 
La idea es modificar el login, de forma que acepte un usuario no definido
en el /etc/passwd y le de privilegios de root. No debe hacer ninguna llamada
a syslog cuando se entra con el usuario falso y no debe escribir la
informacion en el wtmp (o utmp). Con esto ultimo se consigue que el usuario
falso no sea visible con el comando who, si seran visibles sus procesos.
Asi funciona el login del articulo:
Lo primero que hace el codigo agregado, es chequear el nombre de usuario
(variable username), si esta corresponde con la del usuario falso, entonces
lo cambia por "root". Esto es, copia a username la cadena "root". Tambien
pone en 1 la variable usuario_falso, indicando que se esta usando. A partir
de ahora, para el login, es el root quien se loguea. Y porque no evitar
eso y usar el nombre root directamente ?, Simple: si alguien mas tiene un
sniffer en esa red o maquina, registraria nuetro acceso como root, en
cambio de este forma parace el de un usuario normal. 
Despues de esto, siempre hablando del codigo agregado, si la variable
usuario_falso esta en 1, chequea el password. En caso de coincidir el
password magico con el ingresado, setea la variable password_magico en 1.
Una linea antes de que el login chequee el password ingresado, se chequea
la variable password_magico y si esta esta en 1 (recordar que solo puede
estar en 1, si la variable usuario_falso tambien lo esta) entonces,
password de root correcto.
Todas las llamadas a syslog se encierran en if() que se ejecutan solo
si usuario_falso es 0, o sea que al usar el usuario falso nada se
logea desde el login. 
Por ultimo, tambien setea la variable HISTFILE a HISTFILE= cuando se usa
el usuario falso. De esta manera se evita el registo del historico de
comandos del bash.


Debilidades y mejoras:

	Una de las debilidades del codigo actual, es que con el comando
strings se hace evidente que se trata de un login modificado, sin contar
que se ve el password ;). El comando strings muestra todas las cadenas
que hay en un binario, si se ejecuta un "strings login", se veran aparecer
adenas de las cadenas tipicas, las siguientes: "root", "HISTFILE", "HISTFILE=",
el usuario falso y su respectivo password.
Resulta muy simple ocultar las cadenas para evitar esto, pero no fue incluido
en el codigo, para simplificarlo lo mas posible. Tambien es muy simple y no
lleva mas que unas lineas hacer que capture los password de los usuarios,
con esto se puede obtener el password del root, que normalmente no se obtiene
crackeando. Hay muchas cosas que se pueden hacer en poco tiempo y que pueden
ser muy ventajosas con solo unos conocimientos mas o menos elementales de C.
Aunque, es muy aconsejable que dominen el C, para tener un mejor y mas
profundo entendimiento de los sistemas.


El codigo:

         En el codigo cada parte agregada esta precedida con el comentario:
/* ---------- MODIFICADO ---------- */

Para compilarlo, solo "make login". El usuario falso es "saquead" y el
password magico "ejemplo".
Con algunos conocimientos de C, deberia resultar simple seguir las 
modificaciones al codigo origial.
El fuente original es el que viene con la distribucion slackware 3.1, que
obtuve de los CDs de infomagic. Les aconsejo mirar esos fuentes, se pueden
hacer muchas cosas interesantes.


Otros patch:

	Si bien reemplazar el login del sistema por el nuestro, hace en
extremo comodos los futuros accesos, es posible que nuestro programa sea
eliminado por el administrador o muy probablemente por otro hacker. Por esto
es comveniente dejar mas de una entrada. Tan simple como modificar el login
es modificar el comando su, una vez hecho podemos conseguir nivel de root
a partir de cualquier cuenta, que se puede obtener o bien crackeando o
de las capturadas por nuetro login, etc. Es aconsejable ademas, mirar el rsh
y el resto de los comandos r.
Tambien es util reemplazar el syslogd, para evitar sus molestos logs ;).
Normalmente, con el login y el syslogd se puede entrar y salir sin dejar
ningun rastro.
Tratandose de Linux, con los fuentes a dispocicion de todos, es facil
probar nuestras propias modificaciones y backdoors y testearlos antes
de usarlos realmente. Solo usen la imaginacion, y el compilador ;)
Cualquier duda, insultos o sugerencias a
hades@usa.net
Saludos.

//[Editor]// El codigo de Hades se podra encontrar en nuestra Web.
Concretamente en la seccion de archivos como login.tar.
Para completar el articulo vamos a hablar algo mas sobre backdoors.

Hades ha hablado de Rootkit como uno de los paquetes mas efectivos, veamos
ahora alguno de los archivos que incorpora Rootkit y su utilidad.

z2 - Elimina los registros de utmp, wtmp y lastlog.
Es - Sniffer ethernet para kernels basados en Sun4.
Fix - Intenta falsificar checksums se instala con dates/perms/u/g.
Sl - La palabra "magica" para root, codigo modificado por Hades para SET.
Ic - Modificacion de Ifconfig para eliminar el flag de PROMISC.
ps: - Oculta los procesos.
Ns - Modifica netstat para ocultar conexiones con ciertos ordenadores.
Ls - Previene que determinados directorios/ficheros salgan en un listado.
du5 - Oculta el espacio que se usa realmente en el disco duro.
ls5 - Similar a ls.

Historicamente ha habido diversos tipos de backdoors (quiza algun dia
le dediquemos otro articulo explicandolas) y esto es debido a que
las backdoors proporcionan la posibilidad de:


Poder entrar en una maquina sin verse afectado por cambios de passwords,
sistemas de seguridad...

Asimismo entrar mediante una backdoor suele ser la manera mas"silenciosa"
de introducirse en un sistema haciendo mas dificil para el administrador
descubrir que tiene un intruso.

Y ademas es lo mas rapido.

\\[Editor]\\