Denegación de servicio remota en Microsoft Windows

Seguridad 29 de enero del 2007

Se ha publicado un código que aprovecha una vulnerabilidad que permite,en remoto, hacer que Microsoft Windows deje de responder. Para que el fallo tenga efecto, el atacante debe establecer una sesión nula con el sistema objetivo, lo que mitiga en cierta forma la gravedad del problema.

El día 25 de diciembre se publicó un código que aprovecha un fallo en el servicio “estación de trabajo” en la forma en la que maneja peticiones RPC NetrWkstaUserEnum con un valor grande en el campo maxlen. Si el atacante tiene acceso a este servicio y envía peticiones especialmente manipuladas, el servicio svchost.exe consumiría toda la memoria disponible y el sistema dejaría de responder. El problema se ha confirmado en Windows 2000 y Windows XP SP2 totalmente parcheados, aunque otros podrían verse afectados.

Debido a las condiciones de este fallo, es mucho más factible que los ataques se lleven a cabo desde sistemas dentro de una misma red interna.

La misma persona que ha revelado el código (un/a polaco/a que se hace llamar h07) hizo también público otro exploit a principios de diciembre.
El código permitía provocar una denegación de servicio a través de una reserva de memoria incorrecta en función GetPrinterData. Para poder aprovechar el fallo, un atacante debería tener acceso al puerto 445,usado para manejar el protocolo NetBIOS.

Al contrario que el primero descrito, este código no representaba una vulnerabilidad desconocida, sino que suponía una nueva forma de atacarun fallo inherente a la implementación RPC en Windows, conocido desde finales de 2005. Ya se sabía que este fallo era aprovechable a través de la función PNP_GetDeviceList del servicio UPNP (Universal plug and play).

Para ninguno de estos problemas existe parche oficial. Se recomienda filtrar el acceso a los servicios vulnerables.

Más información:

RPC Memory Exhaustion

MS Windows Workstation Service NetrWkstaUserEnum() 0day Memory Allocation Remote DoS Exploit
Fuente: Hispasec.com

Anunciadas nuevas vulnerabilidades que afectan a Apple OS X

Seguridad 29 de enero del 2007

Se han anunciado dos vulnerabilidades en Apple Mac OS X, que pueden ser explotadas por usuarios maliciosos para provocar condiciones de denegación de servicio o incluso llegar a ejecutar comandos arbitrarios en los sistemas afectados.

El primero de los problemas está provocado por un error en Apple QuickDraw y puede explotarse a través de las funciones”GetSrcBits32ARGB()” y “InternalUnpackBits()”, para provocar la caída de la aplicación afectada o inluso comprometer el sistema cuando se procesan imágenes PICT específicamente manipuladas. Se recomienda no abrir imágenes PICT procedentes de fuentes desconocidas.

La segunda vulnerabilidad se debe a un error de formato de cadenas en la aplicación Software Update cuando se procesan ficheros con un nombre de archivo especialmente modificado, lo que puede llegar a emplearse para ejecutar comandos arbitrarios si se induce al usuario para que abra el archivo malicioso.

Las vulnerabilidades se presentan en Mac OS X 10.4.8 y anteriores

Más información:

MOAB-24-01-2007: Apple Software Update Catalog Filename Format String Vulnerability

MOAB-23-01-2007: Apple QuickDraw GetSrcBits32ARGB() Memory Corruption Vulnerability

Apple OS X QuickDraw “InternalUnpackBits” Memory Corruption
Fuente: Hispasec.com

Denegación de servicio a través de kpdf en KDE 3.x

Seguridad 21 de enero del 2007

Se ha encontrado una vulnerabilidad en kpdf de KDE. Un atacante remoto podría ejecutar código arbitrario en el sistema víctima.

El problema reside en que un atacante podría crear un fichero PDF con un diccionario de catálogo especialmente manipulado o un atributo Pages también manipulado que, al ser cargado, haría que el visor entrase en un bucle infinito.

El fallo reside en el código xpdf (que es compartido por kpdf).

Se ha publicado la versión 3.5.6 que corrige el problema, también se han publicado las siguientes actualizaciones:

Para KOffice 1.2.1:
ftp://ftp.kde.org/pub/kde/security_patches/koffce-xpdf-CVE-2007-0104.diff

