Быть или не быть: вопросы расшифровки данных после атаки программ-вымогателей
В этом блоге мы кратко расскажем, что происходит после шифрования ИТ-инфраструктуры, что чувствует жертва, какие действия предпринимаются ею для восстановления своей инфраструктуры. Что следует и не следует делать пострадавшим от атаки вымогателей, что могут предложить им ИБ-компании в таких случаях, рассказал Андрей Жданов, главный специалист по анализу вредоносного кода и проактивному поиску угроз Лаборатории цифровой криминалистики F.A. C.C.T.
На конкретном примере продемонстрируем нестандартный подход по поиску решения по расшифровке данных.
Любую жертву сразу после атаки с использованием программ-вымогателей волнует, прежде всего, ключевой вопрос, возможна ли расшифровка данных. Пострадавшие начинают активный поиск возможных решений, скачивают бесплатные декрипторы с ресурсов по расшифровке, создают ветки в форумах. И в большинстве случаев это оказывается безрезультатным. Все эти эмоциональные действия очень напоминают ужасную ситуацию с человеком, который внезапно узнал, что у него опасная болезнь.
В данной ситуации жертва находится как бы «в тумане», она готова на необдуманные и рискованные шаги ради скорого своего исцеления, и поэтому нередко становится жертвой шарлатанов и других мошенников. Мошенники, пользуясь таким состоянием жертвы, предлагают ей за небольшую плату простое «спасительное решение» в виде расшифровки или восстановления данных (рис. 1).
Рис. 1. Текст с сайта по расшифровке данных.
Эта история не исключительно российская, так устроена человеческая психология, люди и мошенники похожи везде (рис. 2).
Рис. 2. Текст с англоязычного сайта по расшифровке данных.
Удивительно, что на своих сайтах и каналах YouTube мошенники часто демонстрируют полное отсутствие элементарных технических знаний по данному вопросу, но мало, кто замечает это. Далеко не все разбираются в этих технических тонкостях (рис. 3).
Рис. 3. Текст с англоязычного сайта с техническими подробностями по программе-вымогателю LockBit 3 (Black).
Чаще всего владельцы подобных сайтов и каналов YouTube — обычные посредники, у которых налажен контакт со злоумышленниками. В лучшем случае они могут оказать содействие в получении декриптора у злоумышленников, за что получат свои комиссионные, а злоумышленники получат свой выкуп. Возможно, жертва и заплатит несколько ниже первоначально заявленной суммы. Однако, как показывает практика, что грамотно организованные переговоры позволяют снизить сумму выкупа еще больше.
Но часто жертве предоставляется бесполезная «пустышка» или бесплатная легитимная утилита, например, декриптор с ресурса NoMoreRansom или средство восстановления данных, которые вполне можно найти и самостоятельно. Во всех неудачах при расшифровке мошенники обвиняют жертву, что это ее неправильные действия приводят к таким неудовлетворительным результатам. Под различными предлогами у жертвы вытягиваются еще и еще деньги, и, в конце концов, злоумышленники просто перестают выходить на связь. Множество таких случаев во всех подробностях изложены самими пострадавшими на тематических форумах. Мы всегда подчеркиваем своим клиентам, если вы стали жертвой вымогателей, не становитесь еще и жертвой мошенников.
Похожая ситуация обстоит и с восстановлением данных. К примеру, программа-вымогатель STOP / Djvu шифрует в файлах всего лишь один блок размером 153 600 байт. Медиафайлы, файлы баз данных в таких случаях можно частично восстановить специализированным программным обеспечением. Но чудес не бывает, файл будет корректно открываться, можно даже искренне радоваться своим возвращенным фотографиям и видео, но какая-то зашифрованная часть данных все же будет безвозвратно потеряна. К сожалению, многие разработчики такого программного обеспечения, осознав, что их программами пользуются для восстановления данных после шифрования, и что они лишаются своей части «пирога», подняли стоимость за их использование или вовсе сделали их платными.
А как же расшифровка? Возможна ли она? Надо признать, в большинстве случаев расшифровка файлов невозможна. Есть надежда на развитие технологий, в том числе квантовых, что в ближайшем будущем удастся расшифровать данные. Например, практически во всех программах-вымогателях семейства Phobos более 5 лет используется один и тот же ключ RSA-1024. Казалось бы, что может проще?! Надо просто разложить следующее полупростое число на два множителя — простых числа:
133250507753262098260237500379202456033297018735730184784616976604627471369258649755690391171372057253986737556516613140541336988267736936053734906649471438239686546953687331690524788687957623347604956929716282949481552654067847162185115767984313537409069827202097918441412365724640931857690709265100371110583
Причем, последняя цифра множителей точно не будет 0, 2, 4, 6, 8. Однако в настоящее время это пока технически невозможно.
Мошенники правы в одном (рис. 1), никогда не следует спешить отчаиваться. Платить или не платить злоумышленникам — это личное дело каждого. Но заплатив, жертва, по сути, инвестирует в этот криминальный бизнес, который существует до тех пор, пока злоумышленникам исправно платят выкупы. Каждая такая выплата порождает новых жертв.
Если не платить выкуп, что делать с зашифрованными данными? Если ли есть такая возможность, определенно имеет смысл оставить наиболее важные зашифрованные файлы с максимально возможным контекстом, в надежде, что их расшифровка станет возможной в ближайшем будущем или правоохранительные органы заполучат в свое распоряжение инфраструктуру злоумышленников, в том числе и закрытые ключи шифрования.
Очевидно, что лучше предотвращать такие атаки, использовать различные защитные решения, чем исправлять возникшую после атаки ситуацию. Но если такая беда случилась, не следует становиться жертвой других мошенников, необходимо обращаться за помощью только к профессионалам. В России достаточно ИБ-компаний с весьма профессиональными специалистами.
Злоумышленниками используется огромное многообразие программ-вымогателей (https://id-ransomware.blogspot.com/), и некоторые из них не лишены изъянов, в результате чего в редких случаях становится возможной расшифровка данных. Компания F.A. C.C.T. и все наши коллеги пытаются найти такие ошибки, чтобы помочь восстановить инфраструктуру не только своим клиентам, но и просто обычным людям. Компания F.A. C.C.T. за последнее время безвозмездно помогла большому количеству жертв, их общая сумма выкупа составила более полумиллиона долларов. Анализируя инструменты, использованные злоумышленниками в атаке, мы различными способами пытаемся оценить возможность расшифровки.
Наши коллеги опубликовали исследование программы-вымогателя ShrinkLocker, которая представляет собой VBS-скрипт. Указанный скрипт использует для шифрования дисков штатное средство Windows BitLocker. Не будем повторять технических подробностей программы-вымогателя, они отлично изложены коллегами.
Мы рассмотрим непосредственно часть, касающуюся генерации пароля BitLocker (рис. 4).
Рис. 4. Генерация пароля для BitLocker в VBS-скрипте.
Если взглянуть более пристально на данный код, реализация генерации пароля в программе совершенно не выглядит безупречной. Первое, что бросается в глаза, это получение seed. Для инициализации генератора псевдослучайных чисел VBS используются различные варьируемые системные параметры: объем используемой оперативной памяти, объемы занятого и свободного дискового пространства и т.п. Эти значения в виде строк склеиваются в одно большое число, которое преобразуется в действительное число. Первые 3 параметра определяют цифры мантиссы, а остальные — степень числа.
Но если на проблему посмотреть под совсем другим углом, то оказывается все еще намного проще. Стоит только залезть под капот VBS, немного пореверсить его код и далее реализовать этот функционал на любом удобном для решения задачи языке программирования. Мы выбрали для этой цели Go. В результате скоротечного анализа были созданы аналоги функций VBS на языке программирования Go (рис. 5).
Рис. 5. Реализация на Go функций VBS генерации псевдослучайных чисел.
Функция VBRandomize (рис. 5) в дальнейшем не используется для реализации задачи, но она очень наглядно демонстрирует, что в нашем случае все значения seed с плавающей точкой сводятся к целочисленным значениям в диапазоне от 0 до 65535. Следовательно, всего существует 65536 вариантов паролей, и любой сгенерированный пароль будет входить в этот список.
Функция получения пароля в зависимости от целочисленного seed будет иметь следующий вид (рис. 6).
Рис. 6. Функции получения пароля на Go.
А дальше простая реализация перебора паролей и сохранения их в текстовый файл (рис. 7).
Рис. 7. Функция перебора паролей на Go.
Далее полученный файл с паролями (рис. 8) можно использовать в качестве словаря для подбора пароля BitLocker в специализированном программном обеспечении, таком как, например, Passware.
Рис. 8. Фрагмент текстового файла со сгенерированными паролями BitLocker.
Перебор 65536 паролей не займет много времени даже с учетом использования высокозатратной функции получения ключа, такой как PBKDF2 (Password-Based Key Derivation Function 2) (RFC 2898).
Если нет возможности использования Passware, но позволяет время, на базе данной программы возможно создать автономный многопоточный брутер. Собственно по этой причине и был изначально выбран язык программирования Go. В данном случае придется самостоятельно реализовать криптосхему BitLocker и использовать для подбора пароля соответствующий зашифрованный сектор диска. Но и эта задача не является трудновыполнимой.
Приоритетом компании F.A. C.C.T. является предотвращение инцидентов, помощь в расследовании и устранении последствий. Для некоторых семейств программ-вымогателей специалистами компании разрабатываются программы расшифровки для восстановления данных.
Напомним, что более подробную техническую информацию о программах-вымогателях и группах вы можете найти на тематическом гитхабе компании F.A. C.C.T. — https://github.com/facct-ransomware.