Как искать угрозы, которые маскируются под стандартные процессы Windows
Чтобы быстро находить и обезвреживать угрозы, врага нужно знать в лицо. Но так же важно понимать, как выглядит «нормальная» среда – тогда любое отклонение от нормы будет вызывать подозрения. Угрозу может нести недавно установленное ПО, новый пользователь или хакер. Как быть, если действия этих субъектов сильно напоминают стандартные процессы в ОС Windows?
Сначала хорошая новость: процессы в Windows хорошо задокументированы. Это значит, что мы можем понять, какое поведение считается для них нормальным. Если в системе появится подобный процесс, который ведет себя немного нетипично, мы это сразу увидим.
Плохая новость заключается в том, что злоумышленники находят новые способы усыпить бдительность специалистов по ИБ и аналитиков. Для этого хакеры дают файлам имена стандартных системных процессов в Windows. Прием, который называется Masquerading (маскировка/сокрытие имен), усложняет идентификацию подозрительных файлов и развязывает руки злоумышленникам. Masquerading часто используют во время APT-атак, этим инструментом уже воспользовались такие группировки, как APT1, Carbanak и Elise.
Далее я пройдусь по основным паттернам поведения системных процессов Windows и расскажу, как выработать правила для быстрой идентификации процессов, которые не вписываются в эти правила.
Для поиска подозрительных субъектов понадобятся такие компоненты:
- Sysmon: разработка Sysinternals. Служит для регистрации событий и умеет генерировать подробные логи в Windows;
- Winlogbeat: входит в «эластичный стек» (Elastic stack), занимается доставкой логов Windows;
- ELK stack: инструмент для аналитики и визуализации. Будем использовать его для обнаружения угроз (Threat Hunting), а полученные логи отправлять в ELK через winlogbeat.
Если вы хотите больше узнать о работе системных процессов Windows, рекомендую ознакомиться со статьей Марка Руссиновича (Часть 1 и Часть 2). Этот специалист участвовал в разработке Sysmon и инструментов Sysinternals.
Для примера возьмем стандартный процесс smss.exe, который относится к менеджеру сеансов. Вот его основные признаки:
он первый в пользовательском режиме;
родительский процесс будет называться System;
загрузка происходит из %systemroot%\System32\smss.exe;
имя пользователя выглядит как NT AUTHORITY\SYSTEM;
- создает два сеанса: 0 (службы Windows) и 1 (пользовательский);
- сеанс 1 завершается после загрузки csrss.exe и winlogon.exe (и у них не будет родительского);
- в один момент времени запущен один smss.exe с сеансом (если одновременно работает больше одного процесса, значит, остальные фальшивые или несколько пользователей зашли в ОС).
Большинство информации о smss.exe можно получить с помощью утилиты Sysinternals Procexp.exe.
Мы понимаем, что собой представляет процесс smss.exe в среде Windows, и можем применить эту информацию для поиска поддельных процессов, замаскированных под подлинные (с аналогичными названиями). В первую очередь обратим внимание на имена родительских процессов и пути. Далее в таблице перечислены стандартные процессы Windows, их родительские процессы и пути выполнения. Больше информации по этому вопросу можно получить в SANS Find Evil Poster.
Sysmon поможет сгенерировать полный журнал выполнения процесса. Вот как он выглядит:
Нас интересует событие с идентификатором ID 1, которое возникает при запуске каждого нового процесса. С помощью Winlogbeats мы получим эти логи в ELK.
Logstash будем использовать для анализа и маркировки событий, которые не вписываются в наш шаблон правила. Например, в SVCHOST.EXE название родительского процесса звучит как SERVICES.EXE и выполняется он из System32. Сделаем это правилом:
Теперь каждый раз, когда мы видим, как процесс svchost.exe запускается не из родного каталога (то есть не из C:\Windows\System32\, если Windows установлена на диске С:\) или у него другое имя родительского процесса (то есть не services.exe), мы помечаем тегом подозрительное событие, чтобы исследовать его дополнительно.
Если у вас есть проблемы с пониманием синтаксиса файла конфигурации logstash, узнать о нем больше можно здесь и здесь.
Возвращаемся к правилам. Аналогичные шаблоны можно создавать для любых других системных процессов. Присваивайте им теги и потом визуализируйте информацию, чтобы понять, какие подозрительные процессы вы обнаружили. Каждый новый тег – сигнал о том, что в вашей ОС происходит что-то непонятное и, возможно, опасное.
Эта статья написана по мотивам нашего поста на форуме codeby.net (оригинал здесь). В следующий раз планирую рассмотреть работу с Sysmon и ELK. А пока приглашаю вас прослушать наши обучающие курсы Codeby: два по интернет-анонимности и безопасности, еще один – по тестированию веб-приложений на проникновение.