TeslaCrypt 2.0 в обличии CryptoWall

Содержание 

Семейство шифровальщиков-вымогателей TeslaCrypt – относительно новая угроза, первые ее экземпляры были обнаружены в феврале 2015 года. С тех пор зловред успел пошуметь в СМИ как «гроза» компьютерных игроков, ведь он целенаправленно поражает множество связанных с играми типов файлов (сохранения, пользовательские профили и т.п.). Целями троянца были жители США, Германии, Испании и других стран, несколько десятков попыток заражения было зафиксировано и в России.

TeslaCrypt до сих пор находится в фазе активной разработки: за прошедшие месяцы менялись внешний вид, демонстрируемое жертве название (зловред мимикрировал под CryptoLocker, выступал под именем TeslaCrypt и AlphaCrypt), расширения зашифрованных файлов (.ecc, .ezz, .exx), а также детали реализации.

Недавно «Лаборатория Касперского» обнаружила новейшую версию троянца – TeslaCrypt 2.0. Эта версия отличается от предшественников существенно улучшенной криптографической схемой, из-за которой в данный момент нельзя расшифровать затронутые TeslaCrypt файлы, и отказом от GUI в пользу HTML-страницы, причем скопированной у другого троянца – Cryptowall.

Продукты «Лаборатории Касперского» детектируют представителей семейства TeslaCrypt как Trojan-Ransom.Win32.Bitman. Новейшая версия троянца, рассматриваемая в данной статье, детектируется как Trojan-Ransom.Win32.Bitman.tk, ее MD5-хэш: 1dd542bf3c1781df9a335f74eacc82a4

Эволюция угрозы

В каждом образце TeslaCrypt содержится внутренняя версия зловреда. Первая обнаруженная нами версия имела номер 0.2.5, ее графический интерфейс, включая заголовок окна, был позаимствован у другого шифровальщика-вымогателя – CryptoLocker.

TeslaCrypt 2.0 в обличии CryptoWall

TeslaCrypt 0.2.5

Но уже к версии 0.4.0 создатели TeslaCrypt полностью пересмотрели внешний вид зловреда.

TeslaCrypt 2.0 в обличии CryptoWall

TeslaCrypt 0.4.0

Но независимо от версии неизменными остаются следующие черты семейства:

  • Троянец сам генерирует новый уникальный адрес Bitcoin и секретный ключ для него. Адрес используется и в качестве ID жертвы, и для приема платежей от нее.
  • Для шифрования файлов применяется алгоритм AES-256-CBC, все файлы шифруются одним ключом.
  • Не шифруются файлы размером более 0x10000000 байт (~268 Мб).
  • Серверы C&C располагаются в сети Tor, общение с ними происходит через публичные tor2web-сервисы.
  • Среди шифруемых файлов значится множество расширений, соответствующих файлам компьютерных игр.
  • Троянец удаляет shadow-копии.
  • Несмотря на «страшилку» про RSA-2048, демонстрируемую жертве, этот алгоритм не применяется в коде ни в каком виде.
  • Троянец написан на C++, собран компилятором Microsoft, а реализация криптоалгоритмов взята из библиотеки OpenSSL.

Интересные факты

  • Ранние версии TeslaCrypt (0.2.5 – 0.3.x) самостоятельно проверяли на сайте http://blockchain.info, прошел ли платеж bitcoin – в случае успеха зловред рапортовал об этом командному серверу и получал ключ для расшифровки файлов. Такая схема была уязвима, поскольку позволяла специалисту самостоятельно сделать такой запрос к C&C и без оплаты получить заветный ключ.
  • Версии 0.2.5 – 0.3.x сохраняли ключ расшифровки (вместе с другими данными) в собственном служебном файле key.dat. Область с ключом занулялась в этом файле лишь после завершения шифрования, что давало возможность сохранить ключ, прервав работу шифровальщика (например, выключив ПК). Далее можно было извлечь из key.dat ключ и расшифровать все файлы.
  • В версии 0.4.0 файл key.dat переименовали в storage.bin, а ключ расшифровки сохраняли не в открытом виде, а обращенным по модулю порядка стандартной эллиптической кривой secp256k1. После завершения шифрования ключ затирали не нулями, а случайными байтами, но, тем не менее, пока эта область не затерта, ключ извлечь можно – это и было реализовано в нашей утилите RakhniDecryptor.

День сегодняшний