Parche para KDE 3.3.2:
ftp://ftp.kde.org/pub/kde/security_patches/post-3.5.5-kdegraphics-CVE-2007-0104.diff

Para KDE 3.2.3:
ftp://ftp.kde.org/pub/kde/security_patches/post-3.2.3-kdegraphics-CVE-2007-0104.diff

Más información:

KDE kpdf Bug Lets Remote Users Deny Service
http://securitytracker.com/alerts/2007/Jan/1017514.html

KDE Security Advisory: kpdf/kword/xpdf denial of service vulnerability
http://www.kde.org/info/security/advisory-20070115-1.txt
Fuente: Hispasec.com

Aparece un sofisticado ‘kit para defraudadores’ en la Red

Seguridad 19 de enero del 2007

RSA, la división de seguridad de la compañía EMC, ha alertado sobre la aparición de un sofisticado ‘kit para el defraudador’ por Internet que permite lanzar de manera sencilla ataques de ‘pishing’, que permiten acceder a los datos bancarios de los clientes.

Este producto, según precisó la empresa, se puede probar gratis a través de ciertos foros de Internet, y su precio final alcanza los 1.000 dólares (772 euros), lo que “refleja las capacidades de la herramienta y lo convierte en realmente peligroso”.

RSA afirmó que se trata de un producto “universal” que permite “fácilmente” configurar ataques a objetivos concretos sin tener que diseñar un sistema concreto para cada entidad.

El Universal Man-in-the-Middle Pishing Kit, que así se llama el producto, se pone en contacto en tiempo real con la página web legítima de cada entidad financiera, o con la de cualquier compañía de comercio electrónico, de forma que el cliente interactúa con información legítima sin percibir irregularidad alguna.

Durante la visita de los usuarios a la página falsa, los estafadores no solo recogen la información bancaria de cada cliente sino que procesan cualquier tipo de información personal que haya sido registrada.

Sutiles formas de ataque: DoS (denegación de servicio)

Artículos 8 de enero del 2007

Muchas veces la seguridad de un sistema hace que un atacante inexperto tenga un sentimiento de frustración. Algunos de estos atacantes, sintiéndose inútiles e incapaces lanzan un ataque DoS como ultimo recurso. Unas veces es simplemente por motivos personales o políticos. Otras veces los atacantes realizan un ataque DoS porque les es necesario a fin de vulnerar un sistema: puede ser que los atacantes necesiten que un sistema caiga para que un administrador de él lo reinicie. Un sistema es muy fácil vulnerarlo justo durante el reinicio antes que todos los servicios estén totalmente operativos.

La acción de una caída inexplicable de un sistema conectado a Internet debería atraer la atención del administrador sobre la posibilidad de estar sufriendo un ataque, pero por desgracia, la mayoría de los administradores no le dan importancia y reinician el sistema sin pensarlo mucho.

Aunque es imposible analizar todos los posibles motivos de un ataque, no debemos olvidar que Internet no es muy diferente a la vida real. No todas las personas son normales: hay quien disfruta haciendo maldades y cualquier ataque o posible conquista le da sensación de poder. Y recordemos también, que es mucho más idéntico a la vida real de lo que parece: nadie regala nada por nada y por tanto, nadie nos va a reglara nada en la vida real…. ni en Internet. Todo lo que aparentemente es gratis o de fácil adquisición, llevará “regalo” incorporado. Los usuarios finales deben ser muy precavidos con el riesgo actual que conllevan las redes P2P: nada es gratis.

Recordemos de todas formas que cualquier hacker experto detesta este tipo de ataques y detesta a quienes los realizan. Es típico de script-kiddies (los niños script). Por desgracia estos ataques DoS son los seleccionados por los cyberterroristas que según vamos viendo, cada día están en aumento.

TCP/IP es un protocolo de comunicaciones abierto y totalmente documentado. No tiene seguridad: se diseñó para su empleo en una comunidad abierta y confiada y la versión que estamos usando tiene defectos inherentes y graves. No puede modificarse o implementarse otro tipo de seguridad por el simple motivo que Internet dejaría de funcionar. Igualmente muchas implementaciones del tcp/ip en sistemas operativos e incluso dispositivos físicos de red tienen defectos que debilitan su capacidad para resistir ataques DoS.

Hay todavía sistemas y servidores en Internet totalmente operativos en viejos sistemas unix y linux, o sistemas sin parchear por sus administradores, que se desmoronan ante un reenrutamiento de ICMP simple si se utiliza un parámetro no válido.

Existen muchas herramientas igualmente en la red para realizar de manera sistemática ataques DoS.

VARIANTES DE ATAQUES DoS

Los más viejos y elementales son los de “consumo de ancho de banda”. Consiste simplemente en consumir todo el ancho de banda, es relativamente sencillo:

  • Por ejemplo un servidor de Internet pequeño, un adsl típico, con una entrada de 512 Kb. Desde un equipo malintecionado con un ancho de banda de 2 Mb se realiza el ataque. Equivale al choque frontal de un tren con un triciclo.
  • O bien, y es lo más normal, uniendo multitud de pequeñas máquinas para saturar la conexión de red de la victima. Con simples modems de 56 Kb se pueden saturar líneas de 60 Mb de una manera sencilla: puede basarse por ejemplo, en que el atacante convenza a los sistemas amplificadores para enviar trafico de red a la victima consiguiendo de esa manera con un simple modem el enviar a la victima flujos de información de hasta 100 Mb (megas!!). No es difícil usar estas técnicas de amplificación. O bien basarse en sistemas “zombies”, miles, capturados previamente y en espera de ser despertados para organizar un ataque conjunto. En Internet se venden listas de miles de equipos conquistados y lo que es peor: alguien las compra, o puede comprarlas, cuando desea realizar uno de estos ataques.

Cualquier estudiante de redes sabe que el trafico ICMP es peligroso. Es necesario para realizar muchos diagnósticos pero por desgracia, es la bala que se utiliza en los ataques de consumo de ancho de banda. Es relativamente sencillo además falsificar la dirección origen con lo que es sumamente difícil identificar al culpable.

Un segundo tipo de ataque es por “inanición de recursos”. Esta enfocado, en vez de agotar el ancho de banda del sistema atacado, al consumo de los recursos del sistema, a la saturación de la CPU, memoria, lo que sea, hasta que la máquina se cae. Este tipo de ataque, generalmente provoca un fallo general del sistema, o que se llene un disco de log, o procesos que se cuelgan porque necesitan CPU que el sistema no le está proporcionando o se lo proporciona escasamente: y alguno de estos procesos puede ser crítico para el sistema.

Un tercer tipo de ataque DoS es por los “errores de programación”. Envío de datos “anormales”, que no cumplen las RFC (normas de definición del protocolo) al sistema objetivo: si la pila tcp/ip no es capaz de manejar estas excepciones y los programadores no han supuesto estos casos, terminará con la caída del sistema al ser en la capa de drivers que se ejecuta en RING 0 o RING 1 de la maquina. A veces, no son defectos de programación: son defectos del hardware, defectos de algún chip, o defectos de la propia CPU. No está de más recordar el famoso defecto existente en algún Pentium (no voy a citar modelos presentes o pasados) por el cual un proceso, incluso en modo usuario sin privilegios, podía colgar a la CPU con algo tan simple como enviarle la instrucción 0xf00fc7c8 a la CPU.

Recordemos, y no solo los administradores, sino también los usuarios finales, que la existencia de programas, sistemas operativos o incluso hardware y CPU libres de errores…. es una quimera.

Un cuarto tipo de ataque son los ataques DNS y de enrutamiento. La mayoría de los protocolos de enrutamiento como RIP (Routing Information Protocol) o BGP (Border Gateway Protocol) carecen, o tienen una autenticación muy sencilla. Se trata por tanto de un escenario perfecto para que cualquier atacante pueda alterar las rutas correctas y falsificando su IP origen para crear una condición DoS. Las victimas de estos ataques verán como su tráfico se dirige por ejemplo hacia un agujero negro: a una red que no existe. Los ataques DoS sobre servidores de nombres de dominios (DNS) son tan problemáticos como los anteriores. Estos ataques intentan convencer al servidor DNS, por ejemplo, para almacenar direcciones falsas: cuando un servidor DNS realiza una búsqueda el atacante puede redireccionar a su propio servidor o bien a un “agujero negro”. En los últimos años se ha sufrido varias veces ataques a alguno de los servidores “root” DNS de Internet colapsando media red y con tiempos de normalización superiores a las 48 horas.

