Как и любое ПО, троянцы и вирусы из числа грамотно написанных со временем обрастают множеством ответвлений и обзаводятся новыми версиями. Яркий тому пример — Zeus (Trojan-Spy.Win32.Zbot по классификации «Лаборатории Касперского»), из года в год порождающий новых «детей», странным образом соответствуя своему прототипу в греческой мифологии. К числу таких же «плодовитых» семейств можно отнести NJRat, Mirai, Andromeda и т.д. Зловред Neutrino занимает почетное место в этой плеяде вредоносного ПО, варьируя вредоносные функции, методы распространения и заражения. В данной статье мы рассмотрим его нетипичное «ответвление», а конкретнее — модификацию Neutrino для POS. Указанный троянец детектируется продуктами «Лаборатории Касперского» как Trojan-Banker.Win32.NeutrinoPOS.
MD5 рассматриваемого файла: 0CF70BCCFFD1D2B2C9D000DE496D34A1
Начальный этап
Перед выполнением основной функции троянец некоторое время «отсыпается» с помощью API Sleep — очевидно, для обхода «песочниц» с коротким периодом времени работы. Для определения того, сколько именно продлится «сон», используется генератор псевдослучайных чисел:
Взаимодействие с C&C
Далее троянец извлекает список C&C-серверов, хранящийся в его теле в формате Base64, декодирует и начинает проверять работоспособность управляющего сервера. Происходит это следующим образом:
- Формируется POST-запрос к C&C, где в качестве тела запроса выступает закодированная в Base64 строка «enter» (ZW50ZXI=). Как и все дальнейшие подобные запросы, команда предваряется префиксом «_wv=».
- В качестве ответа от C&C всегда возвращается 404, однако в конце располагается закодированный всё в том же Base64 ответ c3VjY2Vzcw== («success» в данном случае). Если данная строка получена, данный управляющий сервер считается активным.
Отдельно стоит указать, что в заголовке каждого POST-запроса есть поле «auth» — независимо от бота его значение не меняется и является обязательным для отправки.
Адрес подтвержденного C&C-сервера сохраняется в фиксированной ветке реестра HKCR\Sofrware\alFSVWJB, как и ряд других параметров, необходимых для работы троянца, что отличается от описанного в этой статье (HKCR\Software\Y1ViUVZZXQxx). Однако как показало сравнение функций обоих описанных файлов, они эквивалентны.Команды
Neutrino данной версии способен выполнять следующие функции:
- Скачивать и запускать файлы;
- Делать снимки экрана;
- Искать запущенные процессы;
- Вносить изменения в реестр;
- Находить файлы на зараженной машине и отправлять их на C&C;
- Туннелировать трафик.
Команды в трафике передаются «как есть» — как строка вида «PROXY», «screenshot» и т.д., закодированные в Base64. Кстати говоря, исходя из анализа команд, в данной версии троянец разучился «ддосить».
Пример для некоторых команд (отмечены ниже красным):- Rolxor(«PROXY») = 0xA53EC5C
- Rolxor(«screenshot») = 0xD9FA0E3
Кража данных банковских карт
Непосредственно кража данных реализована чрезвычайно просто и сводится к следующему алгоритму:
- Троянец начинает обход по всем запущенным процессам (CreateToolhelp32Snapshot\ Process32FirstW\Process32NextW), исключая из списка себя:
- Используя связку OpenProcess\VirtualQuery\ReadProcessMemory получает информацию о страницах в памяти указанного процесса:
- Сканирует полученный регион памяти для нахождения полей Track1 магнитной карты (все ниже перечисленные данные должны располагаться в памяти друг за другом):
- Последовательность из 15, 16, 19 символов «0»-«9» (данная последовательность проверяется после проверки длины с помощью Алгоритма Луна)
- Проверяет наличие символа разделителя «^» (что верно и для предыдущего поля).
- Извлекает имя владельца карты (максимальная длина согласно стандарту ISO/IEC 7813 — 26 символов):
- Оставшиеся данные (CVC32, дата окончания срока обслуживания, CVV) копируются единым блоком с проверкой условий длины и содержимого:
- Последовательность из 15, 16, 19 символов «0»-«9» (данная последовательность проверяется после проверки длины с помощью Алгоритма Луна)
- Данные отправляются на сервер по описанному в секции выше принципу с пометкой Track1
- Собираются данные по Track2:
- Вначале, так же, как и на предыдущем этапе, извлекается PAN (те же проверки, что и Track1).
- Символ разделитель отличается — здесь он «‘» или «D»
- Track2 не содержит имени владельца — оставшиеся данных также извлекаются единым блоком
- Вначале, так же, как и на предыдущем этапе, извлекается PAN (те же проверки, что и Track1).
- Данные отправляются на сервер
Статистика распространения
Основными очагами распространения стали Казахстан и Россия. Приблизительно десять процентов всех зараженных компьютеров — предприятия малого бизнеса.
Заключение
Как видно из описанного примера, Neutrino хотя и является достаточно старым и хорошо изученным семейством, всё может преподнести сюрприз аналитикам в виде нетипичной функциональности или нестандартного применения.
MD5
CECBED938B10A6EEEA21EAF390C149C1
66DFBA01AE6E3AFE914F649E908E9457
4DB70AE71452647E87380786E065F31E
9D70C5CDEDA945CE0F21E76363FE13C5
B682DA77708EE148B914AAEC6F5868E1
5AA0ADBD3D2B98700B51FAFA6DBB43FD
A03BA88F5D70092BE64C8787E7BC47DE
D18ACF99F965D6955E2236645B32C491
3B6211E898B753805581BB41FB483C48
7D28D392BED02F17094929F8EE84234A
C2814C3A0ACB1D87321F9ECFCC54E18C
74404316D9BAB5FF2D3E87CA97DB5F0C
7C6FF28E0C882286FBBC40F27B6AD248
729C89CB125DF6B13FA2666296D11B5A
855D3324F26BE1E3E3F791C29FB06085
2344098C7FA4F859BE1426CE2AD7AE8E
C330C636DE75832B4EC78068BCF0B126
CCBDB9F4561F9565F049E43BEF3E422F
53C557A8BAC43F47F0DEE30FFFE88673
C&C
hxxp://pranavida.cl/director/tasks.php
hxxps://5.101.4.41/panel/tasks.php
hxxps://5.101.4.41/updatepanel/tasks.php
hxxp://jkentnew.5gbfree.com/p/tasks.php
hxxp://124.217.247.72/tasks.php
hxxp://combee84.com/js/css/tasks.php
hxxp://nut29.xsayeszhaifa.bit/newfiz29/logout.php
hxxp://nut29.nsbacknutdoms11war.com/newfiz29/logout.php
hxxp://jbbrother.com/jbb/meaca/obc/pn/tasks.php
hxxp://ns1.posnxqmp.ru/PANEL/tasks.php
hxxp://nut25.nsbacknutdoms11war.com/newfiz25/logout.php
hxxp://propertiesofseyshellseden.com/newfiz21/logout.php
hxxp://n31.propertiesofseyshellseden.com/newfiz31/logout.php
hxxp://propertiesofseyshellseden.com/newfiz21/logout.php
hxxp://n31.propertiesofseyshellseden.com/newfiz31/logout.php
Модификация Neutrino для POS
Сергей
Остались только два вопроса. Как вирус попадает в POS терминал? И, судя по тому, что он работает под Windows, как он там запускается? В POS терминалах зачастую не Windows, и даже не операционная система, а прошивка с микропрограммой.