Agregado: 12 de ABRIL de 2000 (Por
) | Palabras: 1743 |
Votar | Sin Votos |
Sin comentarios |
Agregar ComentarioCategoría:
Apuntes y MonografÃas >
Computación >
Seguridad informatica >
Material educativo de Alipso relacionado con
Denial ServiceDenial of Service: Enlaces externos relacionados con
Denial Service
DENIAL OF SERVICE -Introduccion-
-=La biblia del terrorista=-
por: Swoish
Los ataques conocidos como `denial of service' son en internet lo "in" o
"de moda" por la facilidad con que pueden hacerse. Lo unico dificil o
complicado es conseguir un servidor desde donde lanzar el ataque.
Debido a la anatomia de Internet es muy dificil localizar al atacante ya
que antes de llegar al objetivo una señal pasa por distintos servidores que
deben ser examinados uno por uno antes de llegar al servidor hostil.
El ataque consiste en descomponer servicios de un host sin permiso como
ejemplo estrellar un sistema. Protegerse de este tipo de ataques es muy
dificil debido a que el sistema UNIX asume que todo funciona correctamente
mientras el ataque esta en progreso.
Las razones por las que cualquier persona pueda estrellar un sistema son
muchas y las mas probables son:
-Debido al status subcultural de la persona.
-Ganar acceso.
-Venganza.
-Razones politicas.
-Razones economicas.
-Por que si.
Es facil ganar acceso a un sistema usando el ataque denial of service ya
que es un gatillo que dispara otro tipos de `agujeros' en un sistema. Comunes
ejemplos pueden ser las versiones antiguas de X-lock que permitian el acceso
al sistema una vez este ha sido estrellado. Para corregir el error es
necesario el acceso fisico al servidor.
El inundado del Syn o Syn flooding puede ser tan solo una parte de un ataque
del tipo IP-spoof.
Tambien algunos programas tienen `agujeros' bajo su startup que pueden ser
usados para ganar status root. Por ejemplo SSH (secure shell).
Bajo un ataque se puede restringir el acceso a ciertas personas al servidor
por lo tanto evitar que realizen su trabajo.
EXISTEN ALGUNOS SISTEMAS OPERATIVOS MAS SEGUROS?
================================================
Esta es una pregunta dificil de contestar y creo que todo depende del
administrador de un sistema UNIX.
Una comparacion con Windows 95 o NT puede ser interesante debido a la gran
cantidad de errores que han sido encontrados en ambos sistemas.
Los sistema UNIX son mucho mas complejos y tienen cientos de programas
adheridos que proporcionan diferentes servicios lo que engrandece el margen
al error desde adentro.
Usando Windows 95 o NT uno se arriesga a distintos metodos de estrellar la
maquina que probablemente funcionarian aunque existen algunos que siempre
funcionan.
En realidad no existe gran diferencia entre Microsoft y UNIX excepto que en
uno de los sistemas se necesita mas preparacion [ adivinen cual? ] que en
el otro. Existen dos puntos importantes que deben considerarse:
- Unix tiene mas herramientas de diagnostico para descubrir un ataque
y monitorear a los usuarios que cualquier otro sistema. Ver que es lo
que trama un usuario bajo Windows es muy dificil.
- El promedio de los administradores Unix tiene mas experiencia que
un tipico administrador de una red microsoft.
Estos dos ultimos puntos le dan ventaja a Unix contra los ataques de negacion
del servicio o denial of service.
Una comparacion de Microsoft y Unix concerniendo ataques externos es mucho
mas dificil. De cualquier forma es una hecho que las redes Microsoft son
mas seguras que las redes Unix debido a que ofrecen menos servicios que un
sistema Unix standard.
OBJETIVOS BASICOS DE UN ATAQUE
==============================
1.Espacio swap
~~~~~~~~~~~~~~
La mayoria de los sistemas tienen cientos de megabytes reservados al espacio
swap para resolver las peticiones del cliente. El espacio swap es tipicamente
usado para forjar procesos menores que tienen un periodo de vida corto. Asi
pues el espacio swap bajo ninguna causa debera ser usado rigurosamente. Una
negacion de servicio podria estar basada en un metodo que trate de llenar el
espacio swap.
2.Tablas del Kernel
~~~~~~~~~~~~~~~~~~~
Es trivial sobrecargar las tablas del kernel para ocasionar serios problemas
al sistema. Los sistemas que escriben a traves de caches y buffers pequeños
son especialmente sensitivos.
Otro objetivo susceptible es el kernel memory allocation. Todo Kernel o
cerebro tiene un limite para la memoria en su mapa de memoria, si el sistema
alcanza este limite el cerebro no puede colocar mas memoria y el sistema debe
ser reboteado. La memorial del kernel no solo es usada para procesos del
CPU, monitores y asi, pero tambien para procesos ordinarios lo que significa
que cualquier sistema puede ser estrellado con un buen algoritmo lo bastante
rapido. [ trucos disponibles en numeros anteriores de la revista :) ]
3. RAM
~~~~~~
Una negacion del servicio que ocupe grandes cantidades de RAM puede ocasionar
bastantes problemas. NFS y servidores de correo con extremadamente sensitivos
porque casi nunca ocupan mucho RAM por lo tanto tienen poco RAM asignado. Un
ataque a un servidor NFS es comun. El cliente de NFS normal puede hacer mucho
uso del cache, pero un cliente NFS puede ser cualquier programa inclusive uno
que hayas escrito tu mismo...
4. Discos
~~~~~~~~~
Un ataque clasico es llenar el disco duro.
ATACANDO DESDE FUERA
====================
Usando finger
~~~~~~~~~~~~~
La mayoria de las instalaciones de fingerd dejan redireccionar a otro host.
Ejemplo:
$finger @sistema.dos.com@sistema.uno.com
Finger en el ejemplo tendra que ir a traves del sistema.uno.com y despues al
sistema.dos.com. Todo lo que el sistema.dos.com sabe es que el
sistema.uno.com esta contactandole usando finger. Este metodo puede ser usado
para esconderte, pero tambien para hacer uso de un truco sucio. Ejemplo:
$ finger @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@host.que.atacamos.com
Todos esos signos @ ocasionaran que finger llame a host.que.atacamos.com una
y otra vez... El efecto es desastroso para host.que.atacamos.com resultando
en un uso alto del ancho de banda, falta de memoria y un disco duro con menos
espacio debido a todos los procesos creados.
La solucion es instalar un fingerd que no soporte redirecciones, por ejemplo
el finger GNU. Tambien puedes desinstalar el servicio finger.
Usando telnet
~~~~~~~~~~~~~
Examina este script:
while : ; do
telnet sistema.que.atacamos.com &
done
Un ataque de este tipo comera algo del ancho de banda pero no es nada
comparado con el metodo fingerd. El punto es que algunas firewalls y httpd:s
piensan que el ataque es una loop y se apagan automaticamente hasta que el
administrador mate el proceso con kill -HUP
Broadcast Storms
~~~~~~~~~~~~~~~~
Este es un metodo muy popular en la redes donde todos los hosts actuan como
gateways.
Existen muchas versiones del ataque pero el metodo basico es mandar muchos
paquetes a todos los hosts de la red con una direccion destino inexistente.
Cada host tratara de mandar los paquetes asi que estos `rebotaran' por la red
un buen rato.
Los servicios que pueden ser abusados para hacer esto son ping, finger y
sendmail.
Email Bombing
~~~~~~~~~~~~~
En un ataque de email se envian muchos mensajes identicos a una o muchas
direcciones del host. El efecto en el objetivo es un alto uso del ancho
de banda y menos espacio en disco... Cuando envias muchos mensajes a una
direccion inexistente del host desde otra inexistente un mensaje se
convertira en 3 y regresara para convertirse en 3 de nuevo y asi... Por
mas odioso que se vea este ataque es bastante efectivo y aun no es ilegal
en muchos paises latinoamericanos y europeos.
Ejemplo:
Envia un mail de 100k a noexiste@host.atacado.com desde una direccion que
no exista como noexiste@esta.direccion.duh
Cuando el mensaje llege a host.atacado.com como no existe la direccion
noexiste regresara el mensaje a noexiste@esta.direccion.duh y como esta
direccion tampoco existe ... regresara ahora como un mensaje de 300k y asi...
Otra forma de abusar el email y servidores norteamericanos es juntar varios
remailers. Por ejemplo:
Suponiendo que tenemos nosotros una cuenta en Geocities. Digamos
uno@geocities.com y le decimos que queremos que el mail que llegue a esa
direccion lo mande a dos@bigfoot.com. Ahora en la cuenta dos@bigfoot.com
le decimos que lo mande a tres@iname.com. Y en la cuenta tres@iname.com le
decimos que lo mande a uno@geocities.com ... Despues mandamos un mega o dos
a uno@geocities.com que lo mandara a dos@bigfoot.com y de ahi a
tres@iname.com y de nuevo a uno@geocities.com ... este ataque es lame si
en vez de un mega mandas unos 5 !! En fin, espera represalias si te animas
a hacerlo.
Abuso del FTP anonimo
~~~~~~~~~~~~~~~~~~~~~
Si un servidor FTP anonimo tiene un area que pueda ser escrita puede ser
abusada para un ataque de negacion del servicio. Obviamente el objeto seria
llenar el disco duro.
SYN FLOODING
~~~~~~~~~~~~
El mas famoso de los ataques del tipo denial of service. Phrack y 2600 han
publicado extensos articulos sobre este ataque y codigo para hacerlo.
El ataque se basa en un saludo entre dos hosts incompleto. El host hostil
envia un paquete SYN pero no responde al paquete ACK ocasionando que el
stack TCP/IP espere cierta cantidad de tiempo a que el host hostil responda
antes de cerrar la conexion. Si creamos muchas peticiones de conexion y
no se responde a ninguna el host estara inactivo mucho tiempo esperando
respuesta ocasionando lentitud en los demas servicios.
Ping Flooding
~~~~~~~~~~~~~
Este metodo tiene un gran efecto en el sistema atacado.
Bajo Unix nosotros podriamos intentar algo como: ping -s host
para mandar paquetes de 64 bytes.
Si tienes Windows 95, has click en start, elige run y escribe:
PING -T -L 256 host.que.atacamos.com y comienza 15 sesiones iguales.
Crashing usando Ping
~~~~~~~~~~~~~~~~~~~~
Para detener a un sistema desde una maquina corriendo Windows 95 simplemente
ejecuta:
ping -l 65510 host.que.atacamos.com
Y el sistema se detendra o se re-iniciara.
ATACANDO DESDE DENTRO
=====================
Llenando el disco duro
~~~~~~~~~~~~~~~~~~~~~~~
Si en tu sistema puedes usar el directorio temporal /tmp - /temp /pub/tmp -
pub/temp - pub/incoming o /incoming entonces es posible que llenes el disco
usando un script parecido a este:
while : ;
mkdir .xxx
cd .xxx
done
Uso malicioso de fork()
~~~~~~~~~~~~~~~~~~~~~~~
Si alguien ejecuta este programa C++ el resultado sera un crash en la mayoria
de los sistemas.
#include
#include
#include
main()
{
int x;
while(x=0;x<1000000;x++)
{
system("uptime");
fork();
}
}
Para generar un ataque mas sangriento puedes cambiar el comando uptime por
sync.
Crear archivos dificiles de remover
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Todos los archivos pueden ser borrados pero aqui hay algunos dificiles:
( $ simboliza el prompt, ^C es igual a CTRL + C. )
1.-
$ cat > -xxx
^C
$ ls
-xxx
$ rm -xxx
rm: illegal option -- x
rm: illegal option -- x
rm: illegal option -- x
usage: rm [-fiRr] file ...
$
2.-
$ touch xxx!
$ rm xxx!
rm: remove xxx! (yes/no)? y
$ touch xxxxxxxxx!
$ rm xxxxxxxxx!
bash: !": event not found
$
Ataque CSH
~~~~~~~~~~
Ejecuta esto bajo /bin/csh despues de modificarlo con el path propio del
shell csh de tu sistema. Busca este path en tu archivo .login
|I /bin/csh
nodename : **************b
DUMPING CORE
============
Uso malicioso de Netscape
~~~~~~~~~~~~~~~~~~~~~~~~~
Bajo Netscape 1.1N este link resultara en un fault de segmentacion y el
sistema arrojara el core.
Comentarios de los usuarios
Agregar un comentario:
Aún no hay comentarios para este recurso.