comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Tool basica para detectar DDos postmortem & en tiempo real

  • 2 Respuestas
  • 3697 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado s3cur1tyr00t

  • *
  • Underc0der
  • Mensajes: 86
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« en: Noviembre 03, 2012, 10:21:42 pm »
Buenas,

Un cliente nos llamo por un supuesto ataque de denegacion de servicio que sufrieron hace algunos dias. Baiscamente la arquitectura es un RP (ReverseProxy), con mod_security & mod_evasive, un proxy IBM (Webseal), dos servidores de aplicaciones y una base de datos con su correspondiente stand by. Los equipos se encuentran en vlans separadas, las comunicaciones se hacen mediante un FW (Firewall) ASA (Cisco).

Mod_Security & mod_evasive estaban desactivados para el sitio que supuestamente fue atacado.

El FW no estaba logueando paquetes que deja pasar, ni tampoco aquellos que dropea. Esto hizo que el analisis del supuesto ataque DDos no se pudiera comenzar por el FW. Las graficas del iClass del servicio mostraban una saturacion de 24 horas. Estaba saturada tanto la salida como la bajada.

En base a esto comence a analizar los access_logs (posterior a una revission del log de messages y security). El RP contiene mas de 50 vhosts, analizar uno a uno se estaba volviendo un dolor de cabeza interminable.

Se me ocurrio hacer un pequeño (y muy basico), script que  me ayudara a analizar rapidamente los logs.

Desarrolle una tool bien básica que nos permite determinar ataques DDos, Ataques DDos mediante botnets, Uer Agents con mayor actividad y cantidad de conexiones activas en un momento determinado para poder detectar un DDos en tiempo real:

1.- La opción uno analiza la cantidad de peticiones de una ip determinada. Esto lo hace leyendo sobre el archivo de logs o el directorio donde se encuentran los archivos.

La primera columna es la cantidad de peticiones, la segunda son las ip's.

2.- La opción dos permite identificar si hubo algún ataque ocasionado por una botnet. Cuando se ataca con botnets, en los access_logs quedan patrones muy específicos. Por ejemplo: muchísimos gets a un archivo especifico y no a todo el sitio.

3.- La opción tres permite detectar cuales son los user agents con mayor actividad. En algunos casos, cuando se realizan ddoss con tools especificas, estas vienen con sus propios user agents, lo cual hace que sea bastante sencillo detectarlos.

4.- La opción cuatro permite detectar en tiempo real la cantidad de conexiones activas al servidor y sus ip's de origen. Sirve mas que nada para detectar ataques DDos en tiempo real. Una opción interesante que le agregue es la posibilidad de guardar en un log la cantidad de conexiones activas en un momento determinado para poder analizarlo luego.

Como les comentaba, la herramienta es muy sencilla, basica y hecha en 10 minutos (puede tener errores). Esta hecha en bash, usa netstat, awk y algunos comandos bastante básicos de linux.

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
#!/bin/bash
#Beta Version developed by s3cur1tyr00t

bold=`tput bold`
normal=`tput sgr0`
menu="
      ${bold}
      ########################################
      # 1.- Cantidad de peticiones por IP    #
      # 2.- URL's con mayor acceso (Botnet?) #
      # 3.- User Agents con mayor actividad  #
      # 4.- Cantidad de conexiones activas   #
      # 5.- Cerrar                           #
      ########################################
      ${normal}
     "

echo "$menu "

read option

case "$option" in

    1)  echo "Ingreso la opcion ${bold}$option
        ${normal}Escriba ruta del archivo de logs (ruta del directorio para buscar en todos los archivos): "
        read log_file
        tail -n 10000 $log_file | cut -f 1 -d ' ' | sort | uniq -c | sort -nr | more
        ;;

    2)  echo "Ingreso la opcion ${bold}$option
        ${normal}Escriba ruta del archivo de logs (ruta del directorio para buscar en todos los archivos): "
        read log_file
        cut -f 2 -d '"' $log_file | cut -f 2 -d ' ' | sort | uniq -c | sort -nr | more
        ;;

    3)  echo "Ingreso la opcion ${bold}$option
        ${normal}Escriba ruta del archivo de logs (ruta del directorio para buscar en todos los archivos): "
        read log_file
        cut -f 4 -d '"' $log_file | sort | uniq -c | sort -nr | more
        ;;

    4)  echo "Ingreso la opcion ${bold}$option
        ${normal}Cantidad de conexiones activas: "
            netstat -an | grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
            echo    "
              ${bold}Que desea hacer?${normal}
                     1.- Guardar Salida en archivo de log
                     2.- Salir
                    "
            read output

                case "$output" in

                    1)  echo "Defina nombre archivo: "
                        read file_name
                        netstat -an | grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n > $file_name
                        ;;

                    2)  exit
                        ;;
                esac
        ;;
    5)  exit
        ;;
esac
exit

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5401
  • Actividad:
    43.33%
  • Reputación 31
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #1 en: Septiembre 18, 2013, 12:29:29 am »
s3cur1tyr00t, estaba buscando informacion sobre como detectar DDoS y me tope con este post, esta excelente! voy a ver de probar esta tool, se ve bastante simple de usar y efectiva!
Muchas gracias!

Saludos!
ANTRAX


Desconectado alexander1712

  • *
  • Underc0der
  • Mensajes: 850
  • Actividad:
    0%
  • Reputación -2
    • Ver Perfil
    • El blog del programador
    • Email
« Respuesta #2 en: Noviembre 17, 2013, 02:09:46 am »
muy pero muy pero muy buen aporte, la verdad muy interesante.

se agradece :)

a ver si posteas más de esto xD

por lo que veo es bastante bastante viejo este post, pero estaría bueno que publicaras más de este tipo de post :)

saludos!

 

¿Te gustó el post? COMPARTILO!



[Bash] Keylogger para robo de password de root desde session de usuario estandar

Iniciado por B3N

Respuestas: 2
Vistas: 2536
Último mensaje Junio 25, 2015, 09:34:52 pm
por B3N
[Comando] CRIPT y DCRIPT para encriptar\desencriptar cadenas

Iniciado por LauBuru

Respuestas: 0
Vistas: 1929
Último mensaje Marzo 10, 2015, 09:59:53 pm
por LauBuru
Guia para crear Bombas logicas en Batch

Iniciado por Dharok

Respuestas: 2
Vistas: 3432
Último mensaje Mayo 13, 2011, 12:22:10 pm
por RandomSoft
Script para extraer el valor de una clave del registro

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1555
Último mensaje Julio 18, 2011, 10:12:40 pm
por ANTRAX
Script para ejecutar un archivo BAT con salida nula

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1533
Último mensaje Julio 18, 2011, 10:13:11 pm
por ANTRAX