Наши аналитики обнаружили необычную троянскую программу для Windows, которая специализируется на заражении съемных USB-накопителей и отличается от других аналогичных вредоносных программ интересными особенностями. Одной из таких особенностей трояна является тот факт, что каждый его экземпляр является уникальным и находится в прямой зависимости от конкретного зараженного им накопителя, причем он не оставляет никаких следов работы в скомпрометированной системе жертвы. Такой метод используется как механизм самозащиты от копирования своего тела с диска с последующим анализом его функций.
В нашем исследовании мы представим технические особенности этой вредоносной программы, которая использует особую технику компрометации съемного носителя. Эта техника отличается от старого известного способа, основанного на использовании файлов autofun.inf или специальным образом сформированных файлов ярлыков. Вредоносная программа прибегает к методу компрометации переносимых (portable) версий таких известных приложений как Firefox, NotePad++ и TrueCrypt. При запуске такого приложения пользователем, оно скрытно запускает в системе пользователя этот троян.
Вредоносная программа состоит из шести файлов. Четыре файла являются исполняемыми, а два других представляют из себя файлы конфигурации. Для защиты файлов от анализа аналитиками, троян использует два метода. Первый основан на шифровании файлов с использованием алгоритма AES-128. Второй подразумевает под собой генерацию имен файлов с использованием криптографии.
Ключ шифрования симметричного алгоритма AES вычисляется из значения идентификатора ID съемного устройства (Device ID), а также нескольких других зависящих от диска значений. Таким образом, вредоносная программа может успешно работать только с конкретным устройством, которое подверглось компрометации.
Исполнение вредоносной программы основано на последовательном выполнении кода из различных исполняемых файлов. Так как файлы можно спрятать в переносимой версии вышеупомянутых приложений, это не привлечет внимание со стороны пользователя. Для передачи управления на код в следующем по цепочке файле, вредоносная программа вычисляет его имя на основе подсчета специального значения (хэша), который формируется из содержимого этого файла и восьми байт значения даты его создания. Таким образом, названия файлов различны для каждого экземпляра вредоносной программы. Кроме этого, копирование вредоносной программы в другое расположение приведет к изменению значения даты создания файла, т. е. ее действия невозможно будет воспроизвести в другом расположении. Для лучшего понимания механизма именования файлов см. картинку ниже.
Анализ вредоносного ПО такого типа является достаточно сложной задачей, потому что мы не имели доступа к одному из зараженных устройств. У нас также не было дроппера вредоносной программы для заражения съемного накопителя в соответствующих условиях. Таким образом, у нас в распоряжении были только обнаруженные нами файлы, которые были загружены пользователями. Для расшифровки файлов трояна нам пришлось применить метод грубой силы (brute force) для поиска уникального идентификатора устройства и комбинировать его со значением общих свойств съемного носителя. После расшифровки файлов нам также нужно было выяснить правильный порядок исполняемых файлов и файлов конфигурации, поскольку в процессе копирования файла вредоносной программы к нам для анализа, была изменена временная метка его создания.
Поток выполнения кода вредоносной программы достаточно прост. Каждый загрузчик запускает на исполнение загрузчик следующего уровня, название исполняемого файла которого вычисляется по значению хэша в соответствие с алгоритмом формирования имен, описанным выше. Однако, процесс загрузки должен начинаться с загрузчика первого уровня, в противном случае троян завершает свое исполнение.
Загрузчик первого уровня
Загрузчик первого уровня представляет из себя стартовую точку исполнения вредоносной программы. Он также специализируется на обмане пользователя таким образом, чтобы привлечь внимание к запуску вредоносного файла. Задача может быть выполнена несколькими способами, но наиболее интересным из них является способ, основанный на использовании переносимых (portable) версий популярных приложений. Мы фиксировали использование для этой цели приложения Notepad++, которое было оснащено специальным вредоносным плагином, а также переносимую версию приложения для шифрования TrueCrypt, в состав которого входила библиотека под названием «RichEd20.dll». Загрузчик также проверяет место своего запуска и будет выполнять свои основные функции запуска на исполнение файла полезной нагрузки только в случае записываемого съемного USB-носителя. Такая проверка необходима, поскольку компонент полезной нагрузки сохраняет на носителе похищенные данные.
Загрузчик второго уровня
Файл загрузчика второго уровня будет обнаружен загрузчиком первого уровня с использованием специального значения на основе хэша содержимого файла (см. выше) и, далее, будет запущен на исполнение. Далее, конфигурационный файл этого загрузчика будет найден с использованием такого же значения хэша файла конфигурации. Этот файл конфигурации содержит зашифрованное имя родительского процесса для его проверки. Такой анти-отладочный трюк приведет к завершению вредоносной программы в том случае, если ее запускает другой процесс, например, отладчик. На последнем этапе используется хэш содержимого конфигурационного файла для вычисления имени исполняемого файла загрузчика третьего уровня.
Загрузчик третьего уровня
Загрузчик третьего уровня выполняет проверку присутствия антивирусных продуктов в системе. В случае активности в системе процессов с названиями «avpui.exe» (принадлежит антивирусу Kaspersky) и «AVKTray.exe» (принадлежит антивирусу G Data), выполнение кода вредоносной программы останавливается. Его конфигурационный файл расшифровывается тем же способом, который неоднократно указывался выше. Загрузчик также создает именованный канал (named pipe) для передачи конфигурационного файла полезной нагрузке. В качестве названия объекта канала используются первые 30 байт хэша SHA-512, вычисленного от названия компьютера (computer name).
Полезная нагрузка
На последнем этапе управление получает код полезной нагрузки, который реализует функции кражи данных. Исполняемый файл внедряется в создаваемый со следующей командной строкой процесс «%windir%system32svchost.exe -k netsvcs». Упомянутые конфигурационные данные включают в себя информацию о том, какие данные следует собрать, каким образом они должны быть зашифрованы, и где они должны храниться. В любом случае, директория для сохранения файлов должны располагаться на съемном носителе. В проанализированном нами образце, вредоносная программа была сконфигурирована для хранения файлов следующего типа: изображения, документы, файлы кустов системного реестра (HKCU), список файлов директорий имеющихся в системе дисков. Также злоумышленников интересует информация, собранная с использованием программы с открытыми исходными текстами под названием «WinAudit». Это ПО специализируется на шифровании данных с использованием алгоритмов эллиптической криптографии.
Заключение
В дополнение к интересному механизму самозащиты этого многоступенчатого вредоносного ПО, относительно простые функции кражи данных полезной нагрузки компенсируются тем фактом, что она не оставляет на скомпрометированном компьютере никаких следов своей деятельности. После отключения от системы съемного накопителя, никто не узнают, что с компьютера были похищены данные.
Нужно отметить, что задача переориентации вредоносной программы на новую полезную нагрузку не является сложной и может использоваться злоумышленниками в будущих вредоносных кампаниях.
Как показывает наша статистика распространения данного вредоносного ПО, оно не является широко распространенным. С другой стороны, вероятным ее предназначением является использование в направленных атаках, особенно, на изолированные от глобальной сети air-gapped компьютеры. Такая мера обычно используется в целях повышенной безопасности внутренней сети и подключенных к ней компьютеров.
Индикаторы компрометации
Названия обнаружений антивирусных продуктов:
Файлы полезной нагрузки: Win32/PSW.Stealer.NAI
Файлы загрузчиков: Win32/TrojanDropper.Agent.RFT
Хэши SHA-1 расшифрованных файлов:
2C188C395AB32EAA00E6B7AA031632248FF38B2E
B03ABE820C0517CCEF98BC1785B7FD4CDF958278
66D169E1E503725A720D903E1DFAF456DB172767
4B2C60D77915C5695EC9D3C4364E6CD6946BD33C
Автор: ESET NOD32