Троянская программа, реализующая на инфицированном ПК функции backconnect-proxy сервера и предназначенная для рассылки спама совместно с удаленным спам-сервером.
В процессе инсталляции троянец пытается сохранить свои копии под именами сsrss.exe, svchost.exe и rundll32.exe в системной папке C:\Windows\System32, несмотря на то что в этой директории уже присутствует оригинальный сsrss.exe. При этом, если у троянского приложения окажутся достаточные системные полномочия (то есть вредоносный исполняемый файл запущен от имени учетной записи администратора и для него включены привилегии отладчика), он пытается завершить в памяти процесс сsrss.exe по его полному пути, что приводит к «падению» ОС Windows с демонстрацией «синего экрана смерти» (BSOD). В случае неудачи копирует указанные файлы в папку %APPDATA% и соответствующим образом модифицирует реестр Windows:
[<HKCU>\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
'Client Server Runtime Process' = '%APPDATA%\csrss.exe'
'Host-process Windows (Rundll32.exe)' = '%APPDATA%\rundll32.exe'
'Service Host Process for Windows' = '%APPDATA%\svchost.exe'
При следующей загрузке системы все три созданные троянцем приложения автоматически запускаются.
После запуска Trojan.Proxy.27552 проверяет наличие подключения к Интернету путем установки соединения с серверами smtp.gmail.com:25 и plus.smtp.mail.yahoo.com:25, при возникновении проблем с доступом к сети троянец завершает свою работу. В случае успеха пытается отправить сообщение об этом на управляющий сервер.
В теле вредоносной программы хранится список управляющих серверов. На каждый адрес из списка троянец отправляет, используя порт 9631 или 9630, значение DWORD 1000 (0x3e8), сервер должен ответить тем же. В случае успешного завершения этой операции управляющий север возвращает троянцу актуальный список IP-адресов управляющих серверов. Список начинается со значения DWORD, определяющего количество структур, затем следуют сами структуры, содержащие IP-адреса управляющих серверов, порт, метку времени (timestamp) и еще ряд дополнительных параметров, по которым троянец в дальнейшем пересортирует полученные данные. Данные списки сравниваются, из них удаляются локальные сетевые адреса и формируется окончательный список рабочих управляющих серверов, зашифровывается и записывается в реестр:
[HKCU\SOFTWARE\Microsoft\Software\Microsoft\Shared Police]
MachineParam="...."
Запустившись на инфицированном ПК, троянец создает три потока. Первый из них регулярно обновляет списки управляющих серверов (согласно описанному выше сценарию), второй отслеживает (и в случае необходимости восстанавливает) состояние ветви реестра, отвечающий за автозапуск троянца, третий реализует функции backconnect-proxy сервера.
Для связи с управляющими серверами троянец использует порт 9997 и применяет свой собственный бинарный протокол на основе SOCKS4/5. Вредоносная программа запускает новые треды и в них пробует подключиться к своим управляющим серверам, при этом некоторые из этих тредов периодически закрывают, а другие открывают порт. Первой командой управляющий сервер отправляет настройки для keep-alive соединения. Эти параметры передаются в функцию:
char __usercall set_keepalive_vals@<al>(int a1@<eax>, SOCKET s)
{
int v2; // ecx@1
int vInBuffer[3]; // [sp+0h] [bp-10h]@1
DWORD cbBytesReturned; // [sp+Ch] [bp-4h]@1
v2 = *(_DWORD *)a1;
vInBuffer[2] = *(_DWORD *)(a1 + 4);
vInBuffer[1] = v2;
vInBuffer[0] = 1;
WSAIoctl(s, SIO_KEEPALIVE_VALS, vInBuffer, 0xCu, 0, 0, &cbBytesReturned, 0, 0);
return 1;
}
Таким образом управляющие серверы фактически заставляют инфицированную операционную систему поддерживать активное соединение заданный период времени. Например, команда c0 d4 01 00 30 75 00 00 заставляет систему удерживать соединение минимум 2 минуты, отправляя поддерживающие TCP-пакеты с интервалом в 30 секунд.
Основное функциональное назначение троянца — организация доступа к SMTP-серверам для массовой рассылки рекламных почтовых сообщений.