Merge branch 'master' of https://gitlab.com/krakow2600/atomic-threat-coverage into fix_multiple_directories_issue

This commit is contained in:
Yugoslavskiy Daniil 2019-02-20 23:14:11 +01:00
commit d96015f691
6 changed files with 52 additions and 26 deletions

View File

@ -45,7 +45,7 @@ We decided to make it different.
Atomic Threat Coverage is a framework which allows you to create and maintain **your own** analytics repository, import analytics from other projects (like [Sigma](https://github.com/Neo23x0/sigma), [Atomic Red Team](https://github.com/redcanaryco/atomic-red-team), as well as private forks of these projects with **your own** analytics) and do export into human-readable wiki-style pages in two (for now) platforms:
1. [Atlassian Confluence](https://www.atlassian.com/software/confluence) pages ([here](https://atomicthreatcoverage.atlassian.net/wiki/spaces/DEMO/pages/10944874/win+susp+powershell+hidden+b64+cmd) is the demo of automatically generated knowledge base)
1. [Atlassian Confluence](https://www.atlassian.com/software/confluence) pages ([here](https://atomicthreatcoverage.atlassian.net/wiki/spaces/ATC/pages/126025996/WMI+Persistence+-+Script+Event+Consumer) is the demo of automatically generated knowledge base)
2. [This repo itself](Atomic_Threat_Coverage) — automatically generated markdown formated wiki-style pages
In other words, you don't have to work on data representation layer manually, you work on meaningful atomic pieces of information (like Sigma rules), and Atomic Threat Coverage will automatically create analytics database with all entities, mapped to all meaningful, actionable metrics, ready to use, ready to share and show to leadership, customers and colleagues.
@ -54,17 +54,17 @@ In other words, you don't have to work on data representation layer manually, yo
Everything starts from Sigma rule and ends up with human-readable wiki-style pages. Atomic Threat Coverage parses it and:
1. Maps **Detection Rule** to ATT&CK Tactic and Technique using `tags` from Sigma rule
2. Maps **Detection Rule** to **Data Needed** using `logsource` and `detection` sections from Sigma rule
3. Maps **Detection Rule** to **Triggers** (Atomic Red Team tests) using `tags` from Sigma rule
4. Maps **Detection Rule** to **Enrichments** using existing mapping inside **Detection Rule**
5. Maps **Response Playbooks** to ATT&CK Tactic and and Technique using existing mapping inside **Response Playbooks**
6. Maps **Response Playbooks** to **Response Actions** using existing mapping inside **Response Playbooks**
7. Maps **Logging Policies** to **Data Needed** using existing mapping inside **Data Needed**
1. Maps Detection Rule to ATT&CK Tactic and Technique using `tags` from Sigma rule
2. Maps Detection Rule to Data Needed using `logsource` and `detection` sections from Sigma rule
3. Maps Detection Rule to Triggers (Atomic Red Team tests) using `tags` from Sigma rule
4. Maps Detection Rule to Enrichments using existing mapping inside Detection Rule
5. Maps Response Playbooks to ATT&CK Tactic and Technique using existing mapping inside Response Playbooks
6. Maps Response Actions to Response Playbooks using existing mapping inside Response Playbooks
7. Maps Logging Policies to Data Needed using existing mapping inside Data Needed
8. Converts everything into Confluence and Markdown wiki-style pages using jinja templates (`scripts/templates`)
9. Pushes all pages to local repo and Confluence server (according to configuration provided in `scripts/config.yml`)
10. Creates `analytics.csv` and `pivoting.csv` files for simple analysis of existing data
11. Creates `atc_export.json` — [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/enterprise/) profile for visualisation of current detection abilities
11. Creates `atc_attack_navigator_profile.json` — [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/enterprise/) profile for visualisation of current detection abilities
### Under the hood
@ -72,6 +72,7 @@ Data in the repository:
```
├── analytics.csv
├── atc_attack_navigator_profile.json
├── pivoting.csv
├── data_needed
│   ├── DN_0001_4688_windows_process_creation.yml
@ -303,6 +304,15 @@ At the same time it highlights which fields could be found only with specific en
<img src="images/pivoting_parent_v1.png" />
</details>
#### atc_attack_navigator_profile.json
Last but not least — Atomic Threat Coverage generates [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/enterprise/) [profile](atc_attack_navigator_profile.json) for visualisation of current detection abilities, gap analysis, development prioritisation, planning etc. You only need to upload it to public or (better) private Navigator site, click New Tab -> Open Existing Layer -> Upload from local. Here is how it looks like for default ATC dataset (original [Sigma](https://github.com/Neo23x0/sigma) repository rules, Windows only):
<details>
<summary>Navigator profile for original Sigma Rules (click to expand)</summary>
<img src="images/navigator_v1.png" />
</details>
## Goals
1. Stimulate community to use [Sigma](https://github.com/Neo23x0/sigma) rule format (so we will have more contributors, more and better converters)
@ -324,7 +334,7 @@ At the same time it highlights which fields could be found only with specific en
9. Execute `make` in root directory of the repository
You don't have to add anything to make it work in your environment, you can just configure export settings using `scripts/config.yml` and utilise default dataset.
At the same time you can access [demo](https://atomicthreatcoverage.atlassian.net/wiki/spaces/DEMO/pages/10944874/win+susp+powershell+hidden+b64+cmd) of automatically generated knowledge base in Confluence to make yourself familiar with final result with default dataset.
At the same time you can access [demo](https://atomicthreatcoverage.atlassian.net/wiki/spaces/ATC/pages/126025996/WMI+Persistence+-+Script+Event+Consumer) of automatically generated knowledge base in Confluence to make yourself familiar with final result with default dataset.
## Current Status: Alpha

View File

@ -45,7 +45,7 @@ Postanowiliśmy zrobić to inaczej.
Atomic Threat Coverage jest narzędziem, które pozwala na stworzenie i utrzymywania **własnego** repozytorium analitycznego, importowanie danych z innych projektów (przykładowo [Sigma](https://github.com/Neo23x0/sigma), [Atomic Red Team](https://github.com/redcanaryco/atomic-red-team) jak również z prywantej kopii tych projektów z **własnymi** analizami, oraz wyeksportowanie wszystkich informacje do czytelnego dla człowieka formatu, w stylu wiki, na dwa (jak dotąd) sposoby:
1. [Atlassian Confluence](https://www.atlassian.com/software/confluence) ([tutaj](https://atomicthreatcoverage.atlassian.net/wiki/spaces/DEMO/pages/10944874/win+susp+powershell+hidden+b64+cmd) znajduje się demo bazy wiedzy automatycznie wygenerowanej przez Atomic Threat Coverage)
1. [Atlassian Confluence](https://www.atlassian.com/software/confluence) ([tutaj](https://atomicthreatcoverage.atlassian.net/wiki/spaces/ATC/pages/126025996/WMI+Persistence+-+Script+Event+Consumer) znajduje się demo bazy wiedzy automatycznie wygenerowanej przez Atomic Threat Coverage)
2. [To repozytorium samo w sobie](Atomic_Threat_Coverage) — wiki stworzona przy użyciu plików markdown
Innymi słowy, nie potrzeba już samodzielenie pracować nad warstwą prezentacji manualnie. Wystarczy skupić się na wartościowej pracy (np. tworzenie reguł Sigma), a Atomic Threat Coverage automatycznie wygeneruje analityczną bazę danych ze wszystkimi danymi, mapując wszystkie wartościowe metryki. Gotowe do użycia, udostępniania i prezentowania kierownictwu, klientowi i kolegom repozytorium.
@ -318,7 +318,7 @@ Jednocześnie wskazuje, które pola mogą być znalezione przy konkretnym Enrich
Nie musisz tworzyć niczego, aby framework zadziałał w danym środowisku. Wystarczy skonfigurować polityke eksportowania w `scripts/config.yml` i użyć domyślnych ustawień.
Dostępne też jest publicznie dostępne [demo](https://atomicthreatcoverage.atlassian.net/wiki/spaces/DEMO/pages/10944874/win+susp+powershell+hidden+b64+cmd) automatycznie wygenerowanej bazy wiedzy w Confluence, aby móc zapoznać się z wynikiem działania frameworku z domyślnymi danymi.
Dostępne też jest publicznie dostępne [demo](https://atomicthreatcoverage.atlassian.net/wiki/spaces/ATC/pages/126025996/WMI+Persistence+-+Script+Event+Consumer) automatycznie wygenerowanej bazy wiedzy w Confluence, aby móc zapoznać się z wynikiem działania frameworku z domyślnymi danymi.
## Aktualny status: Alfa

View File

@ -26,7 +26,7 @@ Atomic Threat Coverage является автоматизированным ф
Существует много достойных проектов, которые реализуют функциональность (или предоставляют аналитику) конкретной направленности ([Sigma](https://github.com/Neo23x0/sigma), [Atomic Red Team](https://github.com/redcanaryco/atomic-red-team), [MITRE CAR](https://car.mitre.org)). Их объединяет один недостаток — они существуют в вакууме своей области. В реальности же все очень тесно взаимосвязанно — данные для обнаружения угроз не берутся из ниоткуда, и генерируемые Алерты не уходят в никуда. Каждая функция, будь то сбор данных, администрирование систем защиты, обнаружение угроз или реагирование на них — это составная часть большого и сложного процесса, завязанного на несколько подразделений, требующая их плотного взаимодействия.
Проблемы одной функции зачастую проще, дешевле и эффективнее решать методами другой. Многие задачи не решаются в рамках одной функции в принципе. Каждая из функций базируется на возможностях и качеству другой. Не получится эффективно детектировать угрозы и реагировать на инциденты без сбора и обогащения необходимых данных. Не получится эффективно реагировать на инциденты без понимания того, какими средствами/системами/технологиями можно блокировать угрозу. Крайне неэффективно проводить тестирование на проникновение или Red Team exercises без представления о возможностях процессов, персонала и систем по блокированию, обнаружению и реагированию на инциденты. Все это требует тесного взаимодействия и взаимопонимания между подразделениями.
Проблемы одной функции зачастую проще, дешевле и эффективнее решать методами другой. Многие задачи не решаются в рамках одной функции в принципе. Каждая из функций базируется на возможностях и качестве другой. Не получится эффективно детектировать угрозы и реагировать на инциденты без сбора и обогащения необходимых данных. Не получится эффективно реагировать на инциденты без понимания того, какими средствами/системами/технологиями можно блокировать угрозу. Крайне неэффективно проводить тестирование на проникновение или Red Team exercises без представления о возможностях процессов, персонала и систем по блокированию, обнаружению и реагированию на инциденты. Все это требует тесного взаимодействия и взаимопонимания между подразделениями.
На практике наблюдается сложность во взаимодействии, обусловленная следующими факторами:
@ -45,7 +45,7 @@ Atomic Threat Coverage является автоматизированным ф
Atomic Threat Coverage это фреймворк для создания **вашей собственной** базы знаний, импорта аналитики из других проектов (таких как [Sigma](https://github.com/Neo23x0/sigma), [Atomic Red Team](https://github.com/redcanaryco/atomic-red-team), а также **ваших** приватных форков этих проектов с **вашей** аналитикой) и экспорта этой аналитики в удобные для восприятия человеком статьи в две (на текущий момент) платформы:
1. [Atlassian Confluence](https://www.atlassian.com/software/confluence) ([здесь](https://atomicthreatcoverage.atlassian.net/wiki/spaces/DEMO/pages/10944874/win+susp+powershell+hidden+b64+cmd) можно посмотреть автоматически сгенерированную базу знаний)
1. [Atlassian Confluence](https://www.atlassian.com/software/confluence) ([здесь](https://atomicthreatcoverage.atlassian.net/wiki/spaces/ATC/pages/126025996/WMI+Persistence+-+Script+Event+Consumer) можно посмотреть автоматически сгенерированную базу знаний)
2. [В текущий репозиторий](Atomic_Threat_Coverage) — автоматически сгенерированные статьи в вики-формате на языке Markdown
Другими словами, вам не нужно работать с уровнем представления данных вручную, вы работаете только с осмысленными атомарными кусочками информации (такими как Sigma правила), и Atomic Threat Coverage автоматически создаст базу аналитики со всеми сущностями, связанными со всеми важными, действенными метриками, готовую к использованию, распространению, презентации руководству, заказчикам и коллегам.
@ -54,14 +54,17 @@ Atomic Threat Coverage это фреймворк для создания **ва
Все начинается с Sigma правила и заканчивается удобными для восприятия человеком статьями. Atomic Threat Coverage парсит Sigma правило, после чего:
1. Привязывает Detection Rule к тактике ATT&CK, используя `tags` Sigma правила
2. Привязывает Detection Rule к технике ATT&CK, используя `tags` Sigma правила
3. Привязывает Detection Rule к Data Needed, используя `logsource` и `detection` Sigma правила
4. Привязывает Detection Rule к Trigger, (Atomic Red Team тест), используя `tags` Sigma правила
5. Привязывает Logging Policies к Data Needed используя существующую в Data Needed ссылку
6. Конвертирует все в Confluence и Markdown вики-подобные статьи используя шаблоны jinja (`scripts/templates`)
7. Создает статьи в локальном репозитории и в Confluence (согласно конфигурации в `scripts/config.yml`)
8. Создает `analytics.csv` файл для простой аналитики имеющихся данных
1. Привязывает Detection Rules к тактикам и техникам ATT&CK, используя `tags` Sigma правила
2. Привязывает Detection Rules к Data Needed, используя `logsource` и `detection` Sigma правила
3. Привязывает Detection Rules к Triggers, (Atomic Red Team тест), используя `tags` Sigma правила
4. Привязывает Detection Rules к Enrichments используя существующие в Detection Rule ссылки
5. Привязывает Response Playbooks к тактикам и техникам ATT&CK, используя существующие в Response Playbooks ссылки
6. Привязывает Response Playbooks к Response Actions используя существующие в Response Playbooks ссылки
7. Привязывает Logging Policies к Data Needed используя существующие в Data Needed ссылки
8. Конвертирует все в Confluence и Markdown вики-подобные статьи используя шаблоны jinja (`scripts/templates`)
9. Создает статьи в локальном репозитории и в Confluence (согласно конфигурации в `scripts/config.yml`)
10. Создает `analytics.csv` и `pivoting.csv` файлы для анализа имеющихся данных
11. Создает `atc_attack_navigator_profile.json` — [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/enterprise/) профайл для визуализации текущих возможностей по обнаружению угроз
### Под капотом
@ -69,6 +72,7 @@ Atomic Threat Coverage это фреймворк для создания **ва
```
├── analytics.csv
├── atc_attack_navigator_profile.json
├── pivoting.csv
├── data_needed
│   ├── DN_0001_4688_windows_process_creation.yml
@ -279,7 +283,7 @@ Atomic Threat Coverage генерирует [analytics.csv](analytics.csv) —
<br>
В идеале, этот файл может предоставить организациям возможность выразить возможности обнаружения конкретного набора угроз **в денежном эквиваленте**. Например:
Потенциально [analytics.csv](analytics.csv) может предоставить организациям возможность выразить возможности обнаружения конкретного набора угроз **в денежном эквиваленте**. Например:
- Если мы собираем все Data Needed со всех хостов для реализации всех Detection Rules которые у нас на текущий момент есть, это будет X событий в секунду (Events Per Second, EPS) с Y ресурсов (HDD/SSD, RAM, CPU) для хранения и обработки данных (для расчета количества данных необходимо провести ~2 недельный тест). Необходимые мощности легко выражаются в деньгах, с более или менее конкретной цифрой
- Если мы собираем Data Needed только с критичных хостов для реализации Detection Rules исключительно с высоким уровнем критичности, это будет X событий в секунду (Events Per Second, EPS) с Y ресурсов (HDD/SSD, RAM, CPU) для хранения и обработки данных (для рассчета количества данных необходимо провести ~2 недельный тест). Необходимые мощности легко выражаются в деньгах, с более или менее конкретной цифрой
@ -296,13 +300,22 @@ Atomic Threat Coverage генерирует [pivoting.csv](pivoting.csv) — с
<br>
В то же время pivoting.csv отображает какие поля могу быть найдены только в случае использования конкретных методов обогащения:
В то же время [pivoting.csv](pivoting.csv) отображает какие поля могу быть найдены только в случае использования конкретных методов обогащения:
<details>
<summary>Пример фильтра по полю "ParentImage" (кликните чтобы раскрыть)</summary>
<img src="images/pivoting_parent_v1.png" />
</details>
#### atc_attack_navigator_profile.json
Atomic Threat Coverage генерирует [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/enterprise/) [профайл](atc_attack_navigator_profile.json) для визуализации текущих возможностей по обнаружению угроз, анализа пробелов, приоритизации разработки, планирования, и так далее. Вам необходимо загрузить этот файл в публичный или (правильнее) приватный сайт ATT&CK Navigator, кликнуть New Tab -> Open Existing Layer -> Upload from local. Вот как выглядит текущий профайл, сгенерированный на основе существующих данных (оригинальные [Sigma](https://github.com/Neo23x0/sigma) правила, только Windows):
<details>
<summary>ATT&CK Navigator профайл для оригинальных правил Sigma (кликните чтобы раскрыть)</summary>
<img src="images/navigator_v1.png" />
</details>
## Цели проекта
1. Стимулировать сообщество использовать [Sigma](https://github.com/Neo23x0/sigma) правила (больше разработчиков, больше конверторов хорошего качества)
@ -323,6 +336,9 @@ Atomic Threat Coverage генерирует [pivoting.csv](pivoting.csv) — с
8. Настройте экспорт в Confluence используя файл `scripts/config.yml`
9. Исполните команду `make` в корне репозитория
Вам не обязательно добавлять какие-либо данные чтобы все заработало. Вы можете просто настроить экспорт посредством `scripts/config.yml` и использовать существующие данные.
В то же время вы можете посмотреть [демо](https://atomicthreatcoverage.atlassian.net/wiki/spaces/ATC/pages/126025996/WMI+Persistence+-+Script+Event+Consumer) автоматически сгенерированной базы знаний в Confluence чтобы для ознакомления с результатом экспорта с существующими данными.
## Текущая стадия разработки: Alpha
Этот проект на текущий момент находится в стадии Alpha. Он поддерживает не все существующие Sigma правила официального репозитория (на текущий момент покрытие ~80%), также нам предстоит разработать новые сущности (такие как Mitigation Systems). Мы горячо приветствуем конструктивные отзывы, комментарии и предложения по улучшению проекта.
@ -352,7 +368,7 @@ Atomic Threat Coverage генерирует [pivoting.csv](pivoting.csv) — с
После этого вам будет необходимо обновить пути к данным в конфигурационном файле `scripts/config.yml`, таким образом Atomic Threat Coverage начнет использовать вашу собственную аналитику для генерации базы знаний.
#### Sigma не поддерживает некоторые из моих Правил Обнаружени. Есть ли смысл использовать Atomic Threat Coverage в таком случае?
#### Sigma не поддерживает некоторые из моих Правил Обнаружения. Есть ли смысл использовать Atomic Threat Coverage в таком случае?
Определенно. У нас тоже есть набор правил которые не могут быть автоматически сконверированы в запросы SIEM/LM систем посредством Sigma. Мы по прежнему используем Sigma формат для таких правил, помещая неподдерживаемую логику обнаружения в поле "condition". На основе этого поля SIEM/LM команды вручную разрабатывают правила корреляции/поисковые запросы.

BIN
images/navigator_v1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 897 KiB

View File

@ -91,7 +91,7 @@ def main():
if __name__ == '__main__':
main()
filename = 'atc_export.json'
filename = 'atc_attack_navigator_profile.json'
with open('../' + filename, 'w') as fp:
json.dump(NAVIGATOR_TEMPLATE, fp)
print(f'[+] Created {filename}')