BI.ZONE corporate blog
Information Security
14 March 2018

Dimnie: от гиков с GitHub до корпоративных бухгалтеров

Введение


В то время как ИБ-сообщество России внимательно наблюдает за новыми атаками известных преступных групп Carbanak, Buhtrap и RTM, в стане финансовых угроз незаметно произошло пополнение. И вызвано оно не появлением совершенно нового банковского трояна, а добавлением банковского модуля к ранее известному шпионскому ПО Dimnie.

Dimnie — троян для сбора информации (снимков экрана, клавиатурных нажатий и т.д.) и получения удаленного доступа к зараженным системам. Совсем недавно, в январе, нам попался один из его новых модулей для подмены платежей 1С, и тогда стало понятно, что авторы Dimnie кражей информации ограничиваться не хотят.

Известность Dimnie приобрел еще в начале 2017 года, когда атаковал пользователей сервиса GitHub (более подробно об этом писали коллеги из Palo Alto Networks). Но согласно данным Virus Total, троян этот далеко не новый: злоумышленники вовсю используют его аж с середины 2014 года, — именно тогда впервые засекли образцы исполняемых файлов Dimnie.

Атакованным трояном сервисом GitHub пользуется множество разработчиков. Похитив их учетные данные, злоумышленники могли скомпрометировать проекты и провести так называемую атаку с эксплуатацией доверия к сторонней организации.

Во время такой атаки преступник устанавливает бэкдор в исходный код какой-нибудь популярной программы. В итоге, когда она доходит до заказчика, злоумышленник получает доступ к системам всех конечных пользователей, которыми зачастую оказываются крупные компании и государственные организации. Таким образом киберпреступник за раз убивает сразу целый косяк зайцев, компрометируя куда больше систем, чем если бы он атаковал лишь какую-то одну компанию. Ну а потом доступ к этим системам можно и продать за приятную сумму коллегам по нелегальному цеху, которые специализируются на определенных секторах индустрии (например, банках).

Выделялся из толпы троян Dimnie еще и необычным способом сокрытия запросов к управляющему серверу — он маскировал их под запросы к легитимным ресурсам toolbarqueries.google.com и gmail.com и под картинки формата JPEG. А вот распространяли его злоумышленники вполне типично — при помощи фишинговых писем с небольшой социальной инженерией:



Схема работы


Dimnie — сложный модульный троян. Все его модули делятся на основные и вспомогательные. Основные — Downloader, Autorunner, Core и Loader — загружаются при каждом заражении и сами по себе вреда не наносят. А вот вспомогательные модули — Keylogger, PCInfo, WebHistory, ProcInfo и Banker — являются «полезной нагрузкой», и именно с их помощью и происходит извлечение и подмена информации на зараженной системе. При каждом запуске Dimnie модуль Loader запрашивает дополнительные модули в зависимости от того, что именно преступник хочет сделать с зараженном системой. Общая схема работы Dimnie представлена на рисунке:



Список модулей


Нашей команде удалось загрузить и исследовать следующие модули Dimnie:



Заражение


29 января мы зафиксировали почтовую рассылку с вот такими письмами:



К письму прилагался RAR-архив с файлом «Документы начало года.exe» — исполняемым файлом Windows.

Типичное письмо для обмана не особо продвинутых в вопросах кибербезопасности бухгалтеров удивило нас довольно халтурным уровнем исполнения. Не в наших правилах давать советы злоумышленникам, но можно было хотя бы убрать «.exe» из названия архива…

Согласно VirusTotal, файл «Документы начало года.exe» также распространялся и под другими именами:

  • Документы 22.01.exe
  • Документы по постановлению 22.01.exe
  • Акт сверки 25.01.exe
  • Пакет документов январь.exe
  • Возбуждение исполнительного производства январь.exe
  • Пакет документов начало года.exe
  • Исполнительное производство 22 января.exe
  • Акт 25.01.exe
  • Исполнительное производство 22.01.exe

Для маскировки преступники использовали значок документа PDF. Сидящий под Windows с настройками по умолчанию пользователь вряд ли отличит этот файл от настоящего PDF-документа:



Когда наш ничего не подозревающий бухгалтер открывает файл, происходит запуск полезной нагрузки — в данном случае первого модуля Dimnie, который мы назвали Downloader. Он скачивает основной модуль и закрепляет его в системе.

Downloader


Первым делом Downloader получает основной модуль Core и модуль для закрепления на системе Autorunner. Для этого он производит DNS-запрос для получения записи с именем «justteordingto.xyz».



Интересно, что тут, как и в экземпляре, исследованном экспертами из Palo Alto Networks, троян маскирует свои запросы под прокси-запросы к ресурсам toolbarqueries.google.com и gmail.com и под картинки формата JPEG:



После этого полученный модуль исполняется в отдельном потоке.



Для модуля Autorunner определяется адрес EntryPoint и формируются параметры вызова: адрес памяти, куда помещен модуль, ключ для шифрования передаваемых по сети данных и идентификатор модуля. Далее модуль Downloader создает поток Autorunner, дожидается его завершения и затем самоудаляется.

Autorunner


Модуль Autorunner содержит в себе IP-адрес 185.82.217.155, с которого производится загрузка модуля Core.



В зависимости от имеющихся прав Autorunner использует один из трех способов закрепления:



Core


В результате работы модуля Core производится DNS-запрос для получения записи доменного имени «worldmed.bit», который относится к распределенной блокчейн-инфраструктуре Namecoin. Доменное имя запрашивается у следующих DNS-серверов:

  • 54.236.38.98;
  • 172.93.216.250;
  • 96.47.228.108;
  • 66.70.211.246;
  • 52.174.55.168;
  • 88.175.188.50;
  • 161.97.219.84;
  • 104.168.144.17;
  • 163.172.168.171;
  • 207.192.71.13;
  • 178.63.116.152;
  • 188.226.146.136;
  • 45.55.97.204;
  • 192.99.85.244;
  • 163.53.248.170;
  • 51.254.25.115;
  • 172.104.136.243.





Доменная зона «.bit» существует вне общей системы доменных имен сети Интернет и не регулируется ICANN. Это уже не первое использование DNS-серверов Namecoin разработчиками вредоносного ПО — банковский троян RTM тоже задействовал зону «.bit» для разрешения адресов серверов управления. Впрочем, Dimnie и тут от всех отличился — он использует адреса «.bit» только в работе модуля Core, остальные обнаруженные нами модули содержат адрес сервера управления в виде IP-адреса, зашитого в модуль. При каждом запуске Core загружает модуль Loader.

Loader


Модуль Loader загружает и запускает все функциональные модули Dimnie. Адрес, с которого Loader загружает модули этого трояна, совпадает с адресом в модуле Autorunner — 185.82.217.156.



В то же время Loader использует собственную реализацию протокола HTTP. GET- и POST-запросы формируются отдельно, а для их передачи и получения ответов используются низкоуровневые функции winsock.



По нашей оценке, такое сетевое взаимодействие не совсем подходит для использования в корпоративных сетях: при наличии собственного proxy-сервера эти функции попросту не будут работать.

Протокол общения в данной реализации не отличается от описанного в отчете коллег из Palo Alto Networks. Используются те же самые домены для создания GET- и POST-запросов (toolbarqueries.google.com и gmail.com), а модули и их отчеты так же маскируются под JPEG-картинки.



Для шифрования данных авторы Dimnie используют AES 256 в режиме ECB. Этот режим блочного шифрования считается самым ненадежным — в нем сохраняются статистические особенности открытого текста, и одинаковым блокам зашифрованного текста соответствуют идентичные блоки открытого текста. Учитывая, что во многих форматах используются стандартные заголовки и блоки одинаковых символов, ECB никак нельзя назвать надежным, и это делает выбор авторов Dimnie особенно странным.



Отметим, что загружаемые модули Dimnie запускаются по-разному:

  • внедрение в процесс svchost.exe. При этом процесс создается с флагом Suspended, а внедрение модуля и запуск удаленного потока происходит с помощью функции CreateRemoteThread;
  • создание файла «%TEMP%\msiexec2.exe», копирование в него полезной нагрузки и запуск;
  • копирование модуля в выделенную виртуальную память и запуск локального потока.



Модуль WebHistory


Модуль WebHistory позволяет получить историю посещений веб-браузеров зараженной системы. Он перебирает в реестре все пути, где могут лежать файлы истории браузеров Mozilla Firefox, Google Chrome и Internet Explorer, после чего для каждого из них формирует сообщение следующего формата:



Где <URLs_XXX> — тег браузера (URLs_IE, URLs_FF, URLs_Chrome); временная метка формирования данных; #URL_FILE — файл, в котором производился поиск записей; записи формата «X^Y^X^V» — временная метка, количество обращений, тип запроса (h — http, s — https, f — ftp, I — локальный файл), ресурс; время в миллисекундах на поиск данных.

Модуль Keylogger


Модуль Keylogger — это клавиатурный шпион, который перехватывает нажатия клавиш с помощью функции WinAPI RegisterRawInputDevices и поддерживает архитектуры х86 и х64. При запуске он внедряется в explorer.exe и все последующие действия выполняет из контекста этого процесса. Журнал нажатий клавиатуры сохраняется во временный файл в директории %TEMP% вместе с заголовками окон и буфером обмена. Затем все эти данные отправляются на сервер управления.



Модуль сбора информации о системе PCInfo


Модуль PCInfo собирает информацию о зараженной системе: имя компьютера и домена, список пользователей, кодировка, используемая по умолчанию, информация о сетевых интерфейсах.

Модуль получения списка процессов ProcInfo


Модуль ProcInfo получает список запущенных процессов.

Модуль кражи данных учетных записей Stealer


Модуль Stealer — это т.н. Pony Stealer, ПО для кражи паролей учетных записей пользователей из различных установленных программ. В список программ, из которых Pony крадет пароли, входит больше сотни популярных наименований, включая многие FTP-клиенты, почтовые программы (Outlook, Thunderbird) и файлы-кошельки (wallet.dat и electrum.dat) для хранения ключей различных криптовалют:



В данном случае Pony Stealer собран в виде DLL, и загружается также, как и остальные модули. Украденные данные отравляются на адрес «http://185.82.217.244/g/g.php».

Модуль подмены данных платежных поручений Banker


Самый объемный из загруженных нами модулей, модуль Banker подменяет реквизиты получателя в текстовых файлах платежных поручений 1C (файлы 1c_to_kl.txt) при их загрузке в системы дистанционно банковского обслуживания (банк-клиенты).

Получив соответствующую команду с сервера управления, модуль внедряет свой код в процессы, преимущественно принадлежащие веб-браузерам и системам дистанционного банковского обслуживания:

  • cbank.exe
  • cbmain.exe
  • chrome.exe
  • clbank.exe
  • firefox.exe
  • javaw.exe
  • jp2launcher.exe
  • iexplore.exe
  • opera.exe

Внедренный код позволяет перехватить вызываемую при открытии файлов функцию CreateFile: например, когда пользователь хочет загрузить платежное поручение в банк-клиент и если открытый файл имеет расширение «.txt», начинается со строки «1CClientBankExchange» и содержит в себе секцию c именем «Платежное поручение». В таком случае происходит подмена полей с реквизитами получателя в соответствии с данными с сервера управления.



Подмена реквизитов не производится в следующих случаях:

  • Если наименование банка плательщика содержит строки «СБЕРБАНК», «ОТКРЫТИЕ» или «ВТБ»;
  • Если поле «Получатель» или «Получатель1» содержит строки «УФНС» или «УФК»;
  • Если поля «Плательщик» или «Плательщик1» содержат строки «ГУП» или «МУП»;
  • Если сумма не удовлетворяет заданным критериям.

Получается, что авторы банковского модуля Dimnie не собираются красть деньги у клиентов Сбербанка, ВТБ, банка «Открытие» и государственных организаций, а также средства, отчисляемые Федеральной налоговой службе.

Все это указывает на то, что киберпреступники не хотят привлекать лишнего внимания к своей деятельности — и, судя по всему, вплоть до недавнего времени им это вполне удавалось.

Стоит отметить, что протокол коммуникации модуля Banker отличается от протокола коммуникации остальных модулей — обмен данными с сервером управления осуществляется с использованием протокола SOAP, а конкретно open-source библиотеки gSOAP. К тому же, отправка запросов к серверу управления происходит без какого-либо шифрования или обфускации трафика с помощью ложных JFIF-заголовков:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="uri"><SOAP-ENV:Body
SOAP-
ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><ns:get_Ar><uniq>1234567890</uniq></ns:get_Ar></SOAP-ENV:Body></SOAP-ENV:Envelope>

Использование подобных методов (SOAP XML) нехарактерно для вредоносного ПО — чаще его можно встретить в коде enterprise-приложений. Вместе с отсутствием шифрования траффика, это позволяет предположить, что модуль Banker был разработан сторонним разработчиком.

Заключение


Dimnie произвел на нас довольно противоречивое впечатление. С одной стороны, в нем используются интересные технологии — маскировка домена, мимикрия под картинку, весьма сложная модульная архитектура и отказоустойчивый Namecoin-домен в узком месте этой архитектуры. Все это вроде бы говорит о том, что авторы Dimnie тщательно подошли к работе над своим детищем. Но в то же время в трояне есть и откровенно провальные моменты: плохая социальная инженерия, использование режима ECB для шифрования, невозможность работы через прокси-сервер, тяжеловесный SOAP-протокол.

При этом защититься от Dimnie достаточно просто:

  • Запретить доступ в интернет в обход корпоративного прокси
  • Запретить DNS-запросы к серверам Namecoin

Столь неровное качество трояна натолкнуло нас на мысль, что его разработкой занимаются сразу несколько злоумышленников с различной квалификацией. Но, как бы то ни было, переход от кражи информации к краже непосредственно финансов тревожит.

Пока невозможно даже приблизительно оценить, сколько средств авторам Dimnie уже удалось похитить: в сводках финансовых киберугроз о нем никто не пишет, да и мы пока не сталкивались с успешными случаями хищений. Авторы трояна избегают атаковать крупные банки и государственные организации и, возможно, ограничивают максимальную сумму краж. Видимо, они боятся привлечь внимание крупных игроков ИБ-рынка. И до сих пор им это весьма успешно удавалось.

Сетевые идентификаторы, относящиеся к Dimnie:


• justteordingto[.]xyz
• sixgoats[.]pw
• selenaspace[.]space
• guysid[.]pw
• fracking[.]host
• shortsell[.]trade
• sellgrax[.]club
• dajebikes[.]pw
• bestintrading[.]pw
• justteordingto[.]xyz
• yibgenkleg[.]host
• recruiterbox[.]club
• geforthirode[.]xyz
• yibkenkleg[.]rocks
• yibjenkleg[.]cn
• webwerkt[.]trade
• ketpatontjohnbet[.]xyz
• haptofhodabi[.]xyz
• fydomotedwa[.]xyz
• webfoundation[.]top
• 185[.]82[.]217[.]244
• 185[.]82[.]217[.]155
• 185[.]82[.]217[.]156
• 185[.]82[.]217].]249

+9
3.6k 8
Comments 2
Top of the day