Зловреды-шифровальщики становятся всё более сложными, обходя системную защиту и внушая ужас всем на своём пути. TeslaCrypt, CryptoWall, TorrentLocker, Locky, CTB-Locker – вот неполный список шифровальщиков, от которых мы защитили пользователей за последние два года. Мы видели шифровальщики разных видов и мастей, но новый вариант CTB-Locker оказался круче всех. Киберпреступный мир не жалеет средств на переделку и создание новых шифровальщиков.
Ранее CTB-Locker, он же шифровальщик-вымогатель Onion, отличался от других вымогателей тем, что использовал анонимную сеть Tor, чтобы защитить от отключения свои командные серверы, поскольку отключить, как правило, удается только статичные серверы. Использование Tor также помогало зловреду избегать обнаружения и блокирования. Ещё одно защищало операторов CTB-Locker: плата принималась только в биткойнах – децентрализованной анонимной криптовалюте.
Новый вариант CTB-Locker атакует только веб-серверы. По нашим данным, он уже успешно зашифровал файлы в корневых папках более чем на 70 серверах в десяти странах.
В этом блогпосте я проведу вас в «логово льва»: пострадавшие любезно поделились с нами образцами зловредов-шифровальщиков, проникших на их веб-серверы.
Шаг 1. Искажение веб-страницы
Новая версия зловреда зашифровывает веб-серверы и требует в качестве выкупа менее половины биткойна (~ $150). Если деньги не заплачены вовремя, то размер выкупа удваивается примерно до 300 долларов. При уплате выкупа генерируется ключ для расшифровки файлов веб-сервера.
Выяснилось, что веб-серверы заражались этой модификацией зловреда из-за бреши в безопасности. В случае ее эксплуатации происходит дефейс – искажение атакованной веб-страницы, посредством которого группа хакеров демонстрирует серьезность своих намерений. Мы проанализировали несколько недавних атак и выяснили, что страницы подвергаются дефейсу не случайным образом, а выбираются хакерами по политическим и культурным соображениям.
В данном случае дефейс заключался в том, что на месте главной PHP/HTML-страницы было размещено сообщение с перечислением всех средств, необходимых для расшифровки, — чтобы произвести необходимое впечатление на жертву. Более подробно об этом — при разборе следующих шагов.
Важно отметить, что оригинальный код страницы не удаляется – он сохраняется в зашифрованном виде под другим именем в корневой папке.
Сообщение
Злоумышленники исходят из того, что контент для жертвы гораздо важнее выкупа, который она должна заплатить, и потому обычно оставляют на взломанной странице очень подробное сообщение на всеобщее обозрение.
На скриншоте ниже приводится часть информации, которую разместили киберпреступники на главной странице:
Ключ расшифровки хранится на удаленном сервере. В качестве подтверждения того, что все без обмана, злоумышленники «любезно» позволили жертве расшифровать два файла бесплатно.
На взломанном сайте жертве доступна ещё одна функция – установить контакт со злоумышленником через чат. Для этого нужна персональная подпись/код, доступ к которому предоставляется только жертвам зловреда.
В данный момент доступного инструмента расшифровки не существует, так что нет способов расшифровать файлы, зашифрованные новой версией CTB-Locker. Единственный способ справиться с этой угрозой за несколько секунд – это хранить резервные копии файлов отдельно.
Хотя угроза представляется серьезной, мы полагаем, что ее не стоит переоценивать. У крупных веб-сайтов обычно есть несколько версий контента, расположенных на нескольких веб-серверах. Во многих других случаях контролем и тестированием веб-страниц занимаются профессиональные фирмы, специализирующиеся на проведении тестов на проникновение для обеспечения безопасности, так что эти веб-страницы постоянно находятся под наблюдением.
Шаг 2. Процесс шифрования
Мы ещё не знаем, как CTB-Locker попадает на веб-серверы; однако у многих атакованных веб-серверов есть одна общая черта – в качестве инструмента управления контентом они используют платформу WordPress. Необновленные версии WordPress содержат много уязвимостей: в прошлом году уже публиковались обнаруженные в нём критические уязвимости. Кроме того, WordPress имеет ещё одно слабое место – плагины. Они расширяют технические возможности платформы, делая ее лидером в мире CMS; однако с другой стороны, сторонние плагины делают сервер более уязвимым к атакам, поскольку разработчики плагинов, как правило, не обременяют себя решением вопросов безопасности.
Проникнув при помощи зловреда внутрь системы WordPress, злоумышленник способен заменить файл главной веб-страницы и выполнить операцию шифрования. Главный файл переименовывается и сохраняется в зашифрованном виде.
На атакованном сервере размещаются два разных ключа AES-256:
- create_aes_cipher($keytest) – для шифрования двух файлов, которые можно будет расшифровать бесплатно
- create_aes_cipher($keypass) – для шифрования остальных файлов в root-каталоге сервера
Два «бесплатных» файла выбраны злоумышленниками, имена этих файлов сохраняются в текстовом файле.
Функция create_aes_cipher() принимает один параметр в качестве ключа и передает его стандартной функции PHP Crypt_AES():
1 2 3 4 5 6 |
function create_aes_cipher($key) { $aes = new Crypt_AES(); $aes->setKeyLength(256); $aes->setKey($key); return $aes; } |
При шифровании сайта скрипт сначала использует тестовый ключ, которым шифрует два файла для бесплатной расшифровки. Затем скрипт генерирует список файлов с определенными расширениями и шифрует их с помощью алгоритма AES-256.
Форматы файлов, которые будут зашифрованы, зловред читает из файла ./extensions.txt; они отражены на скриншоте ниже:
Файлы, которые содержат следующие строки, будут исключены из шифрования:
- «/crypt/»
- «secret_»
Кроме того, из шифрования очевидно будут исключены файлы, содержащие данные, которые позже могут помочь пользователю расшифровать его данные.
- ./index.php – как описывалось выше, данный файл открывает главный путь для потерпевшего для анализа атаки и содержит PHP-код с алгоритмом шифрования/расшифровки
- ./allenc.txt – содержит список всех зашифрованных файлов
- ./test.txt – содержит имена файлов, которые можно расшифровать бесплатно
- ./victims.txt – содержит список всех шифруемых или уже зашифрованных файлов
- ./extensions.txt – содержит список расширений файлов (см. выше)
- ./secret_ –позволяет жертве идентифицировать себя, чтобы получить возможность бесплатно расшифровать два файла или переговорить в чате со злоумышленником
На главной странице CTB-Locker злоумышленники при помощи библиотеки jQuery опрашивают прокси-северы и подтверждают платежи. В исходном коде страницы был найден следующий код; серверы, указанные сверху, это прокси-серверы, которые выступали в качестве дополнительного уровня защиты, подменяя собой главный сервер злоумышленников:
Прокси-серверы, участвующие в процессе расшифровки:
http://erdeni.ru/access.php |
http://studiogreystar.com/access.php |
http://a1hose.com/access.php |
Серверы вымогателей не используются подолгу, они регулярно заменяются новыми. Мы наблюдали, как злоумышленник просматривает журналы сервера и аналитику – иногда в результате таких проверок сервер выключался и включался заново.
Шаг 3. Прокси и командный сервер
Злоумышленники используют уже атакованные серверы, которые создают дополнительный уровень защиты. В исходном коде сервера жертвы JavaScript-код обнаруживает, что процесс расшифровки реализуется через три разных сервера, выбранных случайным образом, но ни один из них не является командным сервером.
Данный скриншот был взят со страницы access.php,; которая предположительно существует на каждом из бот-серверов, используемых в качестве прокси для процесса расшифровки.
На скриншоте белым замазан адрес командного сервера, который жёстко прописан в каждой из PHP-страниц (access.php).
Когда посылается POST-запрос с правильными параметрами, создается экземпляр сокета, который посылает на командный сервер запрос на соединение. Затем определяется, был ли процесс расшифровки успешным.
Бесплатная расшифровка
Вымогатель позволяет пострадавшему пользователю расшифровать бесплатно не более двух файлов. Пользователь не может выбирать, какие два файла будут расшифрованы, – как описывалось выше, эти файлы уже выбраны, их имена указываются в специальном файле. Эти два файла выбираются случайным образом во время шифрования.
Вот как выглядит модуль бесплатной расшифровки:
Чтобы расшифровать два бесплатных файла, пользователю нужно ввести имя файла secret_. Когда вы нажимаете кнопку DECRYPT IT FREE («расшифровать бесплатно»), скрипт на стороне клиента создает POST-запрос и посылает его на один из командных серверов. Нам удалось имитировать работу PHP-кода и запустить функцию exit() из процедуры бесплатной расшифровки:
Следующий PHP-код существует на стороне сервера. Функция secret_ok() устанавливает подлинность сайта-жертвы на основе его доменного имени и других показателей:
1 2 3 4 |
if (isset($_GET['dectest']) && secret_ok()) { decrypt_files('test.txt', $_GET['dectest']); exit('Congratulations! TEST FILES WAS DECRYPTED!!'); } |
Чат со злоумышленником
В программу-вымогатель, кроме всего прочего, встроена возможность коммуникации с ее создателями. Как уже упоминалось, для открытия чата пользователь должен ввести ключевую фразу ‘secret_’. Без этого чат не будет действовать.
Мы пришли к выводу, что данная программа-вымогатель представляет собой вредоносную программу нового поколения, предназначенную для злоумышленников, которые ставят своей задачей получение денег. Такие программы очень эффективны; надежного решения, которое могло бы противодействовать угрозам такого типа, не существует, и их легко можно приспосабливать не только для атаки на операционные системы настольных компьютеров, но и для атаки на веб-серверы.
Настойчиво рекомендуем читателям регулярно обновлять программное обеспечение. Кроме того, не стоит автоматически доверять стороннему ПО, исходя из хэш-суммы – этот показатель может быт изменён злоумышленником в случае взлома веб-сервера. Обязательно проверяйте программные продукты на легитимность при помощи других диагностических инструментов. Для всех важных файлов следует создавать резервные копии. Будьте осторожны при получении электронных сообщений, которые не адресованы вам лично; также будьте осторожны с заманчивой онлайн-рекламой.
Возвращение CTB-Locker: версия для веб-серверов