Анатомия Cryptolocker
Он не прячет свой код под покровом обфускации и шифрования. Он не использует никаких техник антиотладки, детекта виртуальных машин и песочниц. Он не скрывается в недрах оперативной памяти и чудесно виден в диспетчере задач. Он прост, как автомат Калашникова. Но он реально опасен. Ведь это он заставил тысячи незадачливых пользователей платить деньги своим создателям, он ухитрился поставить на бабки сотрудников полиции Массачусетса (им пришлось покупать биткоины, чтобы расшифровать свои данные), он прославился «джентльменским» «снижением» цен в связи с резким ростом курса биткоина!
В подавляющем большинстве случаев зловред попадает в систему путем рассылки по электронной почте от якобы служб доставки Fedex или UPS под видом отчета в формате PDF (а русский человек бы сразу понял, что письмо о доставке от Почты России — это палево ;). — Прим. ред.). Однако эксплуатацией какой-либо уязвимости этого формата здесь даже и не пахнет. Вместо отчета о доставке в письме лежит обыкновенный исполняемый файл с именем вроде FORM_1088.pdf.exe и с иконкой, очень и очень похожей на настоящую PDF’овскую. Несмотря на такую простую и избитую схему, в первые сто дней функционирования трояна, по некоторым оценкам, было заражено от 200 до 250 тысяч компьютеров (правда, преимущественно в США).
После первого запуска Cryptolocker собирает в реестре различную информацию о системе и на ее основе генерирует для себя уникальное имя файла, представляющее собой бессмысленный набор некоторого количества латинских букв. Далее зловред обретает пристанище на жестком диске жертвы в каталоге %AppData% (или %LocalAppData% в Win XP) с атрибутом скрытого файла.
Cryptolocker на жестком диске жертвы
Для обеспечения своего запуска одновременно с запуском системы троян создает в реестре в ветках автозапуска два ключа, в которых прописан путь к Criptolocker’у на диске:
- HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunCryptoLocker
- HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce*CryptoLocker
Ключ с символом звездочки позволяет запускать зловред при старте системы в Safe Mode.
Автозапуск Cryptolocker’а в реестре
Для сохранения содержимого этих ключей Cryptolocker постоянно мониторит их состояние и восстанавливает в случае необходимости.
Троян не предпринимает никаких действий по скрытию себя в диспетчере задач, а для предотвращения остановки своего процесса запускает самого себя в качестве второго дублирующего процесса, который контролирует наличие основного и в случае необходимости повторно его запускает. Прекратить это безобразие можно, выбрав в диспетчере задач «Завершить дерево процессов» для основного процесса Cryptolocker’а.
После запуска Cryptolocker по специальному алгоритму генерирует доменное имя и пытается подсоединиться к нему. В случае неудачи генерация доменного имени и попытки подключиться продолжаются.
В качестве исходных данных для алгоритма генерации доменного имени используется системное время, получаемое путем вызова API GetSystemTime.
Генерация доменного имени (в нижней части выделено сгенерированное доменное имя olphjvttuqdxm.com)
Доменное имя состоит из набора латинских букв в количестве от 12 до 15 и поочередно генерируется в следующих доменных зонах:
- .org
- .co.ua
- .info
- .com
- .net
- .biz
- .ru
Неудачные попытки присоединения к командному серверу
Попытки подключения к командному серверу могут продолжаться довольно долго, до тех пор, пока не будет сгенерировано нужное доменное имя, актуальное на данный момент.
В случае успешного подсоединения (когда статья создавалась, троян подключался к командному серверу и исправно работал) на сервере генерируется пара ключей для алгоритма шифрования RSA–2048. Закрытый ключ, предназначенный для расшифровки, остается храниться на сервере, а открытый, предназначенный для шифрования, передается на компьютер жертвы, где сохраняется в реестре в специально созданном разделе
- HKEY_CURRENT_USERSoftwareCryptoLocker_0388
с именем параметра PublicKey.
В этом же разделе создается параметр с именем VersionInfo, в котором содержится информация о текущей версии трояна, IP-адрес командного сервера и время установки. На данный момент актуальная версия трояна — 0388, что также отражено в названии раздела, создаваемого им в реестре.
Параметры 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
Все это дело записывается поверх старого, незашифрованного содержимого файла в определенной последовательности: сначала пишется 20 байт хеша RSA-ключа, далее 256 байт зашифрованного AES-ключа, после чего пишется сам зашифрованный файл. В итоге длина зашифрованного файла увеличивается на 276 байт по сравнению с исходным, незашифрованным файлом. SHA-хеш нужен для того, чтобы, во-первых, избежать повторного шифрования файлов, а во-вторых, чтобы найти на командном сервере нужный закрытый ключ для расшифровки файла в случае, если жертва все-таки заплатила денежки.
Внутренности незашифрованного (вверху) и зашифрованного (внизу) файла TestDoc.rtf
После того как файл зашифрован, Cryptolocker пишет путь и имя зашифрованного файла в реестр, в ветке
- HKEY_CURRENT_USERSoftwareCryptoLocker_0388Files.
Имя и путь зашифрованного файла в реестре
Как только все файлы на всех доступных дисках компьютера жертвы будут зашифрованы, Cryptolocker показывает свое «истинное лицо» в виде окна красного цвета с надписью «Your personal files are encrypted!», обратным счетчиком времени, который начинается с 72 часов, и требованием оплаты за получение приватного ключа для расшифровки файлов.
«Истинное лицо» Cryptolocker’а
Вариантов оплаты предлагается всего два — битокоинами и с помощью платежной системы MoneyPak (что говорит о большей направленности трояна на англоязычную аудиторию). В случае неуплаты в срок Cryptolocker грозит удалить приватный ключ с командного сервера и, соответственно, невозможностью расшифровки файлов в дальнейшем. Если попытаться самостоятельно или с помощью антивируса удалить файл трояна, то жертве представится возможность лицезреть новые обои рабочего стола с устрашающими надписями и предложением повторно скачать и запустить Cryptolocker для проведения оплаты и расшифровки файлов. Путь к этим обоям прописывается в реестре в том же разделе, где лежит открытый RSA-ключ и информация о версии зловреда, в параметр с именем Wallpaper.
Пугающие обои Cryptolocker’а
Если по истечении трех дней троян оплаты так и не дождался, он убирает все, что записал в реестр, меняет обратно обои и самоуничтожается, оставив жертву один на один с зашифрованными файлами.
Вообще, несмотря на угрозы удалить приватный RSA-ключ с командного сервера, реально ключ не удаляется и возможность расшифровать файлы остается, правда, за несколько возросшее вознаграждение.
Помимо командного сервера, создатели этой малвари организовали сервис по онлайн-расшифровке файлов. Его можно найти по тому же URL, с которого в тексте на устрашающих обоях предлагается скачать троян. После заливки на него зашифрованного файла заказу присваивается идентификационный номер и производится поиск открытого RSA-ключа на всех командных серверах. После того как ключ будет найден, появится надпись с суммой и Bitcoin-кошельком, куда и нужно перевести средства за получение приватного ключа.
Сервис расшифровки файлов. До 18.00 9.01.2014 расшифровка мне бы обошлась всего в 0,5 биткоинов :)
WARNING
Cryptolocker шифрует файлы и на дисках с параметром DRIVE _ REMOTE, то есть на расшаренных сетевых дисках. Поэтому резервные копии на таких носителях тоже могут быть под угрозой.
Это не примитивный Winlocker, требующий 200 рублей на счет мобильника. Файлы шифруются действительно стойкими алгоритмами, и без приватного ключа расшифровать их на данный момент практически не представляется возможным, даже если у тебя есть знакомые в АНБ. Поэтому резервное копирование, резервное копирование и еще раз резервное копирование. Все, что представляет ценность, должно периодически бэкапиться и складываться в надежном месте, куда не сможет протянуть свои руки Cryptolocker. Ну и в конце концов, сколько можно уже открывать аттачи от неведомых и нежданных отправителей?
INFO
Пока не произойдет соединение с командным сервером, Cryptolocker ничего шифровать не будет, поэтому можно просто закрыть все ненужные и подозрительные сетевые соединения и отслеживать вновь появившиеся с помощью какого-нибудь брандмауэра.
Подробнее: http://xakep.ru/articles/62262/
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Все мы сидим в сточной канаве, но некоторые при этом смотрят на звезды Уайльд Оскар - (1854-1900) - английский писатель |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.