Este documento forma el tutorial del artículo Los ataques avanzados de puerta trasera en Linux. La meta de los ejercicios que aquí se comentan consiste en practicar el uso de la puerta trasera descrita en el artículo.
Haremos el ejercicio utilizando dos ordenadores reunidos en una red local. El primero lo llamaremos verde: éste será el ordenador de la víctima. Lo bootearemos desde el disco hakin9.live que se adjunta a la revista y arrancaremos en el una puerta trasera.
El otro ordenador lo llamaremos rojo: éste será el ordenador intruso. No es necesario que lo iniciemos desde hakin9.live, basta con cualquier Linux.
Si no disponemos de dos ordenadores, podemos hacer el ejercicio en un solo ordenador, sin embargo, en tal caso se llevará menos parecido a una situación real.
[01] Configura la red (Aquí encontrarás la descripción de cómo configurar la red en hakin9.live). Bootea el ordenador verde desde hakin9.live, inciando también el rojo. Asegúrate de que los ordenadores se pingean uno al otro.
Antes de arrancar la puerta trasera merece la pena echarle una mirada. Las actividades que siguen se practicarán en el ordenador verde.
Como recordamos, el código de la puerta trasera consiste de tres partes: la que cambia el nombre del proceso, la que escucha los paquetes en un puerto predefinido y la que procesa los paquetes recibidos. Primero, inspeccionaremos la parte que cambia el nombre del proceso.
[02] Lee el listado mask_process_name.c (html) y guárdalo en tu disco. Compílalo:
Luego arranca:
[03] En el segundo terminal lee la lista de procesos:
Como ves, nuestro proceso aparece como /usr/sbin/apache2.
La parte siguiente de la puerta trasera es el bucle que recibe los paquetes en un puerto predefinido.
[04] Lee el listado pcap_test.c (html) y guárdalo en el disco. Compílalo:
Luego arráncalo como usuario root:
[05] Envia del ordenador rojo un paquete al puerto 53 UDP del ordenador verde.
Si el ordenador verde carece del programa hping, puedes utilizar netcat:
[06] Vuelve al ordenador verde. ¿Ves el mensaje de recepción del paquete?
[07] Lee el listado silentdoor.c (html) y guárdalo en el disco. Lee las dos partes que ya conoces (la que cambia el nombre del proceso y la que recibe paquetes) y la que procesa los paquetes recibidos. Compila este programa:
Luego, arráncalo como usuario root:
[08] Guarda en el disco del ordenador rojo el listado key_open.c (html), o sea, el programa que envia a la puerta trasera los comandos encriptados. Compílalo:
[09] Empleando el programa key_open envia a tu víctima un comando por realizar. Para empezar, trata de crear un fichero llamado xxxx. Recuerda que tienes que arrancar el programa como root:
[10] Vuelve al ordenador verde. Interrumpe la puerta trasera ([ctrl+c]). Enlista el contenido del directorio:
¿Ves el fichero que acaba de crearse? Vuelve a iniciar la puerta trasera.
[11] Ahora pasa al ordenador rojo. Igual que antes, intenta realizar otros comandos de forma remota:
Sólo ¡con cuidado! No olvides que los comandos que estás enviando se ejecutan realmente.
Imagínate que alguien instaló una puerta trasera parecida en tu ordenador.... ¿Serás capaz de detectarla? Las acciones que siguen las contiuamos en el ordenador rojo.
[12] Examina los bitácoras de sistema.
¿Notas alguna pista que te sugiera la presencia de la puerta trasera? ¿Ves en los bitácoras cualquier información de cualquier programa que escuche los paquetes que entran?
[13] Inicia ethereal:
Activa la escucha en la interfaz adecuada.
[14] Pasa para un rato al ordenador rojo. Igual que antes, realiza otros comandos de forma remota. Mientras tanto, observa en el ordenador verde los paquetes que entran al puerto 53. ¿Serás capaz de distinguirlos de las respuestas DNS correctas?
[15] ¿Tienes alguna idea de cómo emplear lo que acabamos de aprender, para detectar el exploit comentado y protegerse contra éste? Si tu respuesta es un sí, comparte tus reflexiones con otros usuarios: ¡serás muy bienvenid@ en nuestro foro!