Троян, который поставил на биткоины полицию США

Он не прячет свой код под покровом обфускации и шифрования. Он не использует никаких техник антиотладки, детекта виртуальных машин и песочниц. Он не скрывается в недрах оперативной памяти и чудесно виден в диспетчере задач. Он прост, как автомат Калашникова. Но он реально опасен. Ведь это он заставил тысячи незадачливых пользователей платить деньги своим создателям, он ухитрился поставить на бабки сотрудников полиции Массачусетса (им пришлось покупать биткоины, чтобы расшифровать свои данные), он прославился «джентльменским» «снижением» цен в связи с резким ростом курса биткоина!

Заражение и внедрение в систему

В подавляющем большинстве случаев зловред попадает в систему путем рассылки по электронной почте от якобы служб доставки Fedex или UPS под видом отчета в формате PDF (а русский человек бы сразу понял, что письмо о доставке от Почты России — это палево ;). — Прим. ред.). Однако эксплуатацией какой-либо уязвимости этого формата здесь даже и не пахнет. Вместо отчета о доставке в письме лежит обыкновенный исполняемый файл с именем вроде FORM_1088.pdf.exe и с иконкой, очень и очень похожей на настоящую PDF’овскую. Несмотря на такую простую и избитую схему, в первые сто дней функционирования трояна, по некоторым оценкам, было заражено от 200 до 250 тысяч компьютеров (правда, преимущественно в США).

После первого запуска Cryptolocker собирает в реестре различную информацию о системе и на ее основе генерирует для себя уникальное имя файла, представляющее собой бессмысленный набор некоторого количества латинских букв. Далее зловред обретает пристанище на жестком диске жертвы в каталоге %AppData% (или %LocalAppData% в Win XP) с атрибутом скрытого файла.

Cryptolocker на жестком диске жертвы
Cryptolocker на жестком диске жертвы

Для обеспечения своего запуска одновременно с запуском системы троян создает в реестре в ветках автозапуска два ключа, в которых прописан путь к Criptolocker’у на диске:

  • HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunCryptoLocker
  • HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce*CryptoLocker

Ключ с символом звездочки позволяет запускать зловред при старте системы в Safe Mode.

Автозапуск Cryptolocker’а в реестре
Автозапуск Cryptolocker’а в реестре

Для сохранения содержимого этих ключей Cryptolocker постоянно мониторит их состояние и восстанавливает в случае необходимости.

Троян не предпринимает никаких действий по скрытию себя в диспетчере задач, а для предотвращения остановки своего процесса запускает самого себя в качестве второго дублирующего процесса, который контролирует наличие основного и в случае необходимости повторно его запускает. Прекратить это безобразие можно, выбрав в диспетчере задач «Завершить дерево процессов» для основного процесса Cryptolocker’а.

Связь с командными серверами

После запуска Cryptolocker по специальному алгоритму генерирует доменное имя и пытается подсоединиться к нему. В случае неудачи генерация доменного имени и попытки подключиться продолжаются.

В качестве исходных данных для алгоритма генерации доменного имени используется системное время, получаемое путем вызова API GetSystemTime.

Генерация доменного имени (в нижней части выделено сгенерированное доменное имя olphjvttuqdxm.com)
Генерация доменного имени (в нижней части выделено сгенерированное доменное имя olphjvttuqdxm.com)

Доменное имя состоит из набора латинских букв в количестве от 12 до 15 и поочередно генерируется в следующих доменных зонах:

  • .org
  • .co.ua
  • .info
  • .com
  • .net
  • .biz
  • .ru
Неудачные попытки присоединения к командному серверу
Неудачные попытки присоединения к командному серверу

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

В случае успешного подсоединения (когда статья создавалась, троян подключался к командному серверу и исправно работал) на сервере генерируется пара ключей для алгоритма шифрования RSA–2048. Закрытый ключ, предназначенный для расшифровки, остается храниться на сервере, а открытый, предназначенный для шифрования, передается на компьютер жертвы, где сохраняется в реестре в специально созданном разделе

  • HKEY_CURRENT_USERSoftwareCryptoLocker_0388

с именем параметра PublicKey.

В этом же разделе создается параметр с именем VersionInfo, в котором содержится информация о текущей версии трояна, IP-адрес командного сервера и время установки. На данный момент актуальная версия трояна — 0388, что также отражено в названии раздела, создаваемого им в реестре.

Параметры PublicKey и VersionInfo в реестре
Параметры PublicKey и VersionInfo в реестре

Поиск и шифрование файлов

