Análisis de vulnerabilidades en contenedores Docker con Dagda

Dagda es una herramienta de código abierto, escrita en Python para realizar análisis estáticos de vulnerabilidades conocidas en imágenes/contenedores de Docker.

También ayuda a monitorizar los contenedores Docker en ejecución para detectar actividades anómalas. Para ello, recupera información sobre el software instalado en la imagen de Docker, como los paquetes del sistema operativo, las dependencias, los módulos, etc. y los compara con una base de datos de vulnerabilidades. Esta base de datos se crea combinando datos de fuentes de vulnerabilidades como NVD, SecurityFocus BID & Exploit-DB en una base de datos MongoDB. La base de datos también almacena sus "análisis" de análisis estáticos ​​realizados en las imágenes de Docker y su resultado durante una duración que se especifique.

Dagda soporta múltiples imágenes Docker en distribuciones:
  •     Red Hat / CentOS / Fedora
  •     Debian / Ubuntu
  •     OpenSUSE
  •     Alpine Linux
El motor base Dagda es una mezcla de OWASP Dependency Check y Retire.js. Presumiblemente, puede analizar dependencias de Java, Python, NodeJS, Java Script, Ruby y PHP. Para el análisis de comportamiento, Dagda se integra con Sysdig Falco y requiere lo siguiente para ser instalado:

  •     Python3.4.5 o posterior
  •     MongoDB 2.4 o posterior
  •     Docker
  •     Pip3
    •         PyMongo
    •         Requests
    •         Python-dateutil
    •         Joblib
    •         Docker-py
    •         Flask
    •         Flask-cors
    •         PyYAML

Todos los aspectos de esta herramienta pueden ser también controlados a través de la REST-API. La CLI de Dagda utiliza la API REST para acceder a Dagda.

Uso de Dagda:

Después de la instalación, simplemente ejecuta lo siguiente desde la línea de comandos:

Python3 dagda.py check --docker_image DOCKER_IMAGENAME

Si todo está Ok devuelve un ID de exploración, que luego utiliza para recuperar los informes de análisis. ¿Cómo? Así:

Python3 dagda.py history DOCKER_IMAGENAME --id SCANID

Descargar Dagda:

Puedes descargar Dagda 0.5.0 aquí.

Proyecto: https://github.com/eliasgranderubio/dagda

Libros: Red & Blue Team Field Manual (RTFM) (BTFM)

Hace tiempo que no hacíamos un post para hablaros de algún libro así que hoy lo haremos por partida doble con los títulos Red Team Field Manual (RTFM) de Ben Clark publicado en 2013 y su casi homónimo Blue Team Field Manual (BTFM) de Alan J. White y también con Ben Clark como colaborador, lanzado a principios de este año 2017.

Red Team ó Blue Team... tú eliges
El primero es una pequeña guía de referencia dirigida a los miembros de un Red Team. Contiene la sintaxis básica para un montón de comandos de Linux y Windows, pero también contiene casos de uso únicos para herramientas poderosas como Python y Windows PowerShell y para realizar muchas otras tareas que comúnmente lleva a cabo un equipo de hacking ético en base de datos, web, wireless, etc. Nada de teoría, sólo práctica :)

El segundo dirigido al Blue Team es una Guía de Respuesta a Incidentes de Ciberseguridad que se alinea con el Marco de Ciberseguridad del NIST que consiste en las cinco funciones principales de Identificar, Proteger, Detectar, Responder y Recuperar, proporcionando los pasos tácticos a seguir y los comandos a utilizar para prepararse, afrontar y recuperarse de un incidente de seguridad.

Ambos se presentan como pequeños libros de consulta (de 95 y 143 páginas respectivamente) para tener a mano los comandos necesarios por si por ejemplo falla la conexión en Internet y no puedes "googlear" en ese momento. Hoy en día es difícil pero quién sabe... además podemos encontrar ambos en Amazon a un precio bastante asequible (6,16€ y 14,60€) así que nunca está de más hacerles un hueco en nuestra biblioteca personal, aunque sea por postureo ;)

"Esta es tu última oportunidad. Después de esto, no hay vuelta atrás. Toma la píldora azul: el cuento termina, despiertas en tu cama y creerás lo que quieras creer. Toma la píldora roja: permaneces en el país de las maravillas y te mostraré qué tan profundo llega el agujero del conejo. Recuerda, todo lo que estoy ofreciendo es la verdad, nada más."

RTFM: https://www.amazon.es/Rtfm-Red-Team-Field-Manual/dp/1494295504
BTFM: https://www.amazon.es/Blue-Team-Field-Manual-BTFM/dp/154101636X

[Pentesterlab write-up] Web For Pentester I - File upload. LDAP & XML attacks

Llegamos a la última entrada de los solucionarios de “Web for pentester I” de Pentesterlab, que más que un lab ha sido un didáctico viaje por las vulnerabilidades web más comunes, permitiendo un buen entendimiento de las mismas comparando cada explotación (payload) con el código PHP vulnerable del servidor.

Así que vamos a cerrar esta serie de cinco entradas con los ejercicios correspondientes a las vulnerabilidades que nos quedaban pendientes: subida de archivos y ataques LDAP y XML.


FILE UPLOAD

La posibilidad de subir archivos es un requisito funcional en muchas aplicaciones web, pero también un riesgo significante para la misma.

Desde el prisma del atacante, encontrar un formulario para subir archivos es una buena noticia porque puede suponer la puerta para introducir código malicioso ejecutable tanto en el servidor como en el cliente.

Por ejemplo, cualquier carencia o fallo en la verificación del tipo de contenido (content-type), de la extensión del fichero o de la imagen subidos puede suponer la introducción de una web shell que comprometa por completo al servidor y a los usuarios que lo visitan.

Ejercicio 1

Normalmente para implementar la subida de archivos bastará un sencillo código con una parte en HTML para crear una interfaz de usuario que permite al usuario elegir qué archivo cargar, y otra parte con un script PHP que contiene el código que maneja la solicitud para cargar el archivo seleccionado.

En el primer ejercicio no hay restricciones en el tipo de archivos permitidos para la subida. Por lo tanto, un atacante puede cargar un archivo con una shell en PHP (u otro código malicioso) que puede conducir al control total del servidor. 

SERVIDOR
<?php require_once('../header.php'); ?>


<?php
if(isset($_FILES['image']))
{ 
  $dir = '/var/www/upload/images/';
  $file = basename($_FILES['image']['name']);
  if(move_uploaded_file($_FILES['image']['tmp_name'], $dir. $file))
  {
  echo "Upload done";
  echo "Your file can be found <a href=\"/upload/images/".htmlentities($file)."\">here</a>";
  }
  else 
  { 
      echo 'Upload failed';
  }
}
?>


<form method="POST" action="example1.php" enctype="multipart/form-data">    
Mon image : <input type="file" name="image"><br/>
<input type="submit" name="send" value="Send file">

</form> 


<?php require_once('../footer.php'); ?>

Para la PoC basta con subir un simple código php con la función phpinfo:

PAYLOAD
echo "<?php phpinfo(); ?>" > phpinfo.php

¡No dejes que obtengan tu IP fácilmente!

Recientemente hemos visto en nuestro grupo de Telegram un enlace acortado que redireccionaba a un sitio destinado a la obtención y el seguimiento de la IP del visitante: hablamos de un IP tracker/logger. Y bueno, sirva ésto para que hagamos primero un pequeño ejercicio para preguntarnos cuál es el grado de la importancia de mostrar u ocultar nuestra IP pública en Internet...


En España el Tribunal Supremo confirmó en la Sentencia del 3 de octubre de 2014 que las “direcciones IP son datos de carácter personal” y, por tanto, sujetas a la protección de la Ley Orgánica de Protección de Datos (LOPD). Por otro lado, el Reglamento (UE) 2016/679 del Parlamento Europeo y del Consejo, aprobado en abril de 2016 y que entrará en vigor en 2018, reconoce que "Las personas físicas pueden ser asociadas a identificadores en línea facilitados por sus dispositivos, aplicaciones, herramientas y protocolos, como direcciones de los protocolos de Internet, identificadores de sesión en forma de «cookies» u otros identificadores, como etiquetas de identificación por radiofrecuencia. Esto puede dejar huellas que, en particular, al ser combinadas con identificadores únicos y otros datos recibidos por los servidores, pueden ser utilizadas para elaborar perfiles de las personas físicas e identificarlas”.


Por lo tanto, una IP no es "simplemente una IP", parece lo suficientemente importante, ¿verdad? Y es que como se suscribe arriba mediante ella y en combinación con otras "huellas" digitales es posible identificar a una persona física. De hecho, ya de por sí sola ofrece la posibilidad de un detalle en la geolocalización impresionante. Todo aquello hace que una dirección IP sea lo suficientemente importante para que un tercero se preocupe en obtenerla, etiquetarla y almacenarla...

JSShell, una webshell multiusuario escrita en python/flask (servidor) y js/html (cliente)

JSShell de Daniel Abeles es una webshell multiusuario con una parte servidor escrita en Python con Flask y otra cliente en Javascript y HTML. Aunque inicialmente se creó para debuggear navegadores algo "exóticos", puede utilizarse para otros propósitos, siempre baja la responsabilidad y riesgo de cada uno.

Instalación

Se recomienda usar un entorno virtual y python 3.6. aunque versiones anteriores funcionan también bien:

pyenv virtualenv -p python3.6 venv
pyenv activate venv

virtualenv -p python3.6 venv
source venv/bin/activate


Para ambos:

pip install -r requirements.txt

Características

- Multicliente
- Soporta objetos DOM cyclic
- Scripts Pre flight
- Command queue
- Command Context

Moscowc0n: una conferencia de hacking de Rusia.. ¡en español! (Московская хакерская конференция на испанском языке)

Creo que ya hemos comentado en alguna ocasión la buena noticia de la proliferación de conferencias de hacking con ponentes hispanohablantes, pero hasta ahora lo normal era que se hicieran en España y en Latinoamérica. Por eso me sorprendió mucho Moscowc0n, el primer evento de hacking de Rusia ¡en español! Sí... habéis leído bien... una oportunidad de presenciar ponencias en castellano en el gélido Moscú, unas de las "capitales" mundiales del hacking de siempre y una oportunidad de intercambiar esta cultura underground tan lejana y a la vez tan cercana.

Y es que trasladarse tan lejos convierte este evento en una auténtica expedición, la fecha será el 2, 3 y 4 de junio de 2017 en los que evidentemente no puede dejarse escapar la ocasión de realizar también un poco de turismo/cata de vodkas:

Junio 2017
Viernes 2: Visitas guiadas & turismo
Sábado 3: Charlas & Networking
Domingo 4: Visitas guiadas & turismo

https://moscowc0n.com/
https://twitter.com/MoscowC0n

 La asistencia es gratuita, los 10 ponentes anunciados por el momento prometen (con Monica Valle como presentadora) y el escenario es idílico, así que si te puedes rascar el bolsillo y pagarte el viaje seguramente será sin duda un fin de semana inolvidable!

[Pentesterlab write-up] Web For Pentester I - Code & Commands Injection

Damos un pasito más, ya casi terminando el lab “Web for pentester I” de Pentesterlab, esta vez realizando los ejercicios correspondientes a las vulnerabilidades de inyección de código e inyección de comandos.


Cuando hablamos de inyección de comandos el objetivo es la ejecución de comandos (valga la redundancia) en el sistema operativo del host a través de la aplicación vulnerable, la cual se realiza con los privilegios del usuario de la aplicación. En el caso de inyección de código el atacante puede agregar su propio código que luego es ejecutado por la aplicación. Digamos que en “Code Injection” el atacante amplía la funcionalidad por defecto de la aplicación sin necesidad de ejecutar comandos del sistema, aunque también puede hacerlo utilizando las funciones correspondientes del lenguaje de programación utilizado (por ej. system en php).

Ambas pueden explotarse cuando una aplicación no filtra (o lo hace de forma incorrecta) los datos introducidos por el usuario (formularios, cookies, cabeceras HTTP, etc.).

CODE INJECTION

Ejercicio 1:

En el primer ejemplo vemos que el desarrollador ha usado la función eval para ejecutar lo que pasas como parámetro como una línea de código php y... bueno muchos dicen que "eval is evil" y al no filtrar la entrada antes podemos simplemente concatenar otro comando con un simple punto (".") y usar # para comentar el resto del código:

SERVIDOR
<?php
$str="echo \"Hello ".$_GET['name']."!!!\";";

eval($str);
?>

PAYLOAD
http://pentesterlab/codeexec/example1.php?name=hacker%22.system(%27hostname%27)%3B%23

Decoded: hacker".system('hostname');#

Charla sobre "Introducción a: Code Injection, Hooking y Reversing"

Desde Hackplayers queremos invitaros al curso/charla online sobre "Introducción a: Code Injection, Hooking y Reversing" totalmente gratuito, en el cual se tocarán los siguientes temas:

     - PE Container (exe,dll,wtf...) (x86/x64, code, sections, resources, imports, exports)
     - Packers, depackers.
     - ASM Bytecode.
     - Reversing 101: IDA + Sublime text sample.
     - Injecting codes (methods, known dlls, threading, wndproc stealing)
     - Winmine menu sample: WinApi, Value editing, Function calling, Hooking.
     - Winmine sudoku sample: WinApi, Hooking next level.
     - Shitfest, .net java juegos.
     - Y algunas cosas más...

El curso/charla impartido por el ponente Pabloko, se dará a un grupo muy reducido de personas que serán escogidas aleatoriamente de entre todas las inscripciones y podrán interactuar con el ponente en directo. En el caso de no ser escogidos para formar parte de dicho grupo, no tienes que preocuparte, nos encargaremos de realizar un streaming desde el canal de YouTube de Hackplayers para que podáis seguir la charla en directo.

· ¿CÓMO INSCRIBIRSE?

Los interesados deberán mandar un email a: cursocharla.hackplayers@gmail.com. El email deberá llevar como asunto "Curso/Charla Hackplayers por Pabloko", también en el email se deberá escribir el nombre de usuario en el foro de Hackplayers, el nombre de usuario en Telegram (opcional) y responder a la pregunta: ¿Por qué te gustaría participar en el curso/charla "Introducción a: Code Inyection, Hooking y Reversing"?.

Entre todas las inscripciones se realizará un sorteo totalmente aleatorio. Los ganadores serán notificados por email y deberán confirmar su asistencia en menos de 12 horas. En el caso de no confirmarse la asistencia se volverá a realizar el sorteo para ocupar las plazas vacantes.

La fecha limite de inscripción es 14/03/2017 a las 20:00 hora española.

· HORARIO

El curso/charla se realizará realizó el día 16 de marzo a las 22:00 horas.
Para cualquier duda no dudéis en consultarnos a través de nuestras RRSS.

· VIDEO

¡Actualización!  ya tenéis el video subido a: https://youtu.be/7CpQ_lPIv6s

Cómo crear de un paquete .deb

Bueno como todos sabemos la creación de un paquete .deb es bastante sencilla , ¿o no? Depende de cómo lo miremos. He estado viendo muchos tutoriales en Internet y me he adentrado un poco en este mundillo.

Lo primero y antes de empezar nos haremos la siguiente pregunta:

¿Qué es un paquete .deb?


Sabiendo esta premisa, podemos continuar. Vamos a tomar como ejemplo 4nonimizer para poder crear un paquete .deb autoinstalable del mismo.

Lo descargamos de https://github.com/Hackplayers/4nonimizer.git y una vez tenemos la carpeta con todo el contenido de 4nonimizer procedemos a crear la jerarquía de directorios donde queremos que se aloje 4nonimizer, es decir, si queremos que se descomprima e instale en /opt/ crearemos una carpeta que llamaremos deb y dentro de ella /opt/ y dentro de la misma meteremos 4nonimizer :


Protégete contra dispositivos USB maliciosos como BadUSB con USG (el "firewall para USB")

USG es un dongle hardware que se puede usar entre el puerto USB del ordenador y dispositivos USB no confiables: sólo pasará un conjunto limitado de instrucciones y datos entre los dos, sin incluir las instrucciones utilizadas para activar BadUSB.


Esto tiene limitaciones como que el USG sólo soporta algunas clases de dispositivos (flash drives, teclados y ratones) aunque está planeado incluir más en futuras actualizaciones de firmware - aún así, en cualquier caso supera al enfoque del USB Condom que hacía el puerto USB inútil para todo excepto la carga.
 

Los dongles de hardware de código abierto son construidos a mano por Robert Fisk en Nueva Zelanda, pero puedes descargar los planos y construir los tuyos si no confías:

Proyecto: https://github.com/robertfisk/USG
Wiki: https://github.com/robertfisk/USG/wiki/

Más info:
Technical Details for the Curious
Firmware Development Environment
LED Diagnostics