Скрипт Python
импортировать ОС
импортировать дату и время
из импорта sigma.rule SigmaRule
из sigma.backends.microsoft365defender import Microsoft365DefenderBackend
Поместите в каталог, содержащий все правила Sigma
rules_directory = 'sigma/rules /windows/process_creation/proc_creation_win_acccheckconsole_execution.yml'
Создайте папку для хранения всех переведенных файлов .md, если она еще не существует
output_directory = 'KQL - Создание процесса Windows'
os.makedirs(output_directory, Exist_ok=True)
Вывести список всех файлов .yml в указанном каталоге
yaml_files = [f for f в os.listdir(rules_directory), если f.endswith('.yml')]
Для повышения эффективности инициализируйте экземпляр Microsoft365DefenderBackend вне цикла
m365def_backend = Microsoft365DefenderBackend()
Получить текущую дату и время
Пройти по каждому файлу .yml и обработать правила
для yaml_file в yaml_files:
с open(os.path.join(rules_directory, yaml_file), 'r') как файл:
попробуйте:
# Прочитайте содержимое YAML и создайте объект SigmaRule
sigma_rule_orig = SigmaRule.from_yaml(file.read())
Код: Выделить всё
# Translate the rule using Microsoft365DefenderBackend
translated_content += m365def_backend.convert_rule(sigma_rule_orig)[0]
# Create a unique file name with .md extension based on the original .yml file name
md_file_name = os.path.splitext(yaml_file)[0] + '.md'
# Write the translated content in a Markdown file with KQL section in a code block
with open(os.path.join(output_directory, md_file_name), 'w') as md_file:
md_file.write('```kusto\n')
md_file.write(translated_content)
md_file.write('\n```\n')
# Append the original content below the translated content with the entire Sigma rule pre-translation. Also includes a nice heading
md_file.write('\n\n# Original Sigma Rule:\n')
file.seek(0)
md_file.write('```yaml\n')
md_file.write(file.read())
md_file.write('```\n')
print(f"Translated rule with original content written to {os.path.join(output_directory, md_file_name)}")
except Exception as exc:
print(f"Error occurred while processing {yaml_file}: {exc}")
continue
root@DESKTOP-EKE1BE0:/home/jilin# python3 sig_convert_win_process_create_markdown.py
Traceback (последний последний вызов):
Файл «sig_convert_win_process_create_markdown.py», строка 4,
из sigma.backends.microsoft365defender import Microsoft365DefenderBackend
Ошибка импорта: невозможно импортировать имя «Microsoft365DefenderBackend» из «sigma.backends.microsoft365defender» (неизвестное расположение) )
Проверено ниже.
root@DESKTOP-EKE1BE0:/home/jilin# Форматы сигма-списков kusto
+--- ------+-------------------------------------+
| Формат | Описание |
+---------+--------------------------------- ----+
| по умолчанию | Строки поиска языка запросов Kusto |
+---------+----------------------------- --------+
root@DESKTOP-EKE1BE0:/home/jilin# сигма-список
+------------------- ---+----------+---------+------------------------- ---------------------+------------ --+--------------+
| Идентификатор | Тип | Государство | Описание | Совместимый? | Возможности |
+----------------------+----------+--------- +-------------------------------------------------- -------------+-------------+--------------+
| IBM-qradar-AQL | бэкэнд | стабильный | Серверная часть IBM QRadar для преобразования в запросы AQL. Содержит | нет | 0 |
| | | | сопоставления полей и источников журналов | | |
| рклинукседр | трубопровод | стабильный | Конвейер Red Canary LinuxEDR, преобразующий поля в | да | 0 |
| | | | Отображение поиска телеметрии. | | |
| кортексдр | бэкэнд | стабильный | Серверная часть Cortex XDR, генерирующая запросы XQL. | да | 0 |
| сажа | бэкэнд | стабильный | Серверная часть Carbon Black, поддерживающая запросы для обоих | да | 0 |
| | | | Enterprise EDR (fka Threat Hunter) и EDR (fka Response) | | |
| дозорный | бэкэнд | стабильный | Серверная часть SentinelOne, генерирующая запросы Deep Visibility. | да | 0 |
| Сентинелон-PQ | бэкэнд | стабильный | Серверная часть SentinelOne, генерирующая запросы PowerQuery. | да | 0 |
| шлепнуть | бэкэнд | стабильный | Серверная часть Splunk для преобразования в модель данных SPL и tstats | да | 3 |
| | | | запросы как простые запросы и savesearches.conf | | |
| проницательность | бэкэнд | стабильный | Серверная часть Rapid7 InsightIDR, генерирующая запросы LEQL. | нет | 0 |
| крадар | бэкэнд | стабильный | Серверная часть IBM QRadar для преобразования в AQL и расширения | нет | 0 |
| | | | пакеты. | | |
| эластичный поиск | бэкэнд | стабильный | Серверная часть Elasticsearch преобразуется в Lucene, ES|QL (с | да | 3 |
| | | | корреляциями) и запросы EQL, простые, встроенные в DSL или | | |
| | | | как Кибана NDJSON. | | |
| открытый поиск | бэкэнд | стабильный | Серверная часть Opensearch конвертирует запросы Lucene и | нет | 0 |
| | | | Правила оповещения Opensearch. | | |
| ала-сокпрайм | бэкэнд | развитие | Серверная часть Azure Log Analytics с поддержкой журналов Windows | нет | 0 |
| | | | поддерживается SOC Prime. | | |
| стикс | бэкэнд | развитие | Серверная часть STIX преобразуется в простые запросы STIX. Содержит | нет | 0 |
| | | | сопоставления для таксономий STIX 2.0 и STIX Shifter. | | |
| локи | бэкэнд | стабильный | Серверная часть Loki для преобразования в запросы Loki LogQL (обычный | да | 2 |
| | | | и линейка YAML для предупреждений) и конвейеры с сопоставлениями для | | |
| | | | Данные Grafana и promtail Sysmon. | | |
| окна | трубопровод | стабильный | Источник журнала Windows в поле канала и общий источник журнала в | да | 0 |
| | | | Сопоставление событий аудита Windows. | | |
| системный | трубопровод | стабильный | Сопоставление общих источников журналов с событиями Sysmon. | да | 0 |
| забастовка | бэкэнд | стабильный | Серверная часть CrowdStrike Logscale и конвейеры для CrowdStrike | да | 0 |
| | | | Журналы платформы Falcon и репликатора данных Falcon (FDR). | | |
| Осем | трубопровод | развитие | Сопоставление таксономии OSSEM с таксономией Sigma. | нет | 0 |
| силовая оболочка | бэкэнд | тестирование | Серверная часть PowerShell преобразуется в запросы PowerShell. | нет | 0 |
| microsoft365defender | бэкэнд | стабильный | Серверная часть и конвейер Microsoft 365 Defender (формально mdatp) | да | 0 |
| | | | для преобразования источников журналов со схемой полей Sysmon в | | |
| | | | Расширенные поисковые запросы Microsoft в языке запросов Kusto | | |
| | | | (ККЛ) | | |
| ястреб | бэкэнд | тестирование | Серверная часть HAWK.io MDR и конвейер для преобразования журналов | нет | 0 |
| | | | источники для запросов HAWK.io BETree. | | |
| датадог | бэкэнд | тестирование | Datadog Cloud SIEM-сервер и конвейер для преобразования | нет | 0 |
| | | | исходные файлы журнала в синтаксис запроса Datadog | | |
| диктовский запрос | бэкэнд | стабильный | Серверная часть DictQuery для преобразования Sigma в запрос dictquery | нет | 0 |
| | | | струны | | |
| склайт | бэкэнд | тестирование | Серверная часть SQLite и Zircolite | да | 0 |
| уберагент | бэкэнд | стабильный | Серверная часть uberAgent | да | 0 |
| пантера | бэкэнд | развитие | Серверная часть Panther sdyaml | да | 0 |
| трелликс_хеликс | бэкэнд | развитие | Серверная часть Trellix Helix | да | 0 |
| сообразительность | бэкэнд | развитие | Бэкэнд Quickwit | да | 0 |
| сетевой свидетель | бэкэнд | тестирование | NetWitness Backend, генерирующий правила приложения | да | 0 |
| точка входа | бэкэнд | стабильный | Серверная часть Logpoint Pysigma | да | 0 |
+----------------------+----------+--------- +-------------------------------------------------- -------------+-------------+--------------+
root@DESKTOP -EKE1BE0:/home/jilin# Форматы сигм-списков kusto
+---------+----------------------- --------------+
| Формат | Описание |
+---------+--------------------------------- ----+
| по умолчанию | Строки поиска языка запросов Kusto |
+---------+----------------------------- --------+
root@DESKTOP-EKE1BE0:/home/jilin# установка плагина sigma microsoft365defender
Успешно установлен плагин 'microsoft365defender'
Версия pySigma совместима с sigma-cli
Подробнее здесь: https://stackoverflow.com/questions/789 ... gma-backen