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

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

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

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

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

Категории

Все категории
Loading categories
atomic-operator — Пакет Python используется для выполнения тестов Atomic Red Team (Atomics) в нескольких операционных системах. | Kitploit
Инструменты/GitHubGitHub/swimlane/atomic-operator
Оборонительные ИнструментыСкриптинг и автоматизацияТестирование на ПроникновениеБезопасность облачных средОбучение и ОбразованиеRed TeamingArchived
GitHubswimlane/atomic-operator

atomic-operator

Пакет Python используется для выполнения тестов Atomic Red Team (Atomics) в нескольких операционных системах.

Репозиторий
156312 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

PyPI Status Python Version [License][license]

Read the documentation at https://atomic-operator.com/ Code Quality & Tests

Black

atomic-operator

Этот пакет Python используется для выполнения тестов Atomic Red Team (Atomics) в различных операционных системах.

(Что нового?)

Зачем?

atomic-operator позволяет специалистам по безопасности проверять свои возможности обнаружения и защиты от предписанных техник, определённых в atomic-red-team. Используя фреймворк для тестирования, такой как atomic-operator, вы можете выявить как свои защитные возможности, так и пробелы в защите.

Кроме того, atomic-operator можно использовать во многих других ситуациях, например:

  • Генерация оповещений для тестирования продуктов
  • Тестирование EDR и других инструментов безопасности
  • Выявление способов обороны с точки зрения злоумышленника
  • И многое другое.

Возможности

  • Поддержка локального и удалённого выполнения тестов Atomic Red Team на системах Windows, macOS и Linux
  • Поддержка запуска atomic-тестов против iaas:aws
  • Возможность запроса входных аргументов (но не обязательна)
  • Помощь в загрузке репозитория atomic-red-team
  • Возможность дальнейшей автоматизации на основе файла конфигурации
  • Интерфейс командной строки и импортируемый пакет Python
  • Выбор конкретных тестов при указании одной или нескольких техник
  • Поиск по всем atomic-тестам для поиска идеального теста
  • Передача входных аргументов для тестов через командную строку
  • И многое другое

Начало работы

atomic-operator — это пакет только для Python, размещённый на PyPi, и работает с Python 3.6 и новее.

Если вам нужна версия на PowerShell, пожалуйста, посмотрите Invoke-AtomicRedTeam.

root@kitploit:~
pip install atomic-operator

Следующие шаги помогут вам настроить и запустить atomic-operator.

  • Получение Atomics Установка / клонирование репозитория Atomic Red Team
  • atomic-operator Понимание доступных опций в atomic-operator
  • Запуск тестов из командной строки или Запуск тестов внутри скрипта
  • Запуск тестов через файл конфигурации

Установка

Вы можете установить atomic-operator на OS X, Linux или Windows. Также можно установить напрямую из исходного кода. Для установки используйте команды, соответствующие вашей операционной системе, приведённые ниже.

Предварительные требования

Следующие библиотеки требуются и устанавливаются вместе с atomic-operator:

root@kitploit:~
pyyaml==5.4.1
fire==0.4.0
requests==2.26.0
attrs==21.2.0
pick==1.2.0

macOS, Linux и Windows:

root@kitploit:~
pip install atomic-operator

macOS с процессором M1

root@kitploit:~
git clone https://github.com/swimlane/atomic-operator.git
cd atomic-operator

# Устранение ModuleNotFoundError: No module named 'setuptools_rust'
brew install rust
pip3 install --upgrade pip
pip3 install setuptools_rust

# Возвращаемся к обычной программе...
pip install -r requirements.txt
python setup.py install

Установка из исходного кода

root@kitploit:~
git clone https://github.com/swimlane/atomic-operator.git
cd atomic-operator
pip install -r requirements.txt
python setup.py install

Пример использования (командная строка)

