whatsapp-phishing o cómo robar la sesión de un usuario de WhatsApp Web

Desde 2015 podemos usar WhatsApp Web mediante un navegador previamente “pareado” con nuestro móvil. Esto aumenta la usabilidad del popular chat pero también abre una vía más para que un tercero malintencionado intercepte nuestra comunicación (MiTM) y secuestre nuestra sesión.

Resumiendo el proceso de login con WhatsApp Web, el Servidor envía un código QR al navegador del usuario, el cual debe ser escaneado por la aplicación del teléfono para que verifique el login contra el servidor. Si es válido el servidor enviará el token correspondiente directamente al navegador:

Si os fijáis en el esquema anterior, el vector de ataque podría ser perfectamente un escenario típico de phising. El atacante sólo tiene que interceptar el código QR y presentárselo a la víctima mediante una página falsa, de tal manera que cuando lo escanee con el móvil y se valide, también recibirá el token que le permitirá autenticarse en WhatsApp Web:


Breaking Token JWT or JWT Exposed !


¿Qué es un TOKEN JWT?

Antes de nada vamos a explicar de que está compuesto un Token JWT a través de una revisión de las diferentes fuentes web grafícas. 
Os dejo los diferentes enlaces a lo largo del texto, para que podáis consultarlos. 

El funcionamiento de un Token JWT es el siguiente:  
"El usuario se autentica en nuestra aplicación, bien con un par usuario/contraseña, o a través de un proveedor como puede ser Twitter, Facebook o Google por ejemplo. 
A partir de entonces, cada petición HTTP que haga el usuario va acompañada de un Token en la cabecera (Authentication: ). 
Este Token no es más que una firma cifrada que permite a nuestro API identificar al usuario. Pero este Token no se almacena en el servidor, si no en el lado del cliente (por ejemplo en localStorage o sessionStorage) y el API es el que se encarga de descrifrar ese Token y redirigir el flujo de la aplicación en un sentido u otro. 
Como los tokens son almacenados en el lado del cliente, no hay información de estado y la aplicación se vuelve totalmente escalable. 
Podemos usar el mismo API para diferentes apliaciones (Web, Mobile, Android, iOS, ...) solo debemos preocuparnos de enviar los datos en formato JSON y generar y descrifrar tokens en la autenticación y posteriores peticiones HTTP a través de un middleware
También nos añade más seguridad. 
Al no utilizar cookies para almacenar la información del usuario, podemos evitar ataques CSRF (Cross-Site Request Forgery) que manipulen la sesión que se envía al backend. Por supuesto podemos hacer que el token expire después de un tiempo lo que le añade una capa extra de seguridad".

Pentesting de web services con WS-Attacker

WS-Attacker es un framework modular para realizar pruebas de intrusión contra servicios web. Es desarrollado por la Cátedra de Seguridad de Redes y Datos de la Universidad Ruhr de Bochumm (Alemania) y la empresa 3curity GmbH.

La idea básica detrás de WS-Attacker es proporcionar la funcionalidad para cargar archivos WSDL y enviar mensajes SOAP a los end points del Servicio Web (que se ejecuta utilizando el marco SoapUI subyacente). Esta funcionalidad puede ampliarse utilizando varios plugins y librerías para crear ataques específicos contra los web services. Pueded encontrar más información sobre la arquitectura de WS-Attacker y su extensibilidad en su paper.


Características

En la versión actual WS-Attacker soporta los siguientes ataques:

