This page looks best with JavaScript enabled

Bloodhound I - Que es? Instalación de Neo4j, Bloodhound e Ingestors

 ·   6 min read  ·  Autor - Snifer

Cuando deseamos realizar el reconocimiento a un Active Directory este proceso puede ser realizado a través de Powershell haciendo uso de módulos para este propósito o por defecto realizando consultas al dominio por ejemplo net user /domain dependiendo de como lleguemos a interactuar, adicional a ello tenemos la herramienta Bloodhound y sus ingestors cuyo objetivo principal es realizar un mapeo de la red para identificar todos los recursos de un dominio.

BloodHound Primeros Pasos SniferL4bs

También contamos con otras herramientas que nos permite realizar este proceso de enumeración como ser:

Estas dos herramientas son las más conocidas para un proceso de enumeración evidentemente contamos con otras utilidades para hacer un escalamiento de privilegios pero esto lo veremos en próximas entradas incluyendo el uso de ***PowerView ***y ADModule.

Que es Bloodhound

Bloodhound es una herramienta visor gráfico que tiene como objetivo realizar un mapeo de todas las relaciones, configuraciones en un Dominio de Windows siendo utilizando tanto del lado del atacante para identificar las rutas que pueden ser complejas para identificar, falencias de configuración de usuarios y políticas. Contando lo mismo para los administradores identificando y posteriormente hardenizar sus configuraciones.

Fue desarrollado por @_wald0, @CptJesus, y @harmj0y. realizada bajo electrón con una base de datos Neo4j la cual consumen los datos obtenidos de los Ingestors, los cuales veremos despues las diferentes opciones que contamos.

Algunas preguntas o resultados que nos permite obtener Bloodhound son la siguientes.

  • ¿Quien es Administrador?
  • ¿Donde inicio sesión el usuario Privilegiado?
  • ¿Quienes son Administradores de Dominio?
  • ¿Que grupos privilegiados existen?
  • ¿Que directores tienen control sobre objectos?

Instalación de Neo4j

Para la instalación podremos realizarlo instalando todo el entorno de neo4j según tu distribución y entorno que manejes en lo personal recomiendo el uso de Docker.

Neo4j en Kali

Para los que andan utilizando Kali como sistema, el proceso de instalación basta con ejecutar el siguiente comando.

1
sudo apt install bloodhound neo4j

Y tendrán el entorno armado de forma rápida este proceso llega a ser el mas rápido pero necesitamos contar con un entorno armado, podremos decir lo bueno y lo malo pero como siempre gustos y colores de cada uno.

Creo y no estoy seguro que en Parrot y otras distribuciones de pentesting del mismo modo tenemos el entorno de forma rápida.

Neo4j en Docker

En este caso particular prefiero siempre hacer uso de Docker por todas las dependencias que lleva tenerlo funcional neo4j solo una vez, pude hacerlo funcionar en una máquina que no este con los repositorios de Kali.

Neo4j Docker

1
2
docker pull neo4j
docker run -p 7474:7474 -p 7687:7687 neo4j

Neo4j Ejecución

Una vez termine la descarga y levante el contenedor tenemos en el http://localhost:7474/browser/ el servicio levantado al acceder los credenciales iniciales por defecto son neo4j:neo4j, realizando el cambio inicial de los credenciales.

Neo4j Interfaz

Instalación de Bloodhound

Para contar con Bloodhound solo requerimos descargar el binario (cliente) que será ejecutado en nuestro equipo y será la interfaz para autenticarnos para ello nos dirigimos a descarga el binario compilado desde github Bloodhound.

Contamos con las siguientes arquitecturas disponibles hasta la fecha Agosto del 2021 esta en la versión 4.0.3, recuerda visitar el portal para utilizar la última versión.

Despues de descomprimir el fichero contamos con el binario Bloodhound.

Binario BloodHound

Inicializamos Bloodhound con el siguiente comando.

1
./Bloodhound

Inicializamos la interfaz y lo que tenemos que tener en cuenta es el check que nos confirma la conexión con Neo4j.

BloodHound Login

Al ingresar el usuario y contraseña configurada en el paso anterior tendremos la siguiente vista.

Vista de BloodHound

Inicialmente no contamos con ningun dato siendo este totalmente vacio, para ello requerimos ejecutar los ingestors que nos brindaran ficheros .json con la información del dominio, que solo necesitamos hacer un drag & drop, o realizar la subida de los ficheros dirigiendonos al lado derecho en el icono de Upload Data

Ejemplos de ficheros JSON generados por los Ingestors.

Datos generados

La subida de los ficheros cuando obtengas los datos es la siguiente:

Subida de ficheros Json

Ingestors de Bloodhound

Para obtener la información de un dominio requerimos hacer uso de algunas utilidades conocidas como ingestors en esta entrada veremos la instalación de los mismos, y en una siguiente la ejecución y comandos básicos para obtener la información, los que tendremos en esta entrada son los más conocidos dejando de lado las implementaciones que existen coom ser la de Crackmapexec o Empire Framework.

Powershell

El ingestior de Powershell se encuentra disponible en el repositorio de Bloodhound permitiendo ejecutarlo desde Powershell, contando con la versatilidad de integración con diferentes herramientas, una vez lo descargamos en el equipo y procedemos a realizar lo siguiente.

1
2
Import-Module Sharphound.ps1
Invoke-BloodHound

Generando con ello nuestro fichero zip con los datos a ser utilizados en Bloodhound.

Binario C# SharpHound

Esta implementación fue escrita en .NET 4.5 por lo tanto requerimos contar con ello en el equipo donde ejecutamos, este es una nueva versión debido a que con Powershell se tenia el problema de tiempo por lo cual se implemento en C# contando con la ultima versión SharpHound3.

La ejecución del binario podemos hacerlo dando doble click, o por medio de argumentos.

Python

En este caso particular no necesitamos contar con un equipo de Windows para la ejecución y obtener los datos para visualizar en Bloodhound desde un equipo Linux con la herramienta bloodhound-python.

BloodHound Python

Para la instalación tenemos dos opciones usar PIP o descargar el repositorio y compilarlo tendremos ambas opciones, les recomiendo que hagan uso de Python 3 para este proceso por lo tanto pip del mismo modo.

Instalación desde PIP
pip install bloodhound-python
Compilando desde Github.

Para la compilación desde Github procedemos a descargar el ultimo release, luego de descargarlo procedemos a descomprimir y accedemos al directorio ejecutando el siguiente comando.

1
python setup.py install
Ejecutar desde Docker

Debido a que varios usamos docker tenemos tambien la opción de contar con Bloodhound-python desde Docker, al descargar el ultimo release contaremos con el Dockerfile para ello y tener persistencia de los datos debemos de hacer lo siguiente.

1
2
docker build -t bloodhound .
docker run -v ${PWD}:/bloodhound-data -it bloodhound

Un punto a tener en cuenta es que no tenemos toda la compatibilidad que llegamos a contar con el Ingestors de Powershell o .net mira las limitaciones que especifican en el repositorio.

Azure

Tambien se encuentra disponible el Ingestor para la infraestructura de Azure. Para este punto necesito en lo personal realizar algunas pruebas de concepto, y conocer un poco más en próximas entradas tendremos las referencias necesarias para todo aquel que desee conocer un poco más.

Fuentes adicionales

Por si deseamos conocer un poco mas tenemos el siguiente material DogWhisper Handbook donde nos permiten conocer un poco más a fondo la herrramienta

El contenido que nos brinda el documento es el siguiente:

  1. Concepto de BloodHound y evolución de la herramienta.
  2. Instalación de BloodHound e interfaz de usuario.
  3. Recopilación de datos e ingesta.
  4. Cypher básico y consultas comunes.
  5. Cypher avanzado y manipulación de DB.
  6. API REST

Necesitas datos de prueba para trabajar con Bloodhound y/o conocer la herramienta y no cuentas con un Active Directory, puedes hacer uso de los siguientes datos para alimentarlo desde neo4j Neo4j Ejemplos DB

En próximas entradas estaremos explicando el uso de las herramientas desde Powershell, Binario en .net, Pyhon. Además de ver algunas utilidades que nos permitirán realizar algunas tareas con Bloodhound, esta entrada viene en adición a la serie de Active Directory donde puedes montar tu propio laboratorio y ejecutar en el Bloodhound.

Regards,
Snifer

Share on
Support the author with

Avatar
WRITTEN BY
Snifer
Creador del proyecto Snifer@L4b's. Consultor en Seguridad Informática.