Вы можете запускать atomic-operator из командной строки или внутри собственных скриптов Python. Чтобы использовать atomic-operator в командной строке, просто введите следующее в терминале:

root@kitploit:~
atomic-operator --help
atomic-operator run -- --help

Обратите внимание: для просмотра подробностей о команде run используйте atomic-operator run -- --help, а не atomic-operator run --help.

Получение Atomic-тестов

Для использования atomic-operator необходимо иметь один или несколько тестов atomic-red-team (Atomics) на локальной системе. atomic-operator предоставляет возможность загрузить репозиторий Atomic Red Team. Это можно сделать, выполнив следующую команду:

root@kitploit:~
atomic-operator get_atomics 
# Вы можете указать каталог назначения с помощью флага --destination
atomic-operator get_atomics --destination "/tmp/some_directory"

Локальный запуск тестов

Для запуска теста необходимо указать несколько дополнительных свойств (и, при желании, параметры). Основной метод для запуска тестов называется run.

root@kitploit:~
# Это запустит ВСЕ тесты, совместимые с вашей локальной операционной системой
atomic-operator run --atomics-path "/tmp/some_directory/redcanaryco-atomic-red-team-3700624"

Вы можете выбирать отдельные тесты, указав одну или несколько конкретных техник. Например, выполнение следующей команды:

root@kitploit:~
atomic-operator run --techniques T1564.001 --select_tests

Запросит у пользователя список тестов, связанных с этой техникой. Пользователь может выбрать один или несколько тестов, используя пробел для выделения нужного теста:

root@kitploit:~
 Select Test(s) for Technique T1564.001 (Hide Artifacts: Hidden Files and Directories)

 * Create a hidden file in a hidden directory (61a782e5-9a19-40b5-8ba4-69a4b9f3d7be)
   Mac Hidden file (cddb9098-3b47-4e01-9d3b-6f5f323288a9)
   Create Windows System File with Attrib (f70974c8-c094-4574-b542-2c545af95a32)
   Create Windows Hidden File with Attrib (dadb792e-4358-4d8d-9207-b771faa0daa5)
   Hidden files (3b7015f2-3144-4205-b799-b05580621379)
   Hide a Directory (b115ecaf-3b24-4ed2-aefe-2fcb9db913d3)
   Show all hidden files (9a1ec7da-b892-449f-ad68-67066d04380c)

Следующая команда позволяет указать пользовательские входные аргументы для тестов. Для этого передайте словарь ключей и значений в параметр input_arguments метода run.

root@kitploit:~
atomic-operator run --techniques T1564.001 --input_arguments '{"project-id": "some_value", "another_key": "another value"}'
# Пожалуйста, заключайте значение input_arguments в одинарные кавычки.

Удалённый запуск тестов

Для удалённого запуска теста необходимо указать несколько дополнительных свойств (и, при желании, параметры). Основной метод для запуска тестов называется run.

root@kitploit:~
# Это запустит ВСЕ тесты, совместимые с вашей локальной операционной системой
atomic-operator run --atomics-path "/tmp/some_directory/redcanaryco-atomic-red-team-3700624" --hosts "10.32.1.0" --username "my_username" --password "my_password"

При удалённом выполнении команд на хостах Windows может потребоваться настройка PSRemoting. Подробнее см. здесь: Удалённое управление Windows

Дополнительные параметры

Вы можете просмотреть дополнительные параметры, выполнив следующую команду:

root@kitploit:~
atomic-operator run -- --help

Вы должны увидеть вывод, похожий на следующий:

root@kitploit:~
NAME
    atomic-operator run - Основной метод для запуска тестов Atomic Red Team.

SYNOPSIS
    atomic-operator run <flags>

DESCRIPTION
    Основной метод для запуска тестов Atomic Red Team.

FLAGS
    --techniques=TECHNIQUES
        Type: list
        Default: ['all']
        Одна или несколько определённых техник по ID attack_technique. По умолчанию 'all'.
    --test_guids=TEST_GUIDS
        Type: list
        Default: []
        Один или несколько GUID-идентификаторов Atomic-тестов. По умолчанию None.
    --select_tests=SELECT_TESTS
        Type: bool
        Default: False
        Выбор одного или нескольких тестов из указанных техник. По умолчанию False.
    --atomics_path=ATOMICS_PATH
        Default: '/U...
        Путь к Atomic-тестам. По умолчанию os.getcwd().
    --input_arguments={}
        Default: {}
        Словарь входных аргументов для передачи в тест.
    --check_prereqs=CHECK_PREREQS
        Default: False
        Проверять ли зависимости предварительных условий (prereq_comand). По умолчанию False.
    --get_prereqs=GET_PREREQS
        Default: False
        Нужно ли получать предварительные условия. По умолчанию False.
    --cleanup=CLEANUP
        Default: False
        Нужно ли выполнять команды очистки. По умолчанию False.
    --copy_source_files=COPY_SOURCE_FILES
        Default: True
        Нужно ли копировать связанные исходные файлы (src, bin и т.д.) на удалённый хост. По умолчанию True.
    --command_timeout=COMMAND_TIMEOUT
        Default: 20
        Время ожидания для каждой команды. По умолчанию 20.
    --debug=DEBUG
        Default: False
        Нужно ли выводить подробную информацию о выполняемых тестах. По умолчанию False.
    --prompt_for_input_args=PROMPT_FOR_INPUT_ARGS
        Default: False
        Нужно ли запрашивать входные аргументы для каждого теста. По умолчанию False.
    --return_atomics=RETURN_ATOMICS
        Default: False
        Нужно ли возвращать Atomics вместо их запуска. По умолчанию False.
    --config_file=CONFIG_FILE
        Type: Optional[]
        Default: None
        Путь к файлу конфигурации, используемому для автоматизации atomic-operator в средах. По умолчанию None.
    --config_file_only=CONFIG_FILE_ONLY
        Default: False
        Нужно ли запускать тесты только на основе предоставленного config_file. По умолчанию False.
    --hosts=HOSTS
        Default: []
        Список одного или нескольких удалённых хостов для выполнения теста. По умолчанию [].
    --username=USERNAME
        Type: Optional[]
        Default: None
        Имя пользователя для аутентификации удалённых подключений. По умолчанию None.
    --password=PASSWORD
        Type: Optional[]
        Default: None
        Пароль для аутентификации удалённых подключений. По умолчанию None.
    --ssh_key_path=SSH_KEY_PATH
        Type: Optional[]
        Default: None
        Путь к SSH-ключу для аутентификации удалённых подключений. По умолчанию None.
    --private_key_string=PRIVATE_KEY_STRING
        Type: Optional[]
        Default: None
        Строка закрытого SSH-ключа для аутентификации удалённых подключений. По умолчанию None.
    --verify_ssl=VERIFY_SSL
        Default: False
        Проверять ли SSL при подключении через RDP (Windows). По умолчанию False.
    --ssh_port=SSH_PORT
        Default: 22
        Порт SSH для аутентификации удалённых подключений. По умолчанию 22.
    --ssh_timeout=SSH_TIMEOUT
        Default: 5
        Тайм-аут SSH для аутентификации удалённых подключений. По умолчанию 5.
    Дополнительные флаги принимаются.
        Если предоставлены, ключи, совпадающие с входными данными для теста, будут заменены. По умолчанию None.

Запуск atomic-operator с использованием config_file

В дополнение к возможности передавать параметры с помощью atomic-operator, вы также можете передать путь к config_file, который содержит все Atomic-тесты и их возможные входные данные. Пример такого config_file можно увидеть здесь:

root@kitploit:~
atomic_tests:
  - guid: f7e6ec05-c19e-4a80-a7e7-241027992fdb
    input_arguments:
      output_file:
        value: custom_output.txt
      input_file:
        value: custom_input.txt
  - guid: 3ff64f0b-3af2-3866-339d-38d9791407c3
    input_arguments:
        second_arg:
          value: SWAPPPED argument
  - guid: 32f90516-4bc9-43bd-b18d-2cbe0b7ca9b2

Пример использования (скрипты)

Для использования atomic-operator необходимо создать экземпляр объекта AtomicOperator.

root@kitploit:~
from atomic_operator import AtomicOperator

operator = AtomicOperator()

# Это загрузит локальную копию репозитория atomic-red-team

print(operator.get_atomics('/tmp/some_directory'))

# это запустит тесты на локальной системе
operator.run(
    technique: str='All', 
    atomics_path=os.getcwd(), 
    check_dependencies=False, 
    get_prereqs=False, 
    cleanup=False, 
    command_timeout=20, 
    debug=False,
    prompt_for_input_args=False,
    **kwargs
)

Получение помощи

Пожалуйста, создайте issue, если у вас есть вопросы или возникли проблемы.

Создано с помощью

  • carcass - Шаблон упаковки Python

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

Пожалуйста, прочитайте CONTRIBUTING.md для получения подробной информации о нашем кодексе поведения и процессе отправки pull request'ов.

Версионирование

Мы используем SemVer для версионирования.

Авторы

  • Josh Rickard - Начальная работа - MSAdministrator

Также см. список участников, которые участвовали в этом проекте.

Лицензия

Этот проект лицензирован на условиях лицензии MIT — см. файл LICENSE для подробностей.

Благодарности

  • Спасибо keithmccammon за помощь в выявлении проблем с процессором macOS M1 и предоставление исправления
Скачать инструмент
Имя параметраТипПо умолчаниюОписание
techniqueslistallОдна или несколько определённых техник по ID attack_technique.
test_guidslistNoneОдин или несколько GUID-идентификаторов Atomic-тестов.
select_testsboolFalseВыбор одного или нескольких Atomic-тестов для запуска при указании техник.
atomics_pathstros.getcwd()Путь к Atomic-тестам.
input_argumentsdict{}Словарь входных аргументов для передачи в тест.
check_prereqsboolFalseПроверять ли зависимости предварительных условий (prereq_comand).
get_prereqsboolFalseНужно ли получать предварительные условия.
cleanupboolFalseНужно ли выполнять команды очистки.
copy_source_filesboolTrueНужно ли копировать связанные исходные файлы (src, bin и т.д.) на удалённый хост.
command_timeoutint20Время ожидания для каждой команды до тайм-аута.
debugboolFalseНужно ли выводить подробную информацию о выполняемых тестах.
prompt_for_input_argsboolFalseНужно ли запрашивать входные аргументы для каждого теста.
return_atomicsboolFalseНужно ли возвращать Atomics вместо их запуска.
config_filestrNoneПуть к файлу конфигурации, используемому для автоматизации atomic-operator в средах.
config_file_onlyboolFalseНужно ли запускать тесты только на основе предоставленного config_file.
hostslistNoneСписок одного или нескольких удалённых хостов для выполнения теста.
usernamestrNoneИмя пользователя для аутентификации удалённых подключений.
passwordstrNoneПароль для аутентификации удалённых подключений.
ssh_key_pathstrNoneПуть к SSH-ключу для аутентификации удалённых подключений.
private_key_stringstrNoneСтрока закрытого SSH-ключа для аутентификации удалённых подключений.
verify_sslboolFalseПроверять ли SSL при подключении через RDP (Windows).
ssh_portint22Порт SSH для аутентификации удалённых подключений.
ssh_timeoutint5Тайм-аут SSH для аутентификации удалённых подключений.
**kwargsdictNoneЕсли в команду run передаются дополнительные флаги, мы попытаемся сопоставить их с определёнными входными данными в Atomic-тестах и заменить их значение на предоставленное.