Группировка киберпреступников RTM похищает деньги у банковских клиентов с 2015 г. Большинство ее жертв — российские компании. Вредоносное ПО, которое используют злоумышленники, в ИБ-сообществе так же принято называть RTM.
Об этой программе написано довольно много технических отчетов, которые подробно описывают общий механизм работы ВПО. В этой статье мы сосредоточимся на методах получения адресов управляющих (C&C) серверов RTM. В каждой итерации программы злоумышленники изобретательно подходят к этой задаче: они распространяют адрес через блоги, используют систему альтернативных DNS-серверов и сеть Tor. На днях же мы обнаружили, что RTM стала скрывать IP в транзакциях на биткойн-кошелек.
Что такое RTM
По своей сути, RTM — это банковский троян. Основная задача программы — позволить злоумышленникам манипулировать платежными поручениями компании-жертвы, чтобы незаметно перевести ее средства на счет киберпреступников.
Как правило, RTM доставляется на компьютер жертвы через почтовые рассылки, реже — через взломанные сайты (например, новостные издания) или фальшивые ресурсы для бухгалтеров. К письмам преступники прикрепляют запакованный исполняемый файл. В качестве средств упаковки злоумышленники используют как собственные разработки, так и самораспаковывающиеся архивы.
Примеры исполняемых файлов с расширением .exe, распространяемых группировкой RTM
Примеры файлов на рисунке расположены в порядке распространения. Большую часть времени исполняемые файлы RTM были запакованы кастомным пакером и маскировались под PDF-документ. В начале 2019 года стали появляться первые образцы, которые представляют собой самораспаковывающийся RAR-архив и маскируются под файл в формате DOCX. В настоящее время RTM распространяется в виде самораспаковывающегося CAB-архива.
Бинарное представление файла «Оплата 11.06.exe»
После запуска исполняемый файл копирует запакованную DLL-библиотеку на диск и запускает ее с помощью утилиты rundll32.exe. Как правило, внутреннее имя данной библиотеки — core.dll. Ее последующее функционирование происходит в адресном пространстве процесса rundll32.exe.
Именно core.dll осуществляет первичное взаимодействие с управляющим сервером RTM, через который программа получает от злоумышленников команды и дополнительные модули.
Модули доставляются в зашифрованном виде и могут быть запущены различными способами. Эти компоненты дают злоумышленникам возможность удаленно управлять скомпрометированным компьютером, подменять платежные документы в системе 1С и пр.
Способы нахождения управляющего сервера
RSS
В первых версиях RTM для обновления адресов управляющих серверов использовалась RSS-лента. Злоумышленники создавали в LiveJournal блог, содержащий адреса C&C в зашифрованном виде. Для получения новых адресов управляющих серверов отправлялся запрос по адресу hxxps://.livejournal[.]com/data/rss/ и обрабатывался ответ, имеющий следующий формат (на примере https://f72bba81c921.livejournal.com/data/rss/):
Содержимое RSS-ленты. В поле description расположены зашифрованные адреса управляющих серверов
Расшифрованные строки с первоначальным адресом управляющего сервера и адресом RSS-ленты
.bit
В марте 2016 года RTM стала использовать в качестве адресов управляющих серверов домены в зоне .bit. Они поддерживаются альтернативным DNS-регистратором Namecoin, основанным на технологии блокчейн. Система децентрализована, поэтому .bit-домены сложно заблокировать.
IP-адреса управляющих серверов на .bit RTM получала одним из двух способов:
- через API обозревателя блоков Namecoin;
- через разрешение доменного имени с помощью специальных DNS-серверов.
Функция получения IP-адресов управляющих серверов
В функции получения IP-адресов управляющих серверов через API обозревателя блоков Namecoin происходит обработка содержимого, расположенного по адресу hxxps://namecoin.cyphrs[.]com/api/name_show/d/stat-counter-7 (на примере домена stat-counter-7[.]bit):
Функция получения IP-адресов управляющих серверов через API обозревателя блоков Namecoin
IP-адреса управляющего сервера получаются из тела ответа. Помимо запросов к hxxps://namecoin.cyphrs[.]com/api/name_show/d/ злоумышленники также использовали запросы к hxxps://namecha[.]in/name/d/, обрабатывая поле «Current value»:
Содержимое веб-страницы по URL-адресу hxxps://namecha[.]in/name/d/stat-counter-7
Если получить IP-адрес данным способом не удалось, злоумышленники резолвят доменное имя управляющего сервера функцией DnsQuery_A с помощью специальных DNS-серверов (взятых, например, отсюда).
Использование функции DnsQuery_A в программном коде библиотеки core.dll выглядит так:
Функция получения IP-адресов управляющих серверов через разрешение доменного имени с помощью специальных DNS-серверов
Функция DnsQuery_A имеет следующий прототип:
Прототип функции DnsQuery_A, объявленной в заголовочном файле WinDNS.h
4-м аргументом в функцию DnsQuery_A передается адрес структуры _IP4_ARRAY на стеке. По нему содержится массив IP-адресов специальных DNS-серверов:
Структура _IP4_ARRAY на стеке
В случае успешного выполнения функции DnsQuery_A IP-адрес управляющего сервера можно получить, прочитав следующее значение: pDnsRecord –> Data.A.IpAddress.
Из декомпилированного кода одного из экземпляров видно, что для разрешения доменного имени C&C используется специальный DNS-сервер 188.165[.]200.156. А в случае неудачи используется список из трех DNS-серверов: 91.217[.]137.37, 188.165[.]200.156, 217.12[.]210.54.
Tor
15 февраля 2019 года мы впервые обнаружили образцы RTM, управляющий сервер которых расположен в сети Tor (hxxp://[.]onion/index[.]php).
Адрес управляющего сервера в сети Tor среди расшифрованных строк
Участок дизассемблированного кода, в котором происходит разбор URL-адреса управляющего сервера
Такие сэмплы рассылались до 9 апреля 2019 года, после чего RTM снова перешла на использование доменной зоны .bit.
Биткойн
10 июня 2019 года мы обнаружили образец RTM, получающий IP-адреса C&C-серверов из транзакций на определенный криптокошелек. Каждый IP-адрес скрывается в количестве перечисленных биткойнов за две транзакции.
Для получения IP-адресов C&C ВПО осуществляет запрос по адресу hxxps://chain[.]so/api/v2/get_tx_received/BTC/. В ответе содержится набор транзакций на счет криптокошелька . Пример изображен на скриншоте:
Рассмотрим участок кода, в котором происходит получение IP-адресов управляющего сервера:
В функции FindValue происходит поиск дробной части от суммы перевода. Поиск осуществляется с конца буфера и при каждом следующем вызове функции обрабатываются данные, начиная с текущего индекса. То есть при последовательных вызовах функции FindValue будут получены значения 8483, 40030, 14728 и так далее. Программа генерирует два IP-адреса: каждый адрес скрыт в двух идущих подряд переводах.
Дизассемблированный код получения IP-адреса из сумм переводов на криптокошелек
Данный код делает следующее:
ip_address = str(value_1 & 0xff) + "." + str(value_1 >> 0x8) + "." + str(value_0 & 0xff) + "." + str(value_0 >> 0x8)
То есть, перечислив 0.00008483 BTC, а затем 0.00040030 BTC, злоумышленники скрыли для своей программы IP-адрес 94.156[.]35.33. Аналогичным образом из предыдущих двух транзакций RTM получает второй IP-адрес управляющего сервера.
В таком виде вредоносное ПО RTM рассылается по сегодняшний день.
Заключение
Можно заметить, что при организации передачи адреса C&C-сервера RTM любит использовать подходы, позволяющие динамически менять IP без модификации исходного кода ВПО.
C одной стороны, это облегчает жизнь злоумышленникам и может ввести в заблуждение аналитиков. С другой — позволяет специалистам предугадывать адреса управляющих серверов до осуществления вредоносных рассылок.
morgot
Техника интересная, но — есть ли какая-то защита (цифровые подписи и т.д.) для общения с админ-панелью? Если нет, то, теоретически, можно разобрать протокол, отправить транзу, закодировав свой IP, и… перехватить контроль над ботнетом.
lleo_aha
идеальная схема намайнить биткойнов на кошелёк :)
zartdinov
Думаю, транзакция (содержит подпись) просто должна быть с определенного адреса (публичный ключ).