Home Hacking y Seguridad Protecciones Disminuir la propagacion de gusanos con Tarpits

Ultimos Mensajes del Foro

Manual Aleatorio

Seguridad en Red (PDF)
Texto de seguridad que habla sobre todo de firewalls y encriptacion
Leer más...
Disminuir la propagacion de gusanos con Tarpits Imprimir E-mail
Hacking y Seguridad - Protecciones
Texto que nos explica como podemos disminuir la propagacion de gusanos usando el modulo de tarpits que podemos incluir en iptables.

Texto Completo:
Disminuir la propagacion de gusanos con Tarpits
***********************************************

¡Los gusanos, los gusanos están por todas partes! La extensión reciente y
prolífica de los gusanos de Internet ha demostrado otra vez la
vulnerabilidad de los ordenadores de la red, y está claro que las nuevas
aproximaciones a la contención de gusanos necesitan ser investigadas. En este
artículo, discutiremos una nueva formula utilizada: el tarpit.


The Worms
*********

En una nutshell, la tecnología del gusano funciona infectando un ordenador
y después usándo este para escanear otros ordenadores. El daño causado por los
brotes recientes de gusanos no afecta tanto a la computadora de la víctima sino
mas bien a las redes en las que opera dicho gusano. El efecto secundario de la
propagación es la cantidad masiva de ancho de banda consumido por los
ordenadores infectados que realizan escaneos en busca de nuevas victimas. La
velocidad a la cual pueden comprometer nuevos ordenadores crece
exponencialmente, causando eventualmente una caida de la red (network meltdown).

En el futuro, los gusanos podrían llevar payloads mas peligrosos, haciendo
cosas como eliminar archivos, instalar sniffers de red, o robar archivos
confidenciales. Sin embargo, hay un fino equilibrio entre los efectos
destructivos y su rápida propagacion, porque al igual que en la naturaleza, un
gusano o virus que mata a su victima no puede extenderse con tanta eficacia.


Solucion?
**********

Las medidas preventivas proporcionan la protección más eficaz, en este caso,
parcheando los sistemas vulnerables antes de que se lance el gusano. En el caso
del gusano Blaster, el parche estaba disponible mucho antes de que apareciese
el gusano, y hubo bastante tiempo para los expertos de seguridad para realizar
informes de actuacion antes de que aparecería el gusano realmente. Sin embargo,
en compañías y organizaciones grandes con usuarios que viajan, la aplicación y
el soporte del parche a los sistemas puede convertirse en una pesadilla táctica.
Así pues, dado que el mantenimiento preventivo no funcionaria correctamente,
puede ser necesario comenzar a examinar otras posibilidades para retardar la
propagacion de gusanos, una vez que ocurran los brotes.

Una posible solución, y el foco de este artículo, es el TARPIT, que está
disponible como parche relativamente nuevo para el cortafuego Netfilter
(IPtables) para Linux, además de estar disponible para plataformas Windows,
Solaris, y OpenBSD, gracias a LaBrea tarpit project:

     http://labrea.sourceforge.net/labrea-info.html

de Hackbusters (ahora hospedado en Sorceforge). Por simplicidad, este artículo
se centrará en la versión de IPtables.
Lo que el proyecto tarpit ofrece a los usuarios de IPtables, es que ahora, en
vez de que los paquetes simplemente se desechen y se guarden en un log, se
puedan enviar tambien a TARPIT.

El concepto de tarpit es bastante simple. Las conexiones entran, pero no
consiguen salir. IPtables consigue esto permitiendo a los puertos usar tarpit
para aceptar cualquier conexión entrante del TCP. Cuando la transferencia de
datos comienza a ocurrir, el tamaño de la ventana del TCP se fija a cero, así
que ningun dato se puede transferir dentro de la sesión. La conexión entonces
se mantiene abierta, y cualquier petición por el ordenador remoto de cerrar la
sesión es ignorada. Esto significa que el atacante debe esperar al time out de
la conexion para ser desconectado. Esta clase de comportamiento es malo para
las herramientas de escaneo automatizadas (como gusanos) porque confían en una
respuesta rápida de sus víctimas potenciales.


Algunas advertencias antes de comenzar
**************************************

Antes de comenzar con los tarpits en un ambiente de producción, hay un par de
puntos a considerar.  Primero, el concepto de "no dejar ir" una sesion TCP
podria ser puteante ya que ciertas pilas TCP y sistemas operativos - es
incluso posible que cascaran.
Otra precaución a tener en cuenta es que el codigo de tarpit dentro de IPtables
es bastante nuevo, por lo tanto no es lo bastante maduro como para ser
considerado totalmente estable. Mientras que los tarpits pueden ofrecer gran
funcionalidad en retardar y tracear gusanos, la tecnología debe ser evaluada a
fondo antes de desplegarla en un ambiente de producción.