Articulo escrito por:
Jose Manuel Tella Llop
MS MVP – Windows

Que es un Firewall (Cortafuego)

Firewalls 8 de enero del 2007

Un cortafuegos (o firewall en inglés), es un elemento de hardware o software utilizado en las redes para prevenir algunos tipos de comunicaciones prohibidas por las políticas de red, las cuales se fundamentan en las necesidades del usuario.Forman una barrera para proteger a los ordenadores conectados a Internet en las dos direcciones: evitan una intrusión al PC desde la Red e impiden que los programas instalados accedan a Internet sin permiso.

Su objetivo es prevenir ataques a las redes (sea Internet o la intranet de una empresa) y para lograrlo emplean distintos medios.

Tipos de cortafuegos

Los cortafuegos tradicionales son de hardware, es decir, un dispositivo específico instalado en una red para levantar una defensa y proteger a la red del exterior. Son los utilizados en entorno profesionales: el administrador de red define una serie de reglas para permitir el acceso y detiene los intentos de conexión no permitidos.

Los cortafuegos personales son programas que filtran el tráfico que entra y sale de una computadora. Una vez instalados, el usuario debe definir el nivel de seguridad: permite o deniega el acceso de determinados programas a Internet (de forma temporal o definitiva) y autoriza o no los accesos desde el exterior.

Sus ventajas mas notorias:
Protege de intrusiones.- Solamente entran a la red las personas autorizadas basadas en la política de la red en base a las configuraciones.
Optimización de acceso.- Identifica los elementos de la red internos y optimiza que la comunicación entre ellos sea más directa si así se desea. Esto ayuda a reconfigurar rápida y fácilmente los parámetros de seguridad.
Protección de información privada.- Permite el acceso solamente a quien tenga privilegios a la información de cierta área o sector de la red.
Protección contra virus.- Evita que la red se vea infestada por nuevos virus que sean liberados.

Aunque el usuario medio pueda creer que eso de los ataques no es algo que le pueda suceder en su casa a su computadora, el cortafuegos se convierte un elemento imprescindible si se utiliza mucho el ordenador y se está conectado permanentemente mediante ADSL o cable. El firewall evitará la entrada de los programas que rastrean direcciones IP (un número que se asigna cada ordenador conectado) a la caza de conexiones por banda ancha que parasitar, a la vez que frustrará los intentos de los programas espía de robar datos del PC y de los troyanos de abrir brechas de seguridad.

La configuración correcta de cortafuegos se basa en conocimientos considerables de los protocolos de red y de la seguridad de la computadora. Errores pequeños pueden dejar a un cortafuego sin valor como herramienta de seguridad.

En Internet se pueden encontrar versiones no profesionales de cortafuegos, suficientes para el usuario doméstico, que se pueden descargar de forma gratuita. El más popular es ZoneAlarm, aunque existen otros como Outpost, Kerio o Sygate.

También hay cortafuegos integrados en los programas antivirus o en el propio sistema operativo. El que viene con Windows XP no es demasiado seguro porque, al contrario que otros cortafuegos, sólo vigila las conexiones entrantes, mientras que el tráfico de salida no está restringido.

Los cortafuegos, por defecto, se activan siempre que se enciende el ordenador. Hay que configurarlo con cuidado, pues puede ocurrir que no funcione el correo electrónico o no se abran páginas web en el navegador porque el ‘firewall’ no permite a estos programas acceder a Internet.

Para eso concentran todo el flujo entrante y saliente entre la PC e Internet y bloquea los pedidos de enlaces no solicitados por el usuario potencialmente inseguros, instalaciones clandestinas de programas y algunos hasta bloquean pop ups, publicidades, etc.

Como trabajan los corgafuegos - firewall

