-
«Крякающий» шифровальщик (Trojan-Ransom.Win32.Cryakl или Trojan.Encoder.567)
Наконец-то нашлось время проанализировать один из распространенных в настоящее время шифровальщиков Trojan-Ransom.Win32.Cryakl по классификации Лаборатории Касперского (Trojan.Encoder.567 по классификации DrWeb - обращаю внимание на изменение номера). За это время произошла эволюция в работе вируса. Автор наваял версию 4, которой было уделено внимание в статье https://securelist.ru/blog/issledova...razbushevalsya. Пока же аналитики вирлаба Лаборатории Касперского слегка поверхностно исследовали экземпляр этой версии, автор придумал версию 5, в которой алгоритм шифрования приобрел некие черты полиморфизма (используется 10 алгоритмов модификации содержимого файлов).
Сразу хочу отметить, что автор самого вируса позиционирует себя только с тремя почтовыми адресами, на которые можно писать по поводу дешифратора: Все остальное - другие распространители, прикупившие себе исходник, и модифицировавшие (и то это слишком громко сказано) под себя, зачастую даже с нарушением функционала (например, ресурса с картинкой вымогателя нет, а процедура по ее излечению и установке на компьютер в качестве обоев осталась; в некоторых версиях и ответ от сервера не проверяется).
Некоторые из покупателей специализируются на шифровании данных только на серверах, доступ к которым получен предварительно путем подбора паролей от RDP.
Да и сам автор, модифицировав детище, не позаботился об усовершенствовании конструктора для его создания, о чем я упомяну в своем исследовании
По мере эволюции автор отказался от использовании работы на основе службы (я ошибочно полагал, что она завязана на использовании svchost.exe, на самом деле файл используется для других целей - об этом ниже). Кроме того, если первые разновидности еще как-то можно было расшифровать утилитами от ведущих российских вирлабов, то на данный момент такой возможности нет, что говорит о проделанной автором работе над ошибками. Хотя какую-то работу в этом направлении вирлаб DrWeb все же ведет, но количество случаев успешной расшифровки незначительно (практически нулевое, я достоверно знаю лишь об одном случае успешного подбора пароля к версии 4).
Основные особенности работы шифровальщика, не вдаваясь в подробности, описаны в упоминавшейся выше статье от Лаборатории Касперского. Хочу отметить, так же следующие особенности шифровальщика:
- запускается без показа главной формы, но не скрывается в списке процессов;
- проводит работу по определению разрядности системы, версии операционной системы и в результате работа осуществляется в соответствии с особенностями версий Windows (например, с соблюдением прав пользователей, старт копий от имени пользователей с правами администратора);
- некоторые строковые величины (например, имена папок для записи копии, адреса серверов для передачи идентификатора зараженного пользователя и пароля) лежат в зашифрованном виде;
- для усложнения исследования некоторые операции осуществляются замудреными способами;
- работа с файлами осуществляется с помощью технологий прошлого века без использования Win API, что может привести к тому, что размер файла, превыщающего 4Гб, определяется неверно (актуально для файлов с образами дисков, а также, возможно, для баз 1С), вследствие чего запись информации для расшифровки будет осуществляться не в конец файла ;
- автор не заботится о том, что код во многих случаях повторяется, т.е. ни о какой красоте программирования и минимализации использования памяти речи не идет (как в советском мультфильме, персонаж которого произносил "и так сойдёт" ).
А теперь переходим непосредственно к анализу. Т.к. первый запуск осуществляется из произвольного месторасположения, то вирус создает папку для своей копии на системном диске (определение буквы диска опять идет экзотическим способом) в папке Program Files (или Program Files (х86) - на х64-системах). Далее идет проверка наличия прав администратора. Как ни странно, принципиальной разницы в том, есть они или нет, я не заметил. Всё равно вызов процедуры шифрования есть в любом случае. В созданную папку побайтно (и снова прошлый век) копируется тело вируса, после чего запускается вторая копия из нового месторасположения, а первая завершает свою работу. Пока никакого шифрования (при работе первой копии) нет. Это выполняет уже следующая копия. Ах да, время создания файла вирус устанавливает таким же, как у системного svchost.exe (такая вот примитивная маскировка под легитимный файл). Кроме того, с целью маскировки имя файла вируса совпадает или с именем одной из системных программ (svchost.exe, explorer.exe), или с именем вполне легитимных сторонних программ (winrar.exe).
Вторая копия (запущенная уже из правильного месторасположения) начинает с того, что проверяет, не запущена ли она с параметром /install (это или раритет из предыдущих модификаций, или лазейка для отмены запуска при ручном старте). Если это так, то она завершает работу, иначе создает запись реестра для автостарта вируса после каждой перезагрузки (причем никакой проверки на наличие записи в реестре снова нет - опять "и так сойдёт"). Управление передается процедуре, внутри которой будет вызов шифрования.
Для начала происходит проверка наличия конфигурационного файла.
О конфигурационном файле
- пока идет процесс шифрования (продолжается после рестарта системы), в нем хранится идентификатор зараженного компьютера и в кодированном виде 40-символьный случайный идентификатор. Исследователи из Лаборатории Касперского
ошибочно посчитали, что это параметры шифрования для согласования работы после перезагрузки;
- когда процесс завершен, там записано {CRYPTFULLEND} в кодированном виде
Скрыть
Если файла нет:
- генерируется уникальный идентификатор зараженной системы (состоит из 36 прописных латинских букв, текущих даты-времени и случайного числа от 0 до 999999).
Если файл есть:
- читаются оба идентификатора. Если второй из них в кодированном виде содержит {CRYPTFULLEND}, обои на Рабочем столе меняются на картинку с сообщением вымогателя.
Далее:
- генерируется 100 символьная строка из латинских букв (мастер-ключ), вычисляется MD5-хэш 40 блоков по 5 символов, который вместе с идентификатором отправляется на сервера злоумышленника (проверка наличия интернета осуществляется обращением к трем серверам - ожидает ответ от сервера);
Обратите внимание:
мастер-ключ после перезагрузки изменяется!!! Таким образом файлы на одном компьютере могут быть зашифрованы с использованием разных мастер-ключей. Возможно, и цена за расшифровку вырастет в этом случае (особенно в случае использования шифровальщиков не от самого автора).
- генерируется 40 символьная строка из латинских букв - случайный идентификатор;
- оба идентификатора записываются в конфигурационный файл;
- далее идет работа по созданию текстового сообщения вымогателя (раритет - остался от первых версий);
- готовится список проверяемых типов файлов;
- происходит поиск (настолько экзотический, что разбираться в нем не было желания) файлов, подлежащих шифрованию файлов.
Хочу отметить, что:
1. даже если файл не удовлетворяет условиям, все равно происходит его чтение и проверка сигнатуры шифрования {CRYPTANDBLACKDC};
2. экзотическая проверка на папку Windows
реализована криво, что приведет к тому, что информация в папках типа
Win,
Windows.0 и т.п. (теоретически в них могут оказаться подходящие типы файлов) также будет зашифрована.
- шифрование подходящих типов файлов (уникальный для каждого файла ключ шифрования - MD5-хэш из строки, содержащей 40 символов случайной выборкой из мастер-ключа + случайная цифра от 0 до 9);
В плюс автору здесь стоит отнести то, что после шифрования идет проверка сигнатуры {CRYPTANDBLACKDC} в конце файла. Только при ее наличии исходный файл удаляется.
- в конфигурационный файл записывается {CRYPTFULLEND} в кодированном виде, что означает окончание шифрования. Теперь без обращения к злоумышленникам файлы не восстановить;
- создается и запускается bat-файл, который должен был удалить шифровальщика и самого себя (не срабатывает )
О самом шифровании
Как уже писали в статье от Лаборатории Касперского, первые версии шифровали всего лишь 29 байт в заголовке файла. И потому первые версии успешно расшифровывались декрипторами ЛК и DrWeb.
Теперь же шифруются 3 блока (один в начале файла - максимальная длина 255 байт, два других в середине файла). Причем в версии 4.0, как минимум в дешифраторе, я видел проверку на невозможность хотя бы частичного пересечения шифруемых блоков. В шифровальщике версии 5.0 этого уже нет. Надеюсь автор учел это в своем дешифраторе
При работе с размерами и смещением блоков автор для чего-то снова эмулирует стандартную для Delphi функцию IntToStr, причем ее вариант для чисел типа Int64. Нужды в этом нет (причина опять же кроется в прошлом веке при работе с файлами).
Кроме того, в версии 5.0 автор добавил запись в файл блока мусорной информации максимальным размером в 4999 байт (записывается перед информацией, необходимой для расшифровки).
На этом разрешите откланяться. Конструктивная критика приветствуется
P.S. Автор шифровальщика обязательно увидит статью.
Последний раз редактировалось thyrex; 11.04.2015 в 11:22.
Причина: цифры -> буквы
Microsoft MVP 2012-2016 Consumer Security
Microsoft MVP 2016 Reconnect
-
-
Будь в курсе!
Будь в курсе!
Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru:
-
Junior Member
- Вес репутации
- 35
Сообщение от
thyrex
...
P.S. Автор шифровальщика обязательно увидит статью.
Автору шифровальщика статью уже нашли и скоро он с ней познакомится...если не даст людям дешифратор.
-
Junior Member
- Вес репутации
- 51
Вот еслиб он во благо страны делал, то слов нет спасибо автору шифровальщика. (Пентагон зашфровал))))... Но когда обычный рядовой гражданин страдает... Это уже не есть хорошо.
-
Junior Member
- Вес репутации
- 34
В августе обратились с просьбой помочь расшифровать файлы. По описанию та версия что вы описываете. Запарился с реверсингом, тк код был написан на Делфи, причем очень гадковато) Насчет оптимизаций считаю что вы не правы, не по глупости он это делал, а скорее чтобы усложнить анализ.
По поводу шифрования там чуть не так. Создается глобальный мастер ключ длиной 100 байт. от него 2 раза берется мд5 сумма, и сохраняется в заголовке каждого шифрованного файла, по ней, видимо, дешифратор проверяет для каждого дешифруемого файла что ключ верен. Также в заголовке сохраняется мд5 сумма от первых 29 байт и от всего файла. Также там сохраняется размер файла. Ключ шифрования конкретного файла создается так: для каждого файла выбираются свои 40 индексов,по этим индексам берутся байты из мастер ключа, мд5 сумма от этих байтов использовалась как ключ шифрования. По поводу алгоритма: алгоритм там свой, велосипедный, у меня есть псевдоалгоритмы старого и нового шифрования. В старом алгоритме нашелся нюанс в шифровании, и я написал утилиту которая помогала расшифровать файлы. Но через какое-то время автор выпустил новую версию, где косяк с шифрованием исправлен, и теперь я не знаю как к нему подступится. Также мне попадались файлы где шифрованные блоки накладывались друг на друга, и это доставило проблем.
-
Сообщение от
m0xter4ik
и сохраняется в заголовке каждого шифрованного файла
Ерунда, в этой версии такого не было
Сообщение от
m0xter4ik
от него 2 раза берется мд5 сумма
не от мастер-ключа
Сообщение от
m0xter4ik
Также в заголовке сохраняется мд5 сумма от первых 29 байт и от всего файла
не хранится в заголовке это. Ибо заголовок шифруется
Сообщение от
m0xter4ik
мд5 сумма от этих байтов использовалась как ключ шифрования
У меня это и написано
Microsoft MVP 2012-2016 Consumer Security
Microsoft MVP 2016 Reconnect
-
-
Junior Member
- Вес репутации
- 34
Сообщение от
thyrex
Ерунда, в этой версии такого не было
не от мастер-ключа
не хранится в заголовке это. Ибо заголовок шифруется
У меня это и написано
Вы поняли что я описался, но решили поддеть?)
мд5 сумма берется от 40 байт и используется как ключ шифрования. от этой мд5 суммы еще 1 мд5 сумма ложится в заголовок. Я ожидал что вы догадаетесь о каком заголовке идет речь, но видимо это неочевидно =\ Это тот самый заголовок который дописывается в конец файла, и который заканчивается токеном {CRYPTENDBLACKDC}
Неужели не хранятся суммы?
{21D8AB8BB940FF8F75083752B5CC8D0F} - 21d8ab8bb940ff8f75083752b5cc8d0f - MD5 29 первых байт
{BEC2B613452756AC1B8641CD39A55CBF} - bec2b613452756ac1b8641cd39a55cbf - MD5 всего файла
{29} - SizeOfCryptedBytesInHeader
{0}{255} - crypted regions
{26520}{255} - crypted regions
{290445}{255} - crypted regions
{322290} - original file size
{83}{70}{51}{64}{54}{31}{96}{57}{80}{27}{13}{74}{8 5}{16}{43}{68}{21}{79}{42}{89}{14}{6}{22}{15}{68}{ 50}{56}{49}{96}{74}{60}{14}{2}{35}{69}{8}{63}{31}{ 79}{13}
{022B85797FCBEC3BAB25CE3D117DCB61} - MD5(MD5(KEY_BYTES))
{UPHUCVAZMFXXCIATMSKJWOASSYKJVOASRRKJ-29.09.2014 0@53@087977565} - id
{1SCONST.DBF} - original file name
{CRYPTENDBLACKDC}
Выше пример, шифрованный и оригинальный файлы в кач-ве пруфов приложить?
Как-то высокомерно вы мне ответили, я всего лишь хотел дополнить.
-
Сообщение от
m0xter4ik
Вы поняли что я описался, но решили поддеть?)
никоим образом. Это только Ваши домыслы.
Сообщение от
m0xter4ik
По поводу шифрования там чуть не так
Тогда смысл этого совсем не верен. Я отреагировал, а Вы меня в высокомерности обвиняете.
+ просьба была
Сообщение от
thyrex
Конструктивная критика приветствуется
Microsoft MVP 2012-2016 Consumer Security
Microsoft MVP 2016 Reconnect
-
-
Junior Member
- Вес репутации
- 34
Уважаемый thyrex, прочитал ваши статьи, мне они понравились. Собственно, столкнулся с этим вирусом 6.0.0.1.b, до этого даже не знал о таком, поэтому начал ковыряться в предоставленном мне зашифрованном файле. Конкретно это оказалась база данных 1C. Можно сказать на удачу оказалась. Ибо в начале этого файла сплошняком нули и сложениес ними дает сам себя Кроме того этот блок почти одинаков для всех баз данных. И более того, оказалось, что есть два разных файла базы 1С, находящихся неподалёку друг от друга, а значит зашифрованные одновременно. И опыты я ставил над ними одновременно, сравнивая результаты.
Ну и, собственно, имея из подопытных только сеи "больные" файлы, начал экспериментировать над ними, жуткие эксперименты ставить, и обнаружил несколько интересных фактов, о которых у вас (вроде как) не упоминается (честно скажу, выработалась дурная привычка читать по-диагонали )
1. В зашифрованном блоке из 256 байт в начале файла, ключ идет как то вот так:
xx xx 02 xx xx xx 0a xx xx 18 (не точно) xx xx xx 0e xx xx
xx xx 12 xx xx xx 16 xx xx 1a xx xx xx 1e xx xx
xx xx 22 xx xx xx 26 xx xx 2a xx xx xx 2e xx xx
xx xx 32 xx xx xx 36 xx xx 3a xx xx xx 3e xx xx
и так далее 16 строк по 16 байт 4 раза, что является размером в 1024
т.е. младшая тетрада повторяет номер столбца, а старшая - строки
2. В описателе в конце файлов рассмотрел поближе индексы байтов мастер-ключа. А именно, хотел найти одинаковые индексы, используемые в первом и втором файле. Оказалось, что схожие индексы есть, причем позиции схожих индексов отличаются ровно на 13 (т.е. indices_file_1[a] == indices_file_2[b], причем a = b + 13), для случайной генерации уж слишком красиво
3. Ну и третье, в адресах, на которые указывают смещения к зашифрованным 1, 2 и 3 блокам, не было зашифрованных блоков О_о
С нетерпением жду Вашего комментария на мои наблюдения, возможно они бред сумасшедшего, а может всё таки помогут )
Забыл добавить, в обоих файлах смещение №2 и смещение №3 равны и от смещения №1 отличаются не на много О_о
Новые исследования показали, что это не блок из 1024 байт, а 4 блока по 256, ключ шифрования которых повторяется (возможно какой то косяк со смещением в алгоритме вируса и он просто нашлепал 4 блока подряд)
P.S. всё таки интересно, почему по адресам серверов и почтовых ящиков правоохранительные органы не могут выйти на злоумышленника О_о
P.P.S. windows - самая уязвимая штука, настолько безобразно уязвимая, что не остается сомнений, что это сделано специально, такие злоумышленники наверное 1:10 отстегивают Биллу за такую халяву
Последний раз редактировалось Romeo13; 05.02.2015 в 14:23.
-
Сообщение от
Romeo13
С нетерпением жду Вашего комментария на мои наблюдения, возможно они бред сумасшедшего, а может всё таки помогут )
Вам больше подходит все же http://virusinfo.info/showthread.php?t=173199
Сообщение от
Romeo13
сложениес ними дает сам себя
ну там не только сложение используется. Есть и вычитание, и умножение.
Можете прислать оба файлика или ссылку на их скачивание?
Microsoft MVP 2012-2016 Consumer Security
Microsoft MVP 2016 Reconnect
-
-
Junior Member
- Вес репутации
- 34
Сообщение от
thyrex
Тема почему то закрыта для комментов, само собой я хотел там написать.
Файлы прислать не могу, это базы данных одной фирмы, не хорошо енто...
Сообщение от
thyrex
ну там не только сложение используется. Есть и вычитание, и умножение.
А как он решает что использовать? Потому что в этом файле первый блок шифрует данные, а три других блока шифруют целиком нулевые байты. В случае умножения остались бы нули) А первый блок легко расшифровывается, если от первого блока отнять любой другой. Стало быть ключ прибавляется к блоку чтобы зашифровать его )
-
Сообщение от
Romeo13
А как он решает что использовать?
Там есть строка из цифр от 0 до 9, каждой из которых соответствует отдельный алгоритм преобразований
Сообщение от
Romeo13
В случае умножения остались бы нули)
Так оно идет в сочетании и с другим преобразованием одновременно
Сообщение от
Romeo13
Файлы прислать не могу, это базы данных одной фирмы, не хорошо енто...
Как знаете. Настаивать не могу. Хотя 1С у меня никогда и не было, да и выдавать чужие секреты не собирался. Да и после других шифровальщиков базы 1С присылали при проблемах расшифровки
Microsoft MVP 2012-2016 Consumer Security
Microsoft MVP 2016 Reconnect
-
-
Junior Member
- Вес репутации
- 34
Сообщение от
thyrex
Там есть строка из цифр от 0 до 9, каждой из которых соответствует отдельный алгоритм преобразований
А злоумышленник как узнает? Может это сделано для отвода глаз?
Сообщение от
thyrex
Как знаете. Настаивать не могу. Хотя 1С у меня никогда и не было, да и выдавать чужие секреты не собирался. Да и после других шифровальщиков базы 1С присылали при проблемах расшифровки
Я свяжусь с человеком, который ко мне обратился, и узнаю.
Кстати, сначала я накинулся на зашифрованные фотки, когда еще не знал как действует этот вирус, искал в файле идентификатор JPEG (предполагая что вирус просто мусор в начало файла пишет), находил, удалял всё что идет до него, и фотка становилось нормальной без искажений и ошибок, только сильно уменьшалась (видно картинка предпросмотра, или типа того). К чему я это клоню, что всё таки блоки шифруются только в начале файла ) стало быть многое в теле вируса для отвода глаз? (или автор вируса где то накосячил в коде)
-
Сообщение от
Romeo13
А злоумышленник как узнает?
Эта строка зашита в тело вируса
Сообщение от
Romeo13
всё таки блоки шифруются только в начале файла
Нет.
Microsoft MVP 2012-2016 Consumer Security
Microsoft MVP 2016 Reconnect
-
-
Junior Member
- Вес репутации
- 34
thyrex, не могли бы вы поделиться кодом вируса версии 6.0.0.1b ?
Последний раз редактировалось Romeo13; 07.02.2015 в 16:56.
-
Romeo13, распространение вирусов - уголовно наказуемое мероприятие. Так что этот вариант не приемлем.
Microsoft MVP 2012-2016 Consumer Security
Microsoft MVP 2016 Reconnect
-
-
Junior Member (OID)
- Вес репутации
- 34
Если шифровальщик 6.1.0.0.b.cbf и есть некоторое число файлов оригиналов и зашифрованных (он зашифровал readme от программ), или есть зашифрованные файлы с многократно повторяющимися участками одинаковой информации - возможно нахождение данных для расшифровки?
Да кстати эта версия шифрует txt
-
External Specialist
- Вес репутации
- 34
Alexander Kolchanov, Возможно. Обращайтесь в личку.
-
Junior Member
- Вес репутации
- 34
thyrex как с вами связаться?
-
Так Вы уже написали мне на форуме ЛК
Посылки скачал, спасибо
Последний раз редактировалось thyrex; 19.02.2015 в 23:53.
Microsoft MVP 2012-2016 Consumer Security
Microsoft MVP 2016 Reconnect
-
-
Junior Member (OID)
- Вес репутации
- 34
Вирус просто шифрует файлы или делает шифрованную копию и удаляет оригинал?