По данным Positive Technologies, 42% кибератак на компании совершаются с целью получения прямой финансовой выгоды. Выявить атаку можно на разных ее этапах — от проникновения в сеть и до того момента, когда хакеры приступят к выводу денег. Разбираем, как распознать злоумышленников на каждом из этапов и свести риски к минимуму.

Проникновение в сеть компании

Фишинговая рассылка

Чаще всего злоумышленники проникают в локальную сеть при помощи рассылки фишинговых писем с вредоносными вложениями. По нашим данным, именно так начинают свою атаку 9 из 10 APT-группировок. 

В большинстве случаев в фишинговой рассылке используется документ .doc, .docx, .xls, .xlsx с одним из видов полезной нагрузки: макрос VBA или Excel 4.0, либо эксплойт для уязвимости в компоненте Microsoft Office, например CVE-2017-0199, CVE-2017-11882, CVE-2018-0802. 

Перед запуском документа следует сперва провести статический анализ, который уже может показать, что файл является вредоносным. Наиболее достоверным будет анализ участков кода, в ходе которого можно выделить характерную последовательность операций, особенности шифрования и другие закономерности.

Но более надежным способом является запуск файла в виртуальной среде — песочнице, где анализируется его поведение. В результате запуска вредоносного файла, как правило, происходит создание подпроцесса в контексте офисного приложения. Вызовы для создания нового процесса в пользовательском пространстве, к примеру CreateProcessA или CreateProcessW, перехватываются на уровне ядра за счет вызовов NtCreateUserProcess или NtCreateProcessEx. 

Атака на веб-приложение

Другой распространенный способ взлома — это эксплуатация уязвимости в веб-приложении на периметре компании. Результаты проектов по тестированию на проникновение, которые проводят наши эксперты, показывают, что в 86% компаний существует хотя бы один способ проникнуть во внутреннюю сеть через уязвимое веб-приложение. 

Необходимо отслеживать подозрительные запуски процессов по событиям журнала событий безопасности Windows с ID 4688 или журнала Sysmon с ID 1. Например, подозрительным будет запуск командной строки cmd.exe, родительским процессом которого является w3wp.exe (сервис OWA). Также следует контролировать создание новых процессов от имени пользователя, который запустил процесс, отвечающий за функционирование атакуемого сервиса. 

Об успешной эксплуатации уязвимости и загрузке веб-шелла могут свидетельствовать события создания файлов с определенными расширениями, например .asmx, .jsp, .php, .aspx в файловых директориях работающих сервисов.

Анализ сетевого трафика позволяет выявлять известные техники эксплуатации уязвимостей (например, Path Traversal) или признаки использования конкретных эксплойтов. 

Для обнаружения эксплуатации неизвестных уязвимостей нужно отслеживать подозрительную активность, к примеру наличие в трафике строк запуска консольных утилит или паттернов консольного вывода данных утилит. Другой аномалией могут являться множественные запросы, содержащие некорректные данные, исходящие с ограниченного количества внешних адресов. 

Строка с запросом на чтение файла /etc/passwd
Строка с запросом на чтение файла /etc/passwd

Подбор учетных данных (Password Spraying)

Третий способ взлома — это подбор учетных данных к доступным сервисам на периметре. Если злоумышленник попробует подбирать пароли к одной учетной записи, то такая атака быстро будет замечена, а учетная запись — заблокирована. Поэтому преступники скорее прибегнут к методу Password Spraying — это атака, в ходе которой подбирается учетная запись к одному распространенному паролю. 

Атаку Password Spraying можно выявить путем мониторинга журналов событий. Для этого необходимо отслеживать следующие события в журнале событий безопасности:

  • 4625 «Отказ входа в систему» с узлов, на которых установлены сервисы, доступные на сетевом периметре, например, OWA;

  • 4771 «Не удалось выполнить предварительную проверку подлинности Kerberos» с кодом ошибки 0х6 «Имя пользователя не найдено» и 0х18 «Недопустимые данные предварительной аутентификации»;

  • 4776 «Компьютер попытался проверить учетные данные учетной записи» в случае NTLM-аутентификации, с кодами ошибок C0000064 «Имя пользователя не существует» и C000006A «Верное имя пользователя, но неверный пароль».

Также данный тип атаки можно детектировать по сетевому трафику. Для этого в трафике нужно четко различать источники запросов на аутентификацию и имена используемых учетных записей. Обычно такая атака порождает большое количество неуспешных попыток аутентификации. 

С высокой точностью можно выявить атаку, если используются варианты аутентификации, при которых пароль передается в открытом виде. Но чаще всего пароли в открытом виде не передаются, поэтому можно обратить внимание на следующие признаки проведения Password Spraying:

  • очень частые (от одного до десяти запросов в секунду) неудачные попытки аутентификации с одного адреса, но с разными именами учетных записей;

  • более редкие попытки аутентификации (например один запрос через каждые 5—10 секунд), но с фиксированным интервалом между запросами и разными именами учетных записей.

Закрепление в сети

Когда злоумышленник получил возможность выполнять команды в системе, ему нужно закрепиться, чтобы иметь постоянный канал доступа к инфраструктуре. Один из распространенных способов закрепления на узле — добавление вредоносного исполняемого файла в автозагрузку. 

Детектирование по журналам событий

В журналах Sysmon нужно отслеживать добавление или изменение ключей реестра и их значений по событиям 12 «Добавление ключей» и 13 «Добавление значений» для определенных веток реестра, связанных с функцией автозагрузки.

Дополнительно рекомендуется отслеживать события Sysmon с идентификатором 11 «Создание файла» в директории C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp и проверять файлы с расширением .lnk, .vbs, .js, .cmd, .com, .bat, или .exe.

Пример события 4771 с кодом ошибки 0x18
Пример события 4771 с кодом ошибки 0x18

Детектирование по сетевому трафику

Рассматриваемая техника не отражается в сетевом трафике, если действия выполняются локально на узле. Однако иногда атакующая сторона производит манипуляции удаленно. Например, используя доступ к удаленному реестру по протоколу WINREG (Windows Remote Registry Protocol), атакующий добавляет значение в ключ реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Run. 

Также при наличии соответствующих прав доступа, атакующий может скопировать файл по протоколу SMB. Например, при копировании исполняемого файла или BAT-файла с инструкциями командного интерпретатора в папку C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp операционная система автоматически запустит такой файл при входе любого пользователя в систему.

Сессии с ошибкой KDC_ERR_C_PRINCIPAL_UNKNOWN
Сессии с ошибкой KDC_ERR_C_PRINCIPAL_UNKNOWN

Сбор данных об инфраструктуре

Злоумышленнику нужно понять, где он оказался, какие узлы инфраструктуры представляют интерес и как до них добраться. Когда целью является кража денег, это будут компьютеры, на которых есть доступ к финансовым системам. Поэтому преступник проводит разведку: смотрит, какие узлы доступны, получает адрес контроллера домена и список администраторов; выясняет, какие привилегии у него есть на текущий момент, в каких группах состоит пользователь, от имени которого он выполняет команды. 

Пример события «Добавление значений»
Пример события «Добавление значений»

Поиск информации о системе

Применение техники System Information Discovery можно обнаружить по журналам событий безопасности и PowerShell в Windows, а также по журналу Sysmon. Выявлять нужно следующие события:

  • запуск процессов: 

  • net.exe или net1.exe с командой config,

  • wmic.exe с командами os, qfe, win32_quickfixengineering, win32_operatingsystem;

  • systeminfo.exe, 

  • ipconfig.exe,

  • netstat.exe,

  • arp.exe,

  • reg.exe; 

  • чтение раздела реестра \Software\Microsoft\ Windows\CurrentVersion; 

  • запуск команд PowerShell, в том числе для WMI-запросов, позволяющих получить информацию о системе.

Изучение прав доступа групп пользователей

