Содержание
Проводя целенаправленную атаку, нарушитель не может быть уверен, что после проникновения в локальную сеть организации он окажется в нужном ему сегменте сети. Для поиска ключевых серверов и рабочих станций потребуется разведка и ряд подключений между узлами. Такие подключения, или, как обычно говорят, перемещение хакера внутри периметра, — непременно оставят следы в сетевом трафике. Их можно отследить, а значит, своевременно обнаружить кибератаку. Если сохранять копию трафика, анализ можно проводить и ретроспективно.
Это первая часть исследования. Вторая часть доступна здесь.
Удаленное выполнение команд на компьютерах с использованием связки из техник Windows admin shares и service execution, а также применение технологии Windows Management Instrumentation (WMI) — одни из распространенных техник перемещения внутри периметра1. Эти же техники лежат в основе некоторых утилит для администрирования, которыми также пользуются злоумышленники, в частности psexec и wmiexec из набора Impacket. С их помощью злоумышленники могут осуществлять различные действия, например передавать файлы между узлами (remote file copy), создавать задачи, выполняющиеся по расписанию (scheduled task), или собирать информацию о пользователях (account discovery).
Учетные данные для подключения к удаленным узлам, и в том числе учетные данные администратора домена, злоумышленники, как правило, извлекают из оперативной памяти или реестра ОС. Эта техника называется credential dumping, таким образом злоумышленники получают пароли в открытом виде или их хеши. В свою очередь, техника pass the hash позволяет подключаться к удаленным узлам, зная только хеш пароля пользователя. Впрочем, некоторые атакующие прибегают и к подбору паролей (brute force). Хотя это достаточно грубый подход, существуют методы, с помощью которых атаку можно проводить более незаметно, а благодаря тому, что в компаниях часто используются словарные или простые пароли даже для административных учетных записей (bit.ly/2PMftnV), такие методы дают результат.
Рассмотрим, как обнаруживать в трафике признаки использования перечисленных техник.
Windows admin shares
Для перемещения между компьютерами сети могут использоваться общие сетевые ресурсы, доступ к которым имеют только локальные администраторы узла (техника Windows admin shares). Среди них есть такой сетевой ресурс, как IPC$ (InterProcess Communication). Он предоставляет интерфейс для удаленного вызова процедур (RPC), через который можно обратиться к менеджеру сервисов Service Control Manager (SCM). Менеджер сервисов позволяет запускать, останавливать сервисы и взаимодействовать с ними (техника service execution). Эти две техники работают вместе для копирования исполняемого файла на удаленный компьютер и его запуска либо для удаленного выполнения команд через RPC.
Копирование и запуск исполняемого файла происходят следующим образом. Сперва происходит подключение к ресурсу ADMIN$ (C:\Windows), куда помещается файл. Затем необходимо подключиться к ресурсу IPC$ и обратиться с его помощью к интерфейсу SCM для создания и старта сервиса, который запустит скопированный файл. Все это происходит поверх протокола SMB.
RPC может работать не только поверх SMB, но и поверх чистого TCP (без использования протокола прикладного уровня). В этом случае последовательность действий такова: злоумышленник подключается к IPC$, обращается к какому-либо сервису и отправляет ему команды.
Чтобы выявлять в трафике подключения к общим ресурсам и передачу файлов, нужно уметь разбирать протокол SMB и извлекать передаваемые файлы.
Запросы к SCM выявляются в трафике путем разбора вызовов DCE/RPC и поиска обращений к SVCCTL — интерфейсу менеджера сервисов SCM: OpenServiceW(), StartServiceW().
С помощью RPC реализуются и другие техники, например account discovery. Отправка запросов сервису Security Accounts Manager по протоколу SAMR позволяет получить список пользователей и групп в домене, а перебор идентификаторов SID с помощью сервиса Local Security Authority (LSARPC) позволяет злоумышленнику узнать имена пользователей на удаленном узле.
Один из популярных методов закрепления в системе и продвижения по сети — создание задач, выполняющихся по расписанию (scheduled task), — осуществляется путем отправки запросов сервису планировщика задач ATSVC.
Описанные сценарии вполне легитимны и могут использоваться в повседневной деятельности администраторов, поэтому нужно создавать вспомогательные правила, которые бы автоматизировали обнаружение RPC-вызовов и обращений к сервисам. Эти действия необходимо анализировать в связи с другими событиями, учитывать общий контекст происходящего. Такой анализ может потребовать больших трудозатрат.
Поэтому более эффективны точечные правила обнаружения, которые анализируют сетевой трафик с учетом порядка команд и значений объектов в запросах, характерных для конкретных инструментов. Например, зная последовательность действий и структуру данных, которые определены в коде утилиты psexec из набора Impacket, можно с большой точностью выявить ее запуск в трафике.
Windows Management Instrumentation
Встроенная технология WMI позволяет злоумышленникам воспользоваться уже имеющимися в системе средствами для взаимодействия с удаленными узлами. Когда WMI-команда передается по сети по незашифрованному протоколу DCERPC, в сетевом трафике можно увидеть текстовые строки, где указан класс, к которому происходит обращение, и метод, который вызывается у класса. Чтобы выявить передачу команды на исполнение, необходимо отслеживать вызов метода Create класса Win32_Process.
Модули для работы с WMI присутствуют во многих готовых инструментах, например в Impacket, Koadic и Cobalt Strike. В Cobalt Strike есть также модуль WMI event consumer, который создает подписку на WMI-события. Такая подписка позволяет 6 выполнять определенное действие, когда происходит заданное событие, например когда проходит установленное время с момента старта ОС или пользователь авторизуется в системе. Действием может быть запуск вредоносного ПО или средства удаленного управления. Создание подписки также выявляется в сетевом трафике по специфическим строкам, в частности 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. Если, конечно, злоумышленник специально не поменял тип шифрования (bit.ly/2uVT8x7).
При таком способе выявления атаки возможно большое количество ложных «детектов». Чтобы снизить количество ошибок, потребуется дополнительный поведенческий анализ.
Но в трафике можно отслеживать и инструменты, с помощью которых осуществляются атаки credential dumping и pass the hash, например mimikatz. Многие APTгруппировки используют в своих целях готовые фреймворки для тестирования на проникновение, которые подгружают дополнительные модули разными способами. Например, Koadic, применяемый в атаках MuddyWater, передает mimikatz на зараженный узел по протоколу HTTP в виде закодированной в Base64 библиотеки, сериализованного .NET-класса, который будет ее внедрять, и аргументов для запуска утилиты. Результат выполнения передается по сети в открытом виде также по протоколу HTTP.
Credential dumping
Существует несколько подходов к реализации credential dumping, которые можно отследить путем анализа трафика. Один из них — это атака DCSync, то есть репликация или копирование учетных записей пользователей на поддельный домен-контроллер. Выявляется атака с помощью разбора RPC-вызовов, которые передаются по сети, и поиска запросов DsGetNCChanges.
Кроме того, злоумышленники могут попытаться скопировать файл NTDS.dit, содержащий данные об учетных записях. Поэтому необходимо отслеживать передачу этого файла по сети. Еще один способ реализовать credential dumping — это удаленный доступ к реестру по протоколу WINREG. Запросы на доступ к ключам SAM, SECURITY и LSA могут свидетельствовать о попытке получить учетные данные.
Brute force
Microsoft Exchange и Office365 очень популярны как решения для корпоративной почты. Эти сервисы могут быть использованы злоумышленниками для получения доступа к учетным записям пользователей Active Directory. Техника такова: сначала получают список пользователей, а затем подбирают к ним пароль, так чтобы учетная запись не заблокировалась: по одному паролю на всех пользователей вместо словаря паролей для каждого. Такой подход получил название password spraying.
Если в инфраструктуре реализована аутентификация с помощью Kerberos, то для выявления подбора паролей требуется разбирать протокол Kerberos, находить сессии с ошибками, сообщающими, что запрашиваемый пользователь отсутствует, и разделять сессии с точностью до миллисекунд.
Если в трафике присутствует множество сессий с ошибкой KDC_ERR_C_PRINCIPAL_ UNKNOWN с разными учетными записями, это означает, что происходит перебор имен пользователей.
Сессии с малым временем ответа сервера (десятки миллисекунд) по сравнению с другими похожими (сотни миллисекунд) показывают, что в этих сессиях пароли подобрали успешно. В трафике будут также отражены попытки входа с подобранными учетными записями и ошибки Kerberos. Сессии без ошибок с успешными ответами AS_REP и выданными билетами показывают, к каким учетным записям были подобраны пароли.
Здесь также будет видна цикличность в именах пользователей, потому что атакующие подбирают по одному паролю на все учетные записи. Атаке может предшествовать запрос парольной политики домена: сколько установлено попыток неверного ввода пароля и на какое время блокируется учетная запись.
Подведем итог
Использование рассмотренных техник атаки можно обнаружить и другими методами (например, с помощью SIEM и анализа журналов событий). Артефакты на конечных узлах будут свидетельствовать о компрометации ресурса, но для того, чтобы раскрутить всю цепочку атаки и определить начальный вектор проникновения или просто проверить гипотезы в рамках threat hunting, может потребоваться проследить перемещения злоумышленника внутри сети, выявить подключения к командным серверам или к узлам в Tor, найти и проанализировать аномалии в сетевом взаимодействии.
Типовые решения для защиты конечных узлов в инфраструктуре и межсетевые экраны не обеспечивают должный уровень контроля, опытные хакеры адаптируют свои инструменты для их обхода. Анализ сетевого трафика станет полезным дополнением к уже зарекомендовавшим себя методам обнаружения и расследования киберинцидентов. Копия сетевого трафика может помочь эксперту по ИБ разобраться в инциденте более детально. А в некоторых случаях, например если дополнительно использовать песочницу для анализа файлов, возможно обнаружить сложные APT-атаки (рассмотренные техники применялись, к примеру, такими группировками, как APT27, TaskMasters, Silence).
- В статье используется терминология MITRE ATT&CK.