Статья была впервые опубликована в журнале «Хакер»
В самом начале марта компания Group-IB сообщила об очередной массированной атаке с использованием трояна-шифровальщика Troldesh. Энкодер распространялся с помощью сообщений электронной почты, отправленных от имени известных на российском рынке компаний. Новость быстро подхватили многочисленные СМИ, мы тоже о ней писали. Однако подробностей было мало. Что же представляет собой Troldesh, как он действует и какие методы борьбы с этой напастью наиболее эффективн
Почтовая рассылка
Театр, как известно, начинается с длительного поиска свободной парковки, а распространение большинства вредоносных программ — с почтовой рассылки. Среди фейковых отправителей подобных писем исследователи из Group-IB отмечали «Всероссийский банк развития регионов» и «Группу компаний ПИК», а журналисты РБК пополнили список пострадавших брендов «Ашаном», «Магнитом» и «Славнефтью», упомянув при этом, что злоумышленники прикрывались именами более пятидесяти фирм, названия которых у всех на слуху. Лично мне попадались аналогичные письма, в строке From которых значился автомобильный дилер «Рольф», «Бинбанк», «KIA Motors», «Ресо Гарантия» и некая контора «Инженер Строй».
Очевидно, такая стратегия продиктована общеизвестными постулатами социальной инженерии: у сообщения от известного отправителя больше шансов быть открытым, чем у послания, автор которого адресату совершенно незнаком.
О чем не рассказано в вышеупомянутых заметках, так это о том, что ссылка, якобы ведущая на официальный сервер компании-отправителя, на самом деле направляет потенциальную жертву совершенно в другое место. Во всех без исключения изученных мной письмах это были взломанные сайты, работающие под управлением WordPress или Joomla.
И скрипт-загрузчик, и собственно энкодер злодеи хранили в открытых на запись папках <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, что, в общем-то, непринципиально.
Эта модификация энкодера датируется 2017 годом и почти не отличается от своего предшественника, но кое-какие нововведения все же имеются.
В теле вредоноса хранится 100 публичных ключей RSA длиной 3072 бита каждый. Перед началом шифрования энкодер случайным образом выбирает один из них, номер этого ключа сохраняется в текстовом файле с требованиями вымогателей. Каждый файл шифруется с отдельным ключом длиной 256 бит, его имя — другим ключом такой же длины, после чего оба сессионных ключа шифруются ранее выбранным публичным ключом RSA, а результат дописывается в конец зашифрованного файла. По завершении шифрования трой создает на диске текстовые файлы README с порядковым номером от 1 до 10 следующего содержания.
Затем вредонос меняет обои рабочего стола Windows, и жертва вирусописателей наблюдает следующую жизнерадостную картину.
Все, тушите свет, сушите весла. Файлы зашифрованы. Помимо прочего, в процессе своей работы троян пытается прочитать файлы %APPDATA%\thunderbird\profiles.ini
и %APPDATA%\mozilla\firefox\profiles.ini
, вероятно надеясь получить доступ к паролям и настройкам почтового клиента пользователя, чтобы обеспечить свое дальнейшее распространение.
Профилактика
Если повезет, часть зашифрованных вредоносом данных удастся спасти с помощью утилит восстановления удаленных файлов. Что-то может сохраниться в теневых копиях Windows. Но я не устаю повторять снова и снова: профилактика всевозможных инфекций полезна не только в медицинской практике, но и в IT.
Самый действенный метод борьбы с энкодерами — своевременное резервное копирование всех актуальных файлов, причем желательно — на внешний носитель. Если сам позаботишься о сохранности информации, то шифровальщики будут не страшны.