Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 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.
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 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.
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 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.
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 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.
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:
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.
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 |