Como funcionan los Firewall
Se manejan por zonas (seguras o no) o bien por niveles de seguridad, los que establece el usuario según el grado de permisividad que le imponga al equipo. Pero luego el programa se va configurando con el tiempo. Como decimos en cada review, en realidad con los Firewalls no hay que hacer nada, sólo configurarlos según las necesidades o gustos del usuario, cosa que no termina con la instalación.

Tras esta, una vez que el usuario se conecta a Internet (o aún antes) comienza a trabajar el programa. Los primeros días de uso pueden ser un tanto engorrosos ya que tanto el usuario como el programa “aprenden” mutuamente. El usuario aprende las funciones y el programa qué cosas debe dejar pasar, qué bloquear y qué programas dejar conectar, por eso al principio son puras preguntas, hasta que se van conformando las reglas de uso en la medida que el usuario haga determinadas acciones con las alarmas que pueden ser de varios tipos. Con este tipo de aviso el programa pide que se defina la regla que se va a aplicar entre alguna de las posibles.
Una vez que se determina qué hacer con esa acción (por ejemplo permitir que un programa se conecte siempre a Internet), con cada cartel de alerta se van configurando las reglas ya que luego ese aviso no va a volver a aparecer. Con el tiempo estos avisos se reducen al mínimo.
Por cada acción crean un registro de la actividad (log) para el posterior análisis del usuario.

Tipos de peligros que puede evitar un firewall

-Instalación y ejecución de programas instalados clandestinamente desde Internet, por ejemplo vía aplicaciones ActiveX o Java que pueden llegar a transferir datos personales del usuario a sitios.

-Acceso de terceros por fallas o errores de configuración de Windows (por ejemplo de NetBIOS).

-Instalación de publicidad (advertisers) o elementos de seguimiento (track) como las cookies.

-Troyanos: aplicaciones ocultas que se descargan de la red y que pueden ser usadas por terceros para extraer datos personales. A diferencia del virus, estos troyanos son activados en forma remota por un tercero.

-Reducción del ancho de banda disponible por el tráfico de banners, pop us, sitios no solicitados, y otro tipo de datos innecesarios que ralentizan la conexión.

-Spyware

-Utilización de la línea telefónica por terceros por medio de Dialers (programas que cortan la actual conexión y utilizan la línea para llamadas de larga distancia)

Intentando detener un DDoS

Artículos 8 de enero del 2007

v 1.9

Porque un null-route a una ip no es una solución, es una chapuza.

Si unos script-kiddies están DDoSeando tu web…..

1) Se basa en ataques reales.
2) No hay nada de teoría, solo parte práctica.

A) Detectando el ataque

1) Usando el comando netstat

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

Ejemplo de 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

Claro ejemplo de SYN Attack al Apache.

2) Mirando el server-status del Apache

Si miramos el server-status del apache veremos conexiones en estado “Reading” (“R” Reading Request).

El problema es que cuando el número de conexiones “Reading” llena el “MaxClients” del Apache no acepta nuevas peticiones, por lo que los nuevos clientes, aunque sean legítimos, no serán aceptados.

Podemos aumentar el valor del “MaxClients” para que no se llene la cola de peticiones y acepte a todos los clientes, sean atacantes o no.

Otra buena medida es bajar el valor del “Timeout” del Apache para que las peticiones “Reading” sean “matadas” rápidamente, 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.

Si es un DDoS muy distribuido enseguida notaremos que muchas ip’s diferente DoSean el Apache.

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.

Líneas a mirar:

possible SYN flooding on port 80. Sending cookies.

“Sending Cookies” si lo tenemos activado en el /etc/sysctl.conf
# Enable TCP SYN Cookie Protection

net.ipv4.tcp_syncookies = 1

A veces es mejor deshabilitarlo:

net.ipv4.tcp_syncookies = 0

De esta manera podemos ver 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.
May 17 14:13:24 lan kernel: ip_conntrack: table full, dropping packet.

Tabla llena. Tenemos un problema porque no admitiremos más conexiones aunque sean legítimas.

Podemos aumentar el valor de dicha tabla si nuestra red da para más.

Directamente:

Código:
echo "65535" > /proc/sys/net/ipv4/ip_conntrack_max

Para que el valor quede guardardo 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).

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 indica algún problema de audacia (cracker).

Usando paquetes como éstos se pueden atacar vulnerabilidades remotas en stacks TCP/IP