После успешного внедрения в систему и получения ключа для шифрования троян ищет нужные файлы на компьютере жертвы. Для начала с помощью функции GetLogicalDrives он получает список всех дисков в системе, далее с помощью API GetDriveType определяются диски, с которыми можно работать (Cryptolocker шифрует файлы на дисках, имеющие тип DRIVE _ FIXED, DRIVE _ REMOTE и DRIVE _ REMOVABLE). После этого начинается поиск нужных файлов на всех доступных дисках поочередно с применением API-функций FindFirstFile и FindNextFile. Отбор нужных файлов ведется по 72 маскам.

Маски для отбора файлов
Маски для отбора файлов

Создатели Cryptolocker’а не стали обременять себя самостоятельной реализацией алгоритмов шифрования и использовали в своем творении возможности, предлагаемые компанией Microsoft в виде CryptoAPI и стандартного криптопровайдера Microsoft Enhanced RSA and AES Cryptographic Provider.

Содержимое файла криптуется с помощью алгоритма AES–256, ключ для которого генерирует API-функция CryptGenKey с параметром CALG _ AES _ 256. После шифрования файла этот AES-ключ шифруется алгоритмом RSA–2048 с помощью открытого ключа, полученного с командного сервера (и заблаговременно сохраненного в реестре), далее с открытого RSA-ключа снимается SHA-хеш длиной 20 байт.

Процесс шифрования файла TestDoc.rtf
Процесс шифрования файла TestDoc.rtf

Все это дело записывается поверх старого, незашифрованного содержимого файла в определенной последовательности: сначала пишется 20 байт хеша RSA-ключа, далее 256 байт зашифрованного AES-ключа, после чего пишется сам зашифрованный файл. В итоге длина зашифрованного файла увеличивается на 276 байт по сравнению с исходным, незашифрованным файлом. SHA-хеш нужен для того, чтобы, во-первых, избежать повторного шифрования файлов, а во-вторых, чтобы найти на командном сервере нужный закрытый ключ для расшифровки файла в случае, если жертва все-таки заплатила денежки.

Внутренности незашифрованного (вверху) и зашифрованного (внизу) файла TestDoc.rtf
Внутренности незашифрованного (вверху) и зашифрованного (внизу) файла TestDoc.rtf

После того как файл зашифрован, Cryptolocker пишет путь и имя зашифрованного файла в реестр, в ветке

  • HKEY_CURRENT_USERSoftwareCryptoLocker_0388Files.
Имя и путь зашифрованного файла в реестре
Имя и путь зашифрованного файла в реестре

Оплата и расшифровка файлов

Как только все файлы на всех доступных дисках компьютера жертвы будут зашифрованы, Cryptolocker показывает свое «истинное лицо» в виде окна красного цвета с надписью «Your personal files are encrypted!», обратным счетчиком времени, который начинается с 72 часов, и требованием оплаты за получение приватного ключа для расшифровки файлов.

«Истинное лицо» Cryptolocker’а
«Истинное лицо» Cryptolocker’а

Вариантов оплаты предлагается всего два — битокоинами и с помощью платежной системы MoneyPak (что говорит о большей направленности трояна на англоязычную аудиторию). В случае неуплаты в срок Cryptolocker грозит удалить приватный ключ с командного сервера и, соответственно, невозможностью расшифровки файлов в дальнейшем. Если попытаться самостоятельно или с помощью антивируса удалить файл трояна, то жертве представится возможность лицезреть новые обои рабочего стола с устрашающими надписями и предложением повторно скачать и запустить Cryptolocker для проведения оплаты и расшифровки файлов. Путь к этим обоям прописывается в реестре в том же разделе, где лежит открытый RSA-ключ и информация о версии зловреда, в параметр с именем Wallpaper.

Пугающие обои Cryptolocker’а
Пугающие обои Cryptolocker’а

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

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

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

Сервис расшифровки файлов. До 18.00 9.01.2014 расшифровка мне бы обошлась всего в 0,5 биткоинов :)
Сервис расшифровки файлов. До 18.00 9.01.2014 расшифровка мне бы обошлась всего в 0,5 биткоинов 🙂
 

WARNING

Cryptolocker шифрует файлы и на дисках с параметром DRIVE _ REMOTE, то есть на расшаренных сетевых дисках. Поэтому резервные копии на таких носителях тоже могут быть под угрозой.

Заключение

Это не примитивный Winlocker, требующий 200 рублей на счет мобильника. Файлы шифруются действительно стойкими алгоритмами, и без приватного ключа расшифровать их на данный момент практически не представляется возможным, даже если у тебя есть знакомые в АНБ. Поэтому резервное копирование, резервное копирование и еще раз резервное копирование. Все, что представляет ценность, должно периодически бэкапиться и складываться в надежном месте, куда не сможет протянуть свои руки Cryptolocker. Ну и в конце концов, сколько можно уже открывать аттачи от неведомых и нежданных отправителей?

 

INFO

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

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    10 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии