Операция Potao: анализ вредоносного ПО для кибершпионажа, часть 2

С точки зрения своих возможностей, вредоносная программа Win32/Potao имеет много общих характеристик с трояном BlackEnergy. Перед тем как начать рассматривать технические возможности Potao, рассмотрим происхождение названия этого семейства вредоносных программ.

11607936ad224a5aa83d4ecfbd35da78.jpeg

Первые образцы Potao содержали в своем теле зашифрованную строку GlobalPotao. Другие образцы Potao, которые также обнаруживаются антивирусными продуктами ESET, содержат названия Sapotao и node69. Эти слова использовались в именах файлов DLL библиотек Potao, а также в строках путей PDB внутри исполняемых файлов. Ниже перечислены примеры строк с путями к PDB-файлу с отладочными символами Potao.

2c7941cf8068439c9aa40cb4ab16bae1.png
Рис. 21. Путь к PDB-файлу в теле файла вредоносной программы.

f0f242111ffe409b81d5230e1ef72eba.png
Рис. 22. Путь к PDB-файлу в теле файла вредоносной программы.

c840311fd72c4040a516e9b6fd84cf44.png
Рис. 23. Путь к PDB-файлу в теле файла вредоносной программы.

e34cf23c75ca4658b8cd91a9ddc8d068.png
Рис. 24. Путь к PDB-файлу в теле файла вредоносной программы.

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

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

  • Фишинговые сообщения электронной почты и SMS-сообщения, которые содержат ссылки на файлы дроппера. Исполняемый файл дроппера замаскирован с использованием значка таких документов как Word, Excel, PDF.
  • Заражение с использованием ранее скомпрометированного съемного USB-носителя.
  • Распространение с использованием вредоносных модификаций ПО для шифрования TrueCrypt (Win32/FakeTC).


Дроппер Potao исполняется в два этапа. На первом этапе он извлекает из себя исполняемый PE-файл и сбрасывает его в директорию с временными файлами %temp%. Он также сбрасывает в текущую директорию файл decoy-документа и открывает его, чтобы замаскировать действия в ОС по установке вредоносной программы в систему. Извлеченный дроппером исполняемый файл извлекает из себя DLL библиотеку с использованием API-функции RtlDecompressBuffer. Библиотека сбрасывается в следующее расположение:

%APPDATA%\Microsoft\%LUID%.dll

Затем библиотека будет внедрена в процесс explorer.exe. Перед непосредственным сбросом DLL на диск, исполняемый файл вредоносной программы выполняет особое действия. Он исправляет одно из имен экспортируемой функции в связанном с ней элементе таблицы экспорта на специальное значение идентификатора LUID. Скриншот ниже показывает код функции вредоносной программы, которая осуществляет данную операцию и переименовывает указанное название функции на »_85fc». В результате, каждая сброшенная на диск DLL будет иметь разный хэш.

cfe7e60c88e34e9e989238d7886b52b2.png
Рис 25. Функция дроппера Potao, которая специализируется на модификации названия экспорта DLL в памяти.

6586209864c1414882326f7f9d29d8f3.png
Рис 26. Результат модификации названия экспортируемой функции библиотеки.

Для исполнения своей DLL, Potao привлекает стандартное приложение Windows под названием rundll32.exe, а для обеспечения своей выживаемости в системе следующий раздел реестра с параметром %LUID%.

HKCU\Software\Microsoft\Windows\CurrentVersion\Run

Как мы уже указывали, Potao использует модульную архитектуру и его возможности можно расширить с использованием дополнительных плагинов.

dc9034da7d694336a6d27bee27e1e581.png
Рис. 27. Общая архитектура Win32/Potao.

В процессе установки вредоносной программы в систему, дроппер внедрит указанную выше DLL библиотеку в процесс explorer.exe. После проверки присутствия в системе специального мьютекса, вредоносный код также будет внедрен в адресное пространство таких работающих процессов как веб-браузеры, Skype, uTorrent. Часть вредоносного кода, внедренная в контекст explorer.exe, будет отвечать за загрузку и исполнение плагинов Potao, а код, внедренный в программы с подключение к сети, будет отвечать за взаимодействие с C&C-сервером. Взаимодействие между этими частями осуществляется посредством именованного канала.

Обзор плагинов

Упоминавшаяся выше основная DLL библиотека выполняет только самые основные функции вредоносной программы. Ответственность за реализацию функций шпионажа ложится на загружаемые плагины (модули). Вредоносный код загружает плагины каждый раз при своем запуске в системе, это свидетельствует о том, что они не хранятся на жестком диске. Существует два типа плагинов, первый Full, а второй Light. Исполняемые файлы плагинов первого типа экспортируют функцию с именем Plug, а файлы плагинов второго типа экспортируют функцию Scan. Различие между двумя типами заключается в том, каким образом каждый из них собирает необходимую информацию и возвращает ее клиенту. Плагины типа Full работают непрерывно до перезагрузки системы, плагины Light завершают свою работу сразу после возвращения буфера с требуемой информацией.

В процессе отслеживания деятельности ботнета Potao, мы обнаружили плагины, подписанные цифровой подписью (Рис. 28).

2e3757e868704d21a1338ac995fc4b24.png
Рис. 28. Информация о цифровом сертификате, которым были подписаны некоторые плагины Potao.

Название организации «Grand Torg», которой был выдан сертификат, можно интерпретировать как «Большой рынок». Однако, мы не смогли найти организацию с таким именем. Серийный номер сертификата (Serial Number) равен значению 0453B96EB039AFD6C9988C8CB698E7C9, а его отзыв (Revocation Time) был осуществлен в следующее время: Aug 19 00:00:00 2014 GMT. Так как дата отзыва фактически совпадает с датой выдачи, все цифровые подписи, которые были сделаны этим сертификатом, оказались недействительными. Этот факт приводит нас к выводу о том, что сертификат с самого начала использовался злоумышленниками для вредоносных целей и не был похищен у какого-либо вендора.

Ниже в таблице перечислены известные нам плагины Potao.

991c47b3dadb4e3989b3f25bee09c233.png

b7af15facb4d4c79b09bea379c96faa1.png

Взаимодействие с управляющим C&C-сервером

Образцы Win32/Potao, которые мы проанализировали, содержали несколько различных IP-адресов управляющих C&C-серверов. Адреса находились в зашифрованном виде в теле вредоносной программы. Ниже представлен список этих адресов.

87.106.44.200:8080
62.76.42.14:443
62.76.42.14:8080
94.242.199.78:443
178.239.60.96:8080
84.234.71.215:8080
67.103.159.141:8080
62.76.184.245:80
62.76.184.245:443
62.76.184.245:8080

Вредоносная программа выбирает один из этих адресов и пытается установить соединение. Как можно заметить по списку используемых портов, взаимодействие может выполняться как по протоколу HTTP, так и HTTPS. Взаимодействие с сервером сопровождается использованием стойких криптографических алгоритмов на двух этапах. На первом этапе происходит обмен ключами, а на втором происходит непосредственный обмен данными. На рис. 29 этот процесс представлен более наглядно.

8a283264797244b4ae90645fbbb958cf.png
Рис. 29. Процессы обмена ключами между ботом и C&C-сервером, а также сетевого взаимодействия между ними.

Когда бот в первый раз взаимодействует с C&C-сервером (1), он отправляет запрос в формате POST HTTP-протокола. Отправляемые ботом данные инкапсулируются с использованием протокола XML-RPC. Интересно отметить, что параметр methodName, равный значению 10a7d030–1a61–11e3-beea-001c42e2a08b, всегда присутствовал в проанализированном нам трафике.

b4accaf430d54e839f2cb69d41b0f035.png
Рис. 30. Первоначальный POST-запрос HTTP-протокола, который бот отправляет на сервер.

После получения указанного выше запроса, C&C-сервер генерирует публичный ключ RSA-2048 (2) и подписывает его другим, приватным статическим ключом RSA-2048 (3).

65e9796818794a89ae0551faef54bdb2.png
Рис 31. Ответ C&C-сервера на первый запрос бота, который представляет из себя подписанный приватным ключом публичный ключ RSA-2048, закодированный с использованием base64.

Когда бот получает подписанный сервером публичный ключ RSA-2048, он выполняет проверку его сигнатуры (подписи) с использованием соответствующего статического публичного ключа, который находится в файле вредоносной программы (5). В случае успешности выполненной проверки (подпись ключа действительна), полученный ключ (6) будет использован для шифрования данных на следующем этапе. Жестко зашитый в тело вредоносной программы публичный RSA-2048 ключ имеет вид.

7770bc17a5a84da3b1f7846f299e10dc.png

На втором этапе бот генерирует симметричный ключ AES-256 (7). Этот т. н. ключ сессии шифруется с использованием полученного публичного RSA-2048 ключа (8) и отправляется на C&C-сервер (9).

Передаваемые от сервера к боту данные шифруются с использованием ключа AES-256 (12) (13) и расшифровываются им же на стороне сервера (14).

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

id=4699807581825067201mapt&code=0&sdata=ver:5.1.2600 lv:2.8.0002 comp: COMPUTER adm:1 x:0 p: firefox.exe&md5=&dlen=0

Видно, что запрос содержит идентификатор (ID) компьютера, ID кампании, версию ОС, версию вредоносной программы, имя компьютера, текущие привилегии учетной записи пользователя, разрядность ОС (32 или 64 бита), а также название текущего процесса.
Сервер отвечает данными следующего формата.

code=%CMD%&data=%PAYLOAD_BASE64_ENCODED%&dlen=%PAYLOAD_LENGTH%&md5=%MD5%

Значение параметра code представляет тип команды, которую бот должен выполнить. Список команд, которые бот может выполнить, указан в таблице ниже.

13e485f87e2f43f6922e7aaa3fbfdffc.png

Распространение через съемные USB-носители

В нескольких вредоносных кампаниях злоумышленники использовали еще один вектор распространения Potao, с использованием заражения съемных USB-накопителей. Potao использует отличный от других червей (autorun worm) способ заражения съемных носителей. Вместо того, чтобы создавать autorun.inf файл в корне файловой системы накопителя, он использует простой и эффективный прием хранения своего исполняемого файла на носителе с его последующим запуском. Код вредоносной программы, который отвечает за заражение съемного носителя, выполняет копирование дроппера в корневую директорию всех подключенных к системе накопителей. При этом в качестве имени файла дроппера выбирается метка съемного носителя, а в качестве значка, системный значок этого носителя. Остальным директориям и файлам в корневой директории на этом носителе присваиваются атрибуты Hidden (скрытый) и System (системный). Для пользователя создается впечатление, что ему нужно еще раз щелкнуть по значку, чтобы открыть диск. В результате этого действия, он запускает дроппер на исполнение.

a5feb2b7006b4c3f8a9caf3bcc230547.png
Рис. 32. Значок дроппера и его название файла в корневой директории съемного носителя совпадают с аналогичными данными съемного носителя.

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

Вредоносная программа содержит в своем арсенале специальные методы затруднения ее анализа исполняемого файла. Одним из таких методов является использование хэшей имен API-функций для их вызова.

73453a32aab34d408ff5e7022406af9d.png
Рис. 33. Получение адресов функций WinAPI с использованием хэш-значений их названий.

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

Авторы также использовали механизм шифрования строк, которые должны были присутствовать в теле Potao. На рис. 34 показана функция расшифровки строк.

c0b838ec760e4f2ebf30ec0c7c4d33ff.png
Рис. 34. Функция расшифровки строк.

Строки зашифрованы с использованием операции XOR и 4-байтового ключа. Ключ может различаться от одного вредоносного файла к другому.

Win32/FakeTC — Анализ вредоносного TrueCrypt

Мы уже упоминали, что злоумышленники использовали для своих киберкампаний вредоносную модификацию легитимного ПО TrueCrypt. Эта модификация обнаруживается нашими антивирусными продуктами как Win32/FakeTC и используется злоумышленниками для извлечения файлов с зашифрованных дисков жертвы. FakeTC связан с Potao только тем, что первый может, в некоторых случаях, загружать на зараженный компьютер дроппер второго.

ef989a03576c4186a62d0bfce154e484.png
Рис. 35. Статистика обнаружения Win32/FakeTC в различных странах.

На рис. 36 показан интерфейс вредоносной версии TrueCrypt.

e24b452601be420c954d99ef92f30908.png
Рис. 36. Интерфейс вредоносной версии TrueCrypt.

Код вредоносной программы выполняется в отдельном от других легитимных функций TrueCrypt потоке. Поток создается в конце функции Mount и специализируется на получении списка файлов на зашифрованном диске, который был примонтирован в систему. В случае выполнения определенных условий, он подключается к управляющему C&C-серверу и ожидает от него команд для исполнения. Вредоносный код был добавлен злоумышленниками только в исполняемые файлы TrueCrypt пользовательского режима, содержащие цифровую подпись драйверы режима ядра остались нетронутыми.

Следующие условия должны быть выполнены для подключения бота к C&C-серверу.

  • Количество файлов на зашифрованном диске должно быть более 10.
  • Зашифрованный диск должен быть примонтирован более 4 раз.


Список поддерживаемых FakeTC команд указан ниже в таблице.

d659caf2d8e84c0093ef65c020917c70.png

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

Заключение

Выше мы изложили анализ вредоносных программ, которые обнаруживаются антивирусными продуктами ESET как Win32/Potao и Win32/FakeTC, а также детально рассмотрели различные киберкампании злоумышленников. Мы показали, что вредоносное ПО Win32/Potao является примером инструмента для кибершпионажа, а кибератаки с его использованием можно отнести к типу APT, хотя, при этом, сам Potao нельзя отнести к сложным advanced вредоносным программам.

Группа киберпреступников, которая стояла за использованием Potao в кибератаках, продемонстрировала эффективность использования тщательно продуманных приемов социальной инженерии, вместо использования эксплойтов. К таким продуманным приемам относятся использование специальных SMS-сообщений, которые содержат ссылку на файл вредоносной программы, а также специальный трюк по заражению съемных носителей. Одной из наиболее интересных особенностей данной киберкампании было использование злоумышленниками вредоносной версии легитимного ПО для шифрования TrueCrypt. Сама программа с вредоносными возможностями была размещена на веб-сайте truecryptrussia.ru и получить ее могли не все пользователи. Кроме этого, сам этот сайт выступал в качестве управляющего C&C-сервера для вредоносной программы.

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

Ниже представлены сравнительные характеристики Potao и BlackEnergy.

763b220f392343fe9d23c30249a4ebaa.png

© Habrahabr.ru