И вот недавно наше внимание привлек образец данного троянца, имеющий внутреннюю версию 2.0.0 – что же изменилось на этот раз?

Первое, что бросается в глаза – из TeslaCrypt исчез код, отвечающий за отображение GUI (окна приложения). Вместо этого после шифрования троянец показывает в браузере HTML-страницу, полностью скопированную у другого широко известного вымогателя – CryptoWall 3.0.

TeslaCrypt 2.0 в обличии CryptoWall

Страница, открывающаяся по предложенным жертве ссылкам, также полностью повторяет страницу оплаты CryptoWall, но, ясное дело, указанные URL ведут на сервер TeslaCrypt – авторы данного зловреда явно не планируют отдавать деньги жертв конкурентам.

TeslaCrypt 2.0 в обличии CryptoWall

TeslaCrypt заполняет строку текстом о CryptoWall

К чему такая маскировка? Тут мы можем только гадать – возможно, злоумышленники хотели таким образом вселить в жертв уверенность в серьезности ситуации. Ведь файлы после CryptoWall до сих пор не поддаются расшифровке, чего нельзя сказать о многих случаях заражения TeslaCrypt.

Так или иначе, это не единственное изменение, пришедшее с новой версией TeslaCrypt. В очередной раз была доработана криптографическая схема, которая в итоге стала еще более «навороченной». При генерации ключей применяется алгоритм ECDH (злоумышленники ввели его использование в версиях 0.3.x), но, в отличие от предыдущих версий, он здесь кажется более уместным, поскольку служит определенной цели – дает злоумышленникам возможность расшифровать файлы, используя лишь «мастер-ключ». Но обо всем по порядку.

Криптографическая схема TeslaCrypt 2.0

Генерация ключевых данных

Троянец использует два набора ключей – «мастер-ключи», которые уникальны в рамках одной зараженной системы, и «сессионные ключи», которые генерируются заново при каждом перезапуске зловреда в системе.

Генерация мастер-ключей

Пусть Q – стандартная эллиптическая кривая secp256k1 («SECG curve over a 256 bit prime field»), а G – образующий элемент циклической подгруппы группы точек на кривой.

Пусть malware_pub – содержащийся в теле троянца открытый ключ злоумышленников (он является точкой на кривой Q, хранится в виде отдельных координат x, y).

При заражении системы троянец генерирует:

  • install_id – идентификатор заражения – случайные 8 байт.
  • master_btc_priv – секретный мастер-ключ – случайные 32 байта; отправляется на C&C.
  • master_btc_pub = master_btc_priv * G (точка на кривой) – открытый мастер-ключ; сохраняется в зашифрованных файлах.
  • btc_address – адрес bitcoin для приема выкупа – генерируется по стандартному для bitcoin алгоритму на основе master_btc_pub.
  • master_ecdh_secret = ECDH(malware_pub, master_btc_priv) – «общий мастер-ключ», понадобится для расшифровки, если master_btc_priv был утерян либо не дошел до C&C; в таком виде нигде не сохраняется.
  • master_ecdh_secret_mul = master_ecdh_secret * master_btc_priv – число, которое позволит восстановить master_btc_priv; сохраняется в системе.

Примечание
master_btc_priv (в соответствии с принципом работы bitcoin) – это секретный ключ, необходимый, чтобы «снять» биткоины, отправленные на свежесозданный адрес btc_address.

Генерация сессионных ключей

При каждом запуске (при первом заражении, или, например, после перезагрузки ПК) троянец заново генерирует:

  • session_priv – секретный сессионный ключ – случайные 32 байта. Используется для шифрования файлов, нигде не сохраняется.
  • session_pub = session_priv * G – открытый сессионный ключ. Сохраняется в зашифрованных файлах.
  • session_ecdh_secret = ECDH(master_btc_pub, session_priv) – «общий сессионный ключ» — необходим для расшифровки файлов, в таком виде нигде не сохраняется.
  • session_ecdh_secret_mul = session_ecdh_secret * session_priv – число, которое позволит восстановить session_ecdh_secret. Сохраняется в зашифрованных файлах.

Ключевые данные, сохраняемые в системе

В отличие от предыдущих версий TeslaCrypt 2.0.0 не использует для хранения данных key.dat или storage.bin. Вместо них используется реестр: в HKCU\Software\msys\ID сохраняется значение install_id, а в HKCU\Software\<install_id>\data помещается следующая структура:

