Содержание статьи
В статье про Process Ghosting я вкратце описал, как работают системы EDR, а в этой попробую более подробно рассказать о том, как EDR ловят злобный код, и немного о том, как эти методы обходят создатели малвари и пентестерских инструментов.
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Статические сигнатуры
Это самый простой и старый метод обнаружения малвари. На разных этапах своего развития сигнатурный метод обнаружения представлял собой просто список контрольных сумм вредоносных файлов, с которым сверялся проверяемый образец. Такой метод быстро изжил себя, ведь чтобы изменить контрольную сумму файла, достаточно малейшей правки в нем.
Со временем сигнатурный метод обнаружения претерпел некоторые изменения: скажем, сегодня вполне могут использоваться байтовые последовательности, и не только статичные, но и плавающие. Например, вот так выглядит детектирующая последовательность YARA-скрипта для одного из творений группы Lazarus:
$scan_1 = { d1 ?? 33 ?? fc 81 ?? ff 00 00 00 c1 ?? 17 }
Здесь представлена как раз плавающая байтовая сигнатура: на месте знаков вопроса могут быть любые байты, но детект все равно сработает.
Сигнатуры могут включать в себя не только шестнадцатеричные байтовые последовательности, но и строки, встречающиеся в малвари:
$scan_2 = "%s\\~%d.tmp" wide ascii
Кроме того, под детект могут попасть контрольные суммы таблицы импорта или, например, Rich-сигнатуры. Словом, все, что может однозначно говорить, что перед нами именно искомый файл, а не какой‑то другой. Подобные сигнатуры таким же способом можно искать в памяти. Сегодня этот метод сканирования часто работает в связке с другими методами обнаружения малвари.
Что сбивает статические сигнатуры (и не только)
Например, упаковщики или протекторы! Они могут:
- менять набор импортов и байтовые последовательности;
- вставлять в код малвари свои кодовые антиотладочные блоки, содержащие длинные циклы или вызовы функций WinAPI;
- шифровать код и расшифровывать его только в памяти, в том числе кусками (расшифровали → выполнили кусок → зашифровали обратно → расшифровали следующий кусок и так далее);
- превратить код в последовательность пи‑кода для своей виртуальной машины;
- менять энтропию зашифрованных данных малвари;
- делать многие другие изменения в файле.
Сканирование памяти
Сканирование памяти тоже часто используется средствами EDR, но работает оно не постоянно (из‑за оптимизаций производительности), а часто запускается из‑за компрометирующих последовательностей действий, например:
- загрузка определенных библиотек;
- выполнение определенной последовательности WinAPI;
- запись данных в память (свою или чужую);
- запись данных в определенные ключи реестра.
Другими словами, сканирование часто запускается по сигналу от поведенческого анализатора, который наблюдает достаточное количество негативных флагов в поведении процесса.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее