INNER CODE UNIT · Python
cost
idnahacks/GoodHound · goodhound/neodb.py:54
def cost(graph):
cost=["MATCH (n)-[r:MemberOf]->(m:Group) SET r.cost = 0",
"MATCH (n)-[r:HasSession]->(m) SET r.cost = 3",
"MATCH (n)-[r:CanRDP|Contains|GpLink]->(m) SET r.cost = 0",
"MATCH (n)-[r:AdminTo|ForceChangePassword|AllowedToDelegate|AllowedToAct|AddAllowedToAct|ReadLAPSPassword|ReadGMSAPassword|HasSidHistory]->(m) SET r.cost = 1",
"MATCH (n)-[r:CanPSRemote|ExecuteDCOM|SQLAdmin ]->(m) SET r.cost = 1",
"MATCH (n)-[r:AllExtendedRights|AddMember|AddMembers|GenericAll|WriteDacl|WriteOwner|Owns|GenericWrite|AddSelf]->(m:Group) SET r.cost = 1",
"MATCH (n)-[r:AllExtendedRights|GenericAll|WriteDacl|WriteOwner|Owns|GenericWrite|WriteSPN]->(m:User) SET r.cost = 1",
"MATCH (n)-[r:AllExtendedRights|GenericAll|WriteDacl|WriteOwner|Owns|GenericWrite]->(m:Computer) SET r.cost = 1",
"MATCH (n)-[r:GetChanges|GetChangesAll|AllExtendedRights|GenericAll|WriteDacl|WriteOwner|Owns]->(m:Domain) SET r.cost = 2",
"MATCH (n)-[r:GenericAll|WriteDacl|WriteOwner|Owns|GenericWrite]->(m:GPO) SET r.cost = 1",
"MATCH (n)-[r:GenericAll|WriteDacl|WriteOwner|Owns|GenericWrite ]->(m:OU) SET r.cost = 1",
"MATCH (n)-[r:AddKeyCredentialLink]->(m) set r.cost = 2"]
logging.info("Setting cost.")
try:
for c in cost:
graph.run(c)
return()