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

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

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

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

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

Категории

Все категории
Loading categories
threatest — CLI и Go-фреймворк для сквозного тестирования правил обнаружения угроз. Запускает техники атак и проверяет оповещения в платформах безопасности, таких как Datadog и Elastic Security. | Kitploit
Инструменты/GitHubGitHub/datadog/threatest
Оборонительные ИнструментыТестирование на ПроникновениеRed Teaming
GitHubdatadog/threatest

threatest

CLI и Go-фреймворк для сквозного тестирования правил обнаружения угроз. Запускает техники атак и проверяет оповещения в платформах безопасности, таких как Datadog и Elastic Security.

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

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

Threatest

unit tests static analysis

Threatest

Threatest — это CLI и Go-фреймворк для сквозного тестирования обнаружения угроз.

Threatest позволяет детонировать технику атаки и проверять, было ли сгенерировано ожидаемое оповещение в вашей любимой платформе безопасности.

Прочитайте анонс в блоге: https://securitylabs.datadoghq.com/articles/threatest-end-to-end-testing-threat-detection/

Концепции

Детонаторы

Детонатор описывает, как и где выполняется техника атаки.

Поддерживаемые детонаторы:

  • Локальное выполнение команд
  • Выполнение команд по SSH
  • Stratus Red Team
  • Детонатор AWS CLI
  • Детонатор AWS (только программный, не работает с CLI)

Соответствия оповещений

Соответствие оповещений — это интеграция, специфичная для платформы, которая может проверить, было ли вызвано ожидаемое оповещение.

Поддерживаемые соответствия оповещений:

  • Сигналы безопасности Datadog
  • Сигналы безопасности Elastic Security

Детонация и корреляция оповещений

Каждой детонации присваивается UUID. Этот UUID отражается в детонации и используется для обеспечения того, чтобы сопоставленное оповещение точно соответствовало этой детонации.

Способ этого зависит от детонатора; например, Stratus Red Team и AWS Detonator внедряют его в user-agent; SSH-детонатор использует родительский процесс, содержащий UUID.

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

Через CLI

Threatest поставляется с CLI, который можно использовать для запуска тестовых сценариев, описанных в YAML, согласно определённой схеме. Вы можете настроить эту схему в вашем редакторе, чтобы использовать линтинг и автодополнение в IDE (см. документацию для VSCode с использованием расширения YAML).

Установите CLI, скачав бинарный релиз или с помощью Homebrew:

root@kitploit:~
brew tap datadog/threatest https://github.com/datadog/threatest
brew install datadog/threatest/threatest

Пример использования:

root@kitploit:~
$ threatest lint scenarios.threatest.yaml
All 6 scenarios are syntaxically valid

# Local detonation
$ threatest run local-scenarios.threatest.yaml

# Remote detonation over SSH
$ threatest run scenarios.threatest.yaml --ssh-host test-box --ssh-username vagrant

# Alternatively, specify SSH parameters from environment variables
$ export THREATEST_SSH_HOST=test-box
$ export THREATEST_SSH_USERNAME=vagrant
$ threatest run scenarios.threatest.yaml

Примеры файлов определения сценариев

  • Детонация через SSH
root@kitploit:~
scenarios:
  # Remote detonation over SSH
  # Note: SSH configuration is provided using the --ssh-host, --ssh-username and --ssh-keyfile CLI arguments
  - name: curl metadata service
    detonate:
      remoteDetonator:
        commands: ["curl http://169.254.169.254 --connect-timeout 1"]
    expectations:
      - timeout: 1m
        datadogSecuritySignal:
          name: "Network utility accessed cloud metadata service"
          severity: medium
  • Детонация с помощью Stratus Red Team
root@kitploit:~
scenarios:
  # Stratus Red Team detonation
  # Note: You must be authenticated to the relevant cloud provider before running it
  # The example below is equivalent to manually running "stratus detonate aws.exfiltration.ec2-security-group-open-port-22-ingress"
  - name: opening a security group to the Internet
    detonate:
      stratusRedTeamDetonator:
        attackTechnique: aws.exfiltration.ec2-security-group-open-port-22-ingress
    expectations:
      - timeout: 15m
        datadogSecuritySignal:
          name: "Potential administrative port open to the world via AWS security group"
  • Детонация с помощью команд AWS CLI
root@kitploit:~
scenarios:
  # AWS CLI detonation
  # Note: You must be authenticated to AWS before running it and have the AWS CLI installed
  - name: opening a security group to the Internet
    detonate:
      awsCliDetonator:
        script: |
          set -e
          
          # Setup
          vpc=$(aws ec2 create-vpc --cidr-block 10.0.0.0/16 --query Vpc.VpcId --output text)
          sg=$(aws ec2 create-security-group --group-name sample-sg --description "Test security group" --vpc-id $vpc --query GroupId --output text)
          
          # Open security group
          aws ec2 authorize-security-group-ingress --group-id $sg --protocol tcp --port 22 --cidr 0.0.0.0/0
          
          # Cleanup
          aws ec2 delete-security-group --group-id $sg
          aws ec2 delete-vpc --vpc-id $vpc
    expectations:
      - timeout: 15m
        datadogSecuritySignal:
          name: "Potential administrative port open to the world via AWS security group"

Вы можете вывести результаты тестов в JSON-файл:

root@kitploit:~
$ threatest run scenarios.threatest.yaml --output test-results.json
$ cat test-results.json
[
  {
    "description": "change user password",
    "isSuccess": true,
    "errorMessage": "",
    "durationSeconds": 22.046627348,
    "timeDetonated": "2022-11-15T22:26:14.182844+01:00"
  },
  {
    "description": "adding an SSH key",
    "isSuccess": true,
    "errorMessage": "",
    "durationSeconds": 23.604699625,
    "timeDetonated": "2022-11-15T22:26:14.182832+01:00"
  },
  {
    "description": "change user password",
    "isSuccess": false,
    "errorMessage": "At least one scenario failed:\n\nchange user password returned: change user password: 1 assertions did not pass\n =\u003e Did not find Datadog security signal 'bar'\n",
    "durationSeconds": 3.505294235,
    "timeDetonated": "2022-11-15T22:26:36.229349+01:00"
  }
]

По умолчанию сценарии выполняются с максимальным параллелизмом 5. Вы можете увеличить это значение с помощью аргумента --parallelism. Обратите внимание, что при использовании удалённых SSH-детонаторов каждый запускаемый сценарий устанавливает новое SSH-соединение.

Использование Threatest программно

Смотрите примеры для полного примера программного использования.

Тестирование сигналов Datadog Cloud SIEM, вызванных Stratus Red Team

root@kitploit:~
threatest := Threatest()

threatest.Scenario("AWS console login").
  WhenDetonating(StratusRedTeamTechnique("aws.initial-access.console-login-without-mfa")).
  Expect(DatadogSecuritySignal("AWS Console login without MFA", WithSeverity("medium"))).
  WithTimeout(15 * time.Minute)

assert.NoError(t, threatest.Run())

Тестирование сигналов Datadog Cloud Workload Security, вызванных выполнением команд по SSH

root@kitploit:~
ssh, _ := NewSSHCommandExecutor("test-box", "", "")

threatest := Threatest()

threatest.Scenario("curl to metadata service").
  WhenDetonating(NewCommandDetonator(ssh, "curl http://169.254.169.254 --connect-timeout 1")).
  Expect(DatadogSecuritySignal("EC2 Instance Metadata Service Accessed via Network Utility"))

assert.NoError(t, threatest.Run())
Скачать инструмент