TeslaCrypt 2.0 в обличии CryptoWall

В привычном синтаксисе языка C структуру можно описать следующим образом:

TeslaCrypt 2.0 в обличии CryptoWall

Вот как это выглядит в зараженной системе:

TeslaCrypt 2.0 в обличии CryptoWall

Шифрование файлов

TeslaCrypt, начиная от версии 0.3.5, поражает как обычные носители, подключенные к системе, так и все доступные сетевые файловые ресурсы (shares), даже если они не смонтированы в качестве диска с отдельной буквой. Кстати, немногие шифровальщики могут похвастаться такой функциональностью.

Каждый файл шифруется алгоритмом AES-256-CBC с ключом session_priv. Зашифрованный файл получает дополнительное расширение «.zzz». В начало файла помещается служебная структура, после нее следует шифрованное содержимое. Формат структуры:

TeslaCrypt 2.0 в обличии CryptoWall

Та же структура в синтаксисе языка C:

TeslaCrypt 2.0 в обличии CryptoWall

Расшифровка файлов

Авторы TeslaCrypt 2.0.0 полностью убрали из зловреда функцию расшифровки файлов, которая присутствовала в предыдущих версиях. Исходя из анализа представленной выше криптографической схемы, мы видим такие алгоритмы расшифровки файлов:

  1. Если известен master_btc_priv, то нужно:

    • Прочитать из зашифрованного файла session_pub;
    • Вычислить session_ecdh_secret = ECDH(session_pub, master_btc_priv);
    • Прочитать из зашифрованного файла session_ecdh_secret_mul;
    • Вычислить session_priv = session_ecdh_secret_mul / session_ecdh_secret;
    • Расшифровать файл ключом session_priv.
  2. Если нет master_btc_priv, но известен malware_priv (а известен он только злоумышленникам, которые поместили в тело трояна соответствующий malware_pub):

    • Прочитать из реестра или зашифрованного файла master_btc_pub;
    • Вычислить master_ecdh_secret = ECDH(master_btc_pub, malware_priv);
    • Прочитать из зашифрованного файла master_ecdh_secret_mul;
    • Вычислить master_btc_priv = master_ecdh_secret_mul / master_ecdh_secret;
    • Со знанием master_btc_priv выполнить шаги из пункта 1.

Для полного понимания происходящего желательно ознакомиться с алгоритмом Диффи-Хеллмана и его версией для эллиптических кривых ECDH – например, здесь.

Другие особенности

Обход детектирования

В троянце используется техника обхода детектирования, основанная на применении COM-объектов. Мы впервые обнаружили ее использование в TeslaCrypt версии 0.4.0, но с тех пор она претерпела небольшие изменения. Сгенерированный по образцу версии 2.0.0 псевдокод выглядит следующим образом:

TeslaCrypt 2.0 в обличии CryptoWall

Коммуникация с командным сервером

В образце троянца содержится статический список адресов C&C. Сами серверы находятся в сети Tor, но коммуникация осуществляется через обычный web с помощью tor2web-сервисов.

До TeslaCrypt версии 0.4.1 запросы к серверу отправлялись в открытом виде, в последующих же версиях стали шифроваться алгоритмом AES-256-CBC; в качестве ключа берется хэш SHA256 от статической строки из тела зловреда.

Формирование HTTP-запроса, отправляемого троянцем при заражении системы, показано на скриншоте псевдокода.

TeslaCrypt 2.0 в обличии CryptoWall

Распространение

Зловреды семейства TeslaCrypt были замечены в распространении через эксплойт-киты Angler, Sweet Orange, Nuclear. При данной схеме распространения жертва заходит на зараженный веб-сайт, и вредоносный код эксплойта, используя уязвимости браузера (чаще всего плагинов), устанавливает в систему целевое вредоносное ПО.

TeslaCrypt 2.0 в обличии CryptoWall

Географическое распределение пользователей, атакованных зловредами семейства TeslaCrypt

Рекомендации

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

Чрезвычайно важно вовремя обновлять ПО (в особенности плагины браузера и сам браузер), т.к. производители постоянно закрывают выявленные уязвимости, эксплуатируемые злоумышленниками.

Если зловред все-таки попал в систему, остановить его поможет актуальный антивирусный продукт с обновленными базами и активированными модулями защиты. Особенно это касается модуля проактивной защиты, который в случае 0-day угроз становится последней линией обороны.

Постинги на схожие темы 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *