PDA

Просмотр полной версии : «Крякающий» шифровальщик: версия 6



thyrex
21.12.2014, 13:07
В ответ на мою предыдущую статью (http://virusinfo.info/showthread.php?t=169935) и возросшее количество успешных расшифровок предыдущих версий этого шифровальщика компанией DrWeb автор наваял версию 6. В этой статье будут проанализированы 3 из 4-х существующих на данный момент модификаций.

================================================== ==========================

Version 6.0.0.1, 6.0.0.1.fc

Существенные изменения:

Автор отказался от использования графического окна утилиты (хотя и в предыдущей версии оно хоть и создавалось скрытым, но компонент Memo никак не использовался).
Автор отказался от использования кодирования пароля при пересылке и кодирования информации в конфигурационном файле
При шифровании информация на системном диске обрабатывается в последнюю очередь (но мы знаем, что имя системной папки WINDOWS может и отличаться :) )
Реальные имена файлов (включая расширение, которое всегда становится длиной 3 символа) после шифрования заменяются сгенерированной случайным образом строкой из латинских символов такой же длины (в первую очередь файлы с расширениями .psd, .png, .mp3, .gif, .tif, .jpg, хотя реально в списке подлежащих шифрованию есть только .psd и .jpg)
Мастер-ключ шифрования имеет длину в 2048 байт и может содержать не только латинские символы (строчные и прописные), но и цифры.


Типы файлов для шифрования:

*.jpg, *.jpeg, *.doc, *.docx, *.xls, *xlsx, *.dbf, *.1cd, *.psd, *.dwg, *.xml, *.zip, *.rar, *.db3, *.pdf,
*.rtf, *.7z:, .kwm, *.arj, *.xlsm, *.key, *.cer, *.accdb, *.odt, *.ppt, *.mdb, *.dt, *.gsf, *.ppsx, *.pptx, *.txt

Сам блок, необходимый для расшифровки, теперь имеет следующий вид:



StartSignature {CRYPTSTARTDATA}
Количество циклов преобразования
Массив с 256 номерами из мастер-ключа
MD5 мастер-ключа
Смещение первого блока для шифрования
Смещение второго блока для шифрования
Смещение третьего блока для шифрования
MD5 всего файла
Длина блока для замены мусором
Идентификатор зараженного компьютера
Номер версии
Оригинальное имя файла
EndSignature {CRYPTENDBLACKDC}


Если размер файла меньше 1кбайт, то перед количеством циклов записывается еще {rlf+размер_файла}.

Первые две стадии работы шифровальщика не претерпели существенных изменений в сравнении с предыдущей версией, за исключением того, что
- получение буквы системного диска реализуется без всяких "извращений";
- ключ /install уже не используется.

Процедура генерации мастер ключа

- пока идет процесс шифрования (продолжается после рестарта системы), в нем хранится идентификатор зараженного компьютера и 2048-символьный случайный идентификатор.
- когда процесс завершен, там записано {CRYPTFULLEND}

Как писалось выше, мастер ключ теперь имеет длину 2048 байт и может содержать не только латинские символы (строчные и прописные), но и цифры. После проверки наличия выхода в Интернет (проверяются 5 серверов, ответ FINDED), мастер-пароль модифицируется по следующему правилу:

byte[2048] = byte[2048]+byte[2047], byte[2047] = byte[2047]+byte[2046], ..., byte[2] = byte[2]+byte[1]. Таким образом, остается неизменным только самый первый байт мастер-ключа.

О самом шифровании
Автор вируса учел мои предыдущие "наезды" и теперь проверяет размер файлов при шифровании: если он превышает 2000000 Кбайт, то шифрование файла не происходит.

После нахождения подходящего для шифрования файла, вирус:
1) генерирует случайное число из отрезка [0;5001] (будет использоваться в дальнейшем);
2) вычисляет MD5 исходного файла (опять же для отвода глаз не используется функция MD5File, которая есть в используемом модуле);
3) генерирует случайно три адреса блоков, которые будут зашифрованы при первом проходе;
4) генерирует случайное число циклов модификации исходного мастер-ключа (число из отрезка [1;64]) и модифицирует мастер-ключ в соответствии с правилом, указанным выше;
5) выбирает 256 случайных байт из мастер-ключа для генерации ключа шифрования файла;
6) шифрует полученным ключом 1024 байта (если позволяет размер файла) с начала файла + три блока, смещение которых получено в п.3;
7) получает количество блоков в файле размером, равным числу, полученному в п.1, и устанавливает указатель в файле за последним из них, т.е. на начало оставшегося "хвоста" файла;
8) этот "хвост" заменяется мусором, причем файл увеличивается в размере уже на данном этапе;
9) получает количество блоков в файле размером, равным числу длине блока, необходимого для расшифровки, и устанавливает указатель в файле за последним из них, т.е. на начало оставшегося "хвоста" файла;
10) сюда копируется блок информации, нужный для дешифровки.
11) реальное имя файла заменяется мусорным + к нему дописывается "признак заражения":
12) для файла выполняется операция Move, что приводит к простому обновлению информации в таблице размещения файлов и делает ненужной в общем-то операцию Delete для оригинала (возможно, просто проверка на случай непредвиденной ошибки при работе с файлами).

Внимание!!! Из-за ошибки реализации пп. 7-10 файл не сможет восстановить даже оригинальный дешифратор от злоумышленника.

================================================== ==========================

Version 6.1.0.0.b (есть еще 6.1.0.0; раздобыть не удалось)

Типы файлов для шифрования:

*.jpg, *.jpeg, *.doc, *.docx, *.xls, *xlsx, *.dbf, *.1cd, *.psd, *.dwg, *.xml, *.zip, *.rar, *.db3, *.pdf,
*.rtf, *.7z:, .kwm, *.arj, *.xlsm, *.key, *.cer, *.accdb, *.odt, *.ppt, *.mdb, *.dt, *.gsf, *.ppsx, *.pptx

Как видим, из списка для шифрования ушли txt-файлы.
Кроме того, в этой версии:
1) автор отказался от дописывания мусора в конец файла;
2) автор отказался от вычисления MD5 всего файла;
3) внес изменения в работу первых двух этапов (я их не анализировал);
4) проверка наличия доступа в интернет теперь основана на ответе любого из трех серверов.

Сам блок, необходимый для расшифровки, тоже претерпел изменения и теперь имеет следующий вид:



StartSignature {CRYPTSTARTDATA}
Количество циклов преобразования
Массив с 256 номерами из мастер-ключа
MD5 мастер-ключа
Смещение первого блока для шифрования
Смещение второго блока для шифрования
Смещение третьего блока для шифрования
MD5 третьего блока
MD5 второго блока
MD5 первогого блока
MD5 блока в начале файла
Идентификатор зараженного компьютера
Номер версии
Оригинальное имя файла
EndSignature {CRYPTENDBLACKDC}


Если размер файла меньше 1кбайт, то перед количеством циклов всё так же записывается {rlf+размер_файла} .

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

-------------------------------------------------------------------------------------------------

Меры предосторожности или как не допустить порчу информации этим шифровальщиком (впрочем, это относится и к подавляющему большинству других).

Учитывая, что старт шифрованию дает наличие выхода в Интернет, совет нерадивым пользователям, которые

1) не позаботились о бэкапах на отдельных носителях;
2) расшаривают доступ к сетевым дискам и получают шифрование и особо ценной информации (чаще всего баз 1С);
3) используют легкие пароли для доступа к серверным системам через RDP


уж если открываете неизвестное письмо и запускаете вложение из него, то делайте это при отключенном интернете. Это предотвратит шифрование, как минимум, до возобновления доступа в Интернет, как максимум, до перезагрузки и последующего подключения к Интернету. А за это время можно найти способы связаться с "авторами" письма и уточнить факт отсылки информации. И не забудьте сменить пароли, если не смогли предотвратить шифрование