Иногда лучше промолчать
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Антивирусная правДА! рекомендует
- Подчас указание на ошибки злоумышленников может оказать им услугу. За бесплатные консультации в тюрьму не сажают, но иногда такие подсказки стоят того, чтобы объявить их авторов сообщниками вирусописателей.
- Зашифрованные файлы – не всегда приговор.
- Если ваши файлы оказались зашифрованы, а утилиты дешифровки нет – не удаляйте их. Бывает, что алгоритм расшифровки удается разработать позднее.
Нам важно ваше мнение
10 Dr.Web-ок за комментарий в день выхода выпуска или 1 Dr.Web-ка в любой другой день. Комментарии публикуются автоматически и постмодерируются. Правила комментирования новостей «Доктор Веб».
Чтобы оставить комментарий, нужно зайти через свой аккаунт на сайте «Доктор Веб». Если аккаунта еще нет, его можно создать.
Комментарии пользователей
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
kozinka.ru
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