Обнаруживаем действия киберпреступников в корпоративной сети и классифицируем их в соответствии с матрицей MITRE ATT&CK, которая показывает, какие тактики и техники применялись в ходе кибератаки.
- Введение
- Где искать следы атаки
- Изучаем перемещения внутри сети
- Windows Admin Shares
- Windows Management Instrumentation
- Pass the Hash
- Ищем взаимосвязи
- Выявляем поиск учетных данных
- Credential Dumping
- Brute Force
- Ловим вредоносные скрипты
- Анализируем подключения к командным серверам
- Боремся с обфускацией
- Исследуем хакерский инструментарий
- Выводы
Введение
Прежде чем начинать поиски кибератаки в инфраструктуре, следует разобраться, где именно остаются её следы и на какой стадии можно с большей вероятностью выявить нелегитимные действия.
Обнаружить и предотвратить атаку на стадии проникновения крайне сложно, а иногда и вовсе невозможно. Если целью злоумышленников является конкретная компания, то рано или поздно они преодолеют периметр. Почему так происходит?
Во-первых, большинство киберпреступников попадает в инфраструктуру компании с помощью фишинга и вредоносных программ. Фишинг — одна из самых эффективных техник проникновения: наше исследование показывает, что каждый третий сотрудник запускает на своем компьютере файл, приложенный к фишинговому письму.
Во-вторых, злоумышленники уже научились обходить традиционные средства защиты. Например, для обхода антивирусов они обфусцируют вредоносный код и подписывают его легитимным сертификатом. Все необходимые для этого инструменты преступник может приобрести в даркнете, причём их авторы даже дают гарантию того, что вредоносные программы не будут обнаруживаться антивирусами в течение определённого периода времени.
Наконец, если организация стала целью APT-группировки, то не исключено, что высококвалифицированные хакеры смогут эксплуатировать ранее неизвестные изъяны в ПО (уязвимости нулевого дня) или пробраться в целевую инфраструктуру через взлом сторонних компаний, которые менее надёжно защищены. Поэтому предпочтительнее выстраивать такой подход к обеспечению безопасности, который направлен на обнаружение инцидента прежде нанесения ущерба критически важным ресурсам.
Где искать следы атаки
Эффективным методом выявления атаки является мониторинг и анализ событий, происходящих в инфраструктуре уже после проникновения злоумышленников в локальную сеть, со своевременным реагированием на инциденты. Однако здесь есть свои особенности. Мониторинг событий на конечных узлах позволяет обнаружить факт компрометации, но для того чтобы восстановить цепочку атаки, потребуется отследить перемещения злоумышленников между узлами сети и выявить подключения ко внешним командным серверам.
Анализ сетевой активности дополняет картину происходящего в инфраструктуре. Если злоумышленники получили возможность выполнять команды в пределах одного компьютера, то перед ними стоят две задачи: установить связь с командным сервером и начать продвигаться по сети. Все эти действия оставляют следы в сетевом трафике, а скрыть их становится сложнее. Например, если на отдельном узле иногда достаточно воспользоваться упаковщиком для сокрытия вредоносной утилиты, то для того чтобы полностью скрыть идентифицирующие утилиту сетевые запросы к другим узлам или командному серверу, потребуется изменить логику её работы. Кроме того, в атаках часто применяются бесфайловые вредоносные программы (fileless malware), которые исполняются сразу в оперативной памяти. Тело такого объекта не сохраняется на жёстком диске, а в некоторых случаях не создаётся также никаких новых процессов — вредоносный код внедряется в один из уже работающих. При этом сохраняются все функции хакерской программы, в том числе — коммуникации с командным центром.
Мы рассмотрим несколько популярных техник, которые могут выдать присутствие злоумышленников, и покажем, как обнаружить их в сетевом трафике.
Изучаем перемещения внутри сети
Проводя целенаправленную атаку, нарушитель не может быть уверен в том, что после проникновения в локальную сеть организации он окажется в нужном ему сегменте. Для поиска ключевых серверов и рабочих станций потребуются разведка и ряд подключений между узлами. Такие подключения (или, как обычно говорят, «горизонтальное перемещение» хакера в инфраструктуре) непременно оставят следы в сетевом трафике. Их можно найти, тем самым своевременно обнаружив кибератаку. Если сохранять копию трафика, то анализ можно проводить и ретроспективно.
Распространённые способы передвижения по сети — удалённое выполнение команд на других компьютерах с использованием связки из техник Windows Admin Shares и Service Execution, а также применение технологии WMI (Windows Management Instrumentation). Эти же техники лежат в основе утилит для администрирования, которыми часто пользуются злоумышленники, в частности psexec и wmiexec из набора Impacket. С их помощью злоумышленники могут осуществлять различные действия, например передавать файлы между узлами (Remote File Copy), создавать задачи, выполняемые по расписанию (Scheduled Task), или собирать информацию о пользователях (Account Discovery). Техника Pass the Hash позволяет подключаться к удалённым узлам, зная только хеш пароля пользователя.
Windows Admin Shares
Для перемещения между компьютерами сети могут использоваться общие сетевые ресурсы, доступ к которым имеют только локальные администраторы узла (техника Windows Admin Shares). Среди них есть сетевой ресурс IPC$ (Inter-Process Communication). Он предоставляет интерфейс для удалённого вызова процедур (RPC), через который можно обратиться к менеджеру сервисов Service Control Manager (SCM). Менеджер позволяет запускать и останавливать службы, а также взаимодействовать с ними (техника Service Execution). Эти две техники работают вместе для копирования исполняемого файла на удалённый компьютер и последующего запуска либо для выполнения команд через RPC.
Копирование и запуск исполняемого файла происходят следующим образом. Вначале будет выполнено подключение к ресурсу ADMIN$ (C:\Windows), куда помещается файл. Затем необходимо соединиться с ресурсом IPC$ и обратиться с его помощью к интерфейсу SCM для создания и старта сервиса, который запустит скопированный файл. Всё это происходит поверх протокола SMB (Server Message Block).
Рисунок 1. Обращение к ресурсу ADMIN$
RPC может работать не только поверх SMB, но и поверх чистого TCP. В этом случае последовательность действий такова: злоумышленник подключается к IPC$, обращается к какому-либо сервису и отправляет ему команды.
Рисунок 2. Передача файла psexecsvc.exe
Запросы к SCM выявляются путём разбора вызовов DCE/RPC и поиска обращений к SVCCTL — интерфейсу менеджера сервисов SCM: OpenServiceW(), StartServiceW().
Рисунок 3. Создание нового сервиса с помощью SCM
С помощью RPC реализуются и другие техники, например Account Discovery. Отправка запросов сервису Security Accounts Manager по протоколу SAMR позволяет получить список учётных записей и групп в домене, а перебор идентификаторов SID с помощью службы Local Security Authority (LSARPC) позволяет узнать имена пользователей на удалённом узле.
Рисунок 4. Получение учётных записей с помощью lookupsids
Один из популярных методов закрепления в системе и продвижения по сети — создание задач, выполняемых по расписанию (Scheduled Task), путём отправки запросов сервису планировщика ATSVC.
Рисунок 5. Создание новой задачи в планировщике задач ATSVC
Описанные сценарии вполне легитимны и могут использоваться в повседневной деятельности администраторов, поэтому нужно создавать вспомогательные правила, которые автоматизировали бы обнаружение RPC-вызовов и обращений к сервисам. Эти действия необходимо анализировать в связи с другими событиями, учитывать общий контекст происходящего. Такой анализ может потребовать больших трудозатрат.
Более эффективны точечные правила, которые анализируют сетевой трафик с учётом порядка команд и значения объектов в запросах, характерных для конкретных инструментов. Например, зная последовательность действий и структуру данных, которые определены в коде утилиты psexec из набора Impacket, можно с большой точностью выявить следы её запуска в трафике.
Рисунок 6. Фрагмент кода psexec
Рисунок 7. SMB-пакет, который отправляется в результате выполнения представленного выше участка кода
Windows Management Instrumentation
Встроенная технология WMI позволяет злоумышленникам воспользоваться уже имеющимися в системе средствами для взаимодействия с удалёнными узлами. Когда WMI-команда передаётся по сети по незашифрованному протоколу DCERPC, в сетевом трафике можно увидеть текстовые строки, где указан класс, к которому происходит обращение, и метод, который вызывается у класса. Для того чтобы выявить передачу команды на исполнение, необходимо отслеживать вызов метода Create класса Win32_Process.
Рисунок 8. Вызов метода Create класса Win32_Process
Рисунок 9. Команда на исполнение
Модули для работы с WMI присутствуют во многих готовых инструментах, например в Impacket, Koadic и Cobalt Strike. В Cobalt Strike есть также модуль WMI Event Consumer, который создаёт подписку на WMI-события. Она позволяет выполнять определённое действие, когда происходит заданное событие — например, проходит установленное время с момента старта ОС или пользователь авторизуется в системе. Действием может быть запуск вредоносной программы или средства удалённого управления. Создание подписки также выявляется в сетевом трафике по специфическим строкам, в частности ROOT\Subscription и EventConsumer.
Pass the Hash
Злоумышленнику не обязательно знать пароль пользователя, чтобы получить доступ к какому-либо сервису. Техника Pass the Hash эксплуатирует особенности протокола аутентификации NTLM, которые позволяют подключаться к ресурсам даже при наличии хеша пароля. Если же в инфраструктуре используется механизм аутентификации Kerberos, злоумышленник может прибегнуть к атаке Overpass the Hash, которая является развитием этой техники.
Протокол Kerberos был разработан специально для того, чтобы пароли пользователей не передавались по сети. Для этого на своей машине пользователь хешем своего пароля шифрует запрос на аутентификацию. В ответ Key Distribution Center выдаёт ему билет на получение других билетов — так называемый Ticket-Granting Ticket (TGT). Теперь клиент считается аутентифицированным, и в течение десяти часов он может обращаться за билетами для доступа к другим сервисам.
Последовательность действий при атаке Overpass the Hash состоит в следующем. Злоумышленник получает хеш пароля пользователя (например, с помощью техники Credential Dumping), шифрует им запрос на аутентификацию и выпускает для себя билет TGT. Затем он запрашивает билет для доступа к интересующему сервису и успешно в нём авторизуется.
Атака Overpass the Hash может выявляться в сетевом трафике, например, на основе следующей аномалии. Microsoft рекомендует использовать и по умолчанию устанавливает для современных доменов алгоритм AES-128/256 для шифрования запросов на аутентификацию, а утилита mimikatz шифрует их с помощью устаревшего алгоритма RC4 — если, конечно, злоумышленник специально не поменял тип шифрования.
Рисунок 10. Использование RC4 в атаке
При таком способе выявления возможно большое количество ложных срабатываний. Для снижения количества ошибок потребуется дополнительный поведенческий анализ.
В то же время в трафике можно обнаружить и инструменты, с помощью которых осуществляются атаки Credential Dumping и Pass the Hash, например mimikatz. Многие киберпреступники используют в своих целях готовые фреймворки для тестирования на проникновение, которые подгружают дополнительные модули разными способами. В частности, Koadic, применяемый в атаках MuddyWater, передаёт mimikatz на заражённый узел по протоколу HTTP в виде закодированной в Base64 библиотеки, сериализованного .NET-класса, который будет её внедрять, и аргументов для запуска утилиты. Результат выполнения передаётся по сети в открытом виде также по протоколу HTTP.
Выявляем поиск учётных данных
Реквизиты для подключения к удалённым узлам (и в том числе — учётные данные администратора домена) взломщики, как правило, извлекают из оперативной памяти или реестра ОС. Такая техника называется Credential Dumping. Впрочем, некоторые злоумышленники прибегают и к подбору паролей. Хотя это — весьма грубая техника, существуют методы, которые позволяют проводить атаку более незаметно, а из-за того что в компаниях часто используются словарные или простые пароли даже для административных учётных записей, такие методы дают результат.
Credential Dumping
Существует несколько подходов к реализации Credential Dumping, которые можно отследить путём анализа трафика. Один из них — это атака DCSync, то есть копирование учётных записей пользователей на поддельный домен-контроллер. Атака выявляется с помощью разбора RPC-вызовов, которые передаются по сети, и поиска запросов DsGetNCChanges.
Рисунок 11. Обнаружение атаки DCSync
Кроме того, злоумышленники могут попытаться скопировать файл NTDS.dit, содержащий данные об учётных записях. Поэтому необходимо отслеживать передачу этого файла по сети. Ещё один способ реализовать Credential Dumping — это удалённый доступ к реестру по протоколу WINREG. Запросы на доступ к ключам SAM, SECURITY и LSA могут свидетельствовать о попытке получить учётные данные.
Брутфорс
Microsoft Exchange и Office 365 очень популярны как решения для корпоративной почты. Эти сервисы могут быть использованы злоумышленниками для получения доступа к учётным записям пользователей Active Directory. Техника такова: сначала взломщики получают список пользователей, а затем подбирают к ним пароли так, чтобы учётная запись не заблокировалась: по одному паролю на всех пользователей вместо словаря паролей для каждого. Такой подход получил название Password Spraying.
Если в инфраструктуре реализована аутентификация с помощью Kerberos, то для выявления атак на подбор паролей требуется разбирать протокол, находить сессии с ошибками, сообщающими, что запрашиваемый пользователь отсутствует, и разделять сессии с точностью до миллисекунд.
Если в трафике присутствует множество сессий с ошибкой KDC_ERR_C_PRINCIPAL_UNKNOWN с разными учётными записями, то это означает, что происходит перебор имён пользователей.
Рисунок 12. Сессии с ошибкой KDC_ERR_C_PRINCIPAL_UNKNOWN
Сессии с малым временем ответа сервера (десятки миллисекунд) — в сравнении с другими похожими (сотни миллисекунд) — показывают, что в этих сессиях пароли подобрали успешно. В трафике будут также отражены попытки входа с подобранными учётными записями и ошибки Kerberos. Сессии без ошибок с успешными ответами AS_REP и выданными билетами показывают, к каким учётным записям были подобраны пароли.
Рисунок 13. Попытки подбора паролей
Здесь также будет видна цикличность в именах пользователей, потому что атакующие подбирают по одному паролю на все учётные записи. Атаке может предшествовать запрос парольной политики домена: сколько установлено попыток неверного ввода пароля и на какое время блокируется учётная запись.
Ловим вредоносные скрипты
В последнее время в атаках всё чаще применяются скриптовые языки программирования. Перед тем как выполнить скрипт, его нужно передать на целевой узел. Это может быть не только файл сценария с понятными для интерпретаторов расширениями (.ps1, .vbs, .bat и др.) или макрос внутри офисного документа: преступники часто прибегают к другим методам, которые позволяют не оставлять лишних следов на узле. Тело скрипта может передаваться по сети, например, в виде ответа веб-сервера внутри HTML, TXT-записи в DNS-ответе, закодированной строчки с командами на исполнение, передаваемой по протоколу WMI.
Рисунок 14. Схема загрузки вредоносного скрипта с внешнего ресурса на скомпрометированный компьютер сети
Для обнаружения разных способов передачи вредоносных скриптов необходимо уметь определять используемые протоколы и кодировку. Следует в автоматизированном режиме извлекать передаваемые данные и файлы, а найденные объекты отправлять на анализ в песочницу. Известные вредоносные утилиты можно также выявить по хеш-суммам, которые содержатся в списках индикаторов компрометации.
Рисунок 15. Код JSRat, передаваемый в ответе веб-сервера
Анализируем подключения к командным серверам
Вредоносные программы должны связываться со своими управляющими серверами. Основная задача — передавать данные в виде, который усложняет их обнаружение в общем потоке трафика. Существует множество методов сокрытия факта связи с командным сервером или усложнения анализа передаваемых данных. Это может быть, например, маскировка под легитимный трафик, использование стеганографии или нестандартных алгоритмов кодирования.
Выявляем использование туннелей
Злоумышленники могут передавать вредоносный код внутри туннеля, установленного с использованием распространённого протокола, например DNS, SMTP, ICMP.
Есть несколько подходов к выявлению туннелей: поиск признаков самого туннеля или индикаторов использования конкретной утилиты для его создания. В первом случае нужно знать, какие особенности в сетевом трафике указывают на наличие туннеля для каждого протокола. К примеру, для протокола DNS аномалией являются большие размеры TXT-записей. Признаком ICMP-туннеля может служить размер пакетов Echo Request и Echo Response: их размер лишь незначительно изменяется в зависимости от ОС, так что если пакет оказался заметно больше обычного, то это говорит об аномалии. Косвенным признаком может стать увеличение ICMP-трафика: обычно в сети его мало, а при передаче большого количества данных через туннель будет наблюдаться заметный всплеск.
Рисунок 16. DNS-туннель
Второй подход — обнаружение отдельных утилит. Например, использование инструментов ICMPTX и ICMPSH видно по особенностям ICMP-пакетов.
Боремся с обфускацией
Перед злоумышленниками особенно остро стоит проблема обхода средств защиты, поскольку для успешного развития атаки внутри корпоративной сети необходимо оставаться незамеченным как можно дольше. Первым эшелоном выступают средства сигнатурного анализа трафика, потому что именно через них проходит сетевой поток данных начальной компрометации и загрузки модулей на дальнейших стадиях.
Средства сигнатурного обнаружения выявляют уже известные угрозы. Аналитики проводят исследования, определяют общие признаки и на этом основании составляют правила и сигнатуры. В противовес злоумышленники используют техники обфускации кода, кодирования и шифрования. Это либо разрушает искомый паттерн, либо скрывает его от средства защиты.
Как правило, вредоносные программы используют те или иные методы кодирования информации. Наиболее распространёнными являются Base-подобные кодировки, чаще всего это — Base64. К примеру, ответ от агента Cobalt Strike содержит данные внутри POST-запроса, закодированные стандартным Base64. При исследовании сетевого трафика надлежит определять использование как минимум стандартной Base64-кодировки и применять правила анализа уже к декодированному содержимому.
Рисунок 17. Передача данных в кодировке Base64
Рисунок 18. Декодирование исполняемого файла
Одним из самых действенных средств борьбы с обфускацией является поведенческий анализ, поэтому хорошим решением станет объединение анализа сетевого трафика с запуском кода в специальной виртуализированной среде — песочнице. Таким образом следует проверять все извлечённые из трафика объекты, например незашифрованные архивы или упакованные исполняемые файлы. Поведенческий анализ позволяет выявить подозрительные действия при выполнении кода и обнаружить новые, неизвестные ранее угрозы.
Нужно учитывать, что некоторые хакерские инструменты умеют определять выполнение в виртуализированной среде. В таком случае они не запускают вредоносные функции и ведут себя как легитимное ПО. Поэтому песочница должна принимать меры по сокрытию своего присутствия и распознавать техники обхода. Виртуальные машины в песочнице должны моделировать пользовательскую рабочую станцию. Для этого устанавливается прикладное ПО, образы виртуальных машин наполняются пользовательскими файлами так, чтобы они были похожи на рабочие компьютеры потенциальных жертв внутри организации. Вредоносная программа может проверить наличие характерных для виртуальных машин процессов, ключей реестра и файлов, размер жёсткого диска и оперативной памяти, наличие перемещений курсора мыши. Соответствующие запросы необходимо перехватывать на уровне ядра, чтобы сделать бесполезными проверки с уровня пользователя.
В случае сложных целенаправленных кампаний (APT-атак) соответствующие индикаторы компрометации могут быть ещё неизвестны на момент атаки. Поэтому важно проводить ретроспективный анализ файлов при появлении новых данных.
Исследуем хакерский инструментарий
В большинстве своём злоумышленники используют уже готовые фреймворки, поэтому в поиске подозрительного трафика важно знать особенности, характерные для различных инструментов. Так, популярный среди киберпреступников фреймворк Koadic передаёт полезную нагрузку в виде ответа веб-сервера внутри HTML. Сама полезная нагрузка зашифрована, а к расшифровщику применены техники обфускации кода: случайные имена пользовательских функций, их аргументов и переменных. Зашифрованный скрипт дополнительно закодирован. Для обхода средств обнаружения вторжений (IDS) авторы скрывают имя функции, используемой для выполнения расшифрованного скрипта.
Рисунок 19. Обфускация «полезной» нагрузки в Koadic
Ниже представлен ответ агента Koadic командному серверу. Часть служебной информации, например тип исполненного задания, создатели хранят в собственных HTTP-заголовках. Идентификаторы сессии и задачи устанавливаются случайным образом, а путь к библиотеке mshtml обфусцирован для обхода сигнатур IDS, но вид URI всё равно является одним из индикаторов, по которому можно узнать Koadic.
Рисунок 20. Запрос, свидетельствующий об использовании Koadic
Опишем несколько подходов, которые помогают выявить шифрованное соединение с использованием Meterpeter из состава фреймворка Metasploit.
Долгое время хорошо работало правило детектирования Meterpreter HTTPS Reverse Shell, которое анализировало SSL-сертификат защищённого соединения. Дело в том, что в сертификате, сгенерированном через Metasploit, поля Distinguished Name (DN) Issuer и DN Subject содержат идентичные наборы из 6 RDN, расположенных в фиксированном порядке.
Рисунок 21. Содержимое полей DN Issuer и DN Subject
Метод, основанный на выявлении сертификата, подходит для обнаружения простых вариантов шеллов с настройками по умолчанию. Однако в Metasploit есть возможность использовать сертификаты, созданные через другие утилиты, или имитировать сертификат легитимного ресурса. По результатам исследований специалисты PT Expert Security Center пришли к выводу, что на данный момент самый оптимальный подход — детектирование, основанное на длинах пакетов зашифрованного трафика.
Другим примером детектирования служит обнаружение Meterpreter Reverse TCP Shell. В начале соединения происходит отправка пакета определённой длины, внутри которого передаётся публичный ключ RSA-2048. Такой пакет дополнительно защищён шифром гаммирования (XOR), однако из-за малой длины гаммы в структуре пакета можно выявить повторяющиеся части. На рисунке ниже выделены такие фрагменты, а также сам зашифрованный ключ.
Рисунок 22. Обнаружение Meterpreter Reverse TCP Shell
Благодаря большому количеству нулей в начале шифруемых данных и малой длине гаммы можно без труда найти ключ и посмотреть, что находится за XOR.
Рисунок 23. Расшифровка публичного ключа
Для фреймворка Cobalt Strike также были выявлены неизменные паттерны, связанные с особенностями используемого SSL-сертификата, которые позволяют обнаружить такую коммуникацию.
Выводы
Рассмотренные техники атаки можно обнаружить и другими методами (например, с помощью SIEM и анализа журналов событий). Артефакты на конечных узлах будут свидетельствовать о компрометации ресурса, но для того чтобы «раскрутить» всю цепочку атаки и определить начальный вектор проникновения или просто проверить гипотезы в рамках Threat Hunting, может потребоваться проследить перемещения злоумышленника внутри сети, выявить подключения к командным серверам.
Типовые решения для защиты конечных узлов в инфраструктуре и межсетевые экраны могут не обеспечить должный уровень контроля, опытные хакеры адаптируют свои инструменты для их обхода. Анализ потоков данных может служить дополнением к уже существующим средствам обнаружения атак. Копия сетевого трафика позволяет восстановить последовательность действий злоумышленников и детально разобраться в инциденте. Вместе с проверкой передаваемых по сети файлов в песочнице подобный подход даёт возможность обнаружить даже сложную APT-атаку (рассмотренные техники применялись такими группировками, как APT27, TaskMasters, Silence и др.).
Развернутый текст аналитики на тему поиска злоумышленников в инфраструктуре вы можете прочитать на сайте Positive Technologies.