Ejemplos y conjuntos de datos de ejemplo de grafos

En esta página se enumeran los gráficos existentes en nuestro clúster de ayuda en https://help.kusto.windows.net la base de datos samples y se muestra cómo consultarlos mediante el lenguaje de consulta kusto (KQL). Estos ejemplos muestran la consulta de modelos de grafos precompilados sin necesidad de realizar ningún paso de creación o configuración.

Gráfico educativo sencillo para los aspectos básicos del aprendizaje

Uso: graph("Simple")

Propósito: Operaciones básicas de grafos y aprendizaje de patrones de consulta de grafos fundamentales.

Descripción: gráfico educativo pequeño que contiene personas, empresas y ciudades con diversas relaciones. Perfecto para aprender recorridos de grafos y comprender los patrones básicos. Este conjunto de datos compacto incluye 11 nodos (5 personas, 3 empresas y 3 ciudades) conectados a través de 20 relaciones, lo que hace que sea ideal para comprender los aspectos básicos del grafo sin la complejidad de los conjuntos de datos más grandes. El gráfico muestra escenarios comunes del mundo real, como relaciones de empleo, ubicaciones geográficas, conexiones sociales y preferencias personales.

Casos de uso:

  • Aspectos básicos de la consulta de grafos de aprendizaje
  • Probar algoritmos de grafos
  • Descripción de los patrones de relación
  • Ejemplos educativos para conceptos de grafos

Relaciones de esquema:

Esquema de un gráfico que contiene personas, empresas y ciudades con varias relaciones.

Esquema y recuentos:

  • Tipos de nodo:

    • Person - Personas individuales (5 nodos)
    • Company - Organizaciones empresariales (3 nodos)
    • City - Ubicaciones geográficas (3 nodos)
  • Tipos de relación:

    • works_at - Relaciones de empleo (5 bordes)
    • located_at - Asignaciones de ubicación geográfica (8 bordes)
    • knows - Conexiones sociales entre personas (4 bordes)
    • likes - Preferencias e intereses personales (3 bordes)

Ejemplo de instancia de Graph:

En este ejemplo se muestran las relaciones básicas de grafos en una red pequeña y fácil de entender que muestra cómo las personas se conectan a empresas y ciudades a través de varios tipos de relación.

Gráfico que contiene instancias de personas, empresas y ciudades con diversas relaciones.

Consultas de ejemplo:

Busque todos los empleados de una empresa específica:

graph("Simple")
| graph-match (person)-[works_at]->(company)
    where company.name == "TechCorp"
    project employee_name = person.name, employee_age = person.properties.age
employee_name employee_age
Alice 25
Bob 30
Emma 26

Buscar compañeros (personas que trabajan en la misma empresa):

graph("Simple")
| graph-match (person1)-->(company)<--(person2)
    where person1.id != person2.id and labels(company) has "Company"
    project colleague1 = person1.name, colleague2 = person2.name, company = company.name
| take 1
colega1 compañero2 compañía
Alice Bob TechCorp

LDBC SNB interactivo

Uso: graph("LDBC_SNB_Interactive")

Propósito: recorridos de redes sociales y exploración de amigos.

Nota:

Este conjunto de datos se proporciona en apache License 2.0. Los conjuntos de datos ldbc Social Network Benchmark se crean mediante el Consejo de Pruebas comparativas de datos vinculados (LDBC).

Descripción: El conjunto de datos de carga de trabajo de Linked Data Benchmark Council (LDBC) Social Network Benchmark Interactive representa una red social completa que modela plataformas de redes sociales reales. Esta prueba comparativa captura la complejidad de las redes sociales modernas con más de 327 000 nodos y varios tipos de relación, incluidos los datos geográficos jerárquicos, las estructuras organizativas de varios niveles y las interacciones de contenido enriquecido. El conjunto de datos modela ecosistemas realistas de redes sociales con personas que crean publicaciones y comentarios, participando en foros, trabajando en organizaciones y viviendo en ubicaciones geográficas en una jerarquía detallada de continentes a ciudades.

Casos de uso:

  • Sistemas de análisis y recomendaciones de redes sociales
  • Algoritmos de detección de comunidad
  • Estudios de propagación de influencia
  • Recomendación de contenido basada en conexiones sociales
  • Detección de amigos
  • Investigación de minería de gráficos sociales

Información general sobre el esquema de Graph:

Esquema de un gráfico que contiene nodos y relaciones del conjunto de datos SNB de LDBC.

Esquema y recuentos:

  • Tipos principales de entidad social:

    • PERSON - Usuarios de redes sociales (1528 nodos)
    • POST - Entradas de usuario (135 701 nodos)
    • COMMENT - Comentarios en publicaciones (151 043 nodos)
    • FORUM - Foros de discusión (13 750 nodos)
  • Tipos geográficos y organizativos:

    • ORGANISATION - Universidades y empresas (7.955 nodos)
    • PLACE - Ubicaciones geográficas: continentes (6), países (111), ciudades (1343) - total de 1460 nodos
  • Tipos de clasificación de contenido:

    • TAG - Etiquetas de contenido (16 080 nodos)
    • TAGCLASS - Categorías de etiquetas (71 nodos)
  • Tipos de relación clave:

    • KNOWS - Relaciones de confianza (14 073 bordes)
    • LIKES - Me gusta el contenido: publicaciones (47,215) + comentarios (62,225) = 109,440 bordes totales
    • HAS_CREATOR - Autoría de contenido: publicaciones (135 701) + comentarios (151 043) = 286 744 bordes
    • HAS_MEMBER - Pertenencias a foros (123,268 bordes)
    • HAS_TAG - Etiquetado de contenido: publicaciones (51,118) + comentarios (191,303) + foros (47,697) = 290,118 bordes
    • IS_LOCATED_IN - Relaciones de ubicación: personas (1528) + organizaciones (7955) + publicaciones (135 701) + comentarios (151 043) = 296 227 bordes
    • REPLY_OF - Subproceso de comentarios: comentario a comentario (76 787) + comentario a publicación (74 256) = 151 043 bordes
    • WORK_AT / STUDY_AT - Historia profesional/educativa (4,522 bordes)
    • HAS_INTEREST - Intereses personales (35.475 bordes)
    • Otras relaciones: HAS_MODERATOR, IS_PART_OF, CONTAINER_OF, , HAS_TYPE, IS_SUBCLASS_OF

Ejemplo de instancia de Graph:

En este ejemplo se muestran interacciones complejas de redes sociales en un entorno realista de redes sociales, que muestra cómo los usuarios interactúan con el contenido, participan en foros y forman conexiones sociales.

Gráfico que contiene un subgráfico de ejemplo del conjunto de datos SNB de LDBC.

En este ejemplo se muestra lo siguiente:

  • Social Engagement: Mahinda le gusta tanto la publicación de Allah como un comentario sobre esa publicación
  • Subproceso de contenido: el comentario (acerca de Gloria Macapagal-Arroyo) responde a la publicación (sobre Aurangzeb)
  • Creación de contenido: Abdul crea publicaciones en su propio muro de foro
  • Participación comunitaria: Mahinda es miembro del foro de Allah donde aparece el contenido
  • Clasificación de contenido: tanto las publicaciones como los comentarios se etiquetan con temas relevantes de su contenido
  • Contexto geográfico: todas las entidades tienen relaciones de ubicación para el análisis geográfico

Casos de uso:

  • Sistemas de análisis y recomendaciones de redes sociales
  • Algoritmos de detección de comunidad
  • Estudios de propagación de influencia
  • Recomendación de contenido basada en conexiones sociales
  • Detección de amigos
  • Investigación de minería de gráficos sociales

Consultas de ejemplo:

Encuentra amistades directas con edades similares:

Esta consulta identifica pares de personas que están directamente conectadas a través de una relación "KNOWS" y tienen edades similares (cumpleaños en un plazo de 30 días entre sí). Atraviesa el gráfico de redes sociales LDBC para encontrar amistades existentes entre personas de grupos de edades similares. La consulta devuelve el recuento total de estos pares de amistad similares a la edad en la red, lo que puede ser útil para analizar patrones sociales basados en edad o validar algoritmos de recomendación de confianza.

graph("LDBC_SNB_Interactive")
| graph-match (person1)-[knows]->(person2)
    where labels(person1) has "PERSON" and labels(person2) has "PERSON" and 
        labels(knows) has "KNOWS"and abs(person1.birthday - person2.birthday) < 30d
    project person_name = person1.firstName, friend_name = person2.firstName
| count 
Contar
225

Encuentra publicaciones populares por likes:

