Defendiendonos contra el FHTTP

Hace ya algunos meses tuve la oportunidad de participar en un evento en Oaxaca, denominado FreeSecurity, en dicho evento, tuve la fortuna de conocer a un hacker que se convirtió no solo en un gran amigo, sino en una de las pocas personas que respeto, su NickName Xianur0.

Pues bien, durante nuestra estancia, y previo al inicio formal del evento, Xianur0 me mostró la herramienta en la que estaba trabajando la llamó The Fucker HTTP (Aka FHTTP). Así que le dije que podríamos hacer una PoC para que tenga mas impacto su presentación. Para fines de la misma el ocupo su Acer AspireOne y yo una pequeña Alienware, en la cual se me ocurrió instalar un Bugzilla. Para no hacer el cuento largo, ocupo su herramienta y en menos de un segundo DOSeo mi servidor.

Obviamente, eso cumplía el proposito de demostrar su herramienta, sin embargo lo ideal era poder tener un remedio… Así que decidí estudiar su método de ataque, el cual no explicaré a detalle yo, pues me parece es mejor que lo vean directamente de su autor. En conclusión, la siguiente entrada les mostrará algunas opciones para proteger nuestro servidor Apache contra esta herramienta. Al final del mismo, les pondré algunos enlaces y en especial el que les recomiendo seguir, el del autor, para que conozcan mas de los excelentes desarrollos y aportaciones que realiza.

A grandes rasgos (y seguramente muy mal explicado), el ataque lo que hace es multiples peticiones HEAD hacia nuestro servidor sobre un mismo hilo de conexión, haciendo uso de ese famoso «KeepAlive», eso provoca que nuestro hermoso servidor se sature, llene la memoria RAM y bueno… deje de responder…

He aquí algunos de los parámetros que pueden utilizar para protegerse contra estos ataques:

LimitRequestBody 102400
LimitRequestFields 50
LimitRequestFieldSize 8190
LimitInternalRecursion 5
LimitRequestLine 8190

A continuación les explicare cada uno de los parámetros… sin embargo, les recomiendo que vean la pagina del manual para que tengan una mejor información y no terminen dejando un servidor tan seguro que sea inutilizable…

  • LimitRequestBody Permite al usuario especificar un límite al tamaño del cuerpo del mensaje de las peticiones.
  • LimitRequestFields Modifica el límite del número de campos de la cabecera permitidos en una petición HTTP.
  • LimitRequestFieldSize Permite reducir el límite del tamaño permitido de una cabecera de las peticiones HTTP
  • LimitInternalRecursion Determina el número máximo de redirecciones internas y subpeticiones anidadas
  • LimitRequestLine Limita el tamaño la línea de petición HTTP que será aceptada

Obviamente, iptables (y su módulo limit) también nos apoya a detener los ataques de este estilo, sin embargo para justamente este tipo de ataques no es suficiente, la regla básica de protección que podríamos implementar es:

iptables -A INPUT -p tcp -m tcp --dport 80 -m limit --limit 10/sec -j ACCEPT

Debo admitir que me costo bastante tiempo (15 minutos), entender y superar el ataque, sin embargo fue una experiencia demasiado gratificante…

Les recomiendo ampliamente seguir sus avances, sus desarrollos y todo lo que aporta, y finalizo exhortandolos a leer su blog (y no solo bajar y usar la herramienta como scriptKiddies cualquieras) y quien sabe quizas apoyar con el desarrollo de la misma.

Los caballeros
FHTTP on SourceForge

Desde aquí un cálido saludo y un agradecimiento a mi amigo Xianur0.

Happy Hacking!

Defendiendonos contra el FHTTP
Etiquetado en:                     

3 pensamientos en “Defendiendonos contra el FHTTP

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *