Holmogorov.ru

Блог
Валентина
Холмогорова

Troldesh. Как на самом деле работает нашумевший троян-шифровальщик

Статья была впервые опубликована в журнале «Хакер»

В самом начале марта компания Group-IB сообщила об очередной массированной атаке с использованием трояна-шифровальщика Troldesh. Энкодер распространялся с помощью сообщений электронной почты, отправленных от имени известных на российском рынке компаний. Новость быстро подхватили многочисленные СМИ, мы тоже о ней писали. Однако подробностей было мало. Что же представляет собой Troldesh, как он действует и какие методы борьбы с этой напастью наиболее эффективн

Почтовая рассылка

Театр, как известно, начинается с длительного поиска свободной парковки, а распространение большинства вредоносных программ — с почтовой рассылки. Среди фейковых отправителей подобных писем исследователи из Group-IB отмечали «Всероссийский банк развития регионов» и «Группу компаний ПИК», а журналисты РБК пополнили список пострадавших брендов «Ашаном», «Магнитом» и «Славнефтью», упомянув при этом, что злоумышленники прикрывались именами более пятидесяти фирм, названия которых у всех на слуху. Лично мне попадались аналогичные письма, в строке From которых значился автомобильный дилер «Рольф», «Бинбанк», «KIA Motors», «Ресо Гарантия» и некая контора «Инженер Строй».

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

О чем не рассказано в вышеупомянутых заметках, так это о том, что ссылка, якобы ведущая на официальный сервер компании-отправителя, на самом деле направляет потенциальную жертву совершенно в другое место. Во всех без исключения изученных мной письмах это были взломанные сайты, работающие под управлением WordPress или Joomla.

Троян  Troldesh. Сайт Валентина Холмогорова
Письма, рассылавшиеся в ходе атаки Troldesh

И скрипт-загрузчик, и собственно энкодер злодеи хранили в открытых на запись папках <site>/content/icons/<site>/templates/<site>/wp-admin/css/ или <site>/wp-content/themes/. Вероятно, чтобы размещать вредоносное содержимое, они приобрели на каком-то из хакерских форумов базу скомпрометированных аккаунтов либо воспользовались одним из известных эксплоитов для этих популярных CMS.

Притом из десяти проанализированных мной фишинговых сообщений только в двух содержалась ссылка на сайты под управлением Joomla, а остальные восемь протрояненных площадок работали на WordPress. Есть повод задуматься о безопасности этого движка, тем более опасная тенденция подтверждается опубликованным недавно отчетом Sucuri, согласно которому порядка 90% взломанных в течение 2018 года сайтов работали именно на WordPress.

При нажатии на линк с удаленного хоста скачивался ZIP-архив, внутри которого хранился скрипт-загрузчик, написанный на JScript. Чтобы скрипт выполнился, пользователь должен самостоятельно извлечь из архива и попытаться открыть этот файл.

Загрузчик

Загрузчик представляет собой обфусцированный и зашифрованный файл JSE размером 5,7 Кбайт. В случае с сообщением, отправленным якобы от имени компании «Рольф», скрипт имел имя Группа компаний Рольф подробности.jse, при этом злодеи даже не попытались подменить стандартный значок сценария, что опытного юзера должно хотя бы немного насторожить.

Злодеи даже не попытались подменить стандартный значок
Злодеи даже не попытались подменить стандартный значок

ESET детектирует этот скрипт как JS/TrojanDownloader.Nemucod.EEG, Dr.Web — как JS.DownLoader.4862, «Антивирус Касперского» ловит его эвристикой с вердиктом HEUR:Trojan-Downloader.Script.Generic.

Скрипт-загрузчик детектируется так
Скрипт-загрузчик детектируется так

Принцип действия загрузчика в целом стандартен для подобных вредоносов: об очень похожем сценарии «Хакер» недавно уже рассказывал в одной из статей.

Для выполнения кода на языке JScript в Windows используется приложение wscript.exe, именуемое Windows Script Host. Запустившись с помощью этого приложения, сценарий расшифровывает строки, в которых хранится URL сайта с полезной нагрузкой, скачивает файл шифровальщика в %TEMP% и запускает его в скрытом окне. В качестве «дембельского аккорда» загрузчик открывает свернутое окошко cmd и отправляет туда команду на самоудаление.

Шифровальщик

Исследователи из Group-IB в своей публикации сообщили, что Troldesh имеет «творческие псевдонимы»: Shade, XTBL и Trojan.Encoder.858. ESET детектирует его под именем Win32/Kryptik, «Антивирус Касперского» — как Trojan-Ransom.Win32.Shade.psq.

Что нам известно об этом энкодере? Первые случаи заражения Trojan.Encoder.858 датируются еще 2015 годом, при этом вредонос, скорее всего, является потомком другого шифровальщика — Trojan.Encoder.686, распространение которого началось на год раньше, в июле 2014-го. 686-я модификация, названная его создателями CTB-Locker, успешно продавалась на одном из хакерских форумов. Трой активно использует возможности OpenSSL и эллиптическую криптографию, а для генерации случайных данных применяет CryptoAPI. Зашифрованные файлы получали расширение .ctbl.

Файл шифровальщика, о котором идет речь в публикации Group-IB, имеет размер 1,05 Mбайт. Внутри хранится библиотека для работы с Tor. Энкодер упакован с использованием написанного на .NET кастомного пакера, под которым находится бинарник, сжатый UPX. Кроме того, строки в трояне зашифрованы с использованием симметричного алгоритма AES.

После запуска и инициализации шифровальщик создает свою копию в папке %ALLUSERSPROFILE%\application data\windows\ под именем csrss.exe. Затем он регистрируется в автозагрузке. Он ищет ветку реестра

[<HKCU>\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\]

и записывает в нее значение

'Client Server Runtime Subsystem' = '"%ALLUSERSPROFILE%\Application Data\Windows\csrss.exe"'

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

[<HKLM|HKCU>\SOFTWARE\System32\Configuration\]

в параметре i. Туда же записывается версия вредоносной программы.

Затем троян инициализирует Tor-клиент и пытается соединиться с одним из бридж-релеев (bridge relay), адрес которого в зашифрованном виде хранится в его теле. По этому адресу шифровальщик отправляет запрос на регистрацию, содержащий его ID, а в ответ получает данные, необходимые для шифрования файлов на зараженной машине. В том числе — ключ RSA длиной 2048 бит и его MD5-хеш для проверки.

Файлы на всех локальных и подключенных к машине сетевых дисках шифруются с использованием алгоритма AES (Advanced Encryption Standard) в режиме CBC (Cipher Block Chaining), при этом для каждого файла создается отдельный ключ при помощи генератора псевдослучайных чисел. Этот ключ шифруется полученным через Tor ключом RSA и сохраняется в зашифрованном файле. Для файлов, имеющих атрибут Read Only, перед шифрованием указанный атрибут сбрасывается. На прощание троян удаляет все точки восстановления системы.

Казалось бы, угроза давно известная и хорошо изученная, раз уж распространяется она как минимум четыре года, только вот есть одна загвоздка. Trojan.Encoder.858, о котором говорят авторы публикации Group-IB, присваивает зашифрованным файлам расширение .xtbl, а троян, заражающий компьютеры в ходе рассматриваемой нами атаки, использует другое расширение — .crypted000007.

Вывод: исследователи ошиблись. Это не Trojan.Encoder.858.

Так что же это?

На самом деле речь, скорее всего, идет о более свежей модификации 858-го, которая в номенклатуре Dr.Web носит гордое наименование Trojan.Encoder.10507. Правда, сам «Доктор» обычно детектирует этого трояна по упаковщику как Trojan.Packed2.41563, что, в общем-то, непринципиально.

Так на VT детектируется энкодер
Так на VT детектируется энкодер

Эта модификация энкодера датируется 2017 годом и почти не отличается от своего предшественника, но кое-какие нововведения все же имеются.

В теле вредоноса хранится 100 публичных ключей RSA длиной 3072 бита каждый. Перед началом шифрования энкодер случайным образом выбирает один из них, номер этого ключа сохраняется в текстовом файле с требованиями вымогателей. Каждый файл шифруется с отдельным ключом длиной 256 бит, его имя — другим ключом такой же длины, после чего оба сессионных ключа шифруются ранее выбранным публичным ключом RSA, а результат дописывается в конец зашифрованного файла. По завершении шифрования трой создает на диске текстовые файлы README с порядковым номером от 1 до 10 следующего содержания.

Такие текстовые файлы создает Troldesh
Такие текстовые файлы создает Troldesh

Затем вредонос меняет обои рабочего стола Windows, и жертва вирусописателей наблюдает следующую жизнерадостную картину.

Веселенькие обои рабочего стола
Веселенькие обои рабочего стола

Все, тушите свет, сушите весла. Файлы зашифрованы. Помимо прочего, в процессе своей работы троян пытается прочитать файлы %APPDATA%\thunderbird\profiles.ini и %APPDATA%\mozilla\firefox\profiles.ini, вероятно надеясь получить доступ к паролям и настройкам почтового клиента пользователя, чтобы обеспечить свое дальнейшее распространение.

Профилактика

Если повезет, часть зашифрованных вредоносом данных удастся спасти с помощью утилит восстановления удаленных файлов. Что-то может сохраниться в теневых копиях Windows. Но я не устаю повторять снова и снова: профилактика всевозможных инфекций полезна не только в медицинской практике, но и в IT.

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

Поделиться: