BalckArch vs ArchStrike

Como dije en el post de Hacking sobre debian:

mi laptop no solo es una herramienta de pentesting, si no tambíen mi herramienta de estudio, mi centro multimedia, me enviroment de programación, y mi herramienta de trabajo diario ademas de mi laboratorio de experimentos.

Es decir, la distro que utilice en mi pc tiene que tener capacidad y herramientas de todo tipo, no solo de seguridad informática.

Anteriormente, adecue Debian para que cumpla, dentro de lo posible, tales fines, sin embargo, justamente en materia de Seguridad informática, eran pocas las herramientas disponibles y poco actualizadas.
Al pasarme a ArchLinux, me tope con BlackArch y ArchStrike, dos distribuciones enfocadas a la seguridad informática, compatibles con su distribución madre, Arch.

Como y cual elegir?
Repasaremos un poco sobre ArchLinux, y luego sobre las versiones live de ArchStrike y BlackArch, veremos como utilizar ambos repositorios desde una instalacion de Arch y compararemos las herramientas disponibles.

Un poco sobre ArchLinux

Como dice en su pagina, Arch es  “a lightweight and flexible Linux distribution that tries to Keep It Simple”

Una de las mayores ventajas de esta distribución, es su comunidad activa, con documentación actualizada, al igual que sus repositorios, una cantidad inmensa de software disponible,  y una flexibilidad muy grande en cuanto a la configuración.
Esta misma flexibilidad, contrae la necesidad saber bien como configurar, administrar y actualizar cada parte del sistema operativo, sin destruirlo.
Por decirlo de otra manera, con Arch, vuelve la diversión de usar linux.

Una característica muy interesante, es que se trata de una distribución Rolling Release, es decir que el sistema de desarrollo de la distribución consiste en liberar continuamente actualizaciones, sin pasar por un estadio previo de pruebas/congelamiento. Por lo que al instalar Arch, tenemos siempre la ultima versión de cada paquete.

Entre las contras que tiene Arch (Por decirlo de alguna manera, ya que en realidad no es una contra si no, una característica adrede), es que Arch no tiene un instalador. Esto que puede asustar a los principiantes, es una ventaja para el usuario avanzado, evitándole caer en la obligación de aceptar configuraciones preestablecidas en un instalador.

Sobre ArchStrike y BlackArch (live)

Ambas distribuciones vienen en versiones live, lo que nos permite bajar sus respectivas ISOs y probarlas. En el caso de ArchStrike, podemos bajar un OVA, tanto para VirtualBox como para VMware, por lo que nos facilita probarla en una maquina virtual.

Menu

En el caso de BlackArch tiene un menu personalizado desde donde se puede acceder a todas las herramientas instaladas. Al igual que en Kali (una de las distros mas difundidas en materia de Pentesting) si la aplicacion/herramienta es de consola (como lo son la mayoria de las herramientas disponibles) abre una consola (xterm) ejecutando el comando sin argumentos.
A diferencia en ArchStrike, el menu no contiene un acceso a todas las aplicaciones, si no solo a las aplicaciones de interfaz graficas (algunas de linea de comando, pero no abre una terminal, por lo que no sirve para nada). Por otro lado, ArchStrike tiene otras herramientas orientadas a la configuracion del sistema y el escritorio que BlackArch no tiene (mas alla de la configuracion basica de fluxbox)

Estetica

Ambas vienen con Windows Managers livianos, en el caso de ArchStrike, OpenBox y Fluxbox por defecto para BlackArch, pero en esta ultima puede elegirse otros WMs, todos ellos livianos y con exactamente la misma estetica.blackarchlogin Esta seleccion de administradores de ventanas, ayuda a concentrarnos en el pentesting y no en otra cosa. Sin embargo, ArchStrike esta mas orientada a proveer una experiencia mas amigable. Por ejemplo, viene por defecto con wicd (un administrador de redes), un applet para mostrar la bateria (en caso de las laptops) y un menu que facilita el acceso a las herramientas de configuracion del sistema, como dije anteriormente.

Instalacion (live)

Ambas vienen con un script para instalar desde la version live, sin embargo solo ArchStrike tiene un acceso directo desde el menu principal. En el caso de BlackArch, hay que iniciarlo desde una terminal con el comando blackarch-install
archstrike

Repositorios

Mas alla del uso que podemos hacer de cada listro desde sus versiones live, podemos utillizar los repositorios de ambas distribuciones, como repositorios de una PC on Arch ya instalado.

