
Сценарий PowerShell, помогающий специалистам по реагированию на инциденты обнаруживать потенциальные механизмы сохранения доступа злоумышленников.
Trawler — это скрипт PowerShell, предназначенный для помощи специалистам по реагированию на инциденты в обнаружении потенциальных индикаторов компрометации на хостах Windows, с основным фокусом на механизмы персистентности, включая запланированные задачи, службы, изменения реестра, элементы автозагрузки, модификации бинарных файлов и другое.
В настоящее время Trawler может обнаруживать большинство техник персистентности, специально выделенных MITRE и Atomic Red Team, причём с регулярным добавлением новых детекций.
Просто загрузите и запустите trawler.ps1 из административной консоли PowerShell/cmd — любые обнаружения будут отображены в консоли, а также записаны в CSV ('detections.csv') в текущем рабочем каталоге. Сгенерированный CSV будет содержать имя обнаружения, источник, риск, метаданные и соответствующую технику MITRE.
Или воспользуйтесь этой однострочной командой из административного терминала PowerShell:
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/joeavanzato/Trawler/main/trawler.ps1'))
Некоторые детекции имеют встроенные списки разрешений, помогающие убрать шум от стандартных конфигураций Windows (10/2016/2019/2022) — ожидаемые запланированные задачи, службы и т.д. Конечно, злоумышленники всегда могут напрямую захватить их и с большой детализацией маскироваться под стандартный процесс ОС — будьте внимательны, используйте множественные формы анализа и обнаружения при работе с опытными противниками.
Если у вас есть примеры или идеи для дополнительных детекций, пожалуйста, смело отправляйте Issue или PR с соответствующими техническими деталями/ссылками — кодовая база сейчас немного грязная, со временем будет очищена.
Кроме того, если вы обнаружите очевидные ложные срабатывания, сообщите мне об этом, открыв issue или PR на GitHub! Главные виновники этого — нестандартные COM, службы или задачи.
-scanoptions : Пролистывание возможных детекций и выбор подмножества с помощью разделённых запятыми терминов (например, .\trawler.ps1 -scanoptions Services,Processes) или пропустите, чтобы выполнить все детекции
-quiet : Подавление вывода детекций в консоль
-snapshot : Путь к предыдущему JSON-выводу trawler для использования в качестве списка разрешений.
-outpath : Определение пользовательского пути для сохранения вывода детекций (по умолчанию "$PSScriptRoot\detections.csv")
-drivetarget : Определение переменной для смонтированного целевого диска (например, .\trawler.ps1 -targetdrive "D:") — (по умолчанию локальная система)
-daysago : Определение количества «дней назад», которое мы хотим учитывать для детекций, основанных на времени (по умолчанию 45)
-hashmode : Определение алгоритма хеширования для поддерживаемых детекций — поддерживает sha1, md5 или sha256 (по умолчанию sha1)
-evtx : Включение создания источника журнала событий и записи детекций в журнал приложений под источником trawler с EID=9001 (по умолчанию отключено)
PersistenceSniper — замечательный инструмент; я активно использовал его в прошлом — но есть несколько ключевых моментов, отличающих эти утилиты:
В целом эти инструменты чрезвычайно похожи, но подходят к проблеме с немного разных сторон: PersistenceSniper предоставляет всю информацию аналитику для проверки, в то время как Trawler пытается ограничить возвращаемые данные только результатами, которые, вероятно, являются механизмами персистентности злоумышленника. Как следствие, с trawler возможны ложноотрицательные результаты, если злоумышленник полностью имитирует элемент из списка разрешений.
Например — PersistenceSniper вернёт все «небезопасные» службы Windows, в то время как trawler вернёт только те, которые соответствуют определённому правилу обнаружения, и т.д.
Trawler поддерживает загрузку списка разрешений из «снимка» — для этого требуется два шага.
Вот и всё — все соответствующие детекции затем будут брать данные из файла снимка как список разрешений, чтобы уменьшить шум и выявить любые потенциальные изменения базового образа.
(Списки разрешений реализованы для большинства проверок, но не для всех — ещё активно внедряются)
Часто во время расследования аналитики могут смонтировать новый диск, представляющий образ устройства Windows — Trawler теперь частично поддерживает сканирование таких смонтированных дисков с помощью параметра '-drivetarget'.
Во время выполнения Trawler перенацеливает временные переменные уровня скрипта для проверки артефактов на основе файлов, а также пытается загрузить соответствующие кусты реестра (HKLM\SOFTWARE, HKLM\SYSTEM, NTUSER.DAT, USRCLASS.DAT) ниже HKLM/HKU с префиксом 'ANALYSIS_'. Trawler также попытается выгрузить эти временно загруженные кусты по завершении скрипта.