5) Mirando las gráficas del MRTG, RRDtool

Si ves que el tráfico inbound sube hasta los 100mbps es que te están doseando hehehe.


B) Intentar parar el ataque1) – mod_evasive

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

Consideramos que 50 conexiones por segundo a 2 páginas es suficiente motivo como para bloquear esa ip:

DOSHashTableSize    3097
DOSPageCount        2
DOSSiteCount        50
DOSPageInterval     1
DOSSiteInterval     1
DOSBlockingPeriod   900

Igual que el anterior pero con 50 peticiones en un segundo a 1 sola página:

DOSHashTableSize 3097
DOSPageCount 1
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1

Si queremos bloquear las ips que floodean, podemos usar el iptables:

DOSSystemCommand “sudo -u root -c ‘/sbin/iptables -A INPUT -s %s -j DROP”

Recordar mirar el syslog por si hay posibles falsos positivos (ip’s que no hacian flood).

Para evitar falsos positivos:

# añadir estas líneas que corresponden a rangos de los bots de google
DOSWhitelist 66.249.65.*
DOSWhitelist 66.249.66.*

Importante:

Para que el mod_evasive funcione correctamente deberás modificar el:

MaxRequestsPerChild 0

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

MaxRequestsPerChild 10000

Config 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.

En el ejemplo usamos en http_referer y el User Agent para detectar el DDoS:

Bloqueando un ataque Iframe
http://foro.elhacker.net/index.php/topic,127481.0.html

3- tcplimit, ipdrop, ipblock

Usando firewalls dinámicos.

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

cat /proc/sys/net/ipv4/tcp_syncookies

# Enable IP spoofing protection, turn on Source Address Verification

net.ipv4.conf.all.rp_filter = 1

# Enable TCP SYN Cookie Protection

net.ipv4.tcp_syncookies = 1

# Enable ignoring broadcasts request

net.ipv4.icmp_echo_ignore_broadcasts = 1

1). Activate SynCookies protection

It works by sending out ‘syncookies’ when the
syn backlog queue of a socket overflows.

=> echo 1 >/proc/sys/net/ipv4/tcp_syncookies

or

=> /sbin/sysctl -w net.ipv4.tcp_syncookies=1

2). Disable source routing

=> for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done

or

=> /sbin/sysctl -w net.ipv4.conf.all.accept_source_route=0

3). Reverse Path Filtering

Reject incoming packets if their source address doesn’t match
the network interface that they’re arriving on

=> for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done

or

=> /sbin/systcl -w net.ipv4.conf.all.rp_filter=1

4). Log RP filter dropped packets (martians)

=> for f in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 1 > $f
done

or

=> /sbin/sysctl -w net.ipv4.conf.all.log_martians=1

5). Maximal number of remembered connection requests

=> /sbin/sysctl -w net.ipv4.tcp_max_syn_backlog=256

6). How may times to retry before killing TCP connection

(default 7 on most systems)

=> /sbin/sysctl -w net.ipv4.tcp_orphan_retries=4

7). Number of SYN packets the kernel will send before giving up

=> /sbin/sysctl -w net.ipv4.tcp_syn_retries=5

8). Disable broadcast icmp reply

=> /sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

9). Ignore Bogus icmp packets

=> /sbin/sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1

10). Disable ICMP redirect

=> echo 0 >/proc/sys/net/ipv4/conf/all/accept_redirects
=> echo 0 >/proc/sys/net/ipv4/conf/all/send_redirects

or

=> /sbin/sysctl -w net.ipv4.conf.all.accept_redirects=0
=> /sbin/sysctl -w net.ipv4.conf.all.send_redirects=0

11). Disable timestamps

=> echo 0 >/proc/sys/net/ipv4/tcp_timestamps

or

=> /sbin/sysctl -w net.ipv4.tcp_timestamps=0

12). Reduce DOS ability by reducing timeouts

=> echo 30 >/proc/sys/net/ipv4/tcp_fin_timeout
=> echo 1800 >/proc/sys/net/ipv4/tcp_keepalive_time
=> echo 0 >/proc/sys/net/ipv4/tcp_window_scaling
=> echo 0 >/proc/sys/net/ipv4/tcp_sack