BlackArch porvee un script que instala el repositorio y la base de datos de firmas correspondientes. Con estos pasos, quedan a disposicion nuestra las herramientas para ser instaladas:

curl -O https://blackarch.org/strap.sh
sha1sum strap.sh   #El resultado deberia ser  86eb4efb68918dbfdd1e22862a48fda20a8145ff
./strap.sh #Como root o con sudo

Luego de esto, podemos listar los paquetes disponibles de la siguiente manera:

pacman -Sgg | grep blackarch | cut -d' ' -f2 | sort -u

Estas instrucciones pueden leerlas en ingles en el siguiente guia en PDF

En el caso de ArchStrike, tenemos que adicionar un repositorio en el archivo de configuracion de Arch:

cat << EOF >> /etc/pacman.conf
[archstrike]
Server = https://mirror.archstrike.org/$arch/$repo
EOF

Seguido, actualizamos la base de datos de paquetes:

pacman -Syy

Para instalar la base de firmas, debes seguir los pasos indicados en la pagina oficial.

Coexistencia de repositorios: En este momento tengo configurados ambos repositorios y no he tenido problemas.

Herramientas disponibles

Un dato importante a la hora de comparar estas distribuciones es los paquetes disponibles, por lo que me tome el trabajo de hacer un recuento de los paquetes y sus respectivas versiones, transcribo a continuacion los pasos que seguí, por si les interesa repetirlos:
Primero hice una comparacion cuantitativa de los repositorios:

pacman -Sl | awk '/blackarch/ { print $2,$3 }' > /tmp/blackarch
pacman -Sl | awk '/archstrike/ { print $2,$3 }' > /tmp/archstrike
wc -l /tmp/blackarch /tmp/archstrike 
 2145 /tmp/blackarch
 1288 /tmp/archstrike

Como vemos, BalckArch tiene mayor cantidad de paquetes, sin embargo, esto no me dice mucho, ya que no se si los paquetes que tiene disponibles, son utiles, o desactualizados, o no me interesan.
Por lo que genere un archivo que compare ambos repositorios paquete por paquete, con su respectiva version:

cat /tmp/blackarch | sort > /tmp/blackarch.sorted
cat /tmp/archstrike | sort > /tmp/archstrike.sorted
cat /tmp/blackarch.sorted /tmp/archstrike.sorted  | awk '{ print $1 }' | sort -u > /tmp/allpkgs
join -a 1   archstrike.sorted blackarch.sorted
join -a 1 allpkgs archstrike.sorted > allvsstrike
join -a 1 allpkgs blackarch.sorted > allvsblack
join  -a 1 allvsblack allvsstrike  > black-strike.compared
cat black-strike.compared | tr ' ' ';'  > black-strike.compared.csv

De esta manera obtuve un CSV con todos los paquetes y sus respectivas versiones.
Les dejo a dispocision el CSV (black-strike-compared) y una planilla de calculo (black-strike-compared) que generé a partir del mismo.

Se puede ver con estos resultados, que BlackArch, tiene mas paquetes y en general estan mas actualizados. De hecho no hay paquetes que ArchStrike tenga y BlackArch no.

Conclusiones
Ambas distribuciones tienen su puntos fuertes, sin embargo, me pesa bastante la cantidad superior de paquetes que posee BlackArch, dado que si vamos a utilizar una de esta distribuciones, la estetica será algo que configuraremos por nosotros mismo, al igual que los menus. Por otro lado, BlackArch viene, en su version live, con varios Windows Managers interesantes, como Awesome, Fluxbox e i3, lo que le da un toque mas geek.
A su vez, ArchStrike es quizas una distro que puede abrirse camino en los menos experimentados, ya que provee una experiencia mas amigable.
En particular uso ambos repositorios en una instalacion de Arch ya existente, pero en linea general eh instalado los paquetes desde los repositorios de BlackArch.

Quizas haya algun dato que se me este pasando por alto, pero hasta donde yo puedo ver, mi recomendacion se inclina por BlackArch.

Espero les haya servido la comparación y espero sus comentarios!

~have fun

 

ZMap mas rápido que NMap

ZMap es un escaner de redes (tal como lo es el famosísimo nmap) que sirve para auditorias de seguridad, testings, monitoring etc etc. Sin embargo, a diferencia de otros scanners, ZMap es muy veloz y tiene un potencial muy interesante dado sus cualidades. Según sus autores, tiene la capacidad de scanear todas las ip de ipv4 en 45 minutos desde una PC normal y fue creado con el fin de encontrar vulnerabilidades en forma masiva.
Como explican en el WashintongPost:

In contrast, ZMap is “stateless,” meaning that it sends out requests and then forgets about them. Instead of keeping a list of oustanding requests, ZMap cleverly encodes identifying information in outgoing packets so that it will be able to identify responses. The lower overhead of this approach allows ZMap to send out packets more than 1,000 times faster than Nmap. So while an Internet-wide scan with Nmap takes weeks, ZMap can (with a gigabit network connection) scan the entire Internet in 44 minutes.

ZMap no tiene un registro de los paquetes enviados, simplemente envía los paquetes con data que al ser devuelta puede identificar y decodificar, haciéndolo 1300 veces mas rápido que nmap.

Instalación

Su instalación no debería serte en absoluto un problema, ya que esta portado para varias distribuciones, como se documente en su sitio:

Debian or Ubuntu: sudo apt-get install zmap
Fedora, CentOS, and RHEL: sudo yum install zmap
Gentoo: sudo emerge zmap
Mac OS (brew): brew install zmap
Arch Linux: Available through AUR

Por otro lado, lo puedes descargar/clonar desde GitHub
La información para compilarlo, puedes verla aquí

En particular, en Debian 7, necesitaras tener entre tus repositorios, los backports:

deb  http://http.debian.net/debian  wheezy-backports main contrib non-free

Uso

La rapidez de zmap hace que sea ideal para escanear una gran cantidad de hosts (syn scan) en poco tiempo (de hecho, lo hace tan rápido, que hemos de tener cuidado al usarlo). El output generado por zmap, es simple, una lista de las IPs, que pueden servir como input para otro programa. Veamos su uso más básico:

# zmap -p 22 -o iplist.txt 200.0.0.0/8

Obtendremos un output en la consola similar al siguiente:

 Mar 02 21:27:12.301 [INFO] zmap: output module: csv
0:01 1%; send: 148953 149 Kp/s (135 Kp/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hits: 0.00%
0:02 2%; send: 297811 149 Kp/s (142 Kp/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hits: 0.00%
0:03 2%; send: 446588 149 Kp/s (144 Kp/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hits: 0.00%
0:04 3%; send: 595473 149 Kp/s (145 Kp/s avg); recv: 1 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hits: 0.00%

Como vemos, vamos recibiendo un update del estado del escaneo en la consola a cada segundo, y en el archivo iplist.txt tendremos una lista de ips con el puerto 22.

Pero esto no es todo, hay algunas características dignas de ser recalcadas:

Control del ancho de banda:

zmap nos permite ajustar el ancho de banda que queremos utilizar con la opción -B:

zmap -B 512K -o list.txt -p 8080 83.0.0.0/8

Scan ICMP:

Podemos hacer un scan sólo utilizando ICMP con:

zmap -M icmp_echoscan -o list.txt 91.0.0.0/8

Scan UDP:

También podemos utilizar el módulo de UDP , casi con la misma velocidad que TCP, lo que es mucho:

zmap -M udp -o list.udp.txt -p 53 91.0.0.0/8

Output en JSON:

Utilizando la opción -O json podemos obtener el archivo de resultado en formato json, lo que puede ser muy útil para alguna herramienta de monitoreo o algún tipo de webservice:

zmap -O json -o list.json -p 23 15.0.0.0/16

Output en standard output:

Podemos pedirle a zmap, que la lista de IPs no las tire en el standard error con el fin de conectarlo mediante pipes a otra aplicación. Por ejemplo en la versión compilada (no la que instalamos con apt u otro gestor) tenemos un programa llamado banner-grab-tcp que sirve para obtener los banners y como sugiere el sitio de zmap podemos utilizarlo de la siguiente manera:

zmap -p 80 -N 1000 -B 10M -o - | ./banner-grab-tcp -p 80 -c 500 -d ./http-req > out 

Esta misma idea puede traspolarse a scripts hechos por nosotros mismos u otros programas que puedan recibir el input desde el standard input.

Abuso

  • A tener cuidado, zmap es una tentación a escanear grandes segmentos de red (de ips públicas).
  • Incluso si lo ejecutas en una red privada puedes llegar a generar una cantidad de tráfico indeseado que puede ser un problema para la red, por lo que mide bien los paramatros que utilizas.
  • Nunca olvides la parte ética del hacking

Extensiones

Por como si fuera poco, zmap puede ser facilmente extendido, te recomiendo le des una pasada a este link para obtener mas info de como hacerlo, verás que simple.

Conclusiones

Claramente zmap es digno de salír en las noticias (WashingtonPost article) ya que supone un gran avance y es un arma peligrosa de dos filos. Además es un proyecto muy maduro para su corta vida.
Por otro lado, me hace pensar sobre una versión de zmap para ipv6, cuya características (las de ipv6) nos hacia suponer que un escaneo masivo sería muy complejo, sin embargo esta simple herramienta nos abre un poco la cabeza. Aunque nmap tiene muchas mas cualidades, y creo yo, sigue siendo el rey de los scanners, zmap, es una herramienta que puede complementar muy bien muchas de las tareas que realizarmos en un pentesting o en auditorias internas. Definitivamente zmap no puede faltar entre tus herramientas de pentesting, hacking y auditoria. De seguro pronto la veremos en los top 10 de herramientas de hacking.

Fuentes:
Web de zmap

~have fun

Mi Spider favorito (o hacking con wget)

Wget es una herramienta conocida por todos, pero su potencial es generalmente subestimado.
Aunque quizas tengas en tu mente algo como:

 wget http://www.foo.com/varfoo.iso

Pero en realidad wget tiene mucho mas para dar.
Repasemos algunos usos y utilidades interesantes para nuestro pentesting

– Link Status
Para checkear los headers y estado de cada link del sitio:

wget -o results.txt --spider -nd -S -r -l inf www.example.com

– Busqueda de archivos
Podemos buscar archivos, para luego extraer meta data por ejemplo:

wget -r -l inf -nd -nc --ignore-case -A *.pdf www.example.com

o bien

wget -r -l inf -nd -nc --ignore-case -A jpg,gif,png www.example.com

– Guardar cookies para su estudio:

wget -r -l inf -nd -nc --save-cookies cookies.txt www.example.com

– Mirror de un sitio

wget -r -l inf -E -k -p -N http://www.example.com

– Análisis de cache:
Podemos pedirle a wget que pida al servidor http deshabilitar el cache con –no-cache. Esto simplemente hace que el servidor http nos entregue los archivos directamente, no los cacheados.

Por otro lado, a estas utilidades le sumamos las siguientes utilidades:

Especificar un ‘Referer’:
Esto le dirá al servidor http ‘desde donde accedimos al link’

--referer=http://www.google.com/search

Esta opción, en conjunto con otras, pueden ayudar a evitar que un IDS o un PDS detecten que se esta analizando el sitio.

Especificar un ‘User-Agent’:

Si no especificamos un ‘User-Agent’, wget utilizará Wget/version lo que puede ser un disparador de alarmas. Algo como esto puede ser menos sospechoso:

--user-agent='Mozilla/5.0 (compatible; MSIE 10.6; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0'

En el siguiente link, hay una enorme lista de User Agents

Especificar un header:

La opción –header nos permite

Especificar los tiempos:
Otro disparador de alarma pueden ser los tiempos en que descargamos un sitio, para eso wget tiene las siguientes variables:

--wait=seconds # Especifica la cantidad de segundos entre download y download
--random-wait # Multiplica el valor de --wait por un número al azar entre 0.5 y 1.5 (Muy útil!!!)
--wait-retry=seconds # Especifica cuantos segundos esperará antes de reintentar descargar un link que ha dado error inicialmente

Una buena combinación de estos tiempos ayudará a pasar inadvertido.

Usar un archivo de input

Con -i podemos especificar un archivo donde tengamos un lista de URLs. Asimismo utilizando –force-html, el archivo de input será leído como un html. Si los links dentro del html son relativos podemos utilizar –base=url con el fin de especificar la url utilizada como base.
Por otro lado, si utilizamos ‘-i -‘ wget tomará la lista de URLs desde el standard input, lo que lo hace combinable con otros comandos utilizando un pipe.
Por ejemplo:

lynx -dump "http://www.example.com" | grep -eo "http:.*" | wget -xi -

Conclusiones

Como vemos, wget tiene opciones muy interesantes por ser una herramienta que no esta pensada originalmente para hacer pentesting. Quizas podríamos esperar  la posibilidad de especificar múltiples valores en –user-agent y –referer, pero no es nada que no se arregle un par de lineas en bash. En conclusión, has tenido wget todo este tiempo en tu consola subutilizandolo, quizás sea hora de que te des una vuelta sobre su man.

~have fun

Usando plugins y themes para hackearte

A modo de troyano, CryptoPHP infecta tu CMS (wordpress, joombla, Drupal) con un sospechoso pero poco visible:

<?php include('assets/images/social.png'); ?>

Siendo social.png no una imagen si no un PHP ofuscado.
CryptoPHP fue lanzado en su primera versión (0.1) el 25 Sep de 2013, y el 12 de Noviembre de este año vio la luz la versión 1.0a y según las evidencias el autor ha de estar en Modova.
La info completa de este threat pueden leerla en el siguiente paper liberado por Fox-IT.

~have fun

Hacking desde Debian 7

Uso Debian, ni Ubuntu, ni Backtrak, ni Kali Linux, Debian. Y no es que sea caprichoso, solo es que mi laptop no solo es una herramienta de pentesting, si no tambíen mi herramienta de estudio, mi centro multimedia, me enviroment de programación, y mi herramienta de trabajo diario ademas de mi laboratorio de experimentos. Y es que Debian es “The universal operating system”.

En fin, sea por la razón que sea, en este post haré una lista de programas disponibles en el repositorio de Debian, que nos sirven para utilizar nuestra pc como herramienta de pentesting, preparando nos para la guerra!

El escenario es el siguiente:

Debian 7 Testing en amd64.
Repositorios con main, non-free y contrib (puritanos por favor no se peguen un tiro en la cabeza… o si.. )

Agregamos la arquitectura i386 usando:

dpkg --add-architecture i386

Básico

Una vez que tenemos nuestro sistema al dia, procederemos a la instalación de los paquetes básicos, que no son de pentesting en sí, si no de uso general, pero muy útiles para trabajar.

fluxbox
terminator
guake
tint2
vim
dia
keepassx
keepnote
gedit + gedit plugins

Packet crafting

A la hora de crear paquetes  tenemos varias opciones, dependiendo de la profundidad y el tipo de análisis que necesitemos:

yersinia
python-scapy
netexpect
netwox + netwag
hping3
netexpect
packeth
arping
irpas
macchanger

Sniffing

Para saber exactamente que es lo que pasa por nuestras redes, nada mejor que unos buenos sniffers

wireshark
tshark
dsniff
tcpdump

Scanning / Discovering

Una herramienta típica e infaltable, los scanners:

nmap + zenmap
pnscan
sslscan
sshscan
doscan
netdiscover
dnstracer
dnswalk
smb-nat
xprobe
p0f
cdpr

Brutefoce

Con inteligencia mas la fuerza bruta podemos llegar lejos

hydra + hydra-gtk  (xhydra)
medusa
john
aircrack-ng

Web

Algo de analisis web
w3af
whatweb
wapiti
nikto
aria2
ratproxy
wget
httest
links2
webhttrack

Otros (no menos importante)

corkscrew
tor
privoxy
ipcalc
netmask
gns3

Resumiendo todo en una linea:

apt-get install fluxbox terminator guake tint2 vim dia keepassx keepnote
gedit gedit-plugins yersinia python-scapy netexpect netwox netwag hping3 netexpect
packeth arping irpas macchanger wireshark tshark dsniff tcpdump nmap zenmap pnscan
sslscan sshscan doscan netdiscover dnstracer dnswalk smb-nat xprobe p0f hydra hydra-gtk
medusa john aircrack-ng cdpr w3af whatweb wapiti nikto aria2 ratproxy wget httest
links2 webhttrack corkscrew tor privoxy ipcalc netmask gns3

Conclusiones: Esta no es una lista exhaustiva, pero contiene muchas herramientas que podemos instalar de forma prolija desde los repositorios de debian. Ahora les toca estudiar el uso correcto de cada herramienta!

~ have fun!

Hacking – QuickLinks

Aunque en general en este blog nos restringimos a generar información y no a copiar y pegar, me pareció apropiado compartir esta lista de recursos vista en otro blog. Ya que amplia nuestra recomendación de frameworks para estudiar pentesting

Recursos para bajar:

Virtual Machines (VMs) o ISOs:

Recursos Online

Bueno… les queda practicar.
Fuente Taddong
~ have fun!