Esta consulta analiza la interacción social mediante la identificación de los creadores de contenido más populares en función de cuántos usuarios únicos han gustado sus publicaciones. Recorre el gráfico de redes sociales a través de la ruta de acceso: la persona → le gusta → publicar → has_creator → creador. La consulta agrega los datos para mostrar el número total de likers únicos de cada creador y publicaciones distintas y, a continuación, devuelve los 3 creadores principales con los más parecidos. Esto es útil para identificar creadores de contenido influyentes, comprender patrones de interacción y detectar contenido viral en la red social.

graph("LDBC_SNB_Interactive")
| graph-match (person)-[likes]->(post)-[has_creator]->(creator)
    where labels(person) has "Person" and labels( post) has "POST" and labels(has_creator) has "HAS_CREATOR" and isnotempty(creator.lastName)
    project personId = person.id, postId = post.id, creator = creator.lastName
| summarize Likes = dcount(personId), posts = dcount(postId) by creator
| top 3 by Likes desc
creador Le gusta Mensajes
Zhang 371 207
Hoffmann 340 9
Singh 338 268

LDBC Financial

Uso: graph("LDBC_Financial")

Propósito: Patrones de detección de fraudes y análisis de transacciones financieras.

Nota:

Este conjunto de datos se proporciona en apache License 2.0. Los conjuntos de datos de LDBC Financial Benchmark se crean mediante linked Data Benchmark Council (LDBC).

Descripción: conjunto de datos LDBC Financial Benchmark que representa una red financiera completa con empresas, personas, cuentas, préstamos y diversas transacciones financieras. Este conjunto de datos modela ecosistemas financieros realistas con 5580 nodos totales y más de 31 000 transacciones y relaciones financieras. Diseñado específicamente para la detección de fraudes, análisis de blanqueo de dinero (AML) y escenarios de investigación de delitos financieros, captura patrones complejos, como la propiedad de la cuenta, las aplicaciones de préstamo, las garantías y las cadenas de transacciones de varios pasos que son comunes en escenarios de delitos financieros.

Casos de uso:

  • Detección de fraudes financieros
  • Análisis de blanqueo de dinero (AML)
  • Análisis de patrones de transacción
  • Evaluación de riesgos y puntuación de crédito
  • Supervisión de actividades sospechosas
  • Análisis de red financiera

Información general sobre el esquema de Graph:

Esquema de un gráfico que contiene nodos y relaciones del conjunto de datos financiero LDBC.

Esquema y recuentos:

  • Tipos de nodo:

    • COMPANY - Entidades empresariales (386 nodos)
    • PERSON - Clientes individuales (785 nodos)
    • ACCOUNT - Cuentas financieras (2055 nodos)
    • LOAN - Productos de préstamo (1376 nodos)
    • MEDIUM - Medios de transacción/canales (978 nodos)
  • Tipos de relación:

    • TRANSFER - Transferencias de dinero entre cuentas (8,132 bordes)
    • WITHDRAW - Retiros de efectivo de cuentas (9,182 bordes)
    • DEPOSIT - Depósitos de dinero en cuentas (2,758 bordes)
    • OWN - Relaciones de propiedad de la cuenta (2055 bordes)
    • APPLY - Solicitudes de préstamo (1,376 bordes)
    • GUARANTEE - Garantías de préstamo (579 bordes)
    • INVEST - Transacciones de inversión (1,983 bordes)
    • REPAY - Reembolsos de préstamos (2,747 bordes)
    • SIGN_IN - Eventos de autenticación (2489 bordes)

Ejemplo de instancia de Graph:

En este ejemplo se muestra una red financiera compleja con varios tipos de entidad y patrones de transacción, que muestran cómo las instituciones financieras pueden modelar las relaciones entre clientes, cuentas, préstamos y flujos de transacción para la detección de fraudes y la evaluación de riesgos.

Gráfico que contiene un subgráfico de ejemplo del conjunto de datos financiero LDBC.

Consultas de ejemplo:

Detectar posibles lavados de dinero a través de transferencias circulares:

Esta consulta identifica patrones de transacciones circulares sospechosos que podrían indicar actividades de blanqueo de dinero. Busca cuentas que envían dinero a otra cuenta y luego la reciben de vuelta a través de una cadena de 1 a 3 transferencias, creando un flujo circular. La consulta busca específicamente transferencias iniciales grandes (más de 10 000) y devuelve detalles sobre las cuentas sospechosas, incluida la cantidad de transferencia y la longitud de la cadena circular. Esta detección de patrones es útil para sistemas de blanqueo de dinero (AML) y investigaciones de fraude financiero.

graph("LDBC_Financial")
| graph-match (account1)-[t1]->(account2)-[t2*1..3]->(account1)
    where labels(t1) has "TRANSFER" and t1.amount > 10000  // Large initial transfer
    project suspicious_account = account1.node_id,
            amount = t1.amount,
            transfer_chain_length = array_length(t2) + 1
| take 10
suspicious_account importe transfer_chain_length
Account::4818007176356300028 5035377,73 2
Account::4818007176356300028 5035377,73 2
Account::4845310249097233848 359062,45 2
Account::4818007176356300028 5035377,73 3
Account::4818007176356300028 5035377,73 4
Account::4840243699516440940 5753668,55 4
Account::4818007176356300028 5035377,73 4
Account::180143985094820389 465338,26 4
Account::4814910951612482356 1684581,62 4
Account::4816599801472746629 963626,42 4

Buscar garantistas de préstamos de alto riesgo:

Esta consulta identifica a individuos o empresas que garantizan varios préstamos que totalizan importes significativos, lo que podría indicar la exposición al riesgo financiero. Recorre el gráfico de la red financiera siguiendo la ruta de acceso: garantía → garantía → prestatario → aplicar → préstamo. La consulta agrega el importe total garantizado y el número de préstamos para cada garantizador, filtra por aquellos que garantizan más de 100.000 en total y devuelve el 5 por importe garantizado total. Este análisis es útil para la evaluación de riesgos, la identificación de garantías sobreapalancadas y la evaluación de riesgos financieros sistémicos en las redes de préstamos.

graph("LDBC_Financial")
| graph-match (guarantor)-[guarantee]->(borrower)-[apply]->(loan)
    where labels(guarantee) has "GUARANTEE" and labels(apply) has "APPLY"
    project guarantor_id = guarantor.node_id,
            borrower_id = borrower.node_id,
            loan_amount = loan.loanAmount
| summarize total_guaranteed = sum(loan_amount), loan_count = count() by guarantor_id
| where total_guaranteed > 100000
| top 5 by total_guaranteed desc
guarantor_id total_guaranteed loan_count
Persona::44 439802195 8
Person::15393162789155 411111642 8
Company::12094627905931 404538891 6
Company::4398046511208 366243272 8
Person::19791209300551 338838223 6

Conjunto de datos BloodHound Entra

Uso: graph("BloodHound_Entra")

Propósito: Análisis de ruta de acceso de ataque y escalación de privilegios de Microsoft Entra.

Nota:

Este conjunto de datos se proporciona en apache License 2.0. El proyecto BloodHound crea los conjuntos de datos BloodHound.

Descripción: conjunto de datos BloodHound para entornos de Microsoft Entra. Este conjunto de datos de seguridad completo contiene 13 526 objetos de Microsoft Entra, incluidos usuarios, grupos, aplicaciones, entidades de servicio, dispositivos y varios recursos en la nube. Con más de 800 000 relaciones de permisos y bordes de seguridad, modela entornos complejos de Microsoft Entra típicos de las organizaciones empresariales. El conjunto de datos captura los permisos detallados de Microsoft Entra, las asignaciones de roles, las pertenencias a grupos y los patrones de propiedad de recursos esenciales para identificar rutas de escalación de privilegios y vectores de ataque en entornos en la nube.

Casos de uso:

  • Evaluaciones de seguridad de Entra ID
  • Detección de rutas de elevación de privilegios
  • Visualización de la ruta de acceso de ataque
  • Análisis de gobernanza de identidades
  • Controles de seguridad basados en riesgos
  • Auditoría de cumplimiento para entornos en la nube

Información general sobre el esquema de Graph:

Esquema de un gráfico que contiene nodos y relaciones del conjunto de datos BloodHound Entra.

Esquema y recuentos:

Nota:

Este conjunto de datos se proporciona en apache License 2.0. El proyecto BloodHound Community Edition crea los conjuntos de datos BloodHound Community Edition.

Descripción: conjunto de datos bloodHound Community Edition para entornos de Microsoft Entra. Este conjunto de datos de seguridad completo contiene 13 526 objetos de Microsoft Entra, incluidos usuarios, grupos, aplicaciones, entidades de servicio, dispositivos y varios recursos en la nube. Con más de 800 000 relaciones de permisos y bordes de seguridad, modela entornos complejos de Microsoft Entra típicos de las organizaciones empresariales. El conjunto de datos captura los permisos detallados de Microsoft Entra, las asignaciones de roles, las pertenencias a grupos y los patrones de propiedad de recursos esenciales para identificar rutas de escalación de privilegios y vectores de ataque en entornos en la nube.

Esquema y recuentos:

  • Tipos de nodo principal:

    • AZUser - Usuarios de Microsoft Entra (230 nodos)
    • AZServicePrincipal - Entidades de servicio y aplicaciones (6270 nodos)
    • AZApp - Aplicaciones de Azure (6648 nodos)
    • AZGroup - Grupos de Microsoft Entra (58 nodos)
    • AZDevice - Dispositivos administrados (47 nodos)
  • Tipos de recursos de Azure:

    • AZResourceGroup - Grupos de recursos (59 nodos)
    • AZVM - Máquinas virtuales (66 nodos)
    • AZRole - Roles de Azure (116 nodos)
    • AZSubscription - Suscripciones de Azure (3 nodos)
    • AZTenant - Inquilino de Azure (1 nodo)
  • Tipos de relación clave (permisos principales por volumen):

    • AZMGAddOwner - Permisos de propietario del grupo de administración (403 412 bordes)
    • AZMGAddSecret - Permisos de administración de secretos (345 324 bordes)
    • AZAddSecret - Permisos de secreto de aplicación (24 666 bordes)
    • AZContains - Relaciones de contención de recursos (12 924 bordes)
    • AZRunsAs - Permisos de ejecución del servicio (6 269 bordes)
    • AZMemberOf - Relaciones de pertenencia a grupos (4439 bordes)
    • AZOwns - Propiedad del recurso (2870 bordes)

Ejemplo de instancia de Graph:

En este ejemplo se muestran las relaciones de identidad de Microsoft Entra y Entra con estructuras de privilegios complejas y posibles rutas de acceso a ataques en un entorno de nube.

Gráfico que contiene un subgráfico de ejemplo del conjunto de datos BloodHound Entra

Casos de uso:

  • Evaluaciones de seguridad de Entra ID
  • Detección de rutas de elevación de privilegios
  • Visualización de la ruta de acceso de ataque
  • Análisis de gobernanza de identidades
  • Controles de seguridad basados en riesgos
  • Auditoría de cumplimiento para entornos en la nube

Consultas de ejemplo:

Busque rutas de acceso a privilegios administrativos:

Esta consulta identifica las rutas de elevación de privilegios de usuarios normales a grupos administrativos en entornos de Microsoft Entra. Busca usuarios que pueden llegar a grupos de administración (como Administradores de Dc de Microsoft Entra, DnsAdmins, etc.) a través de saltos de relación de 1 a 3, lo que ayuda a los equipos de seguridad a comprender posibles rutas de acceso a ataques y riesgos de escalación de privilegios.

graph("BloodHound_Entra")
| graph-match (user)-[path*1..3]->(admingroup)
    where labels(user) has_any ("User", "AZUser") 
          and labels(admingroup) has_any ("Group", "AZGroup")
          and (admingroup.name contains "ADMIN" or admingroup.displayname contains "ADMIN")
    project source_user = user.name,
             path_length = array_length(path),
             admin_group = coalesce(admingroup.displayname, admingroup.name)
| take 10
source_user path_length admin_group
THISUSERHASINTUNEADMINROLE@PHANTOMCORP.ONMICROSOFT.COM 1 ADSyncAdmins
097EF6C2-GROUPSADMINISTRATOR@PHANTOMCORP.ONMICROSOFT.COM 1 Administradores de controlador de dominio de AAD
USERBELONGSTOGAGROUP@PHANTOMCORP.ONMICROSOFT.COM 1 ADSyncAdmins
THISUSERHASINTUNEADMINROLE@PHANTOMCORP.ONMICROSOFT.COM 1 DnsAdmins
RHADMIN@PHANTOMCORP.ONMICROSOFT.COM 1 DnsAdmins
CJACKSON@PHANTOMCORP.ONMICROSOFT.COM 1 Administradores fantasma de Azure ATP
097EF6C2-INTUNEADMINISTRATOR@PHANTOMCORP.ONMICROSOFT.COM 1 Administradores de controlador de dominio de AAD
RHADMIN_PHANTOMCORP.ONMICROSOFT.COM#EXT#@PHANTOMCORP.ONMICROSOFT.COM 1 Administradores de grupos de recursos
THISUSERHASKNOWLEDGEMANAGERROLE@PHANTOMCORP.ONMICROSOFT.COM 1 DnsAdmins
097EF6C2-INTUNEADMINISTRATOR@PHANTOMCORP.ONMICROSOFT.COM 1 DnsAdmins

Identificar destinos de alto valor (recursos de nivel 0):

Esta consulta identifica los recursos administrativos críticos marcados como "admin_tier_0" en el entorno. Estas son las cuentas, entidades de servicio y recursos más sensibles y eficaces que suponen el riesgo más alto si están en peligro. Comprender estos recursos ayuda a priorizar los esfuerzos de protección y supervisión de seguridad.

graph("BloodHound_Entra")
| graph-match (asset)
    where asset.properties.system_tags contains "admin_tier_0"
    project asset_name = asset.name,
             asset_type = tostring(labels(asset)[1]),  // Get primary type (AZUser, AZServicePrincipal, etc.)
             system_tags = asset.properties.system_tags
| take 10
asset_name asset_type system_tags
JJACOB@PHANTOMCORP.ONMICROSOFT.COM AZUser admin_tier_0
PLEWIS@PHANTOMCORP.ONMICROSOFT.COM AZUser admin_tier_0
JMILLER@PHANTOMCORP.ONMICROSOFT.COM AZUser admin_tier_0
CJACKSON@PHANTOMCORP.ONMICROSOFT.COM AZUser admin_tier_0
RHALL@PHANTOMCORP.ONMICROSOFT.COM AZUser admin_tier_0
THISAPPHASGLOBALADMIN@PHANTOMCORP AZServicePrincipal admin_tier_0
MYCOOLAUTOMATIONACCOUNT@PHANTOMCORP AZServicePrincipal admin_tier_0
SERVICEPRINCIPALE@PHANTOMCORP AZServicePrincipal admin_tier_0
31E3B75F-ADMINISTRADOR DE AUTENTICACIÓN PRIVILEGIADO@PHANTOMCORP AZServicePrincipal admin_tier_0
31E3B75F-ADMINISTRADOR DE ROLES PRIVILEGIADOS@PHANTOMCORP AZServicePrincipal admin_tier_0

Conjunto de datos de Active Directory bloodHound

Uso: graph("BloodHound_AD")

Propósito: análisis de seguridad de Active Directory local y asignación de privilegios.

Nota:

Este conjunto de datos se proporciona en apache License 2.0. El proyecto BloodHound crea los conjuntos de datos BloodHound.

Descripción: conjunto de datos bloodHound Community Edition para entornos locales de Active Directory. Este conjunto de datos contiene 1495 objetos de Active Directory que representan una implementación típica de AD empresarial con estructuras de permisos complejas y rutas de acceso de ataque. El conjunto de datos incluye usuarios, equipos, grupos, unidades organizativas, objetos de directiva de grupo y componentes de entidad de certificación en varios dominios. Con más de 18 000 relaciones de permisos y bordes de seguridad, captura escenarios realistas de ataque de AD, como rutas de acceso de escalación de privilegios, permisos basados en ACL, pertenencias a grupos y vulnerabilidades de autenticación basadas en certificados comunes en entornos de dominio de Windows.

Casos de uso:

  • Evaluaciones de seguridad de Active Directory
  • Análisis de rutas de acceso a ataques y pruebas de penetración
  • Asignación de privilegios de dominio
  • Análisis de seguridad de directivas de grupo
  • Identificación de destino kerberoasting y ASREPRoasting
  • Análisis de brechas de control de seguridad

Información general sobre el esquema de Graph:

  • Tipos de objeto de AD principales:

    • User - Usuarios de dominio (99 nodos)
    • Computer - Equipos de dominio (34 nodos)
    • Group - Grupos de seguridad y distribución (219 nodos)
    • ADLocalGroup - Grupos locales en equipos (28 nodos)
    • GPO - Objetos de directiva de grupo (32 nodos)
  • Tipos de infraestructura de AD:

    • Domain - Dominios de Active Directory (5 nodos)
    • OU - Unidades organizativas (20 nodos)
    • Container - Contenedores de AD (939 nodos)
    • CertTemplate - Plantillas de certificado (106 nodos)
    • EnterpriseCA - Entidades de certificación (4 nodos)
    • RootCA - Entidades de certificación raíz (5 nodos)
  • Tipos de permisos clave (vectores de ataque principales):

    • GenericAll - Permisos de control total (3,292 bordes)
    • WriteDacl - Modificar permisos (2221 bordes)
    • WriteOwner - Cambiar la propiedad (2,187 bordes)
    • Owns - Propiedad del objeto (1,439 bordes)
    • Contains - Relaciones de contención (1416 bordes)
    • GenericWrite - Permisos de escritura (579 bordes)
    • MemberOf - Pertenencias a grupos (301 bordes)

