SHA1:
- 39688eb28fb982df31b59a1098554ffa47bf56da
Многокомпонентный троянец-загрузчик, способный выполнять поступающие от злоумышленников команды. Исследованный образец распространялся с помощью другого троянца-загрузчика – Trojan.Sathurbot.1. Включает две секции: в первой располагается код лоадера основного модуля, а также зашифрованные фрагменты кода для распаковки и инициализации импортов, во второй хранится основной модуль троянской программы.
Основной модуль
При запуске проверяет командную строку на наличие ключа "/test" и в случае его обнаружения выводит в консоль сообщение "\n Test - OK" и через 3 секунды завершается. Вероятно, эта функция была предусмотрена вирусописателями для тестирования работы различных программных упаковщиков. После этого троянец пытается определить, не запущены ли на компьютере некоторые приложения, путем определения хэша имен активных процессов (RtlComputeCrc32):
CRC32 | Process |
---|---|
99DD4432 | vmwareuser.exe |
2D859DB4 | vmwareservice.exe |
64340DCE | vboxservice.exe |
63C54474 | vboxtray.exe |
349C9C8B | sandboxiedcomlaunch.exe |
3446EBCE | sandboxierpcss.exe |
5BA9B1FE | procmon.exe |
3CE2BEF3 | regmon.exe |
3D46F02B | filemon.exe |
77AE10F7 | wireshark.exe |
F344E95D | netmon.exe |
2DBE6D6F | prl_tools_service.exe |
A3D10244 | prl_tools.exe |
1D72ED91 | prl_cc.exe |
96936BBE | sharedintapp.exe |
278CDF58 | vmtoolsd.exe |
3BFFF885 | vmsrvc.exe |
6D3323D9 | vmusrvc.exe |
D2EFC6C4 | python.exe |
DE1BACD2 | perl.exe |
3044F7D4 | avpui.exe |
Обнаружив любой из перечисленных в таблице процессов, бэкдор переходит в бесконечный режим сна.
На следующем этапе BackDoor.Andromeda.1407 получает серийный номер системного тома жесткого диска (GetVolumeInformationW), который активно использует при генерации значений различных именованных объектов, в частности, сохраняет путь до папки расположения дроппера в переменной окружения с именем = 'src' ^ VolumeID. Пытается встроиться в другой процесс, для чего запускает процесс с флагом CREATE_SUSPENDED; в зависимости от разрядности ОС выбирается процесс приложения %windir%\system32\msiexec.exe или %windir%\SysWOW64\msiexec.exe.
Если инжект выполнен успешно, тело загрузчика в памяти заполняется нулями, затем троянец выполняет инициализацию сокетов с использованием функции WSAStartup, получает значение строки UserAgent (ObtainUserAgentString), проверяет версию (GetVersionExW) и разрядность (NtQueryInformationProcess(0x1a ProcessWow64Information)) операционной системы, получает привилегии отладчика (SeDebugPrivilege), а также определяет уровень своих привилегий. Затем с использованием функции GetKeyboardLayoutList троянец определяет настроенные в системе национальные языковые раскладки клавиатуры. Для значений раскладок 419h (RU), 422h (UA), 423h (BL), 43Fh (KZ) бэкдор старается как можно быстрее завершить собственный процесс и удалиться из системы.
Удаляет значение следующего ключа системного реестра:
HKLM\software\microsoft\windows nt\currentversion\image file execution options\taskmgr.exe, Debugger.
Получает значение точного времени прямым запросом на порт 123 (NTP) к следующим серверам:
- europe.pool.ntp.org
- north-america.pool.ntp.org
- south-america.pool.ntp.org
- asia.pool.ntp.org
- oceania.pool.ntp.org
- africa.pool.ntp.org
- pool.ntp.org
Если получить ответ от перечисленных ресурсов не удалось, определяет системное время с использованием функции GetSystemTimeAsFileTime и запускает отдельный поток, в котором с интервалом в 1 секунду увеличивает полученное значение. Значение времени активно используется плагинами троянца в процессе работы.
Отключает в настройках Windows демонстрацию системных уведомлений:
[hklm\software\microsoft\windows\currentversion\policies\Explorer]
"TaskbarNoNotification"=1
"HideSCAHealth"=1
[hkcu\software\microsoft\windows\currentversion\policies\Explorer]
"TaskbarNoNotification"=1
"HideSCAHealth"=1
В Windows 7 отключает следующие системные службы:
- wscsvc
- wuauserv
- MpsSvc
- WinDefend
Для Windows XP отключает следующие системные службы:
- wscsvc
- wuauserv
- SharedAccess
Повышение привилегий
Если уровень доверенности процесса троянца (integrity level) имеет значение SECURITY_MANDATORY_LOW_RID (0x1000) или SECURITY_MANDATORY_MEDIUM_RID (0x2000), при этом версия ОС ниже Windows 8, троянец пытается повысить собственные привилегии методом ShellExecuteExW. Если попытка не увенчалась успехом в течение 5 итераций, вредоносная программа продолжает работать с текущими привилегиями. В ОС Windows 7 BackDoor.Andromeda.1407 отключает механизм контроля учетных записей пользователей (User Accounts Control, UAC):
[hklm\software\microsoft\windows\currentversion\policies\system]
"EnableLUA"=0
Установка и запуск
Троянец отключает отображение скрытых файлов в Проводнике:
[hkcu\software\microsoft\windows\currentversion\explorer\advanced]
"ShowSuperHidden"=0
"Hidden"=2
Затем он обращается по очереди к нескольким системным папкам и папкам профиля текущего пользователя, пытаясь определить, какая из них открыта на запись:
%ALLUSERSPROFILE% (C:\ProgramData)
%APPDATA% (C:\Users\<username>\AppData\Roaming)
%USERPROFILE% (C:\Users\<username>)
Проверка осуществляется путем создания файла с флагом DELETE_ON_CLOSE, который удаляется при его закрытии. Затем с использованием значения серийного номера системного тома троянец генерирует строку, состоящую из 3-5 случайных символов, и формирует имя по шаблону "ms%s.exe". Дроппер копируется в выбранную папку с новым именем. Этому исполняемому файлу присваиваются атрибуты «системный» и «скрытый» (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM), чтобы спрятать его от пользователя, а время его создания меняется на время создания хост-процесса (в который был выполнен инжект). Идентификатор Zone.Identifier удаляется.
Наконец, BackDoor.Andromeda.1407 модифицирует ветви системного реестра Windows, обеспечивая автоматический запуск основного модуля вредоносной программы, последовательно пытаясь изменить следующие ветви:
HKLM\software\microsoft\windows\currentversion\Policies\Explorer\Run
HKCU\software\microsoft\windows nt\currentversion\Windows, Load
HKCU\software\microsoft\windows\currentversion\Run
Взаимодействие с управляющим сервером
Взаимодействие с управляющим сервером бэкдор осуществляет с помощью специального зашифрованного ключа, который преобразуется в текстовую форму и в таком виде используется в дальнейшем. Адреса командных узлов также хранятся в теле троянца зашифрованными, для их расшифровки ключ зеркально переворачивается.
Чтобы узнать IP-адрес инфицированного компьютера, BackDoor.Andromeda.1407 обращается к порту 80 следующих серверов:
- microsoft.com
- update.microsoft.com
- bing.com
- google.com
- yahoo.com
Передача информации реализована с использованием формата обмена данными JSON (JavaScript Object Notation) в зашифрованном виде.
Троянец формирует запрос JSON по шаблону {"id":%lu,"bid":%lu,"os":%lu,"la":%lu,"rg":%lu,"bb":%lu} , например, {"id":3088609340,"bid":12385,"os":97,"la":167772687,"rg":1,"bb":0}, где:
- id — VolumeID;
- bid — константа botid / buildid;
- os — версия ОС;
- la — локальный IP-адрес;
- rg — флаг наличия администраторских привилегий;
- bb — флаг раскладки клавиатуры (1 для RU UA BL KZ, 0 — для остальных).
Запрос может быть дополнен иной информацией. Далее он шифруется с использованием алгоритма RC4 (с ключом троянца) и отправляется методом POST на управляющий сервер. В ответ приходит JSON, зашифрованный тем же ключом. Ответ сервера может содержать следующие команды:
- загрузка и запуск исполняемого файла;
- загрузка и установка плагина троянца;
- обновление троянца;
- удаление всех плагинов;
- деинсталляция троянца.
Плагины
Загруженные с управляющего сервера плагины троянец хранит в альтернативных потоках дроппера в зашифрованном виде, шифрование осуществляется с использованием функции CRYPT32!CryptProtectData. Расшифровка возможна только на зараженном компьютере.