"Hackeando" los avisadores de restaurantes con HackRF

Este video muestra cómo usar HackRF, ya sabéis nuestro sistema SDR de facto, para activar los típicos avisadores de restaurantes, esos que pitan para avisarnos que nuestro pedido está listo. También conocidos en inglés como 'restaurant pagers', los que se muestran en este video son fabricados por Long Range Systems y su frecuencia de operación es de 467.750 Mhz. Eso sí, tened en cuenta que este video no muestra ningún fallo de seguridad, HackRF simplemente genera el mismo paquete de datos que la estación base para activar los avisadores.


Referencias:

Nueva vulnerabilidad en "Vim" y "Neovim" permite la ejecución de comandos

No hace mucho el investigador Armin Razmjou descubrió un fallo que hace vulnerable a cualquier Linux que cuente con el famoso y querido editor de texto "Vim" y su Fork "Neovim", vulnerabilidad registrada como CVE-2019-12735.

(Si no eres de este mundo) Pero ... ¿Qué es Vim?

Vim, por sus siglas en Ingles "Vi improved" es una versión mejorada del editor de texto vi, presente en todos los sistemas UNIX. Su autor, Bram Moolenaar, presentó la primera versión en 1991, fecha desde la que ha experimentado muchas mejoras.

Vulnerabilidad

Este fallo es debido a una característica llamada "modelines", que básicamente le permite al editor de texto (incluyendo Neovim) cargar desde cualquier fichero una configuración personalizada.

Esta característica viene habilitada por defecto en estos editores que, si el usuario lo desea, la puede desactivar. El problema yace es que la mayoría de usuarios no lo hacen, ocasionando un posible control total a un atacante.

Como apoda el título de este artículo con un simple archivo de texto con un modeline específico y simple es posible conseguir ejecutar código directamente en la memoria del sistema. Aunque Vim y Neovim pueden ejecutar los comandos peligrosos dentro de un sandbox, al utilizar "source" en la línea del código se consigue salir de este aislamiento.

Winp: Una botnet desde tu casa

No hace mucho hice un pequeño aporte a la comunidad enseñando mi mini-proyecto para la creación de una botnet: "https://underc0de.org/foro/hacking/winp-una-botnet-desde-tu-casa!/", pocos usuarios pero con palabras que debo escuchar, requerían de documentación o algún tutorial acerca de esto, así que les traigo "Tutorial de Winp".

Antes de seguir debemos saber ... ¿Que es una botnet?

Una pequeña definición según wikipedia:

"Botnet es un término que hace referencia a un conjunto o red de robots informáticos o bots, que se ejecutan de manera autónoma y automática.​ El artífice de la botnet puede controlar todos los ordenadores/servidores infectados de forma remota."

¿Que es Winp?

Winp, es un proyecto de código abierto para la interacción múltiple de varias terminales remotas o... básicamente un script para la creación de una botnet.

Características

* - Cifrado híbrido (AES256 y RSA)
* - Múltiples conexiones
* - Uso de un proxy o Tor en el cliente
* - Auto-completado semi-inteligente
* - Uso sencillo y de forma simplificada
* - Rápido
* - Probado en Android (Userland), Linux y Windows (Por lo tanto esta disponible para dos plataformas muy usadas)

Instalación
Windows:

pip install win-inet-pton
pip install pyreadline
PyCrypto en windows se tiene que instalar "manualmente". Puedes descargarlo desde http://www.voidspace.org.uk/python/modules.shtml#pycrypto

Linux:

pip install readline
pip install pycrypto

Los dos:

pip install PySocks
pip install rsa
pip install terminaltables
git clone https://github.com/DtxdF/Winp 

Ofuscar código python con Intensio-Obfuscator

