# **3. Threat Hunting. Анализ действий злоумышленников** 1. **Написать детект по событиям (в синтаксисе SIGMA) на скачивание файла с помощью certutil.exe** ![](https://i.imgur.com/GAsBnQS.png) Установим конфиг sysmon ![](https://i.imgur.com/8pW1Jo2.png) Скачаем архив через cetrutil ![](https://i.imgur.com/bQefO55.png) Появился лог скачивания нашего файла ![](https://i.imgur.com/j4iGq5r.png) 2. **Написать сетевой детект (в синтаксисе suricata) на активность из 1 задания.** Правило детекта будет реагировать на все tcp пакеты, приходящие на 443 порт ``` alert tcp any any -> any 443 (content:"certutil"; msg:"Download file via certutil"; metadata:created_at 2022_10_06;classtype: high;) ``` 3. **Написать программу, выдающую строку по заданным произвольному началу md5-хеша и длине этой строки** Было два варианта решения: 1. Перебор по словарю, но такие словари весят очень много. Пару штук, которые я нашёл, весили чуть меньше 2ТБ. Хотел написать программу, которая будет парсить сайт со словарём, но не получилось 2. Генерация строки, пока не совпадёт начало хеша ```python import hashlib import itertools FIRST = input('Введите первые несколько символов MD5 хэша: ') F = len(FIRST) N = int(input('Введите длину исходной строки: ')) symbols = 'abcdefghijklmnopqrstuvwxyz' start = '' i = 1 while i <= N: start = start + 'a' i = i+1 lst = list(itertools.product(symbols, repeat=N)) for line in lst[lst.index(tuple(start)):]: i = 1 line_var = '' while i <= N: line_var = line_var + line[i-1] i=i+1 M5_var = hashlib.md5(line_var.encode()) M5_var_hex = M5_var.hexdigest() M5_split = M5_var_hex[:F] if M5_split == FIRST: print('Строка: ', line_var) print('Ее хэш: ', M5_var_hex) break ``` Программа при большой длине строки и маленьком количестве символов md5 сильно перегружает процессор и память компьютера **Введите первые несколько символов MD5 хэша: 3becb4d7181c01bf1403c02fdfebe Введите длину исходной строки: 3 Строка: ccd Ее хэш: 3becb4d7181c01bf1403c02fdfebe147**