Log-Attack

Hoy vengo a hablaros de un ataque que se me ocurrió el otro día y considero algo muy vulnerable, puesto que apenas he encontrado información en internet. Últimamente, mi trabajo y todas las cosillas que hago por mi cuenta, no hacen más que implicar a logs, logs, logs y más logs…

Uno de los problemas a la hora de pensar en logs, es el tamaño que ocupan, en este caso (Aunque el ataque se puede replicar en cualquier servicio), de lo que nos vamos a ocupar, es de intentar llenar un servidor de logs, si, hasta arriba. Para el ejemplo, vamos a usar logs de apache aunque se puede usar cualquiera como decía antes, eso si en cada servicio tendremos que estudiar la efectividad del ataque y el daño que nos puede causar, Allá vamos.

Voy a usar para los ejemplos, un apache corriendo en un Kali Linux, simplemente porque en el ordenador de sobremesa es la única distribución que tengo virtualizada.

Vamos a observar un log normal y su peso aproximado.
El acces.log que es el log de apache ahora mismo pesa 0 Kb. Voy a iniciar el servicio con una página sencillita (la que viene por defecto en apache) simplemente para que veáis cual es el peso de un log.

Simplemente meternos desde un navegador, ha generado 3 logs. 1 la petición para acceder, 1 para el logo de apache, 1 para el favicon.
En total 4 Kb,

Muy bien, haciendo un cálculo sencillo y para una web mediana que tenga unos 1000 accesos al día, nos sale, sólo por el acceso a la web 4000 Kb (4 Mb).

Perfecto, ahora os cuento la idea del ataque. Para ello hay que saber como estructura un log apache, la respuesta es sencilla, depende de lo que tú le digas. Por defecto además de la hora, PID, IP, etc… Sale una cosa que nos interesa, el directorio al que accede.

Bueno, aquí es cuando mi mente retorcida empezó a darse cuenta de que algo fallaba… Porque claro… Si yo me equivoco de directorio…

Correcto, se guarda en el log… Entonces si yo me “Equivoco” con un directorio muy largo….

Oh oh… Vamos a investigar un poquito más.

Resulta, que para un servidor Apache soporta (Por defecto URL de hasta 8190 caracteres )

Vamos a ver cuanto ocupa un log con una url que ocupe justo los 8190 caracteres.

Muy bien, observamos que solamente 1 log con lso 8190 carácteres, genera nada más y nada menos que 12 Kb .

Me he construido un pequeño script en python que realiza requests con esa url de forma infinita (Hasta que cortemos el proceso).

Voy a dejar programa corriendo 5 minutos, a ver que es lo que genera (Vaciando el log).

1 MINUTOS -> 88 mb
2 MINUTOS -> 130 mb

5 MINUTOS -> 420 mb

BRUTAL, solamente con mi máquina he sido capaz de generar 420 mb de basura en un servidor… Pero espera, cuando me da por hacer “df -h” observo que no, que en realidad hay 900 mb ocupados. CASI 1 GB con 5 minutos de ataque. Esto se debe a que el archivo error.log también recoge la URL puesto que el apache devuelve error.

Poco más os puedo contar, imaginaros 5 ordenadores atacando durante 1 hora un servidor.
60 GB de logs, también hay que tener en cuenta que los logs acaban rotando y comprimiéndose, pero los Gb no te los quita nadie.

Respecto a implementar este ataque en otros servicios, seria por ejemplo, atacar un ssh o un ftp, con nombres de usuario que sean muy largos para generar más log, aquí que cada uno se ponga a pensar de la forma más malvada.

Un saludo.

Leave a Reply

Your email address will not be published. Required fields are marked *