or

=> /sbin/sysctl -w net.ipv4.tcp_fin_timeout=30
=> /sbin/sysctl -w net.ipv4.tcp_keepalive_time=1800
=> /sbin/sysctl -w net.ipv4.tcp_window_scaling=0
=> /sbin/sysctl -w net.ipv4.tcp_sack=0

Más ejemplos de configuración completa del sysctl.conf en las referencias del documento.

5- 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

Despues de hacer las pruebas dejar:
DEVEL_MODE=”0″

Si nos 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 queres bloquear todo el tráfico de salida lo ponemos en 1 (outbound)
EGF=”0″

Si queremos usar el módulo antddos poner a 1:
USE_AD=”0″

Log:
/var/log/apf_log

Para ver los paquetes que dropeamos:
LOG_DROP=”1″

Lo guardará en el syslog, ejemplo:

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

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

http://www.r-fx.org/apf/README.antidos

KISS My Firewall es una alternativa.

Script PHP
http://www.prism-hosting.com/AntiDoS

6- Parar el botnet

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

7- Usando reglas del iptables

# todo el trafico syn
-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

# sube las cargas pero muchos wwww buena señal
-A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable

# la que mejor va
-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

# igual que el de arriba 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

-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

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

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

8- 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:
mod_cband

cd /usr/src
wget http://www.snert.com/Software/mod_throttle/mod_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
ThrottlePolicy Volume 10G 30dSetHandler throttle-me

http://www.webhostgear.com/160.html

C) Referencias

- Opciones de seguridad en Linux a través de /proc (I) y (II)
http://www.elhacker.net/opciones-seguridad-linux-proc.html

- Syctl.conf Hardening
http://www.eth0.us/sysctl

- Ipsysctl tutorial 1.0.4
http://ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html

- Hardening the TCP/IP stack to SYN attacks
http://www.securityfocus.com/infocus/1729

- DDOS and SYN_Recv Attacks And some SOlutions
http://www.vbulletin.com/forum/showthread.php?t=126699

- Distributed Reflection Denial of Service
http://www.grc.com/dos/drdos.htm

- Dynamic iptables firewalls
http://www-128.ibm.com/developerworks/library/l-fw/

- Preventing DDoS Attacks
http://www.linuxsecurity.com/content/view/121960/49/

- Distributed Denial of Service (DDoS) Attacks/tools
http://staff.washington.edu/dittrich/misc/ddos/

Fuente:Elhacker.net

Vulnerabilidades en plugin de Adobe Reader 7 para navegadores bajo Windows

Seguridad 5 de enero del 2007

Se ha descubierto una vulnerabilidad en el plugin para navegadores de Adobe Reader que puede ser explotada por usuarios maliciosos para realizar ataques de tipo cross site scripting.

Las entradas enviadas a un PDF no son filtradas adecuadamente por el plug-in del navegador antes de ser enviadas de vuelta al usuario. Esto puede ser explotado para ejecutar código script arbitrario en la sesión del navegador, con el contexto del sitio afectado.

Un segundo problema reside en el plugin web al tratar parámetros mal construidos al pasarse a un documento PDF, lo que podría explotarse para provocar la caída de navegadores Firefox vulnerables o ejecutar comandos arbitrarios mediante el uso de una URL específicamente modificada.

El último de los errores se debe a un fallo al tratar con Internet Explorer una URL con un PDF seguida de una secuencia de gran tamaño de caracteres hash, esto podría emplearse por atacantes para consumir todos los recursos de memoria disponibles y crear una condición de denegación de servicio.

La vulnerabilidades se han confirmado en la versión 6.0.1 para Windows usando IE6 y en la 7.0.8 para Windows con Firefox 2.0.0.1, no se descarta que pueda afectar a otras versiones del software.

Se recomienda actualizar a la versión 8.0.0:
http://www.adobe.com/products/acrobat/readstep2.html

Más información:

Adobe Acrobat Reader Plugin Cross Site Scripting and Command Execution Vulnerabilities
http://www.frsirt.com/english/advisories/2007/0032

Adobe Acrobat Reader Plugin – Multiple Vulnerabilities
http://www.wisec.it/vulns.php?page=9
Fuente: Hispasec.com