Признаком использования техники Permission Groups Discovery на локальном узле является запуск процесса net.exe или net1.exe с командами localgroup, group /domain или group /dom. В журнале событий безопасности события запуска процесса имеют идентификатор 4688, а в Sysmon — идентификатор 1.

Перечисление групп пользователей
Перечисление групп пользователей

Выявить технику в сетевом трафике возможно путем отслеживания соответствующих запросов. Для получения информации о группах могут использоваться сетевые протоколы LDAP, SAMR. В случае LDAP для обнаружения интересны прежде всего запросы searchRequest и их поле filter.

Перечисление членов группы доменных администраторов
Перечисление членов группы доменных администраторов

Развитие атаки во внутренней сети

Для подключения к разным узлам инфраструктуры (серверам и рабочим станциям) нужно знать пароли пользователей или хеши паролей, либо иметь соответствующий билет Kerberos. 

Атака Kerberoasting

С помощью атаки Kerberoasting злоумышленник может получить пароли сервисных учетных записей, которые зачастую бывают привилегированными. Любой пользователь домена может запросить Kerberos-билет для доступа к сервису, и такой запрос будет считаться легитимным. Для шифрования билета используется хеш пароля сервисной учетной записи, и злоумышленник может попробовать расшифровать его в режиме офлайн, подбирая пароль. 

В журналах событий нужно выявлять аномалии в запросах TGS-билетов (событие 4769 «Запрошен билет службы Kerberos»): анализировать все учетные записи и IP-адреса, с которых был выполнен запрос к сервису, и проверять, запрашивает ли обычно учетная запись с этого же IP-адреса TGS-билет к рассматриваемому сервису. 

Также нужно проверять алгоритм шифрования в запросах: использование алгоритма RC4 — это один из признаков проведения атаки Kerberoasting.

В сетевом трафике нужно фиксировать запросы на перечисление сервисов в Active Directory, которые могут стать целями для атаки. Данный этап необходим злоумышленникам, чтобы выбрать сервис для атаки, и предшествует запросу TGS-билета и подбору пароля офлайн. Перечислить сервисы можно, например, с помощью LDAP и ключевого слова servicePrincipalName в поле фильтра.

Перечисление сервисов в Active Directory
Перечисление сервисов в Active Directory

Административные общие ресурсы SMB/Windows

Общие административные ресурсы, такие как C$, ADMIN$, IPC$ могут использоваться злоумышленником для удаленной работы с системой. Эта техника применяется как для передачи файла, так и запуска службы на удаленном компьютере.

Для обнаружения действий злоумышленников необходимо анализировать события, которые указывают на факты доступа к общим административным ресурсам и запуска процессов: 

  • 4624 «Успешный вход в систему»;

  • 5140 и 5145 – события доступа к объектам общей сетевой папки;

  • 7045 «Установка новой службы»;

  • 4688 «Создан процесс», где имя родительского процесса — services.exe.  При эксплуатации smbexec создается сервис не в системной директории, а дальнейшие команды исполняются через services.exe.

Для обнаружения работы с файлами необходимо отслеживать сетевые обращения к общим административным ресурсам. Мониторинг обращений по протоколу SVCCTL позволяет обнаружить работу с сервисами. 

Запрос на создание сервиса
Запрос на создание сервиса

Получение контроля над инфраструктурой

Как правило, для проведения мошеннической операции не нужен полный контроль над инфраструктурой. Однако максимальные привилегии позволяют беспрепятственно перемещаться между компьютерами, поэтому вполне вероятно, что злоумышленник попробует получить учетную запись KRBTGT. Привилегии этой учетной записи позволяют создавать Kerberos-билеты для доступа к любым ресурсам с максимальными привилегиями.

Для репликации учетных с контроллера домена необходимы привилегии DS-Replication-Get-Changes, DS-Replication-Get-Changes-All, DS-Replication-Get-Changes-In-Filtered-Set.

