Archivo

Posts Tagged ‘jok3r mission’

Herramientas de pentesting interesantes: Jok3r – Parte 2

septiembre 20, 2019 1 comentario

En el post anterior se ha comenzado a hablar de Jok3r y sus funcionalidades básicas, una herramienta que es interesante desde el punto de vista de un pentester dado que integra muchas de las herramientas de uso común en auditorías de red y web. En dicho post solamente se han mencionado los comandos básicos, el manejo de bases de datos locales y cómo instalar la herramienta utilizando la imagen oficial de Docker. Ahora, resulta conveniente ver cómo utilizar lo visto anteriormente para realizar verificaciones de seguridad sobre un entorno concreto.
El comando utilizado para realizar las verificaciones de seguridad incluidas en Jok3r es “attack” el cual recibe múltiples opciones que sirven para configurar los detalles del objetivo, añadir los resultados a una base de datos local concreta o incluso para realizar ataques a múltiples objetivos que se encuentran almacenados en alguna “mission” de Jok3r. En la configuración del ataque es posible utilizar un perfil existente en Jok3r, que tal como se ha visto en el post anterior a este, se pueden consultar con el comando “info” de la siguiente forma:

python3 jok3r.py info –attack-profiles

Opciones en el comando “attack”

A continuación se verá una lista de las opciones disponibles para el comando “attack”, las cuales hay que conocer para poder lanzar las pruebas correctamente.

Opción Descripción
-t / –target Permite especificar el objetivo del ataque. Puede ser una IP:Puerto, un nombre de dominio o una URL.
-s / –service Permite especificar un servicio concreto a auditar.
–add2db Permite añadir o actualizar los resultados obtenidos por el comando en la “mission” (base de datos local) especificada. Si no se utiliza esta opción, los resultados son añadidos/actualizados directamente en la mission “default”.
-m / –mission Permite leer una mission local y lanzar los checks de seguridad contra todos los objetivos registrados en dicha mission.
-f / –filter Filtro sobre los objetivos a los que se deben ejecutar las pruebas de seguridad. Normalmente viene acompañada de la opción “-m”. Los filtros disponibles son ip, host, port, service, url, osfamily y banner. Además, cada filtro debe venir separado por “;” y la sintaxis es “filtro=valor”. Por ejemplo:
“ip=10.1.1.0/24,10.0.0.4;port=80,8000-8100;service=http”. También es posible repetir esta opción varias veces en el mismo comando.
–new-only Realiza las pruebas de seguridad únicamente sobre los servicios que no han sido probados previamente.
–nmap-banner-grab Habilita o deshabilita un escaneo con Nmap del tipo “service detection”. Valores validos “on” y “off”
–reverse-dns Habilita o deshabilita las peticiones DNS reversas contra el objetivo. Valores validos “on” y “off”
–profile Permite ejecutar un perfil de ataque concreto.
–cat-only Permite ejecutar las pruebas de seguridad sobre las categorías especificadas únicamente. Cada categoría se indica separada por coma.
–cat-exclude Permite ejecutar las pruebas de seguridad sobre todas las categorías excepto sobre las especificadas en esta opción. Cada categoría se indica separada por coma.
–checks Permite ejecutar los checks especificados en esta opción. Cada check se indica separado por coma.
–fast Modo rápido. Desactiva la interacción con el usuario y todas las verificaciones se ejecutan en modo desatendido.
–recheck Si un check se ha ejecutado previamente, se vuelve a lanzar. Esto es útil especialmente cuando se utiliza una mission sobre la que se ha trabajado previamente e interesa que se vuelvan a realizar todas las comprobaciones.
-d Habilita el modo “debug”.
–userlist En el caso de encontrar un formulario o mecanismo de autenticación, la herramienta ejecuta un atacante por diccionario con listas que vienen incluidas en la herramienta. Con esta opción se utiliza una lista de usuarios indicada por el usuario
–passlist Con esta opción se utiliza una lista de contraseñas indicada por el usuario
–cred En el caso de que se cuente con las credenciales de un servicio concreto, en lugar de permitir que la herramienta ejecute un ataque de fuerza bruta se pueden indicar dichas credenciales en esta opción de la siguiente forma: –cred <service> <user> <pass>
–user Permite especificar un usuario concreto con el que se deberán realizar los ataques de fuerza bruta en el caso de encontrar un formulario o mecanismo de autenticación.
–option Permite especificar una opción personalizada, por ejemplo una cabecera HTTP concreta para realizar las peticiones contra un sitio web.

Conociendo las opciones, ya se puede utilizar el comando “attack” sin limitaciones. Evidentemente la forma más simple de hacerlo es contra un objetivo concreto y lanzando todas las comprobaciones. Por ejemplo:

python3 jok3r attack -t http://192.168.1.50/twiki/

La herramienta intenta obtener información sobre el servidor web utilizando “Wappalyzer” y también ejecuta un escaneo del tipo “service detection” para identificar el banner del servicio con Nmap. Al no indicar la opción “–add2db” todos los resultados serán guardados en la mission “default”.

Después de recopilar toda la información, la herramienta solicita confirmación para iniciar el ataque. Las comprobaciones pueden tardar un buen rato y en segundo plano, la herramienta se encargará de almacenar los resultados en la mission correspondiente. No obstante, dado que no se ha indicado la opción “–fast”, la herramienta pedirá confirmación antes de lanzar cualquier prueba, lo cual puede ser bastante tedioso tal como se enseña en la siguiente imagen.

El siguiente comando se encargará de lanzar todas las comprobaciones, en modo “fast” y añadiendo los resultados a la mission “adastra”.

python3 jok3r.py attack –fast -t http://192.168.1.50/twiki/

En la medida en la que se van ejecutando las pruebas, se puede apreciar la ejecución de herramientas comunes como “dirsearch”, “wig”, “nikto”, “h2t”, módulos de metasploit y scripts para la detección de vulnerabilidades en CMS, servidores de aplicación y frameworks concretos, aunque evidentemente muchas de estás comprobaciones estarán fuera de contexto dependiendo del objetivo a analizar.

Se pueden combinar todas las opciones indicadas en la tabla anterior, permitiendo ejecutar la herramienta de un modo más concreto contra el objetivo a analizar, por ejemplo.

 

#python3 jok3r.py attack -t 192.168.1.50:21 -s ftp –cat-only recon –add2db ftpmission
#python3 jok3r.py attack -m adastra -f “port=21;service=ftp” –fast #python3 #python3 jok3r.py attack -m adastra -f “port=2222;service=ssh;ip=192.168.1.1” -f “ip=192.168.1.50;service=ftp” –fast –recheck

Finalmente, cuando finalizan las comprobaciones de seguridad realizadas por la herramienta, todos los resultados se quedan almacenados en la base de datos local y a continuación se puede generar un reporte con la opción “report” del comando “db” tal como se enseña en la siguiente imagen.

Una vez se abre el reporte, se muestra cada una de las herramientas y pruebas realizadas para los hosts que se encuentran almacenados en la “mission” seleccionada. Se trata de un informe en formato HTML que está muy bien estructurado y que da una visión general de las vulnerabilidades descubiertas y la ejecución de las herramientas incluidas en el toolbox.

Bien, esto es todo sobre Jok3r, en el próximo post de esta serie hablaré sobre otra herramienta para pentesting que seguramente te resultará también muy interesante.

Un saludo y Happy Hack
Adastra.

Herramientas de pentesting interesantes: Jok3r – Parte 1

septiembre 4, 2019 Deja un comentario