Información general sobre el esquema de Graph:

Esquema de un gráfico que contiene nodos y relaciones del conjunto de datos bloodHound AD.

Ejemplo de instancia de Graph:

En este ejemplo se muestran las rutas de acceso a ataques locales de Active Directory y posibles vulnerabilidades de seguridad en un entorno de dominio de Windows tradicional.

Gráfico que contiene un subgráfico de ejemplo del conjunto de datos bloodHound AD.

Casos de uso:

  • Evaluaciones de seguridad de Active Directory
  • Análisis de rutas de acceso a ataques y pruebas de penetración
  • Asignación de privilegios de dominio
  • Análisis de seguridad de directivas de grupo
  • Identificación de destino kerberoasting y ASREPRoasting
  • Análisis de brechas de control de seguridad

Consultas de ejemplo:

Búsqueda de una posible escalación de privilegios:

Esta consulta cuenta cuántos usuarios que no son administradores pueden escalar al administrador en Microsoft Entra. Recorre hasta 10 saltos de grupo MemberOf (sin ciclos) de cada usuario a grupos que conceden permisos peligrosos (GenericAll, WriteDacl, WriteOwner, ForceChangePassword) a través de los usuarios administradores (admincount=true) y, a continuación, devuelve el número distinto de esos usuarios "atacantes potenciales".

graph("BloodHound_AD")
| graph-match cycles=none (user)-[memberof*0..10]->(group)-[permission]->(target)
    where labels(user) has "User" 
          and labels(group) has "Group"
          and all(memberof, labels() has "MemberOf")
          and user.properties.admincount == false
          and (labels(permission) has_any ("GenericAll", "WriteDacl", "WriteOwner", "ForceChangePassword"))
          and (labels(target) has "User" and target.properties.admincount == true)
    project  attack_user = user.name
| summarize ['Potential attackers'] = dcount(attack_user)
Posibles atacantes
2

Busque rutas de acceso de ataque golden certificate:

Esta consulta identifica las entidades que pueden realizar ataques de Golden Certificate, lo que permite a los atacantes falsificar certificados como cualquier usuario del dominio. Estas son vulnerabilidades críticas, ya que permiten poner en peligro el dominio completo, ya que permiten al atacante suplantar a cualquier usuario, incluidos los administradores de dominio, a través de certificados falsificados.

graph("BloodHound_AD")
| graph-match (attacker)-[goldencert]->(target)
    where labels(goldencert) has "GoldenCert"
    project 
        Attacker = attacker.name,
        AttackerType = case(
            attacker.name has "DC", "Domain Controller",
            attacker.name has "CA", "Certificate Authority", 
            attacker.name has "SRV", "Server",
            "Unknown System"
        ),
        Target = target.name,
        RiskLevel = "CRITICAL",
        AttackCapability = case(
            attacker.name has "DC", "Primary domain controller with certificate services",
            attacker.name has "EXTCA", "External Certificate Authority with root access",
            attacker.name has "SRV", "Compromised server with certificate generation rights",
            "System with certificate forging capabilities"
        )
Asaltante AttackerType Objetivo RiskLevel AttackCapability
DC01. FANTASMA. CORP Sistema desconocido FANTASMA. CORP CRÍTICO Sistema con funcionalidades de falsificación de certificados
SRV-SHARPHOUND. FANTASMA. CORP Servidor FANTASMA. CORP CRÍTICO Servidor en peligro con derechos de generación de certificados
EXTCA01. ESPECTRO. CORP Sistema desconocido ESPECTRO. CORP CRÍTICO Sistema con funcionalidades de falsificación de certificados
EXTCA02. ESPECTRO. CORP Sistema desconocido ESPECTRO. CORP CRÍTICO Sistema con funcionalidades de falsificación de certificados