- SOAPAction spoofing: ver http://www.ws-attacks.org/index.php/SOAPAction_Spoofing
- WS-Addressing spoofing: ver http://www.ws-attacks.org/index.php/WS-Addressing_spoofing
- XML Signature Wrapping: ver http://nds.rub.de/media/nds/arbeiten/2012/07/24/ws-attacker-ma.pdf
- Ataques DoS basados en XML: ver https://www.nds.rub.de/research/publications/ICWS_DoS
- Nuevos ataques adaptables e inteligentes de denegación de servicio (AdIDoS)
- Ataques de cifrado XML: consultar este blogpost (http://web-in-security.blogspot.de/2015/05/how-to-attack-xml-encryption-in-ibm.html) para obtener una visión general de los ataques y referencias adicionales a  trabajos científicos

DropboxC2C: un agente de post-explotación que usa Dropbox para C&C

DropboxC2C es una herramienta escrita en python por Rio Sherri (0x09AL) que implementa un agente de post-explotación que utiliza la infraestructura de Dropbox para las operaciones de comando y control (C&C). Su autor lo liberó a raíz de que los desarrolladores de Empire implementaran también Dropbox como C2C.

Tiene una parte "servidor" que gestiona todos los agentes (Main.py) y, evidentemente, una parte cliente que hace lo que el servidor dice. ha eliminado las funciones de keylogging para que no se haga un mal uso de la herramienta.

Requiere Python 2.7 y las librerías dropbox, psutil y pyinstaller. La instalación es muy sencilla:

- git clone https://github.com/0x09AL/DropboxC2C.git
- modificar la clave de la API en agent.py y main.py (la clave api se debe crear desde la interfaz web de Dropbox)
- ejecutar setup.bat en una máquina Windows para obtener agent.exe que es el agente "compilado"
- ejecutar main.py y el agente en el servidor comprometido





Proyecto: https://github.com/0x09AL/DropboxC2C

Extensiones para convertir Chrome en una herramienta de pentesting

En cuanto navegadores me declaro incondicional de Firefox desde su nacimiento, me sirvió en su momento para apartarme de IE y he seguido usándolo hasta nuestros días, incluso para pentesting: FireCAT, Hcon STF, Firefox Security Toolkit, OWASP Mantra y algunas otras extensiones siempre han cubierto de sobra mis necesidades y gustos.

Pero hoy en día casi el 45% de la "cuota de mercado" de navegadores la tiene Google Chrome por lo que entiendo que muchos pentesters se sienten más cómodos utilizándolo durante sus auditorías. Por ello y porque nunca hay que cerrarse al uso de nuevas herramientas, me pareció muy interesante una recopilación en Infosec Institute con 19 extensiones que convertirán al popular navegador en una verdadera "caja de utilidades" para pentesting.

Para agregarlas sólo tenéis que seguir cada enlace correspondiente y añadiréis nuevas y potentes funcionalidades, dejando la barra de vuestro navegador de forma similar a la siguiente:


1.- Web developer: es una extensión de Google Chrome que agrega una barra con varias herramientas de desarrollo web en Chrome. Esta extensión ayuda a analizar elementos de la aplicación web como HTML y JS.

2.- Firebug Lite for Google Chrome: Proporciona un rico entorno visual para analizar elementos HTML, elementos DOM y otros Box Model Shading. También permite editar CSS en tiempo real. Ayuda en el análisis de cómo una aplicación está trabajando en el lado del cliente.

3.- D3coder: permite codificar y decodificar texto seleccionado a través del menú contextual. Por lo tanto, reduce el tiempo para codificar y decodificar cadenas utilizando herramientas separadas. Soporta Timestamp, rot13, base64, hashes CRC32, MD5 y SHA1, bin2hex, bin2text, unserialize, etc.

4.- Site Spider: Es una extensión que agrega un crawler en Chrome. Rastrea todas las páginas e informa de todos los enlaces rotos. También se puede configurar añadiendo restricciones y expresiones regulares, que funcionen en el lado del cliente, y usar autenticación para acceder a todas las páginas. Esta extensión es de código abierto.

M/o/Vfuscator o cómo hacer llorar a un reverser

M/o/Vfuscator compila programas en instrucciones "mov"... y sólo "mov". Operaciones aritméticas, comparaciones, saltos, llamadas a funciones y todo lo que necesita un programa se realiza a través de operaciones con mov; No hay código auto-modificado, no hay cálculos TTA (transport triggered architecture) ni nada que se pueda hacer sin mov...


Para que os hagáis una idea del resultado de usar la herramienta, las imágenes siguientes ilustran la compilación de una función sencilla de cálculo de número primo primero con gcc y luego con M/o/Vfuscator.

Ensamblador:

GCC M/o/Vfuscator

Gráficos de control de flujo: 
 
GCC M/o/Vfuscator
Building
 
M/o/Vfuscator utiliza LCC como frontend del compilador. Incluye un script de compilación que descargará automáticamente LCC, lo configurará para el backend de mov, y construirá la herramienta.

Si estás en un sistema de 64 bits, asegúrate de tener disponible una libc de 32 bits (por ejemplo, 'apt-get install libc6-dev-i386' o 'yum install glibc-devel.i686').

git clone https://github.com/xoreaxeaxeax/movfuscator
gd movfuscator
./build.sh
sudo ./install.sh


Si tienes problemas para crear LCC, puedes obtener más detalles sobre el proceso de construcción de LCC en: http://drh.github.io/lcc/current/doc/install.html

Mini-tor: una pequeña herramienta que implementa Tor usando Microsoft CNG/CryptoAPI

Mini-tor es una utilidad de prueba de concepto para acceder a contenidos de Internet y a contenidos ocultos (.onion) a través de los routers tor. Esta herramienta está optimizada para ser lo más pequeña posible (actualmente ~45kb, comprimido con kkrunchy ~19kb), que se logra mediante el uso de Microsoft CryptoAPI/GNC en lugar de embeber OpenSSL.

Uso

Accediendo a Internet a través de mini-tor:
> mini-tor.exe "http://torstatus.blutmagie.de/router_detail.php?FP=847b1f850344d7876491a54892f904934e4eb85d"

Accediendo a Servicios Ocultos a través de mini-tor:
> mini-tor.exe "http://duskgytldkxiuqc6.onion/fedpapers/federndx.htm"

Características

- Mini-tor es compatible con handshakes TAP y NTOR:
      . TAP utiliza DH de 1024 bits.
      . NTOR es un handshake más nuevo y utiliza curve25519.
- Mini-tor puede utilizar CryptoAPI o el más reciente API GNC.
      . es configurable a través de mini/crypto/COMMON.H.
      . ten en cuenta que curve25519 es soportado por GNC sólo en win10+.
    - se incluye una implementación de curve25519-donna. Se puede activar mediante el establecimiento de MINI_CRYPTO_CURVE25519_NAMESPACE a ext para ponerlo en marcha en sistemas antiguos.
      . ten cuenta que GNC::dh<> funcionará sólo en win8.1+, debido al uso de BCRYPT_KDF_RAW_SECRET para ir a buscar secreto compartido.
   - se puede utilizar CAPI::dh<> configurando MINI_CRYPTO_DH_NAMESPACE a CAPI.
 . todo lo demás debe funcionar correctamente en Win7+ (versiones anteriores no son compatibles).
- Mini-tor crea conexiones TLS a través de SCHANNEL (mira en mini/net/ssl_socket.cpp & mini/net/detail/ssl_context.cpp).
- Mini-tor no utiliza CRT o STL por defecto, todo se realiza a partir de cero.
- la versión anterior de mini-tor basada puramente en CryptoAPI se puede encontrar en el git con la etiqueta ms_crypto_api (sin mantenimiento).

Compilación

Se puede compilar mini-tor con Visual Studio 2017, el archivo de solución está incluido. No se requieren otras dependencias.

Proyecto: https://github.com/wbenny/mini-tor

sshttpd: SSH y HTTP/SMTP en el mismo puerto

¿Tienes un servidor en la DMZ o red interna al que sólo se puede acceder externamente por HTTP? ¿Necesitas acceder también por SSH para administrar el servidor (o pivotar a través de él) pero el firewall sólo permite el acceso a un único puerto? No hay problema, con sshttpd es posible multiplexar dos protocolos para acceder a ambos por el mismo puerto:

- SSH/HTTP
- SSH/HTTPS
- SSH/SMTP (sin banners SMTP multilínea)
- HTTPS SNI multiplexing
- SSH/HTTPS con SNI multiplexing

El multiplexado se realiza en la misma dirección IP/IP6 a la que se conectan desde el exterior, así que básicamente sólo cambian los puertos según el servicio detectado.
Podríamos decir que sshttpd es un demonio de conmutación o switching que trabaja en la capa 5 OSI. En el ejemplo más común, se ejecuta de forma transparente en HTTP(S) (opción -L, por defecto 80) y decide si las conexiones entrantes son tráfico SSH o HTTP(S). Si es tráfico HTTP (S) lo redirecciona al puerto definido en HTTP_PORT (-H, por dec 8080) y si el tráfico es SSH a SSH_PORT (-S, por defecto 22), respectivamente.

Instalación y uso

Primero hay que asegurarse de tener la última versión disponible del kernel de Linux y tener instalado nf-conntrack así como libcap y libcap-devel (función capability).

$ git clone https://github.com/stealth/sshttp.git
$ cd sshttp
$ make

Luego hay que editar el script nf-setup indicando el interfaz de red y los puertos (22 y 8080 van bien para el caso de SSH/HTTP) y ejecutarlo para instalar las reglas de proxy (iptables y rutas).
Ni que decir tiene que sshd debe ejecutarse en $SSH_PORT y el servidor web en $HTTP_PORT indicados, y luego ejecutar sshttpd (como root):

# ./nf-setup
Using network device eth0
Setting up port 22 ...
Setting up port 8080 ...
# ./sshttpd -S 22 -L 80 -H 8080 -U nobody -R /var/empty
sshttpd: Using HTTP_PORT=8080 SSH_PORT=22 and local port=80. Going background. Using caps/chroot.
#

15 sitios para practicar hacking (legalmente) este verano

Llega el verano, el calor infernal, la jornada intensiva y las siestas (para algunos afortunados), la piscina y la playa, los chiringuitos y las terracitas... y es relativamente difícil seguir enganchado a un ordenador, más aún una vez que se sale de la cueva ;). Pero para aquellos que aún mantengan la actitud inquebrantable de seguir practicando o tengan la necesidad de recuperar "asignaturas de hacking" para la vuelta al cole en septiembre, os dejo 15 sitios vulnerables para practicar (no sólo inyecciones SQL) que ví en la web de Arkdots:

1. BWAPP

Buggy Web Application de Malik Mesellem es una aplicación web con bugs diseñada para que practiquen estudiantes y pen-testers. Ofrece todos los posibles errores conocidos incluyendo los del proyecto OWASP Top 10 y más de 100 vulnerabilidades. Es una aplicación basada en PHP que utiliza como base de datos MySQL. Puede usarse en Linux o Windows. También ofrece tutoriales. Puede descargarlo desde http://www.itsecgames.com/.

2. Damn Vulnerable iOS application (DVIA)

Esta es una de las pocas aplicaciones móviles para desarrolladores de aplicaciones móviles de iOS. DVIA cubre casi todas las posibles vulnerabilidades y está especialmente diseñada para poner a prueba de forma legal las habilidades de intrusión en aplicaciones iOS. Funciona con iOS versión 7 y superior. También ofrece formación y soluciones a la mayoría de los problemas que los desarrolladores de iOS se enfrentan. Puedes aprender más sobre DVIA en http://damnvulnerableiosapp.com/.

3. Game of Hacks

Game of Hacks es en realidad un juego para probar las habilidades para encontrar bugs y vulnerabilidades en código. Se tienen que cumplir ciertos hitos en un tiempo limitado y se puede añadir tu propio código para obtener retroalimentación de otros jugadores. Se puede jugar a Game of Hacks como un solo jugador o desafiar a un amigo. Ofrecen tres niveles diferentes (principiante, wannabe,y avanzado). Puedes jugar a este juego aquí: http://www.gameofhacks.com/.

4. Google Gruyere

Google Gruyere ayuda en el aprendizaje de tres habilidades básicas:

- encontrar vulnerabilidades de seguridad.
- aprender a aprovechar estas vulnerabilidades como un hacker profesional
- aprender a ocultar bugs y vulnerabilidades a los hackers

Podemos encontrar varios errores de seguridad en Gruyere: XSS (Cross site scripting), XSSI (Cross site script inclusion), DOS (denegación de servicio), filtrado de información y ejecución remota de código. Este codelab se diseñó para aprender a encontrar estos errores y arreglarlos tanto en un entorno real como en Google Gruyere. Para más información visita el sitio web oficial de Google Gruyere: https://google-gruyere.appspot.com/.

5. HackThis !!

Con HackThis !! se puede aprender mucho acerca de la seguridad del sitio web propio. Ofrecen más de 50 niveles que cubren todos los aspectos de hacking, dumping y defaces de un sitio web. También tienen un foro con numerosos usuarios activos y artículos. Es posible registrarse en su sitio web utilizando la cuenta de Facebook o correo electrónico. Puedes visitar su sitio web oficial en https://www.hackthis.co.uk/.

Lista de recursos para aprender ingeniería inversa

Empezamos la semana con un recopilatorio de enlaces para aprender/repasar ingeniería inversa de Jackson Thuraisamy de Security Compass. Básicamente es una serie de recursos que su autor fue recopilando mientras estuvo aprendiendo a encontrar vulnerabilidades de corrupción de memoria en Windows. El resultado es una lista bastante actualizada y variada con vídeos, artículos, tutoriales, writeups, etc., que siempre conviene tener a mano para revisar. Aquí os la dejo:
  1. LiveOverflow Binary Hacking🌟💬
  2. OpenSecurityTraining.info: Introductory Intel x86🌟
  3. OpenSecurityTraining.info: Introduction to Reverse Engineering Software
  4. RPISEC: Modern Binary Exploitation🌟
  5. OpenSecurityTraining.info: The Life of Binaries
  6. OpenSecurityTraining.info: Reverse Engineering Malware
  7. RPISEC: Malware Analysis
  8. The C Programming Language (K&R)
  9. The GNU C Reference Manual
  10. Learn C the Hard Way
  11. Learn C in Y Minutes
  12. Practical Reverse Engineering🌟💬
  13. Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software🌟💬
  14. Assembly Language Step-by-Step: Programming with Linux
  15. Wikibooks: x86 Disassembly
  16. A Bug Hunter's Diary🌟💬
  17. Reversing: Secrets of Reverse Engineering🌟💬
  18. The Shellcoder's Handbook: Discovering and Exploiting Security Holes
  19. Windows Internals🌟
  20. Rootkits and Bootkits: Reversing Modern Malware and Next Generation Threats
  21. Basic Dynamic Analysis with IDA Pro and WinDbg💬
  22. A Link to the Past: Abusing Symbolic Links on Windows
  23. Windows Kernel Graphics Driver Attack Surface
  24. bee13oy: Attacking Antivirus Software's Kernel Driver💬
  25. Direct X: Direct Way to Microsoft Windows Kernel
  26. A Window Into Ring 0
  27. Windows Drivers Attack Surface
  28. Malware Unicorn: Reverse Engineering Malware 101🌟
  29. HumbleSec: Assembly to Pseudocode Manually💬
  30. Mozilla: A Crash Course in Memory Management
  31. Corelan Team Exploit Writing
  32. Hacking the PS4: Userland ROP💬
  33. What is a "good" memory corruption vulnerability?🌟
  34. Attacking JavaScript Engines: A case study of JavaScriptCore and CVE-2016-4622
  35. The Stack Clash (Qualys Security Advisory)
  36. Windows Kernel Exploitation Part 3: Arb. Overwrite, NULL Ptr, Type Confusion And Int. Overflow Examples
  37. Windows Kernel Exploitation Part 4: Introduction to Windows Kernel Pool Exploitation
  38. hasherezade: Starting with Windows Kernel Exploitation
  39. Windows Kernel Exploitation Part 0: Kernel Debugging
  40. Windows Kernel Exploitation Part 1: Getting Started With The HackSysTeam Extremely Vulnerable Driver
  41. Windows Kernel Exploitation Part 2: My First Kernel Exploit
  42. A Brief Introduction To Using Z3 With Python
  43. FuzzySecurity Tutorials🌟💬
  44. phoenhex team write-ups🌟💬
  45. Project Zero Issue Tracker🌟💬
  46. Flare-On Challenge Solutions: 2015
  47. Flare-On Challenge Solutions: 2016
  48. Exploiting a Firefox UAF with Shared Array Buffers
  49. Analysis and Exploitation of an ESET Vulnerability
  50. Attacking the Windows NVIDIA Driver
  51. Smashing Flare-On #2 with Concolic Testing
  52. Windows Kernel Resources💬
  53. Dennis Yurichev's Reversing Challenges
  54. Exploit Exercises🌟
  55. Flare-On Challenges
  56. Compiler Explorer🌟💬
  57. HackSys Extreme Vulnerable Windows Driver
  58. Trail of Bits: manticore
  59. Trail of Bits: mcsema💬
  60. QuarksLab: Triton
  61. UCSB: Angr
  62. CMU: Pharos
  63. CEA: miasm
  64. CEA: qira