vCenterHound: mapeando VMware vCenter en BloodHound

En entornos corporativos, VMware vCenter suele ser un punto crítico: centraliza la gestión de clusters, ESXi, VMs, datastores, redes y, por supuesto, permisos. Ahora imagina poder exportar toda esa info y visualizarla en BloodHound como si fueran relaciones de Active Directory… Eso es exactamente lo que hace la herramienta que os traemos hoy: vCenterHound.

¿Qué es lo que hace? Pues básicamente se conecta a uno o varios servidores vCenter; extrae infraestructura: datacenters, clusters, ESXi, VMs, datastores, redes, carpetas; extrae permisos y roles: usuarios, grupos, roles, privilegios, asignaciones; y genera un JSON compatible con BloodHound (con nodos y edges personalizados). El resultado: puedes navegar tu entorno VMware en BloodHound como si fuera un bosque de AD, encontrando caminos de ataque y privilegios ocultos.

Instalación rápida

Necesitas Python ≥ 3.8 y algunas librerías:

git clone https://github.com/MorDavid/vCenterHound
cd vCenterHound
pip3 install pyvmomi requestscd vCenterHound

Uso

1. Cargar el modelo visual en BloodHound

Antes de exportar, hay que decirle a BloodHound cómo se verán los nuevos nodos/edges:

python update_custom_nodes_to_bloodhound.py \
  -s https://bloodhound.tuempresa.local \
  -u admin@domain.com -p 'TuPassword123' \
  -m model.json  -s https://bloodhound.tuempresa.local \

Esto añade iconos y definiciones para los objetos VMware.

2. Extraer datos de vCenter

Conexión a un vCenter:

python vCenterHound.py -s vc.empresa.local -u administrator@vsphere.local -p 'TuPassword123'

Múltiples vCenters:

python vCenterHound.py -s vc1.local,vc2.local -u admin -p 'pass123'

Exportar con nombre propio:

python vCenterHound.py -s vc.local -u admin -p 'pass123' -o vmware_bloodhound.json

Si quieres más ruido en consola:

python vCenterHound.py -s vc.local -u admin -p 'pass123' --verbose

¿Qué nodos crea?

Algunos ejemplos de nodos que verás en BloodHound:

  • vCenter_Datacenter
  • vCenter_Cluster
  • vCenter_ESXiHost (con modelo, RAM, CPU, estado…)
  • vCenter_VM (con IPs, MAC, VMware Tools, snapshot info…)
  • vCenter_User / vCenter_Group
  • vCenter_Role / vCenter_Privilege

Y las relaciones (edges) más jugosas:

  • vCenter_Hosts: un ESXi → sus VMs
  • vCenter_UsesDatastore: VM → Datastore
  • vCenter_UsesNetwork: VM → Network
  • vCenter_HasPermission: User/Group → Objeto (con detalles del rol)
  • vCenter_MemberOf: pertenencia entre grupos

Conclusiones

Imagina que tienes un usuario con un rol aparentemente inocente sobre un datacenter. En BloodHound podrás trazar: Usuario → Rol → Privilegios → Datacenter → ESXi → VM crítica, y descubrir que realmente puede encadenar acciones para llegar a un dominio crítico.

En definitiva, si trabajas en red team, pentesting interno o simplemente administras entornos VMware y quieres entender de verdad qué usuarios tienen poder sobre qué recursos… vCenterHound + BloodHound es tu nueva combinación favorita.

Tip final: no olvides lanzar SharpHound en paralelo para juntar datos de AD y luego ver cómo se cruzan con lo que vCenterHound exporta. Los caminos de ataque multi-silo son brutales.

Proyectohttps://github.com/MorDavid/vCenterHound

Comentarios