Всем привет!
Готовлю воркшоп на тему запросов Cypher для VolgaCTF, которая пройдет с 16 по 20 сентября. Сложно уместить большой объем информации в полтора часа, но попробую рассказать про основные моменты. А сейчас решил поделиться двумя интересными Cypher запросами из категории работы с путями и коллекциями.
Получить из пути только узлы пользователей или компьютеров:
MATCH p=shortestPath((n)-[*1..]->(m {highvalue:true})) WHERE m.domain="DOMAIN.LOCAL" AND m<>n
UNWIND nodes(p) AS t
WITH distinct(t) WHERE (t:User OR t:Computer)
RETURN t.name,labels(t)[0] AS nodetype
Разложить путь в виде узел-связь-узел:
MATCH p=(u:User)-[:MemberOf|AdminTo*1..]->(c:Computer)
UNWIND relationships(p) as t
RETURN
startNode(t).name as startnode,
type(t) as relation,
endNode(t).name as endnode
#BloodHound #Cypher