sábado, 9 de enero de 2016

Clonar un portal Moddle (y mas) con wget

Buscando una manera efectiva y rápida para clonar un sitio web, buscando la mejor herramienta tipo Teleport Pro o HTTrack, cuando un amigo me comentó que wget es bastante potente incluso para spidering/crawling. Y tanto que sí basta echar un vistazo al manual de la herramienta para darse cuenta de que wget no sólo vale para descargar un simple fichero, si no que tiene muchísimas opciones y parámetros que se pueden adaptar según el sitio web que quieras duplicar.

Sirva de ejemplo el de esta entrada con el que es posible crear un mirror de cualquier portal que use Moodle, ya sabéis, un sistema de gestión de cursos de formación. Imaginemos lo rápido que obtendríamos una copia de un curso en concreto que nos interesara para poder consultarlo offline cuando nos vamos de viaje...

Primero obtenemos la cookie ya que, evidentemente, la autenticación en Moodle se realiza mediante un formulario de login:


wget --load-cookies my-cookies.txt \
--post-data='username=YOUR_USERNAME&password=YOUR_PASSWORD&testcookies=1'
--save-cookies=my-cookies.txt --keep-session-cookies http://moodlesite.com/

Luego, con dicha cookie, comenzamos con el mirror mediante los siguientes parámetros:

wget --load-cookies my-cookies.txt --keep-session-cookies --save-cookies my-cookies.txt\
--referer=http://moodlesite.com/login/index.php -m -E -k
--reject logout*,*cal_m*,*cal_y*,post.php*,*subscribe*,help.php*,enrol.php*
--exclude-directories=/calendar http://moodlesite.com/course/view.php?id=XXX
-m: activa el mirroring. Es equivalente a ‘-r -N -l inf –no-remove-listing’
-E: si un fichero de tipo ‘application/xhtml+xml’ o ‘text/html’ es descargado y la URL no termina con la regexp ‘\.[Hh][Tt][Mm][Ll]?’, esta opción pondrá el sufijo ‘.html’
-k: después de que la descarga se complete, convierte los enlaces para hacerlos accesibles de forma local.
--exclude-directories: directorios que el crawler saltará.
--reject: indica los ficheros que wget no salvará al disco

Y básicamente esto sería lo suficiente para empezar y hacer un mirror de un portal Moodle. Luego podríamos hacer menos "ruido" modificando el user-agent, usando un proxy (Tor!), añadiendo pausas entre descargas, etc. 


wget -r -l 0 -U Mozilla -t 1 -nd -D playboy.com -A jpg,jpeg,gif,png "http://www.le-website" -e robots=off

DHCPwn: Herramienta para saturar el DHCPs

Es un ataque que consiste en realizar numerosas peticiones DHCP_REQUEST con direcciones MAC falsas a un servidor DHCP con el objetivo de agotar su espacio de direcciones asignables. De esta manera el servidor DHCP no será capaz de asignar más direcciones IP a los clientes que la soliciten impidiendo que puedan acceder inmediatamente a la red correspondiente.


Esta denegación de servicio temporal puede hacerse con herramientas de red/generadores de paquetes como Yersinia o Scapy, o sencillos scripts con peticiones en bash, o por ejemplo DHCPig (basado en scapy). 



 Pero aun así queremos presentarles la herramienta DHCPwn, otra herramienta en Python para saturar servidores DHCP.

Instalación:

$ git clone https://github.com/mschwager/dhcpwn.git
$ pip install -r requirements.txt


Uso:

Flood:
$ dhcpwn --interface wlan0 flood --count 256

Sniff:
$ dhcpwn --interface wlan0 sniff

Help:
$ dhcpwn -h

Recordar que este ataque de consumo de direcciones DHCP puede ser evitado fácilmente a nivel de switches y routers mediante DHCP Snooping y Dynamic ARP Inspection (DAI):


http://www.cisco.com/c/en/us/products/collateral/switches/catalyst-6500-series-switches/white_Paper_C11_603833.html

Básicamente podemos limitar el número de direcciones IP o simplemente configurar el switch para que sólo "aprenda" una MAC por puerto. También limitar el número de conexiones al servidor DHCP del router, o si lo preferís existen otras contra-medidas como 802.1x o reglas IPS. 

Y nosotros ¿aplicamos alguna regla? Recordar que no siempre los enemigos están detrás del firewall.