",
"query": "MATCH (n: Domain) RETURN n.name ORDER BY n.name DESC"
},
{
"final":true,
"query": "MATCH (c: CA) WHERE c.attributesubjectaltname2 = 'Enabled' AND c.domain = $result RETURN c",
"allowCollapse":true
}
]
},
{
"name": "ESC7",
"category": "ADCS Paths",
"queryList":[
{
"final":false,
"title": "Select a Domain…",
"query": "MATCH (n: Domain) RETURN n.name ORDER BY n.name DESC"
},
{
"final":true,
"query": " MATCH p=allshortestpaths((m)-[r: MemberOf|ManageCA|ManageCertificates*1..]->(n: CA)) WHERE m<>n AND n.domain = $result RETURN p",
"allowCollapse":true
}
]
},
{
"name": "ESC8",
"category": "ADCS Paths",
"queryList":[
{
"final":false,
"title": "Select a Domain…",
"query": "MATCH (n: Domain) RETURN n.name ORDER BY n.name DESC"
},
{
"final":true,
"query": "MATCH (c: CA) WHERE c.webenrollement = 'Enabled' AND c.domain = $result RETURN c",
"allowCollapse":true
}
]
},
{
"name": "ESC9 & ESC10 only template",
"category": "ADCS Paths",
"queryList":[
{
"final":false,
"title": "Select a Domain…",
"query": "MATCH (n: Domain) RETURN n.name ORDER BY n.name DESC"
},
{
"final":true,
"query": "MATCH p=(t: Template)-[r: HostedOn]->(c: CA) WHERE t.nosecurityextension = TRUE AND t.domain = $result RETURN c",
"allowCollapse":true
}
]
},
{
"name": "ESC11",
"category": "ADCS Paths",
"queryList":[
{
"final":false,
"title": "Select a Domain…",
"query": "MATCH (n: Domain) RETURN n.name ORDER BY n.name DESC"
},
{
"final":true,
"query": "MATCH (c: CA) WHERE c.enforceencrypticertrequest = 'Disabled' AND c.domain = $result RETURN c",
"allowCollapse":true
}
]
}
Совет
Рекомендуется собирать приложение после каждого добавленного блока, это избавит от поиска ошибок во всем коде, если вдруг что-то пойдет не так.
Сохраняем измененный файл и собираем приложение:
npm run build: win32
После сборки запустим обновленную версию BloodHound и перейдем во вкладку Analysis:
Рис. 4.86. Встроенные запросы для работы с шаблонами сертификатов
Добавление фильтров для запросовРанее в разделе Добавление атрибутов с правами
WriteProperty
мы уже добавляли фильтры для запросов, теперь то же самое сделаем для ADCS.Открываем файл
EdgeFilter.jsx
, расположенный в \src\components\SearchContainer\EdgeFilter
, находим div
, где расположен MS Graph App Roles
, и в него добавляем следующий код:…
title='ADCS'
edges={[
'CanEnroll',
'CanAutoEnroll',
'WriteProperty',
'RequestCertificates',
'ManageCA',
'ManageCertificates',
'Read',
'HostedOn',
]}
sectionName='adcs'
/>
…
Сохраняем измененный файл и собираем приложение:
npm run build: win32
Запускаем обновленную версию BloodHound. Нажимаем на фильтр и в результате видим, что появился новый раздел ADCS (рис 4.87).
Рис. 4.87. Добавленные фильтры
Добавление статистикиЗаключительным штрихом будет добавление статистики во вкладку Database Info. Для этого откроем файл
DatabaseDataDisplay.jsx,
который находится в директории src\components\SearchContainer\Tabs.
Находим раздел ONPREM
OBJECTS
и после статистики о групповых политиках добавляем запросы о центрах сертификации и шаблонах сертификатов:
…
query={'MATCH (n: GPO) RETURN count(n) AS count'}
index={index}
label={'GPOs'}
/>
query={'MATCH (n: CA) RETURN count(n) AS count'}
index={index}
label={'CAs'}
/>
query={'MATCH (n: Template) RETURN count(n) AS count'}
index={index}
label={'Certificate Templates'}
/>
…
Сохраним измененный файл и соберем наше приложение:
npm run build: win32
Запускаем обновленную версию BloodHound. Переходим во вкладку Database Info и можем наблюдать добавленную статистику по центрам сертификации и шаблонам сертификации.
Рис. 4.88. Статистика
Вместо заключения
BloodHound и neo4j предоставляют огромные возможности для анализа данных. И хотя в книге были рассмотрены только некоторые объекты инфраструктуры, их количество зависит только от фантазии.
В книге были рассмотрены различные примеры улучшения BloodHound, начиная с создания новых меток и связей и заканчивая добавлением новых интерфейсов в управление.
Предыдущая
Стр. 46 из 46