Sangre Cheat Sheet¶
Sinopsis¶
BloodHound es una herramienta de código abierto que utiliza la teoría del gráfico para revelar relaciones ocultas y a menudo no deseadas dentro de un entorno Active Directory (AD). Ayuda a los profesionales de seguridad a identificar caminos complejos de ataque que de otro modo serían imposibles de encontrar manualmente. BloodHound consta de dos componentes principales:
- SharpHound El recopilador de datos que reúne información de Active Directory
- BloodHound GUI: La interfaz gráfica que visualiza y analiza los datos recogidos
Instalación¶
Windows¶
Instalación Neo4j¶
# Download Neo4j from https://neo4j.com/download/
# Extract the ZIP file
# Open command prompt as administrator
cd C:\path\to\neo4j\bin
neo4j.bat install-service
neo4j.bat start
Instalación de sangre¶
# Download BloodHound from https://github.com/BloodHoundAD/BloodHound/releases
# Extract the ZIP file
# Run BloodHound.exe
Linux (Kali)¶
sudo apt update
sudo apt install bloodhound neo4j
# Start Neo4j service
sudo neo4j start
# Launch BloodHound
bloodhound
macOS¶
# Install Homebrew if not already installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Neo4j and BloodHound
brew install neo4j bloodhound
# Start Neo4j service
brew services start neo4j
# Launch BloodHound
bloodhound
BloodHound Community Edition (Docker)¶
# Install BloodHound CLI
curl -L https://github.com/SpecterOps/BloodHound/releases/latest/download/bloodhound-cli-linux-amd64 -o bloodhound-cli
chmod +x bloodhound-cli
sudo mv bloodhound-cli /usr/local/bin/
# Deploy BloodHound CE
bloodhound-cli deploy
Data Collection¶
SharpHound (Windows Executable)¶
Colección básica¶
# Download SharpHound
Invoke-WebRequest -Uri https://github.com/BloodHoundAD/SharpHound/releases/latest/download/SharpHound.exe -OutFile SharpHound.exe
# Run SharpHound with default collection methods
.\SharpHound.exe --CollectionMethods All
Métodos de recogida¶
Method | Description |
---|---|
All |
Collect all data |
Group |
Collect group membership information |
LocalGroup |
Collect local admin information |
GPOLocalGroup |
Collect local admin information via GPO |
Session |
Collect session information |
LoggedOn |
Collect logged-on user information |
Trusts |
Collect domain trust information |
ACL |
Collect ACL information |
Container |
Collect container information |
RDP |
Collect Remote Desktop Users information |
ObjectProps |
Collect object properties |
DCOM |
Collect DCOM information |
SPNTargets |
Collect Service Principal Name information |
PSRemote |
Collect PowerShell Remoting information |
Opciones de colección avanzada¶
# Collect specific data types
.\SharpHound.exe --CollectionMethods Group,LocalGroup,Session,ACL
# Collect data with stealth options (slower but less noisy)
.\SharpHound.exe --CollectionMethods All --Stealth
# Collect data from specific domain
.\SharpHound.exe --CollectionMethods All --Domain example.com
# Collect data with LDAP filtering
.\SharpHound.exe --CollectionMethods All --LdapFilter "(objectClass=user)"
# Collect data from specific OU
.\SharpHound.exe --CollectionMethods All --SearchBase "OU=Servers,DC=example,DC=com"
# Collect data with specific naming context
.\SharpHound.exe --CollectionMethods All --DomainController dc01.example.com
Módulo SharpHound PowerShell¶
Colección básica¶
# Import SharpHound module
Import-Module .\SharpHound.ps1
# Run SharpHound with default collection methods
Invoke-BloodHound -CollectionMethod All
Opciones de colección avanzada¶
# Collect specific data types
Invoke-BloodHound -CollectionMethod Group,LocalGroup,Session,ACL
# Collect data with stealth options
Invoke-BloodHound -CollectionMethod All -Stealth
# Collect data from specific domain
Invoke-BloodHound -CollectionMethod All -Domain example.com
# Collect data with LDAP filtering
Invoke-BloodHound -CollectionMethod All -LdapFilter "(objectClass=user)"
# Collect data from specific OU
Invoke-BloodHound -CollectionMethod All -SearchBase "OU=Servers,DC=example,DC=com"
BloodHound.py (Linux/macOS)¶
Instalación¶
Colección básica¶
Opciones de colección avanzada¶
# Collect specific data types
bloodhound-python -u username -p password -d domain.local -ns 10.10.10.10 -c Group,LocalAdmin,Session,ACL
# Collect data with Kerberos authentication
bloodhound-python -u username -p password -d domain.local -ns 10.10.10.10 -c All --kerberos
# Collect data with specific domain controller
bloodhound-python -u username -p password -d domain.local -ns 10.10.10.10 -c All --dns-tcp
# Collect data with LDAP SSL
bloodhound-python -u username -p password -d domain.local -ns 10.10.10.10 -c All --secure
AzureHound (Azure AD)¶
Instalación¶
# Download AzureHound
Invoke-WebRequest -Uri https://github.com/BloodHoundAD/AzureHound/releases/latest/download/azurehound-windows-amd64.zip -OutFile azurehound.zip
Expand-Archive -Path azurehound.zip -DestinationPath .
Colección básica¶
Usando BloodHound¶
Conexión de base de datos Neo4j¶
- URL predeterminada: bolt://localhost:7687
- Credenciales predeterminados: neo4j/neo4j (primero login requiere cambio de contraseña)
Importación de datos¶
- Lanzamiento de sangre
- Conectar a la base de datos Neo4j
- Arrastre y suelte el archivo ZIP que contiene datos de SharpHound
- Espera a que la importación termine
Pre-Built Queries¶
BloodHound viene con varias consultas preconstruidas accesibles desde la pestaña "Preguntas":
Encontrar privilegios Usuarios¶
- Encuentra todos los administradores de dominio
- Encuentre todos los administradores de la empresa
- Encontrar caminos más cortos a los administradores de dominio
- Encontrar caminos más cortos a objetivos de alto valor
Encontrar caminos de ataque¶
- Encontrar caminos más cortos a los administradores de dominio
- Encontrar caminos más cortos a objetivos de alto valor
- Encontrar los caminos más cortos para los sistemas de delegación sin restricciones
Encontrar Configuraciones Vulnerables¶
- Encontrar Kerberoastable Usuarios
- Encuentre AS-REP Usuarios estables
- Buscar Computadoras con Delegación No Conseguida
- Buscar Computadoras con Delegación Constrained
- Encontrar Domain Trusts
Consultas de Cifras Aduanas¶
Encontrar caminos más cortos a los administradores de dominio¶
MATCH (n:User),(m:Group \\\\{name:'DOMAIN ADMINS@DOMAIN.LOCAL'\\\\}),p=shortestPath((n)-[*1..]->(m)) RETURN p
Encontrar Kerberoastable Usuarios con Path to Domain Admins¶
MATCH (n:User \\\\{hasspn:true\\\\}),(m:Group \\\\{name:'DOMAIN ADMINS@DOMAIN.LOCAL'\\\\}),p=shortestPath((n)-[*1..]->(m)) RETURN p
Buscar Computadoras con Derechos de Admin Local¶
Buscar Usuarios con Derechos de DCSync¶
Buscar Computadoras con Delegación Constrained¶
Buscar Senderos de Ataque del Usuario Específico¶
MATCH (n:User \\\\{name:'USER@DOMAIN.LOCAL'\\\\}),(m:Group \\\\{name:'DOMAIN ADMINS@DOMAIN.LOCAL'\\\\}),p=shortestPath((n)-[*1..]->(m)) RETURN p
Encontrar todos los usuarios con destinos Path to High Value¶
Encontrar ordenadores Donde los usuarios de dominio tienen derechos de administrador locales¶
MATCH (g:Group \\\\{name:'DOMAIN USERS@DOMAIN.LOCAL'\\\\}),(c:Computer),p=(g)-[:AdminTo]->(c) RETURN p
Buscar ordenadores con derechos RDP¶
Buscar Usuarios con Contraseña Nunca Explora¶
Técnicas de ataque¶
Kerberoasting¶
Las cuentas de servicio de Targets con SPNs para extraer los problemas de ticket de servicio para cracking offline.
Encontrar Kerberoastable Usuarios¶
Encontrar Kerberoastable Usuarios con Path to Domain Admins¶
MATCH (n:User \\\\{hasspn:true\\\\}),(m:Group \\\\{name:'DOMAIN ADMINS@DOMAIN.LOCAL'\\\\}),p=shortestPath((n)-[*1..]->(m)) RETURN p
AS-REP Roasting¶
Las cuentas de usuario de objetivos con el ajuste "No requieren preauthentication Kerberos" habilitado.
Encontrar AS-REP Usuarios estables¶
ACL Abuso¶
Explota listas de control de acceso mal configuradas para obtener privilegios elevados.
Encontrar permisos WriteDacl¶
MATCH (n:User),(m:Group \\\\{name:'DOMAIN ADMINS@DOMAIN.LOCAL'\\\\}),p=(n)-[:WriteDacl]->(m) RETURN p
Encontrar GenéricoTodas las Permisiones¶
MATCH (n:User),(m:Group \\\\{name:'DOMAIN ADMINS@DOMAIN.LOCAL'\\\\}),p=(n)-[:GenericAll]->(m) RETURN p
Delegación sin restricciones¶
Explota computadoras con delegación sin restricciones para robar entradas de usuario.
Finding Computers with Unconstrained Delegation¶
Constrained Delegation¶
Exploits misconfigured restricted delegation to impersonate users to specific services.
Finding Computers with Constrained Delegation¶
Resource-Based Constrained Delegation¶
Exploits misconfigured resource-based restricted delegation to gain access to resources.
Finding Computers with Resource-Based Constrained Delegation¶
DCSync¶
Explota derechos de replicación para realizar la sincronización del controlador de dominio y extraer los hashes de contraseña.
Encontrar usuarios con derechos DCSync¶
Tipos de borde de sangre¶
Edge Type | Description |
---|---|
MemberOf | User/Group is a member of a group |
AdminTo | User/Group has local admin rights on a computer |
HasSession | User has a session on a computer |
CanRDP | User can RDP to a computer |
ExecuteDCOM | User can execute DCOM on a computer |
AllowedToDelegate | Computer is allowed to delegate to a service |
AddAllowedToAct | Computer can act on behalf of another principal |
AllowedToAct | Principal is allowed to act on behalf of another principal |
Contains | OU/Container contains an object |
GpLink | GPO is linked to an OU/Domain/Site |
HasSIDHistory | Object has SID history of another object |
TrustedBy | Domain is trusted by another domain |
DCSync | User has rights to perform DCSync operation |
GenericAll | User has full control over an object |
GenericWrite | User can write to certain properties of an object |
WriteDacl | User can modify the security descriptor of an object |
WriteOwner | User can take ownership of an object |
AddMember | User can add members to a group |
ForceChangePassword | User can change another user's password |
Consideraciones de seguridad operacional¶
Reducción del riesgo de detección¶
- Utilice el parámetro
--Stealth
para reducir el ruido - Recoger datos durante horas de trabajo cuando la actividad de red es alta
- Evite recolectar todos los datos a la vez; difundir la colección con el tiempo
- Use filtrado LDAP para limitar el alcance de la colección
- Considere usar BloodHound.py en lugar de SharpHound en entornos sensibles
Limpieza arriba¶
- Eliminar los binarios SharpHound y los archivos de salida después del uso
- Clear Power Historia de Shell:
Clear-History
- Remove Sharp Módulo Hound de memoria:
Remove-Module SharpHound
- Eliminar la base de datos Neo4j cuando el análisis está completo
Solución de problemas¶
Cuestiones comunes¶
Cuestiones de conexión Neo4j¶
- Asegurar que el servicio Neo4j esté funcionando:
neo4j.bat status
_ osystemctl status neo4j
- Compruebe si se está utilizando la URL correcta del tornillo (por defecto: bolt://localhost:7687)
- Verificar las credenciales (por defecto: neo4j/neo4j)
- Compruebe si otro proceso está utilizando el puerto 7687
SharpHound Collection Issues¶
- Asegúrese de tener suficientes privilegios (usuario principal al mínimo)
- Intenta correr con privilegios elevados
- Comprobar conectividad de red a controladores de dominio
- Verificar la conectividad LDAP/LDAPS
- Intente especificar un controlador de dominio con
--DomainController
Cuestiones de importación de datos¶
- Asegúrese de que el archivo ZIP contiene archivos JSON válidos
- Compruebe si la base de datos Neo4j tiene suficiente espacio en disco
- Intente limpiar la base de datos antes de importar:
MATCH (n) DETACH DELETE n
- Verifique que el archivo ZIP no está dañado