SHA1:
- aef75ada634aa2b2447a3a6502645b74b1e9e018
- 06362b7e8a9cf9bee2da7350b5770a5fa4bb4048
- 5072a9b3667b14860cccb2212ba7f0570b75bea2
- 8284b2a55d615981d8019bc83c1aab59fe7d2fd6
Троянец-дроппер, предназначенный для установки других вредоносных программ на компьютерах под управлением Microsoft Windows. Код содержит множество случайных строк и вызовов функций, чтобы усложнить анализ троянца, а библиотека дроппера скрыта в ресурсах Trojan.MulDrop6.42771 в виде картинки (bitmap). Основная библиотека упакована MPRESS, в ее ресурсах хранится файл конфигурации с полезной нагрузкой и сценарий, используемый в некоторых случаях. В файле конфигурации используется несколько строк-разделителей: "MnSplt", "BMSplt", "DMSplt", "BSSplt", "DSSplt", по которым определяется наличие или отсутствие некоторых опций:
Троянец может показывать на экране компьютера произвольные сообщения с помощью MessageBox, также обнаруживать наличие следующих средств отладки:
- модуля SbieDll.dll – в памяти;
- VMWare;
- VirtualBox – по присутствию в реестре ключа HKLM\HARDWARE\ACPI\DSDT\VBOX__;
- отладчика по установленному флагу PEB.NtGlobalFlag;
- Process Monitor – с помощью функции FindWindow("PROCMON_WINDOW_CLASS");
- Process Explorer – с помощью функции FindWindow("PROCEXPL").
В случае их обнаружения может опционально завершить собственное выполнение.
Отключает функцию контроля учетных записей пользователя Windows (User Accounts Control, UAC) с помощью команды CMD:
cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
Путь, по которому выполняется установка полезной нагрузки, и его имя хранятся в файле конфигурации. Возможен выбор пути установки с помощью переменных окружения: Temp, process_folder, SystemDrive, windir, windir_system32, programfiles, appdata, userprofile. В троянце предусмотрено 7 вариантов автозапуска, используется тот, который указан в файле конфигурации:
- Создается во временной папке файл C:\Users\<username>\AppData\Local\Temp\<имя файла>.txt, содержащий зашифрованное тело самого троянца, а также сценарий C:\Users\<username>\AppData\Local\Temp\<имя файла>.vbs, который расшифровывает и запускает его. Имена файлов троянец заимствует из файла конфигурации. Шаблон сценария хранится в ресурсах библиотеки дроппера, в нем перед сохранением меняются пути расположения файла. Сценарий <имя файла>.vbs помещается в папку автозапуска. Также во временной папке создается сценарий cpy.vbs следующего содержания:
где <filename> — имя файла, указанное в конфигурационном файле.Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CopyFile "C:\Users\<username>\AppData\Local\Temp\<filename>.vbs", "C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\<filename>.vbs" , 1 strUs = Wscript.ScriptFullName FSO.DeleteFile("C:\Users\<username>\AppData\Local\Temp\<filename>.vbs") FSO.DeleteFile(strUs)
После создания сценарий исполняется, для файлов с расширением .vbs в папке автозапуска и .txt во временной папке устанавливаются атрибуты «Только для чтения», «Скрытый» и «Системный». - Изменяется ветвь системного реестра:
где <path> — путь к расположению троянца на диске.HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon "Shell"="explorer.exe, <path>"
- Изменяется ветвь системного реестра:
где <path> — путь к расположению троянца на диске.HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon "Userinit"="C:\\WINDOWS\\system32\\userinit.exe, <path>"
- Изменяется ветвь системного реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
- Изменяется ветвь системного реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
- Изменяется ветвь системного реестра:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
- Троянец копирует себя в корневые папки всех подключенных к зараженной машине дисков, создавая там файл автозапуска autorun.inf:
где <path> — путь к расположению троянца на диске.[autorun] shellexecute=<path>
Для перемещения экземпляра троянца в целевую папку и выполнения автоматического запуска с помощью реестра используется следующий сценарий:
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "<path 1>", ""<path 2><filename>.exe" , 1
strScript = Wscript.ScriptFullName
FSO.DeleteFile(strScript)
где <path 1> — место расположения исходного файла на диске, "<path 2> — путь к новому расположению файла, <filename> — имя файла, указанное в конфигурационном файле.
Запуск троянца опционально может осуществляться с помощью batch-файла:
PING 127.0.0.1 -n 2
start "" "<path 2><filename>.exe"
del %0
exit
где <path 2> — место расположения файла, <filename> — имя файла, указанное в конфигурационном файле.
Запуск полезной нагрузки может осуществляться шестью разными методами:
- Троянец получает доступ к установленному по умолчанию браузеру, прочитав значение ключа системного реестра HKEY_CLASSES_ROOT\http\shell\open\command. Создает новый «замороженный» процесс, после чего встраивается в его образ. Если используется подсистема WOW64, в пути к расположению браузера троянец заменяет "Program Files\" на "Program Files (x86)\". Затем вредоносная программа выделяет память под образ загрузчика, помещает туда полезную нагрузку и запускает процесс.
- Выделяет память под образ загрузчика, помещает туда полезную нагрузку, настраивает импорты, после чего вызывает функцию DllEntry для загрузки библиотеки в память. Затем троянец ищет в этой библиотеке экспорт LoadDotNetPE, считывает из файла конфигурации массив данных, копирует его в отдельную память и передает в LoadDotNetPE.
- Загружает полезную нагрузку в память в виде динамической библиотеки вызовом функции DllEntry.
- Сохраняет полезную нагрузку на диск с заданным именем по указанному в конфигурации пути и выполняет ее.
- Скачивает полезную нагрузку из сети, сохраняет на диск с заданным именем по указанному в конфигурации пути и исполняет ее.
- Запускает полезную нагрузку в собственном процессе. Если память выделить не удалось, процесс завершается. Осуществляется проверка на наличие в образе приложения TLS, если проверка завершается успешно, выделяется страница памяти и ее адрес помещается в TEB.ThreadLocalStorage (fs:[0x2C]). Далее троянец выполняет сканирование образа от конца к началу в поисках инструкции:
Содержимое инструкции меняется на mov edx,<ранее выделенная страница памяти>, с добавлением двух команд nop, после чего управление передается на точку входа.648B152C000000 mov edx,fs:[00000002C]