В журнале событий безопасности на контроллерах домена в событиях с идентификатором 4662 «Операция выполнена для объекта» необходимо отслеживать эти привилегии, а для обнаружения источника атаки нужно сопоставлять данные события с событием 4624 «Успешный вход в систему», у которых будет одинаковый идентификатор входа. 

При указании ключа -just-dc-user утилита secretsdump использует технику DCSync для получения доменных учетных данных. Атака заключается в том, что подконтрольный атакующему узел представляется контроллером домена и запрашивает репликацию учетных данных конкретных пользователей.

Контроллеры домена для репликации используют протокол Directory Replication Service (DRS) Remote Protocol, а точнее вызовы RPC-интерфейса, который реализует данный протокол — DRSUAPI RPC interface. У этого интерфейса есть метод DRSGetNCChanges, который и вызывает репликацию. Если такие вызовы исходят от компьютера, который не является контроллером домена, то это явный признак атаки DCSync. 

Трафик атаки DCSync в Wireshark
Трафик атаки DCSync в Wireshark

Доступ к финансовым системам

Получив на предыдущем шаге привилегии учетной записи KRBTGT, злоумышленник может сформировать билет Kerberos для доступа к тем компьютерам, на которых ведется работа с финансовыми системами, например к компьютеру сотрудника бухгалтерии. Такая атака называется Golden Ticket

Необходимо искать аномалии в поле DOMAIN ACCOUNT в событиях с ID:

  • 4624 «Успешный вход в систему»; 

  • 4634 «Осуществлен выход учетной записи из системы»;

  • 4672 «Специальные привилегии, назначенные новому входу». 

Некоторые утилиты для проведения атаки Golden Ticket могут некорректно вписывать значения в данное поле: оно может быть пустым или отличаться от имени домена. Нужно смотреть и на тип шифрования билета: если используется RC4, то это может являться признаком атаки. Кроме того, при атаке Golden Ticket отсутствуют события запроса билета TGT (Event ID 4769) с компьютера пользователя.

В легитимном сценарии работы протокола Kerberos пользователь должен получить билет TGT при первичной аутентификации. Для этого он отправляет запрос AS-REQ контроллеру домена, который в теле ответа AS-REP возвращает ему TGT. Так как атака Golden Ticket предполагает создание билета TGT вне контроллера домена, в трафике будут отсутствовать шаги AS-REQ/AS-REP, то есть будет использоваться билет, который не был выдан. Поэтому цель анализа трафика состоит в обнаружении использования билетов, которые не были выданы контроллером домена.

Легитимный порядок запросов в трафике
Легитимный порядок запросов в трафике

Кража денег

Существуют специальные банковские трояны, способные автоматически подменять платежные реквизиты. В последние несколько лет в атаках широко используется троян RTM. Кроме того, злоумышленник может провести мошенническую операцию и вручную, проследив за рабочим процессом и действиями сотрудников компании. С этой целью на компьютеры устанавливается ВПО для удаленного управления.

Использование ПО для удаленного управления

Злоумышленники могут использовать разные инструменты удаленного доступа к рабочему столу, в том числе технологию VNC: TightVNC, UltraVNC, RealVNC, VNC Connect. В даркнете продаются модифицированные версии этих программ, которые работают незаметно для пользователя.

Рассмотрим, как можно обнаружить вредоносную активность применительно к разным функциям удаленного управления.

Функция удаленного управления

Подход к обнаружению

Перехват изменений изображения на целевом компьютере

Отслеживание установки перехватов (SetWindowsHookEx) и частого получения скриншотов (CreateCompatibleDC, CreateDIBSection, BitBlt, GetDIBits)

Внедрение ввода клавиатуры на целевой компьютер

Отслеживание установки перехватов (SetWindowsHookEx) на нажатие клавиш, проверки и назначения состояния нажатых клавиш (GetKeyboardState, SetKeyboardState, GetAsyncKeyState)

Внедрение нажатий кнопок мыши на целевой компьютер

Отслеживание получения (GetCursorPos) и присваивания (SetCursorPos) позиции курсора, а также перехвата и обработки нажатий кнопок мыши (SetWindowsHookEx)

