Comments 6
Сначала пишете, что противодействия анализу нет (строки не шифрованы и т.д.), а затем приводите алго расшифровки строк, говорите, что они зашифрованы, и вообще описываете практически один в один описание функционала и семплов Dridex'а (разбирал его когда-то).
0
VNC-сервер представлял из себя DLL-библиотеку, которая запускалась при помощи функции CreateProcessA() с параметрами rundll32.exe kernel32,Sleep -s <%Путь к DLL%>Что обозначает параметр -s? Поискал, нигде это не документировано.
0
qw1 большое спасибо за вопрос! Повторно посмотрел на участок, отвечающий за запуск VNC-модуля и подробнее описал данную процедуру (плюс исправил неточность с параметром запуска после ключа -s).
Ключ -s предназначен для VNC-модуля. За ним следует параметр, который основной модуль передает VNC. VNC в свою очередь проверяет наличие ключа, получает из параметра PID процесса-трояна и хендл сокета, при помощи которого происходит взаимодействие с CnC, при помощи функции DuplicateHandle() создает его копию и в дальнейшем использует для взаимодействия с сервером.
Ключ -s предназначен для VNC-модуля. За ним следует параметр, который основной модуль передает VNC. VNC в свою очередь проверяет наличие ключа, получает из параметра PID процесса-трояна и хендл сокета, при помощи которого происходит взаимодействие с CnC, при помощи функции DuplicateHandle() создает его копию и в дальнейшем использует для взаимодействия с сервером.
+2
Всё равно непонятно, почему rundll32 kernel32,Sleep запускает VNC.
Может, exe-файл сервера переименован в rundll32, но понять это из текста нельзя
Может, exe-файл сервера переименован в rundll32, но понять это из текста нельзя
0
Судя по коду, после запуска rundll32 (или svchost) троян должен заинжектить код VNC-модуля в легитимное приложение и вызывать функцию DllEntryPoint(). Однако единственное место, где я вижу использование адреса VNC-модуля — это передача его в параметр ProcessInformation.hProcess. В документации написано, что ProcessInformation используется для получения информации о созданном процессе — то есть адрес не используется.
Еще один интересный момент — svchost.exe создается с флагом CREATE_SUSPENDED:
и после запуска приложения не происходит запуск потоков, svchost остается висеть в состоянии suspend.
При этом приложение запускает оригинальные исполняемые файлы. К примеру, путь к rundll32.exe формируется следующим образом: %WINDOWS%\System32\rundll32.exe либо %WINDOWS%\SysWOW64\rundll32.exe в зависимости от разрядности системы. Замены файлов не наблюдал. Сам VNC-модуль — DLL, хранится на диске в зашифрованном виде.
Похоже на ошибку в коде трояна. Возможно, поправят в следующих версиях.
Еще один интересный момент — svchost.exe создается с флагом CREATE_SUSPENDED:
CreateProcessA(0, &CommandLine, 0, 0, 0, 4, 0, 0, &StartupInfo, &ProcessInformation)
и после запуска приложения не происходит запуск потоков, svchost остается висеть в состоянии suspend.
При этом приложение запускает оригинальные исполняемые файлы. К примеру, путь к rundll32.exe формируется следующим образом: %WINDOWS%\System32\rundll32.exe либо %WINDOWS%\SysWOW64\rundll32.exe в зависимости от разрядности системы. Замены файлов не наблюдал. Сам VNC-модуль — DLL, хранится на диске в зашифрованном виде.
Похоже на ошибку в коде трояна. Возможно, поправят в следующих версиях.
+1
Sign up to leave a comment.
Наследник Zeus: чем опасен троян IcedID для клиентов банков