Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
threatmap — Моделировщик угроз IaC с использованием фреймворков STRIDE, MITRE ATT&CK и PASTA. Поддержка REST API, GraphQL и Docker для Terraform, CloudFormation и Kubernetes. | Kitploit
Инструменты/GitHubGitHub/bogdanticu88/threatmap
Статический анализБезопасность контейнеровАнализ уязвимостейАудит конфигурацииБезопасность облачных средDevSecOpsРазведка угрозБезопасность API
GitHubbogdanticu88/threatmap

threatmap

Моделировщик угроз IaC с использованием фреймворков STRIDE, MITRE ATT&CK и PASTA. Поддержка REST API, GraphQL и Docker для Terraform, CloudFormation и Kubernetes.

Репозиторий
61952 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
2026-03-25_12-36

threatmap

CI Version PyPI Python Docker STRIDE MITRE

PASTA
GraphQL API
License: MIT
Offline

Статический моделировщик угроз IaC, который анализирует манифесты Terraform, CloudFormation и Kubernetes и создаёт структурированные отчёты модели угроз на основе фреймворков STRIDE, MITRE ATT&CK или PASTA. Без сетевых вызовов, без облачных учётных данных, полностью офлайн. Работает как CLI, REST API или контейнеризированный сервис.


Быстрый старт

CLI:

root@kitploit:~
pip install threatmap
threatmap scan ./examples --output report.md --fail-on HIGH

Docker:

root@kitploit:~
docker run -v $(pwd):/workspace bogdynn/threatmap:2.1.0 threatmap scan /workspace --output /workspace/report.md

REST API Server:

root@kitploit:~
threatmap serve --host 0.0.0.0 --port 8000
# Or via Docker:
docker run -p 8000:8000 bogdynn/threatmap:2.1.0
# API endpoints: /health, /version, /rules, /analyze

GraphQL API:

root@kitploit:~
docker run -p 8000:8000 bogdynn/threatmap:2.1.0
# GraphQL endpoint: http://localhost:8000/graphql
# Queries: health, version, rules
# Mutations: analyze(content, filename, framework)

Поддерживаемые форматы и провайдеры

ФорматПровайдерРасширение
Terraform HCLAWS, Azure, GCP.tf
CloudFormationAWS.yaml, .yml, .json
Kubernetes manifestsKubernetes.yaml, .yml

Установка

Установка из PyPI:

root@kitploit:~
pip install threatmap

Или для локальной разработки:

root@kitploit:~
git clone https://github.com/bogdanticu88/threatmap.git
cd threatmap
pip install -e .

Использование

Сканировать директорию и вывести отчёт Markdown в stdout:

root@kitploit:~
threatmap scan ./terraform/

Сканировать несколько путей и записать JSON-отчёт в файл:

root@kitploit:~
threatmap scan ./terraform/ ./k8s/ ./cloudformation/ --format json --output report.json

Сгенерировать интерактивный HTML-отчёт или SARIF-отчёт для GitHub Security:

root@kitploit:~
threatmap scan ./infra/ --format html --output report.html
threatmap scan ./infra/ --format sarif --output report.sarif

CI-шлюз — код возврата 1, если найдена угроза CRITICAL или HIGH:

root@kitploit:~
threatmap scan ./infra/ --fail-on HIGH --output threat-report.md

Вывести только сводную таблицу в терминал, без записи полного отчёта:

root@kitploit:~
threatmap scan ./infra/ --summary

Использовать только ASCII-индикаторы серьёзности (без эмодзи) для сред, не поддерживающих Unicode:

root@kitploit:~
threatmap scan ./infra/ --ascii --output report.md

Анализировать с использованием различных фреймворков моделирования угроз:

root@kitploit:~
# STRIDE (по умолчанию)
threatmap scan ./infra/ --framework stride

# MITRE ATT&CK (сопоставляет тактики и техники)
threatmap scan ./infra/ --framework mitre --format json

# PASTA (ориентированное на активы моделирование угроз)
threatmap scan ./infra/ --framework pasta --format json

Фреймворки моделирования угроз

STRIDE (73 правила)

  • Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege
  • Ориентированный на угрозы подход, идеально подходит для выявления поверхности атак
  • Специфичен для провайдеров: AWS (22 правила), Azure (19 правил), GCP (15 правил), Kubernetes (17 правил)
  • Лучше всего подходит для: традиционного моделирования угроз, анализа архитектуры безопасности

MITRE ATT&CK (11 правил, 14 тактик)

  • Сопоставляет угрозы инфраструктуры с реальными тактиками и техниками злоумышленников
  • Выбор техник с учётом ресурсов для точного сопоставления TTP
  • Тактики: Reconnaissance, Initial Access, Execution, Persistence, Privilege Escalation, Defense Evasion, Credential Access, Discovery, Collection, Command & Control, Exfiltration, Impact, Lateral Movement
  • Лучше всего подходит для: согласования с данными об угрозах, планирования реагирования на инциденты, упражнений red team

PASTA (12 правил, ориентированный на активы)

  • Process for Attack Simulation and Threat Analysis
  • Подход, ориентированный на активы, фокусируется на том, что требует защиты
  • Типы активов: Data, Identity, Compute, Network, Infrastructure
  • Угрозы: Internal, External, Misconfiguration, Supply Chain
  • Лучше всего подходит для: приоритизации на основе рисков, стратегий защиты активов, угроз цепочки поставок

Пример вывода отчёта

При выполнении threatmap scan ./examples --output report.md с включёнными примерами создаётся полный отчёт Markdown. Ниже приведён репрезентативный фрагмент.

Таблица угроз STRIDE

IDСерьёзностьКатегория STRIDEРесурсОписание
T-001🔴 CRITICALInformation DisclosureAuditBucketS3 bucket 'AuditBucket' не имеет настроенного блока публичного доступа — bucket может быть общедоступен.
T-002🔴 CRITICALSpoofingWebSecurityGroupГруппа безопасности 'WebSecurityGroup' открывает SSH/RDP (порт 22/3389) для 0.0.0.0/0.
T-003🔴 CRITICALElevation of Privilegeapp_contributorНазначение роли 'app_contributor' предоставляет привилегированную роль 'Contributor'.
T-006🟠 HIGHInformation DisclosureAuditBucketS3 bucket 'AuditBucket' не использует шифрование на стороне сервера.
T-008🟠 HIGHElevation of PrivilegeapiКонтейнер 'api' в Deployment 'api' может работать от root (нет runAsNonRoot=true или runAsUser=0).
T-011🟠 HIGHElevation of PrivilegewebEC2 instance 'web' поддерживает IMDSv1 — метаданные доступны без токенов сессии, что позволяет кражу учётных данных через SSRF.

Детали устранения (отрывок)

root@kitploit:~
### T-002 — Spoofing (CRITICAL)

Resource:   AWS::EC2::SecurityGroup.WebSecurityGroup
Property:   ingress.ssh_rdp_open
Finding:    Security group 'WebSecurityGroup' exposes SSH/RDP (port 22/3389) to 0.0.0.0/0.
Mitigation: Remove public SSH/RDP access. Use AWS Systems Manager Session Manager
            or a bastion host with IP restrictions.

Диаграмма потоков данных (Mermaid)

В отчёт добавляется диаграмма Mermaid flowchart LR. Узлы окрашены по наихудшей серьёзности (🔴 красный = CRITICAL, 🟠 оранжевый = HIGH). Вставьте блок в любой рендерер Mermaid или просмотрите его непосредственно на GitHub.

root@kitploit:~
flowchart LR
    Internet((Internet))
    subgraph Networking
        aws_security_group_web_sg{web_sg}
        NetworkPolicy_default_deny{default-deny}
        azurerm_network_security_group_app_nsg{app_nsg}
    end
    subgraph Compute
        aws_instance_web[web]
    end
    subgraph Kubernetes
        Namespace_myapp[myapp]
        Deployment_api[api]
        Service_api_svc[api-svc]
        Ingress_api_ingress[api-ingress]
    end
    subgraph Data
        aws_s3_bucket_app_data[(app_data)]
        aws_db_instance_app_db[(app_db)]
        azurerm_storage_account_app_storage[(app_storage)]
    end
    subgraph Security
        azurerm_key_vault_app_kv[app_kv]
    end
    subgraph Identity
        azurerm_role_assignment_app_contributor[/app_contributor/]
    end
    AWS__S3__Bucket_AppBucket -->|ref| AWS__S3__Bucket_AuditBucket
    AWS__CloudTrail__Trail_AppTrail -->|ref| AWS__S3__Bucket_AuditBucket
    Internet -->|HTTPS| Ingress_api_ingress
    style aws_security_group_web_sg fill:#ff4444,color:#fff
    style aws_s3_bucket_app_data fill:#ff4444,color:#fff
    style aws_instance_web fill:#ff8800,color:#fff
    style Deployment_api fill:#ff8800,color:#fff
    style azurerm_key_vault_app_kv fill:#ffcc00,color:#000
    style azurerm_network_security_group_app_nsg fill:#ff8800,color:#fff
    style azurerm_role_assignment_app_contributor fill:#ff4444,color:#fff

Расширенные возможности (v2.1.0+)

Анализ путей атак на основе графа

threatmap теперь включает графовую интеллектуальность, которая отслеживает связи между ресурсами. Он автоматически выявляет "цепочки" угроз, когда компрометация одного ресурса (например, доступного из интернета EC2) напрямую ведёт к другому (например, приватному S3 bucket), помечая их как пути атак Elevation of Privilege.

Пользовательские правила YAML

Вы можете определить внутренние требования безопасности, создав файл threatmap_rules.yaml в корне проекта.

root@kitploit:~
rules:
  - resource_type: "aws_s3_bucket"
    property: "force_destroy"
    expected: false
    stride: "Tampering"
    severity: "MEDIUM"
    description: "Production buckets should not have force_destroy enabled."
    mitigation: "Set force_destroy = false."

Подсказки по устранению

Большинство находок теперь включают поле remediation (видно в JSON, HTML и SARIF отчётах), которое содержит точный фрагмент кода, необходимый для устранения проблемы безопасности.


Архитектура

STRIDE Analyzer — правила угроз, специфичные для провайдеров:

root@kitploit:~
threatmap/analyzers/
├── aws.py         # 22 правила — S3, IAM, EC2, RDS, EKS, CloudTrail, KMS, Lambda
├── azure.py       # 19 правил — Storage, Key Vault, NSG, RBAC, AKS, ACR, SQL
├── gcp.py         # 15 правил — GCS, Firewall, Compute, Cloud SQL, GKE, IAM, KMS
└── kubernetes.py  # 17 правил — workloads, RBAC, network, secrets

MITRE ATT&CK Analyzer — 11 правил, сопоставленных с тактиками MITRE:

  • Выбор техник с учётом ресурсов
  • Поддержка: IAM, Storage, Network, Compute, Kubernetes, Databases
  • Предоставляет сопоставление тактика→техника для согласования с данными об угрозах

PASTA Analyzer — 12 правил с ориентацией на активы:

  • Классифицирует ресурсы по типу актива (data, identity, compute, network, infrastructure)
  • Идентифицирует угрозы (internal, external, misconfiguration, supply chain)
  • Назначает сценарии атак для каждой угрозы

APIs:

  • REST API: /health, /version, /rules, /analyze, /analyze/file
  • GraphQL API: /graphql с Query (health, version, rules) и Mutation (analyze)

Каждое правило — это функция, получающая объект Resource (нормализованный из любого исходного формата) и возвращающая Threat при выполнении условия. Правила — это простые условные конструкции Python: без DSL, без движка регулярных выражений, без внешних файлов с правилами.

Как назначаются уровни серьёзности

Серьёзность отражает как эксплуатируемость, так и радиус поражения:

СерьёзностьЗначение
CRITICALНапрямую эксплуатируемо без дополнительных условий (например, SSH открыт для 0.0.0.0/0, политика IAM с wildcard, привязка cluster-admin к anonymous)
HIGHЗначительный риск, требующий одного дополнительного шага (например, незашифрованная RDS с публичным доступом, IMDSv1 на EC2)
MEDIUMОтсутствие элементов защиты в глубину — более низкий непосредственный риск, но нарушение базовых стандартов безопасности (например, отсутствие версионирования, логирования, ограничений ресурсов)
LOWПробелы в лучших практиках с ограниченной самостоятельной эксплуатируемостью (например, Lambda не в VPC)

Как избегаются ложные срабатывания

  • Без эвристик или ML — каждое правило срабатывает на конкретное, однозначное значение свойства (например, publicly_accessible = true, Principal: "*").
  • Консервативные значения по умолчанию — если свойство отсутствует, правило предполагает небезопасное значение по умолчанию (например, отсутствие блока metadata_options на EC2 означает, что IMDSv1 активен, так как это значение по умолчанию AWS).
  • Без межаккаунтного или runtime-состояния — инструмент смотрит только на то, что объявлено в шаблоне. Он не пытается выводить SCP, границы разрешений или runtime-конфигурации, которые могут смягчить находку.
  • Дедупликация в движке — находки индексируются по (stride_category, resource_name, trigger_property), поэтому одна и та же логическая проблема никогда не сообщается дважды, даже если появляется в нескольких форматах файлов.

Интеграция с CI

root@kitploit:~
# .github/workflows/threat-model.yml
name: Threat Model

on: [pull_request]

jobs:
  threatmap:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.11"

      - name: Install threatmap
        run: pip install threatmap

      - name: Run threat model scan
        run: |
          threatmap scan ./infra/ \
            --format markdown \
            --output threat-report.md \
            --fail-on HIGH

      - name: Upload threat report
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: threat-report
          path: threat-report.md

Флаг --fail-on HIGH заставляет задачу завершиться с кодом 1, если обнаружена угроза HIGH или CRITICAL, блокируя слияние PR. Загруженный артефакт предоставляет рецензентам полный отчёт без выхода из pull request.


Покрытие правил STRIDE

ПровайдерПравила
AWS (Terraform + CloudFormation)22
Azure (Terraform)19
GCP (Terraform)15
Kubernetes17
Итого73

Категории, охваченные для каждого провайдера:

ProviderSTRIDE
AWS✓✓✓✓✓✓
Azure✓✓✓✓—✓
GCP✓✓✓✓—✓
Kubernetes✓✓—✓✓✓

(S=Spoofing, T=Tampering, R=Repudiation, I=Information Disclosure, D=Denial of Service, E=Elevation of Privilege)


Разработка

Запустить тесты:

root@kitploit:~
pytest tests/ -v

Запустить с покрытием:

root@kitploit:~
pytest tests/ --cov=threatmap --cov-report=term-missing

Участие в разработке

  1. Сделайте форк репозитория
  2. Добавьте правила в threatmap/analyzers/<provider>.py по существующему шаблону
  3. Добавьте фикстуру в tests/fixtures/, которая активирует новое правило
  4. Добавьте утверждения в tests/test_analyzers.py
  5. Откройте pull request
Скачать инструмент