Электронная почта остается основным средством деловой переписки в организациях. Её можно развернуть на локальной инфраструктуре, например, используя Microsoft Exchange Server, или через облачные сервисы вроде Microsoft 365 или Gmail. На первый взгляд, облачные решения обеспечивают более высокий уровень конфиденциальности, так как данные почты хранятся за пределами периметра организации. Однако это не останавливает высокоорганизованные группы кибершпионажа, такие как ToddyCat APT (Advanced Persistent Threat - условно-постоянная продвинутая угроза).
Описание
Новое исследование Kaspersky Lab демонстрирует, как ToddyCat развивала свои методы для получения скрытого доступа к деловой переписке сотрудников целевых компаний. В первой половине 2024 года группа активно использовала инструмент TomBerBil, написанный на C# и C++. Однако с мая по июнь 2024 года был обнаружен новый вариант, реализованный на PowerShell. Он сохранил основную вредоносную функциональность, но использовал другой подход и включал новые команды.
Ключевой особенностью этой версии стало выполнение на контроллерах домена от имени привилегированного пользователя. Инструмент получал доступ к файлам браузеров через общие сетевые ресурсы по протоколу SMB. Помимо поддержки Chrome и Edge, добавлена обработка файлов Firefox. Скрипт запускался через задание в планировщике задач, которое выполняло команду: powershell -exec bypass -command "c:\programdata\ip445.ps1".
Сначала скрипт создавал локальную директорию для сохранения собранных данных. Затем он читал файл C:\programdata\uhosts.txt, формируя массив имён хостов. Для каждого хоста инструмент пытался установить SMB-соединение к ресурсу c$ по пути \\<хост>\c$\users\. При успешном подключении он получал список пользовательских директорий на удалённом хосте и создавал отдельную папку для этого хоста в рабочей директории.
На следующем этапе скрипт перебирал пользовательские папки, игнорируя системные, указанные в переменной $filter_users. Для остальных папок создавались три директории для сбора данных из Google Chrome, Mozilla Firefox и Microsoft Edge. Инструмент искал ключевые файлы браузеров: Login Data (база данных с сохранёнными логинами и паролями), Local State (JSON-файл с ключом шифрования), Cookies (база данных с HTTP-куками) и History (история браузера). Эти файлы копировались через SMB в локальную папку.
Для Firefox инструмент дополнительно обходил все профили пользователя и искал файлы из массива $firefox_files, содержащие аналогичную информацию. Скопированные файлы шифруются с помощью Data Protection API (DPAPI). В отличие от предыдущей версии, которая работала на хосте и копировала токен пользователя, обновлённая серверная версия TomBerBil копирует файлы, содержащие пользовательские ключи шифрования, используемые DPAPI. Эти ключи в сочетании с SID и паролем пользователя дают злоумышленникам возможность локально расшифровать все скопированные файлы.
С помощью TomBerBil атакующие автоматически собирали пользовательские куки, историю браузера и сохранённые пароли, одновременно копируя ключи шифрования для расшифровки файлов браузеров. Подключение к удалённым хостам жертв устанавливалось по протоколу SMB, что значительно усложняло обнаружение активности инструмента. Как правило, такие инструменты развёртываются на поздних стадиях, после того как противник установил постоянное присутствие (persistence) во внутренней инфраструктуре организации и получил привилегированный доступ.
Для обнаружения этой атаки необходимо настроить аудит доступа к папкам браузеров и мониторинг попыток подключения по сетевым протоколам к этим папкам. Также требуется аудит доступа к папкам, хранящим файлы ключей шифрования DPAPI. Модифицированное семейство инструментов TomBerBil оказалось неэффективным против систем мониторинга, что вынудило угрозу искать альтернативные методы доступа к критическим данным организации. Была обнаружена попытка получить доступ к файлам локального хранилища Outlook.
Приложение Outlook хранит OST-файлы (Offline Storage Table - таблица автономного хранилища) для автономной работы. Имена этих файлов содержат адрес кэшируемого почтового ящика. Outlook использует OST-файлы для хранения локальной копии данных, синхронизируемых с почтовыми серверами: Microsoft Exchange, Microsoft 365 или Outlook.com. Однако доступ к OST-файлу блокируется приложением, пока Outlook работает. Чтобы скопировать файл, злоумышленники создали специализированный инструмент под названием TCSectorCopy.
Этот инструмент предназначен для поблочного копирования файлов, которые могут быть недоступны для приложений или операционной системы, например, заблокированных во время использования. TCSectorCopy - это 32-битный PE-файл, написанный на C++. После запуска он обрабатывает параметры командной строки: путь к исходному файлу для копирования и путь, куда следует сохранить результат. Затем инструмент собирает информацию о диске, на котором размещён файл, определяет размер кластера, тип файловой системы и другие параметры, необходимые для низкоуровневого чтения.
TCSectorCopy открывает диск как устройство в режиме только для чтения и последовательно копирует содержимое файла поблочно, обходя стандартный Windows API. Это позволяет инструменту копировать даже файлы, заблокированные системой или другими приложениями. Злоумышленники загружали этот инструмент на целевой хост и использовали его для копирования пользовательских OST-файлов. Получив OST-файлы, атакующие обрабатывали их с помощью отдельного инструмента для извлечения содержимого переписки.
XstReader - это инструмент с открытым исходным кодом на C# для просмотра и экспорта содержимого файлов Microsoft Outlook OST и PST. Злоумышленники использовали XstReader для экспорта содержимого ранее скопированных OST-файлов. XstReader запускается с параметром -e и путем к скопированному файлу. Параметр -e указывает на экспорт всех сообщений и их вложений в текущую папку в форматах HTML, RTF и TXT. После экспорта данных из OST-файла атакующие просматривают список полученных файлов, собирают интересующие в архив и эксфильтрируют его.
Для обнаружения несанкционированного доступа к OST-файлам Outlook необходимо настроить аудит для папки %LOCALAPPDATA%\Microsoft\Outlook\ и отслеживать события доступа к файлам с расширением .ost. Процесс Outlook и другие процессы, законно использующие этот файл, должны быть исключены из аудита. Инструмент TCSectorCopy обращается к OST-файлу через устройство диска, поэтому для его обнаружения важно отслеживать события, такие как Event ID 9 (RawAccessRead) в Sysmon. Эти события указывают на чтение непосредственно с диска, в обход файловой системы.
Поскольку активные действия по сбору файлов на хосте легко отслеживаются с помощью систем мониторинга, следующим шагом атакующих стал доступ к электронной почте вне хостов, где проводился мониторинг. Некоторые целевые организации использовали облачный офисный пакет Microsoft 365. Злоумышленники попытались получить токен доступа, который находится в памяти процессов, использующих этот облачный сервис.
В протоколе OAuth 2.0, который использует Microsoft 365 для авторизации, токен доступа применяется при запросе ресурсов с сервера. В Outlook он указывается в API-запросах к облачному сервису для получения писем вместе с вложениями. Его недостатком является относительно короткое время жизни, однако этого может хватить для получения всех писем из почтового ящика, в обход инструментов мониторинга.
Токен доступа хранится с использованием стандарта JWT (JSON Web Tokens). Содержимое токена кодируется с помощью Base64. Заголовки JWT для приложений Microsoft всегда указывают параметр typ со значением JWT первым. Это означает, что первые 18 символов закодированного токена всегда будут одинаковыми. Злоумышленники использовали SharpTokenFinder для получения токена доступа из приложения Outlook пользователя. Этот инструмент написан на C# и предназначен для поиска токена доступа в процессах, связанных с пакетом Microsoft 365.
После запуска инструмент ищет в системе процессы "TEAMS", "WINWORD", "ONENOTE", "POWERPNT", "OUTLOOK", "EXCEL", "ONEDRIVE", "SHAREPOINT". Если эти процессы найдены, инструмент пытается открыть объект каждого процесса с помощью функции OpenProcess и дампит их память. Для этого он импортирует функцию MiniDumpWriteDump из файла dbghelp.dll, которая записывает информацию минидампа пользовательского режима в указанный файл. Файлы дампа сохраняются в папке dump, расположенной в текущей директории SharpTokenFinder. После создания файлов дампа для процессов инструмент ищет в каждом из них строку по шаблону, соответствующему началу JWT-токена.
В описанном инциденте локальные средства безопасности заблокировали попытку создания дампа процесса OUTLOOK.exe с помощью SharpTokenFinder, поэтому оператор использовал для этого ProcDump из набора Sysinternals. Затем оператор выполнял команду dir для проверки, что файл создан и имеет ненулевой размер. После этой проверки файл добавлялся в архив dmp.rar с помощью WinRAR. Злоумышленники отправляли этот файл на свой хост через SMB.
Для обнаружения этой техники необходимо отслеживать командную строку процесса ProcDump на наличие имён, принадлежащих процессам приложений Microsoft 365. Пример использования инструмента ProcDump из пакета Sysinternals для дампа памяти процесса Outlook был обнаружен с помощью Kaspersky Anti Targeted Attack (KATA). Эволюция методов ToddyCat демонстрирует постоянное стремление злоумышленников обходить системы защиты, что требует от организаций комплексного подхода к мониторингу и реагированию на инциденты.
Индикаторы компрометации
MD5
- 2320377d4f68081da7f39f9af83f04a2
- 49584bd915dd322c3d84f2794bb3b950
- 55092e1dea3834abde5367d79e50079a
- b9fdad18186f363c3665a6f54d51d3a0