Intensio-Obfuscator es una herramienta, todavía en beta, para ofuscar código fuente en python. Reemplaza el nombre de las variables, clases y funciones por caracteres aleatorios de longitud definida, elimina comentarios, saltos de línea y agrega a cada línea un script aleatorio con valores siempre diferentes. Requiere Python >= 3.5 pero puede ofuscar python 2.x y 3.x.

Instalación

git clone https://github.com/Hnfull/Intensio-Obfuscator.git
cd Intensio-Obfuscator/intensio/

Caraterísticas

Param. Descripción
Replace Cambia todos los nombres de las variables, clases y funciones definidas y elimina los saltos de línea.
Padding Añade scripts aleatorios después de cada línea y elimina todos los saltos de línea.
Remove Borra todos los comentarios y los saltos de línea.
Secret Sólo para curiosos :)
Mixer lower
Genera palabras con 32 caracteres que reemplazan variables, clases y funciones definidas en el código fuente y en scripts aleatorios si se especifican las características 'replace' o 'padding'.
Mixer medium Genera palabras con 64 caracteres que reemplazan variables, clases y funciones definidas en el código fuente y en scripts aleatorios si se especifican las características 'replace' o 'padding'.
Mixer high Genera palabras con 128 caracteres que reemplazan variables, clases y funciones definidas en el código fuente y en scripts aleatorios si se especifican las características 'replace' o 'padding'.

Uso

-h, --help              -> show this help message and exit.
-f, --onefile           -> if only one file.
-d, --multiplefiles     -> if multiple files (project).
-i, --input             -> source file or directory - if multiple files indicate a directory that contain all your files.
-c, --code              -> language used in input file or directory. value: [python]
-o, --output            -> output file or directory that will be obfuscated - if multiple file indicate a empty directory that will contain all your files.
-m, --mixer             -> length level of variables mix output. values: [lower,medium,high]
-r, --replace           -> activate the 'replace' obfuscation feature.
-p, --padding           -> activate the 'padding' obfuscation feature.
-rm, --remove           -> activate the 'remove' obfuscation feature.
-s, --secret            -> activate the 'secret' bullshit feature.

Se pueden excluir variables, clases o funciones para que no sean tratadas por 'replace' editando intensio/exclude_python_words.txt.
Si por el contrario quieres incluir variables, clases o funciones que no están incluidos en la función 'replace', edita intensio/include_python_words.txt.

Es importante no poner los mismos nombres de variables locales, clases o funciones que los de keywords y/o librerías importadas de python.

Ejemplos
  • Múltiples archivos básico: python3.x intensio_obfuscator.py -d -i test/python/multiplefiles/basic/input/basicRAT -c python -o test/python/multiplefiles/basic/output/basicRAT -m lower -r -rm
  • Múltiples archivos avanzado: python3.x intensio_obfuscator.py -d -i test/python/multiplefiles/advanced/input/basicRAT -c python -o test/python/multiplefiles/advanced/output/basicRAT -m high -r -p -rm
  • Si solo se trabaja con un archivo el comando es el mismo que para varios, simplemente no hay que apuntar a un directorio sino a un archivo de Python directamente con los parámetros -i y -o, luego cambiar el parámetro -d por el parámetro -f.
Posibles fallos
  • Si una variable, clase o función tiene un nombre idéntico a una palabra entre '' o "" en una función print(), el texto tendrá el mismo valor que las variables, clases o funciones mezcladas.
  • Si una variable, clase o función tiene un nombre idéntico con una palabra después de # (comentario), el texto tendrá el mismo valor que las variables, clases o funciones mezcladas, pero si está entre """ or ''' sin una variable antes no se realiza ninguna sustitución.
  • Si se nombró una variable, clase o función de la misma manera que alguna palabra clave de python o nombre de función/clase de librerías de python importadas, puede aparecer un error. Hay que editar intensio/excluded_python_words.txt para agregar las variables para no ofuscar o cambiar los nombres.
Proyecto: https://github.com/Hnfull/Intensio-Obfuscator

Ya llega BlueKeep... aka ejecución remota de código en RDP