Передача содержимого буфера обмена

Отслеживание чтения (GetClipboardData) и записи (SetClipboardData) в буфер обмена, факта изменения состояния буфера обмена средствами SetClipboardViewer

Передача кадров изображений и вводимых команд по сети

Для передачи данных оператору используется протокол RFB. Кроме того, что протокол может характеризоваться использованием заданных сетевых интерфейсов (5900-5906), формат пакетов также поддается описанию и обнаруживается сетевыми сигнатурами

Использование банковских троянов

Зачастую цель банковских троянов — получить удаленный доступ к системе ДБО или платежной системе. Поэтому обычно используются общие методы кражи доступа, такие как перехват нажатий клавиш, снятие снимков экрана, запись данных из буфера обмена или встраивание в браузеры. Но есть и специфические техники для данного типа троянов:

Подмена реквизитов в буфере обмена

Метод заключается в мониторинге буфера обмена на наличие платежных реквизитов и их подмену на реквизиты злоумышленника. Детектировать такое поведение можно в песочнице, копируя в буфер обмена «фейковые» кошельки наиболее распространенных платежных систем, а затем отслеживая содержимое буфера обмена.

Подмена платежных распоряжений

При передаче платежных данных в систему ДБО используется файл «1c_to_kl.txt». Злоумышленники могут внести изменения в этот файл для перевода денег на свои счета, например, так действует троян RTM. Троян перехватывает функции CreateFileW и WriteFile, устанавливая доступ к первым 0x40 байтам каждой из функций параметр защиты памяти PAGE_EXECUTE_READWRITE при помощи функции VirtualProtect, а затем перезаписывая их собственным кодом.

Выявлять можно сам факт перехвата событий, отслеживая вызов VirtualProtect с параметром защиты памяти PAGE_EXECUTE_READWRITE по адресу, указывающему на функции CreateFileW или WriteFile. В качестве косвенного признака также подойдет обнаружение вызова установки перехватов SetWindowsHookExA.

Проверка внедрения в процесс «1С: Предприятие»
Проверка внедрения в процесс «1С: Предприятие»

Модификация файлов ДБО

Эта техника используется для обхода самозащиты систем ДБО. В качестве примера можно привести троян BlueNoroff, который изменяет в памяти модули банковской программы SWIFT Alliance, чтобы отключить проверку базы данных и дать злоумышленникам возможность ее редактировать. 

Детектировать можно сам факт модификации процессов и файлов систем ДБО. Вызов VirtualProtectEx с параметром защиты памяти PAGE_EXECUTE_READWRITE для процессов ДБО является крайне подозрительным, а в сочетании с вызовом WriteProcessMemory может служить индикатором изменения процессов ДБО.

Кража ключей от платежных систем и кошельков

Некоторые трояны крадут приватные ключи от платежных систем и кошельков: к примеру, Buhtrap ClipBanker крадет ключи от кошельков Electrum и Bitcoin. Ищет он эти ключи по путям %appdata%\eLectrUm*\wAllEts\ и %appdata%\BiTcOin\wAllEts\walLet.dAt.

Участок кода трояна Buhtrap ClipBanker
Участок кода трояна Buhtrap ClipBanker

Детектировать такое поведение можно по обращению к данным путям. Обычно поиск файлов происходит при помощи функций FindFirstFile и FindNextFile. Кроме этого, можно отслеживать попытки открыть файлы средствами CreateFileA, проверяя пути до файлов. В песочницу можно поместить подставные файлы по соответствующим путям, а затем следить за доступом к ним.

В ходе своей кампании злоумышленникам придется применить множество техник. Для того, чтобы выявить атаку в целом, вовсе не обязательно выявлять все без исключения техники, достаточно вовремя заметить какой-либо из ее шагов. Однако, чем раньше будут обнаружены действия хакеров, тем проще предотвратить негативные последствия. 

С полным текстом исследования можно ознакомиться на сайте Positive Technologies.