Новое поколение вымогателей

Elliptic curve cryptography + Tor + Bitcoin

Содержание 

На сегодняшний день зловреды-вымогатели (Ransomware) – один из наиболее активно развивающихся классов вредоносного ПО. За последние годы программы-вымогатели эволюционировали и от простой блокировки экрана с требованием выкупа перешли к более опасным действиям.

Теперь основу класса Ransomware составляют так называемые шифровальщики. Это троянцы, которые без ведома пользователя шифруют его данные, в том числе личные фотографии, архивы, документы, базы данных (например, базы часто используемого в России программного продукта “1C:Предприятие”, предназначенного для автоматизации деятельности на предприятии), чертежи – словом, все, что представляет ценность для жертвы. За расшифровку этих файлов злоумышленники требуют заплатить – и иногда немалые деньги. Наиболее нашумевшими примерами подобных зловредов являются CryptoLocker, CryptoDefence (и его преемник CryptoWall), ACCDFISA, GpCode. Помимо них есть и множество менее известных семейств, распространяющихся на территории России и СНГ.

В конце июня 2014 года “Лабораторией Касперского” был обнаружен новый шифровальщик. Анализ показал, что троянец действительно не относится ни к одному из известных ранее семейств и имеет ряд черт, позволяющих назвать его оригинальной разработкой. Авторское название зловреда – CTB-Locker.

Это новое семейство в классификации “Лаборатории Касперского” получило вердикт Trojan-Ransom.Win32.Onion.

Этот шифровальщик – представитель нового поколения троянцев-вымогателей. Создатели этого зловреда применили как известные техники, “обкатанные” его предшественниками (например, требование выкупа в Bitcoin), так и абсолютно новые для данного класса вредоносного ПО решения. В частности, сокрытие командного сервера в анонимной сети Tor затрудняет поиск злоумышленников, а использованная необычная криптографическая схема делает расшифровку файлов невозможной даже при перехвате трафика между троянцем и сервером. Все это делает Trojan-Ransom.Win32.Onion опасной угрозой и одним из самых технологичных шифровальщиков на сегодняшний день.

Описание

Высокоуровневая схема работы данного шифровальщика абсолютно типична и состоит в следующем:

  • после старта зловред копирует свое тело в (CSIDL_COMMON_APPDATA) и добавляет запуск этого файла в “Планировщик задач” (Task Scheduler);
  • производит поиск на всех несъемных, съемных и сетевых дисках файлов по списку расширений (рис. 1);


Рис. 1. Фрагмент данных, содержащий список расширений для шифрования

  • шифрует найденные файлы;
  • показывает пользователю окно с требованием выкупа и списком зашифрованных файлов. В качестве оплаты злоумышленники требуют Bitcoin (рис. 2, 3);
  • устанавливает в качестве обоев рабочего стола картинку с названием AllFilesAreLocked.bmp  с сообщением о том, что данные на компьютере зашифрованы (рис. 4).


Рис. 2. Окно, извещающее жертву о том, что файлы на компьютере зашифрованы


Рис. 3. Требования злоумышленников


Рис. 4. Картинка, устанавливаемая на рабочий стол

Что же отличает этого троянца от десятков аналогичных?

Командный сервер расположен в анонимной сети Tor

В рассмотренном образце содержится статический (единственный) адрес командного сервера, он располагается в доменной зоне .onion.

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

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

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

Необычная техническая организация доступа к сети Tor

Все ранее встречавшееся вредоносное ПО если и общалось с сетью Tor, то делало это незатейливо: запускало (пусть иногда с помощью внедрения в другие процессы) легальный файл tor.exe, распространяющийся с официального веб-сайта сети.

Trojan-Ransom.Win32.Onion не использует готового файла tor.exe. Вместо этого весь код, необходимый для реализации общения с анонимной сетью, статически слинкован с исполняемым файлом зловреда (т.е. совмещен с вредоносным кодом) и запускается в отдельном потоке (thread).


Рис. 5. Псевдокод, показывающий реализацию запуска потока tor proxy

Код, содержащийся процедуры thread_tor_proxy, практически целиком взят из открытых источников (Tor является open-source проектом).

Когда связь с Tor установлена и поднят локальный tor proxy сервер по адресу 127.0.0.1 (номер порта различается на разных зараженных машинах и зависит от параметра MachineGuid), выставляется глобальный флаг can_complete_circuit, который проверяется в потоке thread_post_unlock_data.

Как только это произошло, зловред осуществляет сетевую коммуникацию именно с этим локальным адресом, как показано на рис. 6.


Рис. 6. Псевдокод, показывающий реализацию сетевого соединения с tor proxy

Запрос, посылаемый зловредом на сервер, содержит данные, необходимые для расшифровки файлов жертвы.


Рис. 7. Данные, отправляемые на командный сервер

В ответ сервер возвращает данные о стоимости разблокировки в биткойнах и долларах США, а также адрес кошелька для оплаты.


Рис. 8. Данные, возвращаемые командным сервером

Сжатие файлов перед шифрованием

Ни один из ранее известных шифровальщиков не использовал технологии сжатия (за исключением ACCDFISA, просто помещающего файлы в запароленный rar-sfx архив, но здесь и шифрование, и сжатие – это не функциональность, реализованная в зловреде, а просто использование готового продукта Rar).

Trojan-Ransom.Win32.Onion и здесь отличился. Он действует так:

  • файл жертвы перемещается во временный файл с помощью API-функции MoveFileEx;
  • временный файл считывается с диска поблочно;
  • каждый блок сжимается при помощи свободно распространяемой библиотеки Zlib (процедура deflate());
  • после сжатия блок шифруется и записывается на диск;
  • в начало готового файла помещается служебная информация, которая понадобится для расшифровки;
  • зашифрованный файл получает расширение .ctbl.

Нетипичная криптографическая схема

Наиболее распространенной среди шифровальщиков схемой является связка алгоритмов AES+RSA. При такой схеме сервер генерирует пару ключей rsa-public + rsa-private для асимметричного алгоритма RSA. Секретный ключ rsa-private не покидает сервера, а rsa-public отправляется зловреду. Затем вредоносная программа генерирует на каждый файл жертвы новый ключ aes-key для симметричного блочного алгоритма AES, шифрует файл с помощью AES, затем шифрует aes-key с помощью RSA (ключом rsa-public) и сохраняет его в файл.

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

Но Trojan-Ransom.Win32.Onion использовал нестандартный подход и здесь!

В данном образце используется асимметричный криптографический протокол ECDH – Elliptic curve Diffie–Hellman (“протокол Диффи-Хеллмана на эллиптической кривой”).

Протокол Диффи-Хеллмана на эллиптической кривой

Первоначальный алгоритм Диффи-Хеллмана (так называемый протокол разделения секрета) был придуман достаточно давно  и опубликован в 1976 г. знаменитыми криптографами Уитфилдом Диффи (Whitfield Diffie) и Мартином Хеллманом (Martin Hellman). Модификация этого алгоритма, использующая эллиптические кривые, была предложена позже, в 2000 г., в статье Certicom Research, Standards for efficient cryptography, SEC 1: Elliptic Curve Cryptography.

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

  • Существует возможность сгенерировать пару ключей – секретный (private) и открытый (public).
  • Из своего секретного и чужого открытого ключа можно сгенерировать так называемый разделяемый (общий) секрет (shared secret).
  • Если 2 абонента обменялись открытыми ключами (секретные ключи не передаются!) и каждый независимо от другого вычислил разделяемый секрет из чужого открытого и своего секретного ключа, у обоих получится одно и то же значение.
  • Полученный разделяемый секрет можно использовать как ключ для любого симметричного алгоритма шифрования.

Авторы Trojan-Ransom.Win32.Onion использовали готовую реализацию этого криптографического алгоритма, описание которой доступно в Сети.

Высокоуровневая криптографическая схема Trojan-Ransom.Win32.Onion выглядит следующим образом.

Генерация ключей:

  • зловред генерирует пару master-public (открытый ключ) + master-private (секретный ключ);
  • master-private вместе с другими данными в защищенном виде отправляется на сервер, а на клиенте не сохраняется (факт I);
  • на каждый шифруемый файл генерируется новая пара session-public + session-private;
  • вычисляется разделяемый секрет session-shared = ECDH(master-public, session-private).

Шифрование файла жертвы

  • файл сжимается при помощи библиотеки Zlib;
  • после сжатия Zlib каждый файл шифруется алгоритмом AES, в качестве ключа используется хэш SHA256(session-shared);
  • после шифрования ключ session-public сохраняется в файл (факт II), а session-private не сохраняется (факт III);
  • вычисленный разделяемый секрет session-shared также не сохраняется (факт IV).

Расшифровка файла жертвы

По свойствам протокола Диффи-Хеллмана, верно следующее равенство:

ECDH(master-public, session-private) = session-shared = ECDH(master-private, session-public) (факт V).

Именно это равенство является принципом, лежащим в основе работы Trojan-Ransom.Win32.Onion.

При условии, что троянец не сохранил session-private (см. факт III) и session-shared (см. факт IV), остается всего 1 способ расшифровки – нужно вычислить ECDH(master-private, session-public). Чтобы это сделать, необходим ключ master-private (отправлен на сервер злоумышленников, см. факт I) и session-public (сохранен в начале зашифрованного файла, см. факт II). Других вариантов не существует, то есть без знания master-private не обойтись.

Защита соединения с командным сервером

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

  • в теле зловреда содержится открытый ключ network-server-public;
  • при установке соединения зловред генерирует новую пару network-client-public + network-client-private;
  • вырабатывает разделяемый секрет network-shared = ECDH(network-client-private, network-server-public);
  • шифрует отправляемые данные алгоритмом AES с ключом SHA256(network-shared);
  • открытый ключ network-client-public отправляется на сервер в незащищенном виде (факт VI);
  • оба клиентских ключа network-client-public + network-client-private, равно как и общий секрет network-shared, не сохраняются (факт VII).

Злоумышленники имеют ключ network-server-private и получают от клиента network-client-public (см. факт VI). В результате они могут расшифровать полученные данные, самостоятельно вычислив network-shared = ECDH(network-client-public, network-server-private).

Без знания network-server-private вычислить это значение уже невозможно (см. факт VII). Поэтому, к сожалению, перехват трафика не даст возможности достать master-private, а без него расшифровать файлы жертвы не удастся.

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

Авторы первых версий Trojan-Ransom.Win32.Onion нацеливали свое творение на англоязычных жертв, и единственным поддерживаемым языком графического интерфейса зловреда был английский.

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

Исследование схемы попадания Trojan-Ransom.Win32.Onion на компьютеры жертв показало, что и тут данный троянец отличается от большинства действующих сегодня шифровальщиков. Для многих известных представителей Ransomware основные векторы распространения ‑ спам-рассылка со зловредом в аттаче либо  подбор слабых паролей и запуск файла через системы удаленного управления (remote administration).

Способ распространения

Нами было обнаружено, что бот Andromeda (по классификации “Лаборатории Касперского” Backdoor.Win32.Androm) получает команду загрузить и запустить на зараженной машине другой зловред из семейства Email-Worm.Win32.Joleee. Тот, помимо своего основного функционала по рассылке почтового спама, поддерживает и выполнение ряда команд от злоумышленников, в том числе загрузку и запуск исполняемого файла. Как раз Joleee и скачивает на зараженную машину шифровальщика.

Таким образом, механизм распространения Trojan-Ransom.Win32.Onion можно изобразить в виде следующей схемы.


Рис. 9. Схема распространения Trojan-Ransom.Win32.Onion

География заражений

Статистика заражений по состоянию на 20.07.2014 представлена ниже. Большинство попыток заражений зарегистрировано на территории СНГ, также обнаружены единичные случаи на территории Германии, Болгарии, Израиля, ОАЭ и Ливии.

География детектов Trojan-Ransom.Win32.Onion:

Страна Число атакованных пользователей
Россия 24
Украина 19
Казахстан 7
Белоруссия 9
Грузия 1
Германия 1
Болгария 1
Турция 1
ОАЕ 1
Ливия 1

Отметим, что выше приведены данные только по вердикту Trojan-Ransom.Win32.Onion. На самом деле число пользователей, атакованных шифровальщиком, больше, поскольку при распространении этого зловреда используются вредоносные упаковщики, и детектирование этих упаковщиков происходит с другими вердиктами. Кроме того, неизвестные образцы шифровальщика детектируются продуктами “Лаборатории Касперского” проактивно как PDM:Trojan.Win32.Generic. Эти данные в приведенную выше статистику не входят.

Рекомендации по противодействию

Резервное копирование важных файлов

Резервное копирование должно быть регулярным. Более того, оно обязательно должно осуществляться на носитель, недоступный в обычное время для записи с данной машины (например, на съемный носитель, который отключается сразу после бэкапа). Если пренебречь этим требованием, сохраненные резервные копии будут точно так же зашифрованы зловредом, как и основная версия файла.

Резервные копии необходимы в любой системе, в которой имеются файлы хоть какой-то важности. Даже если бы не было угрозы со стороны вредоносного ПО, не стоит забывать, что всегда возможен банальный отказ оборудования.

Защитные решения

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

Продукты “Лаборатории Касперского” детектируют данную угрозу сигнатурно с вердиктами Trojan-Ransom.Win32.Onion.*, а неизвестные модификации – эвристически с вердиктом HEUR:Trojan.Win32.Generic и проактивно с вердиктом PDM:Trojan.Win32.Generic.

Кроме того, в продуктах “Лаборатории Касперского” применяется технология противодействия шифрующему вредоносному ПО, способная защитить пользовательские данные даже от пока неизвестных шифровальщиков, которых нет в сигнатурных и облачных базах. Принцип ее работы заключается в создании защищенных резервных копий персональных файлов в тот момент, когда к ним пытается получить доступ подозрительная программа. Таким образом, даже если файл будет зашифрован, решение автоматически восстановит его. Для функционирования данной технологии в продукте должен быть активен компонент “Мониторинг системы” (“System Watcher”).

Публикации на схожие темы

Всего комментариев: 13
  1. Анна

    Добрый день, столкнулась с шифрованием файлов – присвоено *.keybtc@gmail_com. Подскажите, пожалуйста, есть ли какая-нибудь информация по расшифровке? Спасибо.

  2. Юлюия

    У меня вирус шифровальщик paycrypt@gmail_com, есть ли возможность расшифровать данные с флешки?
    Спасибо заранее.

    1. Sergey

      Плохие новости – расшифровать файлы самостоятельно или с помощью антивирусной компании не удастся.

  3. Владимир

    Спасибо за подробное описание. Но уточните мне как не специалисту по криптографии: есть ли возможность в приемлимое время рассчитать или подобрать session-private при наличии исходного и зашифрованного файла?

    1. Алексей

      Добрый день. Хотелось бы ответить, что нет такой страны Белоруссия. Есть Беларусь. Буду признателен, если Вы это учтете в будущем.

      1. Eldar Kudinov

        Тогда уж Республика Беларусь. И не Россия, а Российская Федерация.

      2. Евгений

        Это смотря на каком языке статья написана…

        1. qwark

          не важно на каком языке >_< есть официальное название и есть то что написано…

  4. АЛЕКСЕЙ

    *** МОЖНО ЛИ ПОДОБРАТЬ КЛЮЧЬ , ЕСЛИ ****

    НА РУКАХ БУДЕТ ПАРА ОДНОГО И ТОГО ЖЕ ФАЙЛА: (ФАЙЛ ДО ШИФРОВАНИЯ – ФАЙЛ ПОСЛЕ ШИФРОВАНИЯ)

    НАПРИМЕР Я ОТКОПАЛ СТАРЫЙ ФАЙЛ ИЗ РЕЗЕРВНОЙ КОПИИ СИСТЕМЫ И НАШЕЛ ЕГО УЖЕ ЗАШИФРОВАНЫЙ?

  5. Хамит Ахметзянов

    Резервные копии не обязательно делать только на сменные носители.

    Достаточно ограничить доступ к архивным файлам с помощью штатных средств операционной системы. Например:

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

    2.Создайте папку для хранения резервных копий, например D:\_backup

    3.Права на изменение папки и файлов в этой папке разрешить только учетной записи backup, остальным только просмотр. Владельца папки поменять на пользователя backup

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

    5.Настройте время запуска задачи.
    Можно указать время запуска задачи “при включении компьютера”.

    6.В качестве программы для резервного копирования можно использовать любой бесплатный архиватор.

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

    В крайнем случае, можете использовать встроенную команду xcopy с ключами:
    /М – копировать файлы с атрибутом “архивный”, при этом этот атрибут отключается
    /S – копировать рекурсивно
    Смотрите дополнительно xcopy /?

    В качестве имени каталога для копирования можно использовать переменную среды %date%, например “d:\_backup\%date%\*”

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

    Также желательно, используя локальную политику безопасности, разрешить обычным пользователям запускать только уже установленные программы.

  6. Виктор

    Утилита TakeOwnership легко изменит владельца архивной копии со всеми вытекающими. Кроме отключаемого внешнего носителя надежного способа хранения резервных копий я пока не знаю.

  7. Vlad

    Можно обойтись без заморочек (если нет возможности бэкапа на сторонний носитель) с назначениями прав папкам и т.п. – берёте старый добрый скомпрометированный 🙂 truecrypt (рекомендую 7.1, а не 7.1а и тем более 7.2), создаёте сколько вам надо шифрованных файлов-контейнеров какого вам надо размера (от 5 кбайт до террабайт), а при создании НЕ НАЗНАЧАЕТЕ ИМ РАСШИРЕНИЯ, в эти контейнеры копируете свой контент, можно отдельный контейнер на тот или иной вид контента, особо важные данные дублируете в разных контейнерах, которые не будут одновременно смонтированы. Работа со смонтированными контейнерами выглядит так же как с обычными дисками – форматирование, скорость (при современных процессорах) и т.п. Вирус работает с пользовательскими данными по расширениям (иначе бы он просто зашифровал системные файлы и вы не смогли бы получить “письмо счастья”), поэтому ваши контейнеры он не воспримет как файлы. Таким образом может быть атакована или ВСЯ ваша система целиком (тогда о выкупе говорить будет затруднительно) или только контент находящийся в смонтированных на момент атаки контейнерах. С этими контейнерами можно работать и по локальной сети – контейнеры на сервере, а монтирование на компе юзера, работа как с обычными сетевыми дисками после монтирования (доступ будет естессно только с одного компа к контейнеру).

Leave a Reply

Your email address will not be published. Required fields are marked *