El pasado martes 14 de mayo Microsoft lanzaba un parche para la vulnerabilidad CVE-2019-0708 bautizada también como BlueKeep, una vulnerabilidad en Remote Desktop Services de Windows que permite ejecución remota de código sin pre-autenticación, mandando simplemente paquetes especialmente modificados.


Tal y como reza Microsoft en su boletín, Windows 7, Windows Server 2008 R2 y Windows Server 2008 son vulnerables, así como los Windows 2003 y Windows XP, estos últimos y como ya sabemos ya fuera de soporte.

Evidentemente la criticidad de la vulnerabilidad causó un gran revuelo porque además abre la posibilidad de nuevo de armar malware "wormable" o autopropagable del tipo WannaCry. El resultado ha sido una avalancha de búsquedas de un exploit funcional que todavía hoy no ha cesado. Pero antes de avanzar cualquier PoC entendamos un poco en qué consiste la vulnerabilidad...

Análisis técnico CVE-2019-0708

Nos enfrentamos a una vulnerabilidad del tipo use-after-free en termdd.sys, un driver de kernel que usa el RDP (Remote Desktop Protocol) de Microsoft. Para entenderlo un poco mejor vamos a ilustrar el inicio de una comunicación RDP gracias a un buen esquema que encontré en el blog de Ixia:


Primero, tenemos una conexión X.224 iniciada por el cliente que se utiliza para realizar una solicitud de conexión al servidor, seguido de una confirmación de esta conexión.

Las siguientes peticiones "MCS Connect Initial y GCC Create", dentro del intercambio de mensajes para la Configuración Básica, contienen información de creación de canales virtuales, información relacionada con la seguridad y otros parámetros de capacidad y compatibilidad del cliente RDP. Dentro hay un campo de 8 bytes terminado en un byte nulo llamado "channelName_N" que se usa para especificar el nombre del canal.

Llegan nuevos 0-days de Windows... ¡SandboxEscaper ha vuelto!

Así es ella, repentina como el primer rayo de una tormenta, sin campañas ni anuncios rimbombantes, sólo necesita un repositorio en Github para desatar de nuevo toda su ira. Hablamos de SandboxEscaper, la enigmática investigadora que el año pasado sorprendió con la publicación de varios 0-days de escalado local de privilegios (en adelante LPE) y que hace unas horas publicó el código del primero de una serie de cinco exploits que irán desvelándose en breve: cuatro para LPEs y uno para escapar del Sandbox de IE.

Evil is coming!:
https://github.com/SandboxEscaper/polarbearrepo/

El primer 0-day (Bearpe) publicado y el que vamos a ver en este post es una vulnerabilidad que se aprovecha de las funciones de asignación de permisos a la hora de importar las tareas programadas (.job) antiguas, y permite a un usuario regular ejecutar cualquier cosa como SYSTEM. 

Descripción

Los componentes de front-end de Task Scheduler, como schtasks.exe, son interfaces que permiten a los usuarios ver, crear y modificar tareas programadas. La parte de back-end de Task Scheduler es un servicio de Windows que se ejecuta con privilegios de SYSTEM. Una de las librerías utilizadas por el servicio del Programador de tareas, schedsvc.dll, tiene una función llamada tsched::SetJobFileSecurityByName(), que establece los permisos de los archivos jobs. Los permisos de los archivos jobs en el directorio %Windir%\system32\tasks se modifican para otorgar al usuario llamante permisos completos al archivo de jobs que han creado.

En el punto donde se llama a la función SetSecurityInfo(), el servicio del Programador de tareas tiene el token de seguridad NT Authority\SYSTEM. Esto significa que el servicio del Programador de tareas puede otorgar permisos de acceso de usuario total a los archivos que solo pueden ser controlados por SYSTEM u otras cuentas privilegiadas.

El código de de la PoC de SandboxEscaper usa los binarios schtasks.exe y schedsvc.dll de Windows XP para aprovechar estos niveles de privilegios al configurar los permisos de archivos. Las versiones de Windows anteriores a Vista usaban archivos jobs en el directorio %Windir%\tasks. Las versiones heredadas de schtasks.exe harán que estos trabajos se migren al directorio %Windir%\system32\tasks cuando esas versiones de los programas se ejecuten en plataformas modernas de Windows. Junto con el token de seguridad de SYSTEM usado por el servicio del Programador de tareas, se puede aprovechar este comportamiento de migración junto con los hard links para otorgar permisos completos de archivos protegidos a cualquier usuario en un sistema Windows.

Resumiendo, el código del exploit simplificado realiza por tanto lo siguiente:

CopyFile(L"bear.job", L"c:\\windows\\tasks\\bear.job",FALSE);
    system(command.c_str());
    DeleteFile(L"c:\\windows\\system32\\tasks\\Bear");
    CreateNativeHardlink(L"c:\\windows\\system32\\tasks\\bear", L"C:\\Windows\\system32\\drivers\\pci.sys");
    system(command.c_str());


Y paso a paso:

1.- Primero se copia la tarea (el fichero bear.job) en la carpeta de tareas antigua.
2.- Luego se ejecuta "schtasks /change /TN "bear" /RU username /RP password", esto dará como resultado una llamada al siguiente RPC "_SchRpcRegisterTask", que está expuesto por el servicio del programador de tareas.
3.- Después de eso se borra el archivo que se creó y se pone un hard link y se vuelve a ejecutar el mismo comando. De esa manera se llamará a  SetSecurityInfo en el enlace físico.

PoC

1. copiar polarbear.exe, bear.job, schtasks.exe, schtasks.dll de la carpeta "poc files" a una máquina virtual de prueba
2. ejecutar polarbear.exe pasando un nombre de usuario y contraseña de una cuenta local que no sea de administración. Ej. "polarbear.exe essbee polarbear"


Impacto

Se ha confirmado que el código publicado funciona en Windows 10 de 32 y 64 bits, así como en Windows Server 2016 y Windows Server 2019.

Obviamente para explotar la vulnerabilidad se necesita usuario y contraseña pero, una vez obtenido (guest por ej.) y al aprovechar el servicio del Programador de tareas de Windows, un atacante autenticado puede obtener acceso total a los archivos protegidos. Esto puede permitir un compromiso completo del sistema desde una cuenta de usuario de Windows limitada.

Por el momento no se han lanzado parches... y hace unas horas ya se han publicado dos nuevos exploits y quedan otros dos...

NAXSI: un WAF para NGINX

NAXSI es un WAF de código abierto, de alto rendimiento y de bajo mantenimiento para NGINX. El acrónimo significa Nginx Anti XSS y SQL Injection.

Técnicamente, es un módulo de Nginx disponible como paquete para muchas plataformas tipo UNIX. De manera predeterminada, lee un pequeño subconjunto de reglas sencillas (y legibles) que contienen el 99% de los patrones conocidos involucrados en las vulnerabilidades web. Por ejemplo, <, | o drop se supone que no son parte de una URI.

Siendo muy simples, esos patrones podrían coincidir con consultas legítimas, es deber del administrador de Naxsi agregar reglas específicas que incluyan en lista blanca los comportamientos legítimos. El administrador puede agregar listas blancas manualmente analizando el registro de errores de Nginx, o (recomendado) iniciar el proyecto con una fase de aprendizaje automático intensivo que generará automáticamente reglas de listas blancas con respecto al comportamiento de un sitio web.

En resumen, Naxsi se comporta como un firewall que dropeará todo por defecto, la única tarea es agregar las reglas de ACEPTAR requeridas para que el sitio web de destino funcione correctamente.


¿Por qué es diferente?

Contrariamente a la mayoría de los firewalls de aplicaciones web, Naxsi no se basa en una base de firmas como un antivirus, y por lo tanto no puede ser evitado por un patrón de ataque "desconocido".

¿En qué se ejecuta?

Naxsi debería ser compatible con cualquier versión Nginx. Depende de libpcre para su compatibilidad con expresiones regulares, y funciona muy bien en NetBSD, FreeBSD, OpenBSD, Debian, Ubuntu y CentOS.

Más info:

- Documentación
- Algunas reglas para el software principal
- Nxapi/nxtool para generar reglas.

Proyecto: https://github.com/nbs-system/naxsi

The hacker's hardware toolkit: un catálogo con más de 100 gadgets para hackers

El gran Yago Hansen (@yadox) ha decidido compartir "The hacker's hardware toolkit" que fue presentado en #HITBAMS2019 y #HITBHaxpo. Se trata de un catálogo con una gran colección de dispositivos de hardware para hackers, pentesters y red teamers.


Incluye más de 120 gadgets clasificados en ocho categorías diferentes, para que sea más fácil buscarlos:
  1. Mini Computers: La mejor selección de mini PCs, mini placas base, etc. Las mejores herramientas para manejar todos los demás periféricos de hardware de tus proyectos. 
  2. RF: Las mejores herramientas para hackear, analizar, modificar o responder a cualquier señal de radiofrecuencia. Herramientas para hackear controladores inalámbricos, GPS, teléfonos celulares, señales satelitales, etc. 
  3. Wi-Fi: El kit de herramientas para un experto en Wi-Fi como Yago. Estas herramientas permiten el sniffing en modo monitor, enumeración, inyección, etc. Algunas herramientas como deautenticadores y amplificadores solo deben usarse en entornos de laboratorio. 
  4. RFID / NFC: Bonita colección de herramientas profesionales y para principiantes para investigar sobre las tecnologías RFID y NFC basadas en tarjetas contactless LF (baja frecuencia) y HF (alta frecuencia), etiquetas y tarjetas. Herramientas de hacking para controles de acceso, garajes, tiendas, etc. 
  5. HID / Keyloggers: HID (hardware input devices) como los ratones y los teclados USB están abiertos a un ataque de inyección de pulsaciones de teclas (keystrokes). Muchos de estos dispositivos como rubberducky, badusb, badusb ninja, etc. están aumentando sus capacidades y efectividad. Los keyloggers de hardware siguen siendo una de las mejores opciones para la captura de credenciales. 
  6. Network: Los routers pequeños, los taps y otros dispositivos de red similares basados en Linux pueden ser el compañero perfecto para un pentesting interno. Aquí encontraremos muchos mini routers basados en OpenWRT / LEDE que se pueden personalizar para pentesting de red. 
  7. BUS: Hay muchas tecnologías y protocolos de bus diferentes, y un hacker de hardware debe poseer muchas herramientas para descubrir y "hablar" con dichos buses. Algunas de las categorías incluidas aquí son: hacking de automóviles, hacking de placas base y PCB, industrial, etc. 
  8. Accesorios: No son suficientes solo las herramientas anteriores para crear nuestro dispositivo de hacking propio. Si vamos a construir un sistema funcional, también necesitaremos muchos accesorios como baterías, cargadores, gps, sensores, DC-DC, equipos de laboratorio, etc.
El catálogo puede descargarse en formato PDF desde aquí.

Nota del autor: Aclarar que NO es un catálogo comercial, incluso si se ve así. Yago no tiene ningún interés personal en vender ninguna de las herramientas mostradas, sólo compartir muchas de las herramientas que ha usado para diferentes propósitos de hacking. Cualquier herramienta que no esté disponible para ser comprada online, será excluida del catálogo. Todas las herramientas muestran un precio aproximado y una tienda online donde se puede comprar. Todos los códigos OCR incluyen el enlace a una tienda online que se envía a Europa y, por supuesto, no son maliciosos.

Proyecto y términos para contribuciones: https://github.com/yadox666/The-Hackers-Hardware-Toolkit

Zombieload: nuevos bugs que permiten extraer información de procesadores Intel

Varios investigadores de distintas universidades han encontrado una nueva clase de vulnerabilidades en los procesadores de Intel que pueden usarse para robar información confidencial directamente del procesador.

Los errores recuerdan a otros de canal lateral como Meltdown, Spectre o Foreshadow, que explotaron una vulnerabilidad en la ejecución especulativa, una parte importante de cómo funcionan los procesadores modernos. La ejecución especulativa es una técnica de optimización que Intel agregó a sus CPU para mejorar la velocidad de procesamiento de datos y el rendimiento. Digamos que esta técnica ayuda a los procesadores a predecir en cierta medida lo que una aplicación o sistema operativo podría necesitar en un futuro próximo, lo que hace que la aplicación se ejecute más rápido y más eficiente. El procesador ejecutará sus predicciones si son necesarias, o las descartará si no lo son.

El ataque ha sido bautizado como "ZombieLoad" porque toma su nombre de "carga zombie", una cantidad de datos que el procesador no puede entender o procesar adecuadamente, lo que obliga al procesador a pedir ayuda al microcódigo del procesador para evitar un bloqueo. Las aplicaciones generalmente solo pueden ver sus propios datos, pero este error permite que los datos se filtren a través de esos límites. Los investigadores dijeron que ZombieLoad filtrará cualquier dato actualmente cargado por el núcleo del procesador. Intel dijo que los parches al microcódigo ayudarán a borrar los buffers del procesador, evitando que se lean los datos.

En la práctica, los investigadores demostraron en un video que los fallos se podían explotar para ver qué sitios web visitaba una persona en tiempo real, pero se podían reutilizar fácilmente para capturar contraseñas o tokens de acceso que se utilizan para iniciar sesión online de la víctima:


Compila y recorre las instrucciones en ensamblador de un programa con penguinTrace

penguinTrace es una herramienta que nos permitirá escribir código y ver cómo se ejecutan las instrucciones que lo componen. El objetivo es ayudar a las personas a comprender cómo se ejecutan los programas, o mejorar la comprensión del ensamblador.


Al escribir programas en C, es posible hacer que el compilador genere el ensamblado generado o desensamblar un binario para ver las instrucciones. Sin embargo, ver las instrucciones en forma estática no muestra el flujo a través del programa. Usando un depurador, se puede recorrer el programa, pero los depuradores proporcionan una gran cantidad de funciones y, por lo tanto, puede ser complicado mostrar las instrucciones que se están ejecutando.

La intención de penguinTrace es proporcionar una interfaz simple para compilar y recorrer un programa. También está diseñado para admitir diferentes arquitecturas, por ejemplo, ejecutarse en una Raspberry Pi (AArch64), así como en x86_64. Por esta razón, penguinTrace se ejecuta como un servidor web al que se puede conectar desde un navegador. Esto es más liviano que ejecutar un editor/depurador gráfico y significa que puede ejecutarse sin necesidad de un monitor. Tenéis más detalle aquí.

penguinTrace permite ejecutar código arbitrariamente como parte de su diseño. Por defecto, solo escuchará las conexiones desde la máquina local. Solo debe configurarse para escuchar las conexiones remotas en una red de confianza y no estar expuesto a la interfaz. Esto puede mitigarse ejecutando penguinTrace en un contenedor Docker:

docker build -t penguintrace github.com/penguintrace/penguintrace


Una vez que se construye penguinTrace, al estar integrado en un contenedor se puede ejecutar directamente así:

docker run -it -p 127.0.0.1:8080:8080 --tmpfs /tmp:exec --cap-add=SYS_PTRACE --cap-add=SYS_ADMIN --rm --security-opt apparmor=unconfined penguintrace penguintrace