
Python-пакет для взаимодействия с фреймворком Mitre ATT&CK
.______ ____ ____ ___ .___________.___________. ______ __ ___
| _ \ \ \ / / / \ | | | / || |/ /
| |_) | \ \/ / / ^ \ `---| |----`---| |----`| ,----'| ' /
| ___/ \_ _/ / /_\ \ | | | | | | | <
| | | | / _____ \ | | | | | `----.| . \
| _| |__| /__/ \__\ |__| |__| \______||__|\__\
Пакет Python для взаимодействия с фреймворками MITRE ATT&CK
Текущая версия: 7.1.1
pyattck — это легковесный фреймворк для работы с фреймворками MITRE ATT&CK. Этот пакет извлекает детали из корпоративного фреймворка MITRE, PRE-ATT&CK, Mobile и ICS.
pyattck помогает организациям и специалистам программно обращаться к фреймворкам MITRE ATT&CK. То есть вы можете получить доступ ко всем определённым злоумышленникам, вредоносным программам, средствам смягчения, тактикам, техникам и инструментам, определённым в корпоративных, мобильных, Pre-Attck и ICS фреймворках, с помощью утилиты командной строки или встроив их в свою базу кода.
Есть много причин, по которым вам может понадобиться получать эти данные автоматизированно (с помощью скриптов/кода), вот несколько примеров:
pyattck также предоставляет другие преимущества, включая возможность добавлять дополнительную контекстную информацию. Подробнее об этих данных можно узнать здесь, но в основе лежит то, что pyattck использует несколько репозиториев с открытым исходным кодом для сбора дополнительного контекста, такого как команды, используемые для выполнения техники, страна и другие сведения о злоумышленнике, другие варианты вредоносного ПО, похожие на определённый инструмент/вредоносное ПО, и т.д.
Этот дополнительный контекст делает pyattck по-настоящему мощным и позволяет людям создавать более надёжные тесты и проверки своих правил обнаружения, подтверждать предположения о тестировании и т.д. На самом деле существует бесчисленное множество способов использования pyattck для помощи синим, красным и фиолетовым командам в защите организаций (и самих себя).
Пакет pyattck извлекает все тактики, техники, злоумышленников, вредоносные программы, инструменты и средства смягчения из фреймворков MITRE ATT&CK, а также любые определённые взаимосвязи внутри набора данных MITRE ATT&CK (включая суб-техники).
Кроме того, для техник, злоумышленников и инструментов (если применимо) теперь доступны данные, собранные из сторонних ресурсов, через различные свойства. Более подробную информацию об этих функциях см. в Внешние наборы данных.
Пакет pyattck позволяет:
Вы можете установить pyattck на OS X, Linux или Windows. Также возможна установка напрямую из исходного кода. Для установки используйте команды под соответствующей операционной системой ниже.
pip install pyattck
git clone https://github.com/swimlane/pyattck.git
cd pyattck
python setup.py install
Чтобы использовать pyattck, вы должны создать экземпляр объекта Attck. Хотя вы можете напрямую взаимодействовать с каждым классом, предполагаемый способ использования — через объект Attck:
from pyattck import Attck
attack = Attck()
По умолчанию sub-techniques доступны как часть каждого объекта техники. Вы можете отключить это поведение, передав nested_techniques=False при создании объекта Attck.
В качестве примера, поведение по умолчанию выглядит следующим образом:
from pyattck import Attck
attack = Attck()
for technique in attack.enterprise.techniques:
print(technique.id)
print(technique.name)
for subtechnique in technique.techniques:
print(subtechnique.id)
print(subtechnique.name)
Вы можете получить доступ к следующим основным свойствам вашего объекта Attck:
После указания фреймворка MITRE ATT&CK вы можете получить доступ к дополнительным свойствам.
Вот доступные объекты в свойстве Enterprise:
Для получения дополнительной информации о типах объектов в свойстве enterprise см. Enterprise.
Вот доступные объекты в свойстве PreAttck:
Для получения дополнительной информации о типах объектов в свойстве preattck см. PreAttck.
Вот доступные объекты в свойстве Mobile:
Для получения дополнительной информации о типах объектов в свойстве mobile см. Mobile.
Вот доступные объекты в свойстве ICS:
Для получения дополнительной информации о типах объектов в свойстве ics см. ICS.
Чтобы использовать новую интерактивную систему меню в pyattck, необходимо установить interactive в True. Это запустит интерактивную консольную систему меню.
С помощью скрипта вы можете запустить его, выполнив:
from pyattck import Attck
Attck(interactive=True)
Или вы также можете запустить интерактивный режим из командной строки:
pyattck --interactive
Посмотрите пример гифки ниже:

pyattck позволяет настроить, сохранять ли внешние данные и где они будут храниться.
from pyattck import Attck
attck = Attck(
nested_techniques=True,
use_config=False,
save_config=False,
config_file_path='~/pyattck/config.yml',
data_path='~/pyattck/data',
enterprise_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_enterprise_attck_v1.json",
pre_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_pre_attck_v1.json",
mobile_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_mobile_attck_v1.json",
ics_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_ics_attck_v1.json",
nist_controls_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_nist_controls_v1.json",
generated_nist_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/attck_to_nist_controls.json",
**kwargs
)
По умолчанию pyattck (теперь) получает последние внешние данные из соответствующих мест с помощью HTTP GET-запросов. pyattck в настоящее время получает данные из следующих мест:
У вас есть несколько вариантов при создании объекта Attck. Начиная с версии 4.0.0 вы можете указать любые из следующих опций:
True, pyattck попытается получить конфигурацию, указанную в config_file_path. Если этот файл повреждён или не найден, мы вернёмся к получению данных из указанных мест *_attck_json.True, pyattck сохранит файл конфигурации в указанное место, заданное config_file_path. Кроме того, мы сохраним все загруженные файлы в указанный data_path. Если вы указали локальный путь вместо URL загрузки для любого из параметров *_attck_json, мы сохраним это место в нашей конфигурации и будем ссылаться на него в будущем.~/pyattck/config.yml~/pyattck/dataКроме того, вы можете указать местоположение для каждого отдельного файла *_attck_json, передав URI или локальный путь к файлу. Если вы передали локальный путь, мы просто прочитаем этот файл.
Если вы использовали значения по умолчанию или указали альтернативное URI-место для получения этих JSON-файлов, вы можете дополнительно передать **kwargs, которые будут переданы пакету Requests Python при выполнении любых HTTP-запросов.
Мы понимаем, что существует множество различных проектов с открытым исходным кодом, выпускаемых чуть ли не ежедневно, но мы хотели предоставить простой пакет Python, который позволит пользователю определять известные взаимосвязи между всеми вертикалями фреймворка MITRE ATT&CK.
Если вы не знакомы с фреймворком MITRE ATT&CK, есть несколько ключевых компонентов, которые необходимо твёрдо усвоить. Первый — это тактики и техники. Если посмотреть на фреймворк MITRE ATT&CK, тактики — это столбцы, представляющие различные фазы атаки.
Фреймворк MITRE ATT&CK НЕ является всеобъемлющей/де-факто картой покрытия безопасности — это скорее ФРЕЙМВОРК, и при оценке вашего уровня безопасности следует учитывать и другие подходы.
Техники — это строки фреймворка, сгруппированные под определёнными тактиками (столбцами). Это точки данных внутри фреймворка, которые предоставляют рекомендации при оценке пробелов в безопасности. Кроме того, (большинство) техник содержат рекомендации по смягчению, а также информацию об их связи с инструментами, вредоносным ПО и даже злоумышленниками/группами, которые использовали эту технику во время зарегистрированных атак.
Это означает, что если ваша организация сосредоточена на TTP (Тактиках, Техниках и Процедурах), используемых определёнными злоумышленниками/группами, то фреймворк MITRE ATT&CK идеально вам подходит. Если ваша организация ещё не достигла такого уровня зрелости безопасности, не беспокойтесь! Фреймворк ATT&CK по-прежнему даёт очень хорошие рекомендации в простом и понятном виде, но программно это не так просто — особенно если вы хотите измерить (или сопоставить) свои средства контроля безопасности с помощью фреймворка.
Вы можете добавлять функции или исправлять ошибки, а также запускать код в среде разработки.
Чтобы настроить среду разработки и тестирования, используйте этот Dockerfile.
Чтобы использовать Dockerfile, перейдите в каталог этого репозитория и выполните:
docker build --force-rm -t pyattck .
docker run pyattck
При запуске вызывается тестовый Python-файл в bin/test.py.
Тесты в рамках этого проекта должны охватывать все доступные свойства и методы. По мере роста проекта тесты будут становиться более надёжными, но пока мы проверяем, что они существуют и возвращают результаты.
Пожалуйста, прочитайте CONTRIBUTING.md для получения информации о нашем кодексе поведения и процессе отправки запросов на включение изменений.
Мы используем SemVer для версионирования.
Для получения информации о функциях в конкретной версии pyattck см. CHANGELOG.md.
См. также список участников.
Этот проект лицензирован по лицензии MIT.
Прежде всего, я хотел бы поблагодарить всех, кто вносит вклад в проекты с открытым исходным кодом, особенно мейнтейнеров и создателей этих проектов. Без них эта возможность была бы невозможна.
Этот набор данных генерируется из множества различных источников. По мере того как мы продолжаем добавлять новые источники, мы будем добавлять их сюда. Ещё раз спасибо всем этим проектам. В произвольном порядке pyattck использует данные из следующих проектов:
.. toctree::
:titlesonly:
configuration
pyattck/attck
Набор данных <https://github.com/swimlane/pyattck-data>
Модели данных <https://github.com/swimlane/pyattck-data>
enterprise/enterprise
preattck/preattck
mobile/mobileattck
ics/icsattck