SHA1 fdd522b5719eac0d622a91a66ea2e608507a77a3
Троянец распространяется с помощью Trojan.LoadMoney.336. Использует следующие библиотеки:
- boost
- libcurl (7.34.0)
- jsoncpp
Путь к PDB: G:\autobuild\browser-tools-guard\output\Release\nethost.pdb, имя файла с Winmain - guard.cpp.
После запуска троянец читает конфигурационные данные из собственных зашифрованных ресурсов и создает каталог %LOCAL_APPDATA%\SystemDir, который в дальнейшем будет для него рабочим. Проверяет наличие файлов %EXENAME%:tmp и %EXENAME%.tmp, в случае возникновения проблем использует отладочные строки "installer not found" и "error opening file installer file #", однако работает и без этих файлов. При запуске без параметров командной строки ищет ярлыки браузеров и, если в свойствах ярлыка указан URL начальной страницы, удаляет его оттуда.
Затем троянец отправляет на свой управляющий сервер запросы nethost_online и nethost_data и пытается выполнить обновление, эту процедуру он повторяет через определенные интервалы времени. В ходе данного процесса троянец извлекает из ресурсов список URL для получения своей актуальной версии и обновлений. Сравнивает версию, полученную с сервера, с имеющейся в своем теле, на основании сравнения принимает решение об обновлении. Троянец сначала посылает на сервер HEAD-запрос, потом – GET-запрос, при получении и версии, и обновлений. Обновленный исполняемый файл сохраняет в папку %LOCAL_APPDATA%\SystemDir\ с именем nethost_update.exe. После скачивания запускает обновленную версию с ключом –update и завершает свою работу.
Завершив обновление, троянец удаляет файлы nethost.exe.bkp и nethost_update.exe и приступает к получению полезной нагрузки. Для этого извлекает из собственных ресурсов URL для получения хоста с полезной нагрузкой, загружает с него зашифрованный файл, после расшифровки отыскивает в нем URL для получения конфигурационных данных. Полученный зашифрованный URL сохраняет в реестре и в дальнейшем использует данные из реестра. Получает с данного URL файл, который после расшифровки и форматирования имеет следующий вид:
{
"updateurl":"http:\/\/****.ru\/nethost.exe",
"updateversion":"1.0.0.211",
"tasks":[
{
"name":"extension",
"period":604800,
"params":"--source=\"http:\/\/****\/vklike.crx\" --install_url=\"http:\/\/****.ru\/?guid=$__GUID&sig=$__SIG&ovr=$__OVR&default=$__DEFAULT&browser=$__BROWSER\" --reinstall browsers=chrome --sha256=3395ad4b8fe61028a2cb01f7e3f7ca969e7b7eea28c30e9db3d2ad939b010217",
"url":"http:\/\/*****.ru\/chrome_extension.exe",
"md5sum":"a6ac299ceb031166af51503f5f12fe94"
},
{
"name":"setsearchm",
"period":7200,
"params":"--nowait",
"url":"http:\/\/*****.ru\/setsearchm.exe",
"md5sum":"94cac3bc69c520c96408a6cec3c8f0f7",
"period_domain":86400,
"period_json":7200
},
{
"name":"startpm",
"period":9000,
"params":"--spec=\"lnaqrk.eh,ln.eh,tb.znvy.eh,jjj.lnaqrk.eh,jjj.ln.eh,znvy.eh\" --nowait --url=\"http:\/\/****.ru\/?utm_content=4236780127a23859cd9e34e0c8c59fd7&utm_source=startpm&utm_term=$__MID\" --sha256=0e2257a3f00f5873b764ef80d95cb3343ca66bc032de76b39a5c3f62860e8d9f",
"url":"http:\/\/****.ru\/start_page.exe",
"md5sum":"a6ac299ceb031166af51503f5f12fe94"
}
]
}
Само скачивание полезной нагрузки происходит необычно: отправляется HEAD-запрос с параметром range: "bytes=2-", потом аналогичный GET-запрос. Вероятнее всего, эта методика применяется для усложнения детектирования приложений, которые скачивает троянец. После скачивания полезной нагрузки троянец сохраняет свою копию в папку в %TEMP% с именем текущей задачи (в приведенном примере extension.exe), создает альтернативный поток с именем :tmp у этого файла и записывает в этот поток скачанный файл без двух первых байтов. Потом троянец запускает свою копию из папки %TEMP% с параметрами из конфигурационного файла. Впоследствии троянец прочитает поток, выделит под него память и передаст управление на точку входа.
Командная строка
Понимает следующие аргументы:
- --afterupdate - удаляет nethost.exe.bkp и nethost_update.exe из рабочего каталога.
- --install_url
- --update - переименовывает %LOCAL_APPDATA%\SystemDir\nethost.exe в nethost.exe.bkp, копирует %LOCAL_APPDATA%\SystemDir\nethost_update.exe в nethost.exe и запускает его с ключом --afterupdate. Потом завершает работу.
- --setup
Ресурсы
Троянец хранит часть своей конфигурации в зашифрованных ресурсах. Шифрование осуществляется с использованием алгоритма XOR. В ресурсах хранится следующая информация:
- URL для обновления тела троянца (в формате JSON);
- URL для получения актуальной версии (в формате JSON);
- URL для получения конфигурационного файла с полезной нагрузкой.
Реестр
Троянец использует ветвь системного реестра HKLM\Software\nethost для хранения своих данных. В частности, использует следующие параметры:
- LastOnlineEvent - timestamp последнего сеанса связи с сервером через nethost_online;
- lastUpdated - timestamp последнего обновления троянца;
- specialValue - зашифрованный URL для получения конфигурационного файла с полезной нагрузкой;
- specialValueChonos - timestamp записи specialValue.
Сетевая активность
Троянец может отправлять несколько различных типов запросов, которые отличаются параметром action.
nethost_online
Вероятно, используется для отправки на сервер статуса "я жив". Стандартный ответ сервера - "OK\r".
HEAD-запрос к URL вида http://g.***.ru/?prod=nethost&version=1.0.0.211&action=nethost_online&guid=*****&mid=*******&os=5.1&bit=32&sig=****
- prod – значение из тела троянца;
- version – значение из тела троянца;
- guid - MD5-хэш, вычисляется на основании SID и номера первого раздела жесткого диска;
- mid - копия guid;
- os - версия Windows;
- bit - битность окружения;
- sig - "подпись" URL, (MD5-хэш всего предшествующего URL).
nethost_data
Стандартный ответ сервера - "OK\r".
HEAD-запрос к URL вида http://g.***.ru/?prod=nethost&version=1.0.0.211&action=nethost_data&guid=*****&mid=****&os=5.1&bit=32&sig=****&gmr=0&mru=0&ypr=0&ymr=0&default=ie&startpage=url&starturl=&search=default
Параметры аналогичны nethost_online, но добавлено несколько новых:
- gmr (0/1) - наличие процесса guardmailru.exe;
- mru (0/1) - наличие процесса mailruupdater.exe;
- ypr (0/1) - наличие процесса praetorian.exe;
- ymr (0/1) - наличие процесса BrowserManager.exe;
- default – браузер по умолчанию;
- startpage – стартовая страница в браузере;
- starturl – URL начальной страницы в настройках браузера;
- search – поисковая система по умолчанию в настройках браузера.