hacktricks/generic-methodologies-and-resources/threat-modeling.md

112 lines
12 KiB
Markdown
Raw Normal View History

2024-03-29 18:49:46 +00:00
# Моделювання загроз
2024-03-29 18:49:46 +00:00
## Моделювання загроз
Ласкаво просимо до всебічного посібника HackTricks з моделювання загроз! Розпочніть дослідження цього критично важливого аспекту кібербезпеки, де ми ідентифікуємо, розуміємо та розробляємо стратегії проти потенційних вразливостей у системі. Ця тема слугує покроковим посібником, наповненим реальними прикладами, корисним програмним забезпеченням та зрозумілими поясненнями. Ідеально підходить як для новачків, так і для досвідчених практиків, які прагнуть зміцнити свої оборонні механізми кібербезпеки.
### Загальновживані сценарії
1. **Розробка програмного забезпечення**: Як частина безпечного життєвого циклу розробки програмного забезпечення (SSDLC), моделювання загроз допомагає у **виявленні потенційних джерел вразливостей** на ранніх етапах розробки.
2. **Пентестинг**: Стандарт виконання пентестингу (PTES) вимагає **моделювання загроз для розуміння вразливостей системи** перед проведенням тесту.
### Модель загроз у короткому викладі
Модель загроз зазвичай представлена у вигляді діаграми, зображення або іншої візуальної ілюстрації, що зображає заплановану архітектуру або існуючу побудову програми. Вона нагадує **діаграму потоку даних**, але ключова відмінність полягає в її орієнтованому на безпеку дизайні.
Моделі загроз часто містять елементи, позначені червоним, що символізують потенційні вразливості, ризики або бар'єри. Для спрощення процесу ідентифікації ризиків використовується тріада CIA (Конфіденційність, Цілісність, Доступність), що становить основу багатьох методологій моделювання загроз, з яких STRIDE є однією з найпоширеніших. Однак обрана методологія може варіюватися в залежності від конкретного контексту та вимог.
### Тріада CIA
Тріада CIA є широко визнаною моделлю в галузі інформаційної безпеки, що означає Конфіденційність, Цілісність та Доступність. Ці три стовпи формують основу, на якій базуються багато заходів і політик безпеки, включаючи методології моделювання загроз.
1. **Конфіденційність**: Забезпечення того, щоб дані або система не були доступні несанкціонованим особам. Це центральний аспект безпеки, що вимагає відповідних контролів доступу, шифрування та інших заходів для запобігання витокам даних.
2. **Цілісність**: Точність, послідовність та надійність даних протягом їх життєвого циклу. Цей принцип забезпечує, щоб дані не були змінені або підроблені несанкціонованими сторонами. Це часто включає контрольні суми, хешування та інші методи перевірки даних.
3. **Доступність**: Це забезпечує, щоб дані та послуги були доступні авторизованим користувачам, коли це необхідно. Це часто включає надмірність, стійкість до збоїв та конфігурації високої доступності, щоб системи працювали навіть у разі збоїв.
2024-03-29 18:49:46 +00:00
### Методології моделювання загроз
1. **STRIDE**: Розроблена Microsoft, STRIDE є акронімом для **Спуфінг, Підробка, Відмова, Розкриття інформації, Відмова в обслуговуванні та Підвищення привілеїв**. Кожна категорія представляє тип загрози, і ця методологія зазвичай використовується на етапі проектування програми або системи для виявлення потенційних загроз.
2. **DREAD**: Це ще одна методологія від Microsoft, що використовується для оцінки ризиків виявлених загроз. DREAD означає **Потенціал шкоди, Відтворюваність, Експлуатованість, Постраждалі користувачі та Виявлення**. Кожен з цих факторів оцінюється, а результат використовується для пріоритизації виявлених загроз.
3. **PASTA** (Процес симуляції атак та аналізу загроз): Це семиетапна, **орієнтована на ризик** методологія. Вона включає визначення та ідентифікацію цілей безпеки, створення технічного обсягу, декомпозицію програми, аналіз загроз, аналіз вразливостей та оцінку ризиків/тріажу.
4. **Trike**: Це методологія, що базується на ризику, яка зосереджується на захисті активів. Вона починається з **перспективи управління ризиками** і розглядає загрози та вразливості в цьому контексті.
5. **VAST** (Візуальне, Гнучке та Просте моделювання загроз): Цей підхід прагне бути більш доступним і інтегрується в середовища гнучкої розробки. Він поєднує елементи з інших методологій і зосереджується на **візуальних представленнях загроз**.
6. **OCTAVE** (Оцінка критичних загроз, активів та вразливостей): Розроблена Центром координації CERT, ця структура орієнтована на **оцінку ризиків організації, а не конкретних систем або програмного забезпечення**.
2024-03-29 18:49:46 +00:00
## Інструменти
Існує кілька інструментів та програмних рішень, які можуть **допомогти** у створенні та управлінні моделями загроз. Ось кілька, які ви можете розглянути.
### [SpiderSuite](https://github.com/3nock/SpiderSuite)
Розширений кросплатформений та багатофункціональний графічний інтерфейс веб-спайдера/краулера для професіоналів у сфері кібербезпеки. Spider Suite може використовуватися для картографування та аналізу поверхні атаки.
2024-03-29 18:49:46 +00:00
**Використання**
1. Виберіть URL та скануйте
<figure><img src="../.gitbook/assets/threatmodel_spidersuite_1.png" alt=""><figcaption></figcaption></figure>
2. Перегляньте графік
<figure><img src="../.gitbook/assets/threatmodel_spidersuite_2.png" alt=""><figcaption></figcaption></figure>
### [OWASP Threat Dragon](https://github.com/OWASP/threat-dragon/releases)
Відкритий проект від OWASP, Threat Dragon є як веб-, так і настільним додатком, що включає діаграмування системи, а також механізм правил для автоматичного генерування загроз/заходів пом'якшення.
2024-03-29 18:49:46 +00:00
**Використання**
2024-03-29 18:49:46 +00:00
1. Створіть новий проект
<figure><img src="../.gitbook/assets/create_new_project_1.jpg" alt=""><figcaption></figcaption></figure>
2024-03-29 18:49:46 +00:00
Іноді це може виглядати так:
<figure><img src="../.gitbook/assets/1_threatmodel_create_project.jpg" alt=""><figcaption></figcaption></figure>
2024-03-29 18:49:46 +00:00
2. Запустіть новий проект
<figure><img src="../.gitbook/assets/launch_new_project_2.jpg" alt=""><figcaption></figcaption></figure>
2024-03-29 18:49:46 +00:00
3. Збережіть новий проект
<figure><img src="../.gitbook/assets/save_new_project.jpg" alt=""><figcaption></figcaption></figure>
2024-03-29 18:49:46 +00:00
4. Створіть свою модель
Ви можете використовувати інструменти, такі як SpiderSuite Crawler, щоб отримати натхнення, базова модель виглядатиме приблизно так
<figure><img src="../.gitbook/assets/0_basic_threat_model.jpg" alt=""><figcaption></figcaption></figure>
2024-03-29 18:49:46 +00:00
Трохи пояснення про сутності:
* Процес (Сама сутність, така як веб-сервер або веб-функціональність)
* Актор (Особа, така як відвідувач сайту, користувач або адміністратор)
2024-03-29 18:49:46 +00:00
* Лінія потоку даних (Індикатор взаємодії)
* Межа довіри (Різні сегменти або області мережі.)
* Сховище (Місця, де зберігаються дані, такі як бази даних)
2024-03-29 18:49:46 +00:00
5. Створіть загрозу (Крок 1)
Спочатку вам потрібно вибрати рівень, до якого ви хочете додати загрозу
<figure><img src="../.gitbook/assets/3_threatmodel_chose-threat-layer.jpg" alt=""><figcaption></figcaption></figure>
2024-03-29 18:49:46 +00:00
Тепер ви можете створити загрозу
<figure><img src="../.gitbook/assets/4_threatmodel_create-threat.jpg" alt=""><figcaption></figcaption></figure>
Зверніть увагу, що існує різниця між загрозами актора та загрозами процесу. Якщо ви додасте загрозу до актора, ви зможете вибрати лише "Спуфінг" та "Відмову". Однак у нашому прикладі ми додаємо загрозу до сутності процесу, тому ми побачимо це в полі створення загрози:
<figure><img src="../.gitbook/assets/2_threatmodel_type-option.jpg" alt=""><figcaption></figcaption></figure>
2024-03-29 18:49:46 +00:00
6. Готово
Тепер ваша завершена модель повинна виглядати приблизно так. І так ви створюєте просту модель загрози за допомогою OWASP Threat Dragon.
<figure><img src="../.gitbook/assets/threat_model_finished.jpg" alt=""><figcaption></figcaption></figure>
### [Microsoft Threat Modeling Tool](https://aka.ms/threatmodelingtool)
Це безкоштовний інструмент від Microsoft, який допомагає знаходити загрози на етапі проектування програмних проектів. Він використовує методологію STRIDE і особливо підходить для тих, хто розробляє на стеку Microsoft.