Poner esto a trabajar
*********************

Para utilizar el tarpit de IPtables, usted necesitará el ultimo patch-o-matic
de la web de Netfilter. Algunas distribuciones de Linux, tales como Gentoo,
ofrecen este patch en las fuentes del nucleo por defecto. Si usted necesita
aplicar el patch, existe excelente documentacion de como usar los parches
patch-o-matic para IPtables en su sitio.

Una vez que usted haya parcheado las fuentes de su núcleo, necesitará activar
la opción de TARPIT y recompilar el núcleo. Las nuevas opciones estarán bajo
"Networking Options -> IP: Netfilter Configuration". Usted necesitará activar
la opción de "Packet Filtering" para disponer de la opción TARPIT. Una vez que
usted haya activado con éxito el módulo de TARPIT, recompile el núcleo y/o los
módulos, y reinicie en caso de necesidad.

Usar tarpit es simple. Trabaja igual que cualquier otra regla de IPtables. Para
usar tarpit sobre el puerto 135 TCP, usted necesitaría esta regla:


iptables -A INPUT -p tcp -m tcp --dport 135 -j TARPIT


Así pues, con esta regla en funcionamiento, cualquier tentativa de conectar con
el puerto 135 sería aceptada, y no se dejaría desconectar. Un tcpdump de esta
sesión sería como sigue:


14:22:12.039166 10.0.0.1.4439 > 10.0.0.2.135: S 333636191:333636191(0) win 16384  (DF)
14:22:12.039253 10.0.0.2.135 > 10.0.0.1.4439: S 1551562378:1551562378(0) ack 333636192 win 5 (DF)
14:22:12.041942 10.0.0.1.4439 > 10.10.0.2.135: . ack 1 win 16616 (DF)
14:22:12.042022 10.10.0.2.135 > 10.10.0.1.4439: . ack 1 win 0 (DF)


La sesion ha sido establecida sin problemas, pero tal y como podemos ver, el
tamaño de la ventana TCP ha sido estalecido a zero. Cuando intentamos enviar
datos al puerto que esta con tarpit, no veremos cambios:


14:27:25.584968 10.0.0.1.4439 > 10.0.0.2.135: P 1:2(1) ack 1 win 16616 (DF)
14:27:25.585050 10.0.0.2.135 > 10.0.0.1.4439: . ack 1 win 0 (DF)


Incluso cuando vamos mas alla, e intentamos forzar un cierre de la conexión
(matando la aplicacion q inicio la conexión), la sesión seguirá estando abierta
hasta que finalmente se cierre por time out. Cualquier tipo de herramienta de
exploración automatizada será forzada a esperar durante mucho tiempo antes de
poder proceder.

Usted puede utilizar TARPIT estratégicamente. Si pone su maquina Linux
respondiendo en puertos que no son normalmente puertos de Linux puede confundir
a atacantes potenciales, y les hace perder tiempo mientras que enumera su
sistema. Por ejemplo, si usted quisiera que su máquina Linux pareciera una
máquina de Windows, usted podria utilizar estas reglas:


iptables -A INPUT -p tcp -m tcp --dport 135 -j TARPIT
iptables -A INPUT -p tcp -m tcp --dport 139 -j TARPIT
iptables -A INPUT -p tcp -m tcp --dport 1025 -j TARPIT


De este modo, cuando sea usted escaneado su ordenador aparecera de la siguiente
manera: 


host# scanrand 10.10.0.156
  UP:      10.10.0.156:1025  [01]   3.022s
  UP:      10.10.0.156:135   [01]   3.024s
  UP:      10.10.0.156:139   [01]   8.980s

Por supuesto, si unicamente se spoofea la configuración de puertos de un
servidor de Windows no se engañará necesariamente un atacante resuelto, pero
puede ser bastante para retardarlo en su labor.

Otra manera mañosa e inusual de retrasar supuestos atacantes está en usar
tarpit en todos los puertos de su máquina. La manera más fácil de hacer esto
es agregar una regla TARPIT justo antes de la regla final DROP en su cortafuego
actual de IPTables. Por ejemplo, la mayoría de los sistemas tendrían esta clase
de reglas:


iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
.
.
iptables -A INPUT -p tcp -j DROP


Si quiere usted tener tarpit en todos sus puertos sin usar, la siguiente regla
debera ser añadida antes de la regla DROP:


iptables -A INPUT -p tcp -j TARPIT


Este tipo de configuracion devolveria el siguiente resultado haciendo un scan
con nmap:


Starting nmap 3.30 ( http://www.insecure.org/nmap/ ) at 2003-08-16 16:21 Local
time zone must be set--see zic manual page
Interesting ports on adsl-64-168-69-66.dsl.snfc21.pacbell.net (64.168.69.66):


Port       State       Service
1/tcp      open        tcpmux
2/tcp      open        compressnet
3/tcp      open        compressnet
4/tcp      open        unknown
5/tcp      open        rje
6/tcp      open        unknown
7/tcp      open        echo
8/tcp      open        unknown
9/tcp      open        discard
10/tcp     open        unknown
11/tcp     open        systat
12/tcp     open        unknown
13/tcp     open        daytime
14/tcp     open        unknown
15/tcp     open        netstat
16/tcp     open        unknown
17/tcp     open        qotd
18/tcp     open        msp
.
.
32787/tcp  open        sometimes-rpc27
43188/tcp  open        reachout
44334/tcp  open        tinyfw
44442/tcp  open        coldfusion-auth
44443/tcp  open        coldfusion-auth
47557/tcp  open        dbbrowse
49400/tcp  open        compaqdiag
54320/tcp  open        bo2k
61439/tcp  open        netprowler-manager
61440/tcp  open        netprowler-manager2
61441/tcp  open        netprowler-sensor
65301/tcp  open        pcanywhere
No OS matches for host (test conditions non-ideal).
TCP/IP fingerprint:
(None)

Nmap run completed -- 1 IP address (1 host up) scanned in 2.883 seconds

Esencialmente todos, los 65,000+ puertos seran mostrados como open. Un
veneficio adicional es que la deteccion de SO fallará debido a la cantidad
inesperada de respuestas. Esto hace la enumeración del ordenadores mucho más
difícil para los atacantes potenciales, asi como encontrar los servicios
válidos que buscan.

Pero recuerde, al igual que el resto de sistemas de seguridad, nada es a prueba
de atacantes. Una mente resuelta puede todavía encontrar los servicios dentro
de un tarpit.

Instalado el tarpit, puede ser combinado provechosamente con otra
característica práctica de IPtables, string matching. Esta característica fue
diseñada para permitir que los usuarios bloqueen los paquetes basados en
secuencias dentro de su payload. La idea de bloquear o hacer tarpit con el
tráfico en puertos que puedan ser atacados por gusanos, tales como HTTP no es
práctica. Por lo tanto, el poder distinguir tráfico del gusano de peticiones
válidas del HTTP es crítico. Con el string matching, los datos de la firma se
pueden utilizar para separar el tráfico del gusano del tráfico válido y para
enviar los gusanos al tarpit. Considere las siguientes reglas:


iptables -I INPUT -j TARPIT -p tcp -s 0.0.0.0/0 --dport 80 -m string --string "default.ida"
iptables -I INPUT -j TARPIT -p tcp -s 0.0.0.0/0 --dport 80 -m string --string "cmd.exe" 


Tomarán cualquier tráfico que contenga "cmd.exe" o "default.ida" en el puerto
80 y los enviarán al tarpit. Así pues, cualquier tráfico de CodeRed o de Nimda
recibido en este ordenador, se quedaría pegado en el tarpit.

¿Lo que funciona para un ordenador debe funcionar para muchos, cierto?
Es también posible tener una maquina Linux dando respuesta a todas las
peticiones a puertos y direcciones IP que no esten en uso. Al hacer esto,
podemos retardar con eficacia el progreso de un gusano con en subred entera,
dando tiempo adicional para responder al incidente. Por ejemplo, vamos digamos
que ZZZ inc. no utilizaba el bloque interno de la red 10,10,0,0/24. Podían
convertir este espacio inutilizado en una red del tarpit dirigiendo tráfico
destinado a esta red a una máquina de Linux que funcione con tarpit. Entonces,
usando dos reglas de IPtables:


  iptables -A FORWARD -p tcp -j TARPIT
  iptables -A FORWARD -j DROP


Cualquier tráfico dirigido a ese subred sería impedido perceptiblemente. Usar
la opcion TARPIT de esta manera es muy similar a la manera en que la us el
proyecto LaBrea. Desafortunadamente, el futuro de LaBrea es confuso, debido
a la legislación pendiente de Illinois que podría hacer que ese trabajo llegase
a ser ilegal.
Así pues, por el tiempo que es, si quisiera tener usted una funcionalidad
similar a la de LaBrea-como, tarpit de IPTables le sera de agrado.


Conclusión
**********

La expansión de gusanos en Internet continúa siendo una falla importante,
afectando centenares de miles o incluso millones de ordenadores de la red
alrededor del mundo. Aunque los parches estan a menudo disponibles por
adelantado al lanzamiento de un gusano, es obvio que no se establecen las
medidas preventivas apropiadas. Los nuevos acercamientos a retardar la
extensión de gusanos necesitan ser investigados, y la opción de TARPIT para
los cortafuegos de IPtables es una de las posibilidades. Gracias a Nicolas
Lidzborski por su ayuda con esta investigación.


by Tony Bautts (bauttst at berkeleywireless dot net)

Traducido por SeSoX (sesox at govannom dot org)