Иногда лучше промолчать
20 июля 2017
Как вы уже знаете из наших прошлых выпусков, зачастую удачная расшифровка файлов, испорченных троянцами-энкодерами, становится возможной благодаря ошибкам разработчиков вредоносных программ. По понятным причинам об этом нельзя сказать слишком много: любой разбор подобных ошибок – подарок авторам троянцев, с помощью которого они смогли бы создать более «продвинутую» версию.
К сожалению, не все придерживаются такого подхода, в результате чего в Интернет попадают шикарные подсказки для вирусописателей. Например:
Как оказалось, авторами NotPetya (также известный под множеством других имен — Petya, Petya.A, ExPetr и другими) была допущена ошибка в реализации алгоритма Salsa20, вследствие которой половина байтов ключа шифрования вообще никак не использовалась. Сокращение длины ключа с 256 до 128 бит, к сожалению, не оставляет надежд на отыскание его в разумные сроки.
Однако из-за некоторых особенностей применения алгоритма Salsa20 возможно восстановление данных без знания ключа.
Статья очень интересная, но изобилует специальными терминами, поэтому подробно цитировать ее не будем – остановимся лишь на некоторых моментах.
Вот, например, разбирается использование типа данных, недостаточного для размещения нужной длины индекса:
Посмотрим на прототип функции s20_crypt32(), через вызовы которой и выполняется шифрование секторов диска.
enum s20_status_t s20_crypt32(uint8_t *key,
uint8_t nonce[static 8],
uint32_t si,
uint8_t *buf,
uint32_t buflen)
Через аргумент si (вероятно, Stream Index) передается байтовое смещение в потоке. И по типу аргумента понятно, что там не 64, а только 32 бита. Это значение попадает в keystream после деления на 64, то есть остается максимум 26 бит.
// Set the second-to-highest 4 bytes of n to the block number
s20_rev_littleendian(n+8, si / 64);
Ошибки реализации алгоритма, благодаря которым различные данные шифруются одинаковыми параметрами (надеемся на снисходительность знатоков, если мы подобрали не совсем правильную аналогию для используемых в статье терминов):
Из 26 бит номера блока только 16 бит (байты по смещению 0x20-0x21) повлияют на keystream. Следовательно, максимальный период гаммы составит 2^16=65536 блоков по 64 байта, или 4 мегабайта.
Объем зашифрованных данных наверняка значительно превышает 4 мегабайта, поэтому много разных кусков данных окажутся зашифрованы на одних и тех же фрагментах гаммы. А это позволяет реализовать тривиальную атаку на основе известного открытого текста.
Просто ошибки в логике:
При вызове функции s20_crypt32() они вместо значения смещения в байтах передают… номер 512-байтового сектора!
Возможность восстановить параметры шифрования:
Вымогатель шифрует и первые два сектора каждого файла, который длиннее 1024 байт. При этом размер кластера обычно больше, чем два сектора (например, 8). В таком случае, найдя зашифрованное начало любого файла и пропустив 1024 байта, мы можем легко получить следующие 3 килобайта в незашифрованном виде. И если у нас будет файл, в котором по смещению 1024 байта от начала находятся точно такие же 3 килобайта — с большой вероятностью и начало файла совпадет. И мы получим еще до 1024 байт гаммы.
К сожалению, перечисленные ошибки авторы троянца допустили в модуле шифрования, отрабатывающем, если энкодер смог получить административные привилегии и зашифровал жесткий диск целиком при помощи алгоритма Salsa20. Если же троянец не мог получить административные привилегии, он использовал другой алгоритм – AES – и шифровал только пользовательские файлы. А для восстановления данных, зашифрованных таким способом, требуется знание секретного ключа RSA.
#шифровальщик #троянец #Trojan.EncoderАнтивирусная правДА! рекомендует
- Подчас указание на ошибки злоумышленников может оказать им услугу. За бесплатные консультации в тюрьму не сажают, но иногда такие подсказки стоят того, чтобы объявить их авторов сообщниками вирусописателей.
- Зашифрованные файлы – не всегда приговор.
- Если ваши файлы оказались зашифрованы, а утилиты дешифровки нет – не удаляйте их. Бывает, что алгоритм расшифровки удается разработать позднее.
Нам важно ваше мнение
Чтобы оставить комментарий, нужно зайти через свой аккаунт на сайте «Доктор Веб». Если аккаунта еще нет, его можно создать.
Комментарии пользователей
Toma
13:49:15 2018-10-29
Денисенко Павел Андреевич
13:26:15 2018-08-05
vasvet
19:51:16 2018-04-05
Инквизитор
14:04:34 2017-08-02
sapfira
11:20:10 2017-07-29
sapfira
10:14:20 2017-07-21
М...а
00:30:39 2017-07-21
Littlefish
23:48:25 2017-07-20
Littlefish
23:44:53 2017-07-20
В...а
22:34:02 2017-07-20
vla_va
22:27:10 2017-07-20
НинаК
22:19:15 2017-07-20
ek
21:51:26 2017-07-20
Марина
21:28:07 2017-07-20
kva-kva
21:23:33 2017-07-20
mk.insta
21:01:52 2017-07-20
Шалтай Александр Болтай
20:28:11 2017-07-20
razgen
20:16:26 2017-07-20
Если вдруг случится, то уже "поздно пить боржоми". Все меры защиты в том числе и сохранение файлов надо предпринимать до того как случится. А точнее, если ещё не предприняли - то немедленно. А какие именно меры защиты, это можно и нужно узнать читая выпуски "Антивирусной правДЫ".
orw_mikle
19:48:52 2017-07-20
a13x
18:14:42 2017-07-20
Родриго
17:22:27 2017-07-20
B0RIS
16:20:15 2017-07-20
La folle
16:08:38 2017-07-20
Альфа
15:20:51 2017-07-20
kapitansha73
15:03:28 2017-07-20
Sasha50
14:39:59 2017-07-20
SGES
14:23:25 2017-07-20
Alexander
13:48:29 2017-07-20
Если интеллекта хватило найти уязвимость, вскрыть код трояна, - пошли свои изыскания в службу Технической поддержки Dr.Web, может и пригодится.
duduka
13:02:07 2017-07-20
razgen
12:53:47 2017-07-20
Считаю, что изредка нужны и такие выпуски, чтобы иметь хотя бы общие понятия о принципах работы злоумышленников.
stranger
12:24:26 2017-07-20
Dvakota
12:11:18 2017-07-20
Влад
11:32:30 2017-07-20
DrKV
11:21:17 2017-07-20
Вячeслaв
11:17:43 2017-07-20
Любитель пляжного футбола
09:17:06 2017-07-20
Сложную, но нужную работу вы делаете, анализируя вредоносный код и разрабатывая способы расшифровки файлов. К сожалению, процент удачной расшифровки в настоящее время весьма невелик, если учитывать все виды шифровальщиков, а уж какой из них зашифрует твои файлы, это уже рулетка. Так что в этом отношении пока главный друг пользователя - это делание резервных копий да соблюдение определённых мер безопасности (установка антивируса, не открывать все ссылки в письме и пр.). В будущем, полагаю, процент удачной расшифровки возрастёт, так что это станет более актуальным. Но и прогресс не стоит на месте, на смену нынешним шифровальщикам придут новые. Есть такая пословица "Дурак камень в воду кинет - десять умных не найдут, дурак узел завяжет - сто умных не развяжут". Так и здесь, но в отношении шифровальщиков мы имеем дело с далеко не глупыми людьми. И они всё же всегда будут на шаг впереди.
Как будет на самом деле, время покажет. Удачи в этом нелёгком труде!
Mefch
09:06:50 2017-07-20
Littlefish
09:00:08 2017-07-20
Эх, мечты, мечты.
Было бы шикарно конечно.
Littlefish
08:57:06 2017-07-20
В данном же выпуске написано конкретное руководство по ошибкам в программном коде вредоносной программы (конечно же эта информация для знающих людей, для людей других специальностей кроме программирования это просто набор букв). Но если уже удалось кое-как написать вредоносную программу (хоть и с ошибками), то вполне может хватить знаний, чтобы используя подобные руководства улучшить свою вредоносную программу.
Т.е. в Вашем примере - это просто слова сказанные вслух, которые через минуту уже никто и не вспомнит, а в примере выпуска - конкретное руководство к действию, скопировав которое (даже если его уже и удалят с форума) можно устроить эпидемию покруче без возможности или с минимальной возможностью расшифровки файлов.
Littlefish
08:46:06 2017-07-20
user
08:08:58 2017-07-20
ka_s
08:06:22 2017-07-20
GREII
07:49:52 2017-07-20
eaglebuk
07:29:00 2017-07-20
L1t1um
07:12:50 2017-07-20
Пaвeл
07:12:43 2017-07-20
tigra
06:40:17 2017-07-20
Morpheus
04:52:32 2017-07-20
Sasha50
03:50:30 2017-07-20
A1037
03:20:27 2017-07-20