|
Cryptolocker |
|
Пугающие обои Cryptolocker’а |
|
Сервис расшифровки файлов |
Поведение не свойственное Cryptolocker:
- сокрытие кода посредством обфускации и шифрования;
- использование техник антиотладки, детекта виртуальных машин и песочниц;
- сокрытие от диспетчера задача в недрах оперативной памяти.
Тем не менее Cryptolocker - это не примитивный Winlocker, требующий 200 рублей на счет мобильника.
Поведение свойственное Cryptolocker:
- маскировка исполняемого файла под PDF отчет, от якобы служб доставки Fedex или UPS, с именем вроде FORM_1088.pdf.exe и иконкой, очень и очень похожей на настоящую PDF’овскую;
- генерация для себя уникального имени файла на основе собранной в реестре различной информации о системе;
- хранение в каталоге %AppData% (или %LocalAppData% в Win XP) с атрибутом скрытого файла;
запуск одновременно с запуском системы, для этого троян создает в реестре в ветках автозапуска два ключа (ключ с символом звездочки позволяет запускать зловред при старте системы в Safe Mode), в которых прописан путь к Criptolocker’у на диске:
- HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunCryptoLocker
- HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce*CryptoLocker
- мониторинг состояния ключей в реестре и их восстановление в случае необходимости;
- предотвращение остановки своего процесса путем запуска самого себя в качестве второго дублирующего процесса, который контролирует наличие основного и в случае необходимости повторно его запускает (прекратить это безобразие можно, выбрав в диспетчере задач «Завершить дерево процессов» для основного процесса Cryptolocker’а);
- связь с командными серверами, доменные имя которых генерируются по специальному алгоритму (в случае неудачи подключения генерация доменного имени и попытки подключиться продолжаются);
- генерация доменных имен из набора латинских букв в количестве от 12 до 15 в следующих доменных зонах: .org, .co.ua, .info, .com, .net, .biz, .ru (поочередно), на основе системного времени, получаемого путем вызова API GetSystemTime;
- генерация на сервере пары ключей для алгоритма шифрования RSA–2048:
- закрытый ключ, предназначенный для расшифровки, остается храниться на сервере;
- открытый, предназначенный для шифрования, передается на компьютер жертвы, где сохраняется в реестре в специально созданном разделе KEY_CURRENT_USERSoftwareCryptoLocker_0388
с именем параметра PublicKey (в этом же разделе создается параметр с именем VersionInfo, в котором содержится информация о текущей версии трояна, IP-адрес командного сервера и время установки);
- получение списка всех дисков в системе с помощью функции GetLogicalDrives, далее с помощью API GetDriveType определяются диски, с которыми можно работать (Cryptolocker шифрует файлы на дисках, имеющие тип DRIVE _ FIXED, DRIVE _ REMOTE (то есть на расшаренных сетевых дисках, поэтому резервные копии на таких носителях тоже могут быть под угрозой) и DRIVE _ REMOVABLE);
- поиск нужных файлов на всех доступных дисках поочередно с применением API-функций FindFirstFile и FindNextFile (отбор нужных файлов ведется по 72 маскам);
- использование возможностей, предлагаемых компанией Microsoft в виде CryptoAPI и стандартного криптопровайдера Microsoft Enhanced RSA and AES Cryptographic Provider;
- файлы шифруются действительно стойкими алгоритмами, и без приватного ключа расшифровать их на данный момент практически не представляется возможным (пока не произойдет соединение с командным сервером, Cryptolocker ничего шифровать не будет, поэтому можно просто закрыть все ненужные и подозрительные сетевые соединения и отслеживать вновь появившиеся с помощью какого-нибудь брандмауэра):
- cодержимое файла криптуется с помощью алгоритма AES–256, ключ для которого генерирует API-функция CryptGenKey с параметром CALG _ AES _ 256;
- после шифрования файла этот AES-ключ шифруется алгоритмом RSA–2048 с помощью открытого ключа, полученного с командного сервера (и заблаговременно сохраненного в реестре), далее с открытого RSA-ключа снимается SHA-хеш (нужен для того, чтобы, во-первых, избежать повторного шифрования файлов, а во-вторых, чтобы найти на командном сервере нужный закрытый ключ для расшифровки файла в случае, если жертва все-таки заплатила денежки) длиной 20 байт;
- все это дело записывается поверх старого, незашифрованного содержимого файла в определенной последовательности: сначала пишется 20 байт хеша RSA-ключа, далее 256 байт зашифрованного AES-ключа, после чего пишется сам зашифрованный файл (в итоге длина зашифрованного файла увеличивается на 276 байт по сравнению с исходным, незашифрованным файлом);
- после того как файл зашифрован, Cryptolocker пишет путь и имя зашифрованного файла в реестр, в ветке: HKEY_CURRENT_USERSoftwareCryptoLocker_0388Files.
- показ окна красного цвета с надписью «Your personal files are encrypted!», обратным счетчиком времени, который начинается с 72 часов, и требованием оплаты (если по истечении трех дней троян оплаты так и не дождался, он убирает все, что записал в реестр, меняет обратно обои и самоуничтожается, оставив жертву один на один с зашифрованными файлами) за получение приватного ключа для расшифровки файлов (в случае неуплаты в срок Cryptolocker грозит удалить (реально ключ не удаляется и возможность расшифровать файлы остается, правда, за несколько возросшее вознаграждение) приватный RSA-ключ с командного сервера и, соответственно, невозможностью расшифровки файлов в дальнейшем);
- оплата битокоинами и с помощью платежной системы MoneyPak;
- предложение (в виде новых обоев рабочего стола с устрашающими надписями (путь к этим обоям прописывается в реестре в том же разделе, где лежит открытый RSA-ключ и информация о версии зловреда, в параметр с именем Wallpaper)) после удаления файла трояна повторно скачать и запустить Cryptolocker для проведения оплаты и расшифровки файлов;
- сервис по онлайн-расшифровке файлов, его можно найти по тому же URL, с которого в тексте на устрашающих обоях предлагается скачать троян (после заливки на него зашифрованного файла заказу присваивается идентификационный номер и производится поиск открытого RSA-ключа на всех командных серверах, после того как ключ будет найден, появится надпись с суммой и Bitcoin-кошельком, куда и нужно перевести средства за получение приватного ключа).
|
Cryptolocker на жестком диске жертвы |
|
Автозапуск Cryptolocker’а в реестре |
|
Генерация доменного имени (в нижней части выделено сгенерированное доменное имя olphjvttuqdxm.com) |
|
Неудачные попытки присоединения к командному серверу |
|
Параметры PublicKey и VersionInfo в реестре |
|
Маски для отбора файлов |
|
Процесс шифрования файла TestDoc.rtf |
|
Внутренности незашифрованного (вверху) и зашифрованного (внизу) файла TestDoc.rtf |
|
Имя и путь зашифрованного файла в реестре |