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

На сегодняшний день зловреды-вымогатели (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); onion3_FS_final_rus_1_sm.jpgРис. 1. Фрагмент данных, содержащий список расширений для шифрования

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

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

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

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

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

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

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

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

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

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

onion3_FS_final_rus_5.jpgРис. 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.

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

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

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

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

onion3_FS_final_rus_8.jpgРис. 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 можно изобразить в виде следующей схемы.

onion3_FS_final_rus_9.jpgРис. 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»).

Полный текст статьи читайте на Лаборатория Касперского