Desde hace bastante tiempo he querido escribir ésta serie de artículos pero por cuestiones de tiempo no había podido. Últimamente han ido apareciendo bastantes herramientas enfocadas al pentesting/hacking para diferentes contextos, algunas de ellas realmente interesantes y que merece la pena mencionar en este blog. Es importante automatizar todo el trabajo posible para soportar el procedimiento de descubrimiento, detección y posterior explotación de vulnerabilidades, incluyendo otras actividades que en ocasiones se deben realizar directa o indirectamente como ataques de Phishing, aplicación de técnicas OSINT, traceo y seguimiento de usuarios, análisis de tráfico, desarrollo de software, etc. No obstante, como siempre he dicho, ninguna herramienta o conjunto de ellas puede sustituir el trabajo y la metodología que aplica un pentester/hacker a la hora de lanzar un plan de ataque contra un objetivo, aunque las herramientas permiten recopilar información y en algunos casos, directamente explotar vulnerabilidades, lo más común es encontrarnos entornos en donde hay unas medidas de seguridad que ya tienen en cuenta las cosas más obvias, como actualizaciones y medidas de seguridad entre otras cosas. Dicho esto, no hay que olvidar nunca que como en prácticamente cualquier trabajo relacionado con tecnología, es necesario ser muy metódico, ordenado y limpio a la hora de realizar pruebas de penetración y esto es algo que no lo aprendes lanzando todo lo que viene en Kali Linux, lo aprendes con la experiencia y conociendo exactamente qué hacen por debajo las herramientas que utilizas en tu día a día para que no te conviertas en un “Nessus con patas” que solo lanza scripts y si no reportan nada es que todo está bien. Dicho esto, comenzaré a explicar algunas herramientas libres que me ido encontrando y que de alguna manera me han venido bien para trabajos que he realizado para algunos de mis clientes.

Jok3r: https://github.com/koutto/jok3r

Se trata de una herramienta particularmente interesante ya que no “reinventa la rueda” sino que en lugar de eso, reutiliza y combina un buen conjunto de herramientas de pentesting comunes para extraer la mayor cantidad de información de manera conjunta, sin tener que estar ejecutando cada una de forma independiente. Cuando se instala Jok3r el proceso puede tardar unos minutos ya que intenta instalar todas las dependencias y librerías necesarias por los proyectos que intenta combinar. También es posible instalar Jok3r desde su imagen oficial de Docker, una forma cómoda y rápida de tener la herramienta preparada para su uso.

Tal como se indica en el “README” del proyecto, cuenta con algunas características que la convierten en una herramienta muy interesante:

* Integración con más de 50 herramientas de pentesting comunes.

* Configuración sencilla, es posible eliminar o añadir herramientas con un simple fichero de configuración.

* Soporte a múltiples servicios de red basados en TCP y UDP, tales como HTTP, SSH, FTP, DNS, VNC, PostgreSQL, MySQL, etc.

* Se encarga de verificar el objetivo y seleccionar de forma automática las herramientas que puedan arrojar mejores resultados de acuerdo al contexto. Por ejemplo, en el caso de una aplicación web habilitará las herramientas relacionadas con pentesting en entornos web.

* Es capaz de detectar versiones y banners de productos específicos, para posteriormente compararlos con bases de datos CVE online, concretamente tirando de CVE Details y Vulners.

* Es capaz de realizar la explotación automática de algunas vulnerabilidades.

* Es capaz de realizar comprobaciones en CMS para detectar complementos o vulnerabilidades conocidas en Joomla, Drupal, WordPress, entre otros.

* Todos los resultados encontrados por la herramienta se van almacenando localmente en una base de datos y cuenta con algunas funcionalidades de reporting y gestión de resultados de forma independiente para cada auditoría realizada.

Bien, una vez visto el potencial de la herramienta lo siguiente es instalarla y usarla. Tal como se indica en las instrucciones de instalación del proyecto, la forma recomendada de hacerlo es utilizando la imagen Docker oficial, de esta forma no será necesario instalar dependencias directamente en el sistema host (son unas cuantas). No obstante, también se puede instalar directamente desde código fuente fácilmente, ya que cuenta con un script de instalación llamado “install_all.sh” que se encarga de dejarlo todo preparado para que sea posible utilizar la herramienta sin mayores dificultades. Basta simplemente con descargar la imagen y crear un nuevo contenedor, de la siguiente manera:

#sudo docker pull koutto/jok3r

#sudo docker run -i -t --name jok3r-container -w /home/adastra/jok3r -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --shm-size 2g --net=host koutto/jok3r

Las opciones “-w”, “-e”, “-v” y “–shm-size” son utilizadas para evitar problemas de memoria en el contenedor, así como para utilizar herramientas con una GUI como por ejemplo un navegador web. Con “–net” en Docker se especifica el modo de red, en este caso es compartido con el fin de que tanto anfitrión como contenedor se puedan ver y sea posible crear conexiones reversas.

