1.查找并列出所有具有高级别权限角色的成员信息

在bloodhound界面中的Raw Query模块中输入如下查询语句可查找并列出所有具有高级别权限角色的成员信息,执行结果如图1-1所示。

MATCH p=(n)-[:AZHasRole|AZMemberOf*1..2]->(r:AZRole) WHERE r.displayname =~ '(?i)Global Administrator|User Administrator|Cloud Application Administrator|Authentication Policy Administrator|Exchange Administrator|Helpdesk Administrator|PRIVILEGED AUTHENTICATION ADMINISTRATOR|Domain Name Administrator|Hybrid Identity Administrator|External Identity Provider Administrator|Privileged Role Administrator|Partner Tier2 Support|Application Administrator|Directory Synchronization Accounts' RETURN p


图1-1

2.查找到达具有高级别权限角色的最短访问路径。

在bloodhound界面中的Raw Query模块中输入如下查询语句可查找到达具有高级别权限角色的最短访问路径,执行结果如图1-2所示。

MATCH (n:AZRole WHERE n.displayname =~ '(?i)Global Administrator|User Administrator|Cloud Application Administrator|Authentication Policy Administrator|Exchange Administrator|Helpdesk Administrator|PRIVILEGED AUTHENTICATION ADMINISTRATOR'), (m), p=shortestPath((m)-[r*1..]->(n)) WHERE NOT m=n RETURN p


图1-2

3.从已拥有的对象识别查找到高价值目标的最短路径

在bloodhound界面中的Raw Query模块中输入如下查询语句可从已拥有的对象识别查找到高价值目标的最短路径,执行结果如图1-3所示。

MATCH p=shortestPath((g {owned:true})-[*1..]->(n {highvalue:true})) WHERE  g<>n return p


图1-3

关于使用hound查询分析常规信息,还有很多的高级查询语法,笔者在此列出了关于的查询语句和功能描述,具体可参考如下表的内容来在Bloodhound中逐一查询,笔者将不赘述。

查询语法

功能描述

MATCH (m:AZUser),(n {highvalue:true}),p=shortestPath((m)-[r*1..]->(n)) WHERE NONE (r IN relationships(p) WHERE type(r)= "GetChanges") AND NONE (r in relationships(p) WHERE type(r)="GetChangesAll") AND NOT m=n RETURN p

查找具有高价值目标路径的所有Azure用户

MATCH (m:AZUser WHERE m.onpremisesyncenabled = true),(n {highvalue:true}),p=shortestPath((m)-[r*1..]->(n)) WHERE NONE (r IN relationships(p) WHERE type(r)= "GetChanges") AND NONE (r in relationships(p) WHERE type(r)="GetChangesAll") AND NOT m=n RETURN p

查找具有高价值目标路径的OnPrem同步用户

MATCH (m:AZApp),(n {highvalue:true}),p=shortestPath((m)-[r*1..]->(n)) WHERE NONE (r IN relationships(p) WHERE type(r)= "GetChanges") AND NONE (r in relationships(p) WHERE type(r)="GetChangesAll") AND NOT m=n RETURN p

查找具有高价值目标路径的Azure应用程序

MATCH (n:AZUser) WITH n MATCH p = shortestPath((n)-[r*1..]->(g:AZSubscription)) RETURN p

查找从Azure用户到订阅的最短路径

MATCH p = (n)-[r]->(g:AZVM) RETURN p

查找Azure vm的所有路径

MATCH (n:AZVM) MATCH p = shortestPath((m:AZUser{owned: true})-[*..]->(n)) RETURN p

查找从拥有的Azure用户到vm的最短路径

MATCH p = (n)-[r]->(g:AZKeyVault) RETURN p

查找Azure KeyVaults的所有路径

MATCH p = ({owned: true})-[r]->(g:AZKeyVault) RETURN p

查找从拥有的主体到Azure keyvault的所有路径

MATCH (n:AZSubscription), (m), p=shortestPath((m)-[r*1..]->(n)) WHERE NOT m=n RETURN p

查找Azure订阅的最短路径

MATCH p=(u:AZUser)-[:AZUserAccessAdministrator]->(target) WHERE NOT EXISTS((u)-[:AZMemberOf

AZHasRole*1..]->(:AZRole)) RETURN u, p

MATCH p=(u)-[:AZUserAccessAdministrator]->(target) WHERE NOT EXISTS((u)-[:AZMemberOf

AZHasRole*1..]->(:AZRole)) RETURN u, p