Декриптор для Nemty Ransomware на основе анализа его криптографии

отредактировано October 2019 Раздел: Шифрование и контейнеры
Резюме

Семейство Nemty Ransomware было недавно обнаружено и подробно описано в FortiGuard Labs. Исследователи Tesorion исследовали один и тот же двоичный файл и обнаружили несколько незначительных, но важных отклонений от алгоритма шифрования AES-CBC по умолчанию, упомянутого в их записи. Эти отклонения делают невозможным использование общих криптографических библиотек для расшифровки файла, зашифрованного Nemty, даже если известны ключ AES и вектор инициализации (IV).

Основываясь на нашем анализе Nemty Ransomware, мы смогли разработать процесс, который может в некоторых случаях восстанавливать исходные файлы для заражения Nemty без привлечения субъекта угрозы и, следовательно, без выплаты выкупа. Чтобы не предлагать возможные улучшения авторам вымогателей, мы не будем публиковать подробности нашего исследования. Однако, если вы стали жертвой Nemty Ransomware, пожалуйста, свяжитесь с Tesorion CSIRT, и мы бесплатно предоставим вам наш расшифровщик.

Введение


Недавно FortiGuard Labs опубликовала пост в блоге с описанием недавно обнаруженного Nemty Ransomware. Их блог очень хорошо описывает многие аспекты вымогателей, в том числе процесс, который он использует для шифрования файлов жертвы. Tesorion независимо проанализировал тот же двоичный файл Nemty, используемый исследователями FortiGuard, и может подтвердить многие из их результатов. В ходе нашего анализа мы запустили вредоносное ПО в «песочнице» и отладчике, чтобы лучше понять и иметь возможность просматривать данные, которые впоследствии будут зашифрованы, такие как ключи AES и IV. Однако, когда мы взяли комбинацию ключа AES и IV для файла и попытались расшифровать соответствующий файл с помощью AES-128-CBC (алгоритм, описанный в записи FortiGate), мы потерпели неудачу. При более глубоком изучении фактического кода шифрования файлов мы столкнулись с несколькими незначительными (но важными) различиями между фактическим кодом и описанием его работы в FortiGuard. Эти различия касаются размера ключа AES, фазы планирования ключей алгоритма AES и режима работы CBC для алгоритма AES. Как мы увидим, Nemty не использует стандартную реализацию AES, а код, используемый в Nemty, несовместим со стандартным алгоритмом AES. Это означает, что даже если ключ AES и IV для файла известны, нам все равно необходимо учитывать эти различия, чтобы успешно расшифровать файл, зашифрованный Nemty.

В оставшейся части этого поста мы кратко обсудим некоторую общую криптографическую терминологию. После этого мы углубимся в детали реализации Nemty для AES и в чем ее отличие от обычной реализации AES. Наш анализ позволил нам разработать инструмент для расшифровки многих файлов, зашифрованных с помощью Nemty Ransomware. После технической части этого блога мы объясняем, почему мы не публикуем наш инструмент дешифрования для загрузки в данный момент, но предлагаем его бесплатно жертвам Nemty для восстановления их данных.

Криптография 101

Давайте начнем с краткого курса по криптографии. Данные для шифрования обычно называют «открытым текстом», а соответствующие зашифрованные данные называют «зашифрованным текстом». Алгоритмы шифрования, или «шифры», делятся примерно на две большие категории: симметричные и асимметричные. Симметричный шифр использует один и тот же ключ для шифрования и дешифрования. Асимметричный шифр имеет два отдельных ключа: открытый ключ, используемый для шифрования, и закрытый ключ, используемый для расшифровки. Симметричные шифры обычно используются для обмена информацией между двумя сторонами, которые имеют доступ к общему, но в остальном секретному ключу. Асимметричные шифры обычно используются, когда многие разные стороны имеют один и тот же открытый ключ и должны иметь возможность шифровать данные, которые впоследствии могут быть расшифрованы только одной стороной, которая владеет закрытым ключом.

Если мы посмотрим на криптографию, которая в настоящее время наиболее часто используется и считается безопасной (достаточно), то симметричные шифры обычно намного быстрее, чем асимметричные. Таким образом, общая схема заключается в том, чтобы сгенерировать ключ для симметричного шифра (такого как AES), использовать его для шифрования большого количества данных, а затем использовать асимметричный шифр (такой как RSA) для шифрования самого ключа с использованием открытого ключа предполагаемый получатель и отправить комбинацию зашифрованных данных и зашифрованного ключа к ним. Этот шаблон выигрывает от скорости симметричного шифра для большого объема данных, в то же время используя свойства асимметричного для совместного использования ключа только с предполагаемым получателем.

Симметричные шифры могут быть потоковыми или блочными. Мы обсудим здесь только блочные шифры, так как именно это Nemty использует для шифрования файлов.

Блочные шифры разделяют данные на блоки фиксированного размера, например 128 бит (16 байт) и выполняют шифрование только на отдельных блоках. Если мы зашифровываем блоки по отдельности, не принимая во внимание другие блоки открытого текста, это называется режимом ECB (электронная кодовая книга). Однако существуют и другие так называемые режимы работы для блочных шифров. Одним из наиболее часто используемых является CBC (цепочка блоков шифров). При использовании CBC случайный вектор инициализации (IV) предоставляется для каждого шифрования. Этот IV затем XORed с первым незашифрованным блоком перед применением блочного шифра. Выход блочного шифра является первым блоком шифротекста. Первый блок зашифрованного текста затем XORed со вторым блоком открытого текста перед применением блочного шифра ко второму блоку и так далее. IV обычно распространяется вместе с зашифрованным текстом и не обязательно должен храниться в секрете, так как он используется только тогда, когда также известен сам ключ шифрования.

CBC-1024x397.jpg

CBC

ECB-1024x321.jpg

ECB

AES: ключи и планирование ключей

AES - это блочный шифр, основанный на блочном шифре Rijndael. AES имеет фиксированный размер блока 128 бит (16 байт) и поддерживает три разных размера ключа: 128 бит, 192 бита и 256 бит. В криптографии мы можем широко заявить, что ключи больших размеров в одном и том же алгоритме обычно более безопасны, но также обычно требуют больше вычислительного времени для шифрования и дешифрования.

Вопреки первоначальному описанию команды FortiGuard, в котором упоминается AES-128, в нашем анализе мы фактически обнаружили, что Nemty использует 256-битный (32 байта) ключ для AES. Это максимально возможный размер ключа для AES, и его можно рассматривать как избыточное для шифрования файлов в вымогателях, тем более что это замедляет процесс шифрования.

.....

Когда мы исследуем двоичный файл вредоносного ПО, мы часто используем виртуальные машины, песочницы и отладчики, чтобы отслеживать его выполнение и получать доступ к данным, которые в противном случае недоступны, например, к ключам шифрования AES и IV. Но даже когда мы были уверены, что у нас есть правильный ключ AES и IV, мы все равно не смогли расшифровать файлы, зашифрованные Nemty. Только после обнаружения этой ошибки в их расписании ключей AES мы поняли, почему наши попытки были обречены: стандартные реализации AES, такие как предлагаемые поставщиком криптографии Windows или OpenSSL, несовместимы с вариантом AES, используемым в Nemty, из-за этой ошибки! Только после разработки нашей собственной реализации AES, содержащей ту же ошибку в планировании ключей, мы смогли успешно расшифровать первые блоки из зашифрованных файлов Nemty.

AES: режим работы

nemty-1024x391.jpg

https://www.tesorion.nl/en/a-decryptor-for-the-nemty-ransomware-based-on-analysis-of-its-cryptography/
Мы ищем точки опоры не с целью перевернуть мир, но чтобы не позволить миру опрокинуть нас.
Войдите или Зарегистрируйтесь чтобы комментировать.