Luego, para poder detener y volver a levantar el contenedor, se puede utilizar el comando “sudo docker start -i jok3r-container”

Una vez levantado el contenedor, es necesario dirigirse a la ruta “~/jok3r” que es donde se encuentra el script “jok3r.py”. Para ver las herramientas que se encuentran instaladas se debe ejecutar el comando:

#python3 jok3r.py toolbox --show-all

En el caso de la imagen Docker, se podrá ver que están todas las herramientas instaladas, luego para la gestión de las mismas, se pueden ejecutar los siguientes comandos:

Instalar todas las herramientas disponibles (algo que ya viene en la imagen de Docker).
#python3 jok3r.py toolbox --install-all --fast

Actualizar todas las herramientas sin realizar preguntas, todo sí y adelante. 
#python3 jok3r.py toolbox --update-all --fast
Desinstalar todas las herramientas.
#python3 jok3r.py toolbox --uninstall-all --fast
Desinstalar una herramienta concreta.
#python3 jok3r.py toolbox --uninstall-tool nombre_herramienta
Desinstalar un servicio concreto y las herramientas asociadas.
#python3 jok3r.py toolbox --uninstall nombre_servicio

Además del comando “toolbox” existen otros que permiten realizar verificaciones, ataques y ver el estado de la base de datos local.

Comando de información para los perfiles, servicios y productos.

El comando “info” permite ver qué perfiles se encuentran habilitados en la herramienta, las pruebas de seguridad que se aplican sobre cada protocolo soportado e información de los productos de software que se encuentran registrados en la herramienta. Tal como se ha visto antes con el comando “toolbox” hay una serie de opciones que permiten interactuar con éste comando.

Como se puede apreciar, el comando “info” soporta algunas opciones simples que permiten ver qué cosas puede hacer jok3r contra un objetivo determinado y otros detalles informativos que pueden ser útiles. Se puede ejecutar la herramienta de la siguiente manera.

#python3 jok3r.py info –services

Enseña una tabla con los servicios, puertos por defecto de cada servicio, herramientas asociadas y número de checks que realizará Jok3r sobre dicho servicio.

#python3 jok3r.py info --checks <servicio>

Enseña una tabla con el nombre de cada una de las comprobaciones disponibles para el servicio indicado, así como la categoría del chequeo y la herramienta empleada para ejecutarlo.

#python3 jok3r.py info –products

Enseña una lista de servicios disponibles y los diferentes tipos de productos que implementa dicho servicio, por ejemplo, para un servidor web, el producto puede ser Apache, Nginx, IIS, etc.

#python3 jok3r.py info –attack-profiles

Enseña una tabla con los perfiles de ataque disponibles, los cuales simplemente se encargan de agrupar varios checks y herramientas en un contexto concreto, por ejemplo para realizar comprobaciones sobre un CMS.

Base de datos local en Jok3r.

Antes de realizar cualquier tipo de auditoría de seguridad, en Jok3r se almacena todo en diferentes espacios de trabajo, de tal manera que cada auditoría y sus resultados correspondientes, se encuentran almacenados de forma persistente en contextos separados, esto es similar a lo que hay en Metasploit Framework cuando se utiliza el comando “workspace” desde msfconsole. El comando “db” es el encargado de definir misiones, las cuales son simplemente el contexto de una auditoría y partiendo de dichas misiones ejecutar pruebas de seguridad contra los objetivos indicados, los resultados quedarán almacenados en dicha misión.

Para crear una misión basta con ejecutar el comando “mission” tal como se aprecia en la imagen anterior.

Tal como se puede apreciar, el comando “mission” sirve para gestionar las misiones en Jok3r y además, al crear una nueva misión automáticamente cambia el contexto y ubica al usuario en la misión que se acaba de crear. Para moverse entre las diferentes misiones previamente creadas, se ejecuta el comando “mission <nombre>” y la herramienta se encargará de cambiar el contexto y apuntar a la misión indicada.

De momento esto es suficiente para ver las funcionalidades básicas de la herramienta, en el siguiente post se profundizará en su uso a la hora de ejecutar pruebas para auditorías de seguridad.

Un saludo y Happy Hack

Adastra.

A %d blogueros les gusta esto: