«Крякающий» шифровальщик: версия 6
В ответ на [URL="http://virusinfo.info/showthread.php?t=169935"]мою предыдущую статью[/URL] и возросшее количество успешных расшифровок предыдущих версий этого шифровальщика компанией DrWeb автор наваял версию 6. В этой статье будут проанализированы 3 из 4-х существующих на данный момент модификаций.
============================================================================
[B]Version[COLOR=#0000ff] 6.0.0.1[/COLOR], [COLOR=#0000ff]6.0.0.1.fc[/COLOR][/B]
[U][B]Существенные изменения[/B][/U]:
[LIST][*]Автор отказался от использования графического окна утилиты (хотя и в предыдущей версии оно хоть и создавалось скрытым, но компонент Memo никак не использовался).[*]Автор отказался от использования кодирования пароля при пересылке и кодирования информации в конфигурационном файле[*]При шифровании информация на системном диске обрабатывается в последнюю очередь (но мы знаем, что имя системной папки [I]WINDOWS[/I] может и отличаться :) )[*]Реальные имена файлов (включая расширение, которое всегда становится длиной 3 символа) после шифрования заменяются сгенерированной случайным образом строкой из латинских символов такой же длины (в первую очередь файлы с расширениями [COLOR=#0000ff].psd, .png, .mp3, .gif, .tif, .jpg[/COLOR], хотя реально в списке подлежащих шифрованию есть только .psd и .jpg)[*]Мастер-ключ шифрования имеет длину в [COLOR=#0000ff][B]2048 байт[/B][/COLOR] и может содержать не только латинские символы (строчные и прописные), но и цифры.[/LIST]
[COLOR=#0000ff][B]Типы файлов для шифрования:[/B][/COLOR]
[QUOTE]*.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
[/QUOTE]
Сам [COLOR=#0000ff][B]блок, необходимый для расшифровки[/B][/COLOR], теперь имеет следующий вид:
[QUOTE]
[LIST][*]StartSignature {CRYPTSTARTDATA}[*]Количество циклов преобразования[*]Массив с 256 номерами из мастер-ключа[*]MD5 мастер-ключа[*]Смещение первого блока для шифрования[*]Смещение второго блока для шифрования[*]Смещение третьего блока для шифрования[*]MD5 всего файла[*]Длина блока для замены мусором[*]Идентификатор зараженного компьютера[*]Номер версии[*]Оригинальное имя файла[*]EndSignature {CRYPTENDBLACKDC}[/LIST]
[/QUOTE]
Если размер файла меньше 1кбайт, то перед количеством циклов записывается еще [B]{rlf+размер_файла}[/B].
Первые две стадии работы шифровальщика не претерпели существенных изменений в сравнении с предыдущей версией, за исключением того, что
- получение буквы системного диска реализуется без всяких "извращений";
- ключ /install уже не используется.
[COLOR=#0000ff][B]Процедура генерации мастер ключа[/B][/COLOR]
[spoiler=О конфигурационном файле]
- пока идет процесс шифрования (продолжается после рестарта системы), в нем хранится идентификатор зараженного компьютера и 2048-символьный случайный идентификатор.
- когда процесс завершен, там записано {CRYPTFULLEND}[/spoiler]
Как писалось выше, мастер ключ теперь имеет длину 2048 байт и может содержать не только латинские символы (строчные и прописные), но и цифры. После проверки наличия выхода в Интернет (проверяются 5 серверов, ответ FINDED), мастер-пароль модифицируется по следующему правилу:
[QUOTE]byte[2048] = byte[2048]+byte[2047], byte[2047] = byte[2047]+byte[2046], ..., byte[2] = byte[2]+byte[1]. [/QUOTE]Таким образом, остается неизменным только самый первый байт мастер-ключа.
[COLOR=#0000ff][B]О самом шифровании[/B][/COLOR]
Автор вируса учел мои предыдущие "наезды" и теперь проверяет размер файлов при шифровании: если он превышает [COLOR=#008000][B]2000000 Кбайт[/B][/COLOR], то шифрование файла не происходит.
После нахождения подходящего для шифрования файла, вирус:
1) генерирует случайное число из отрезка [0;5001] (будет использоваться в дальнейшем);
2) вычисляет MD5 исходного файла (опять же для отвода глаз не используется функция MD5File, которая есть в используемом модуле);
3) генерирует случайно три адреса блоков, которые будут зашифрованы при первом проходе;
4) генерирует случайное число циклов модификации исходного мастер-ключа (число из отрезка [1;64]) и модифицирует мастер-ключ в соответствии с правилом, указанным выше;
5) выбирает 256 случайных байт из мастер-ключа для генерации ключа шифрования файла;
6) шифрует полученным ключом 1024 байта (если позволяет размер файла) с начала файла + три блока, смещение которых получено в п.3;
7) получает количество блоков в файле размером, равным числу, полученному в п.1, и устанавливает указатель в файле за последним из них, т.е. на начало оставшегося "хвоста" файла;
8) этот "хвост" заменяется мусором, причем файл увеличивается в размере уже на данном этапе;
9) получает количество блоков в файле размером, равным числу длине блока, необходимого для расшифровки, и устанавливает указатель в файле за последним из них, т.е. на начало оставшегося "хвоста" файла;
10) сюда копируется блок информации, нужный для дешифровки.
11) реальное имя файла заменяется мусорным + к нему дописывается "признак заражения":
12) для файла выполняется операция Move, что приводит к простому обновлению информации в таблице размещения файлов и делает ненужной в общем-то операцию Delete для оригинала (возможно, просто проверка на случай непредвиденной ошибки при работе с файлами).
[ATTENTION][COLOR=#ff0000][B]Внимание!!![/B][/COLOR] [COLOR=#0000cd][B]Из-за ошибки реализации пп. 7-10 файл не сможет восстановить даже оригинальный дешифратор от злоумышленника.[/B][/COLOR]
[/ATTENTION]
============================================================================
[B]Version [COLOR=#0000cd]6.1.0.0.b[/COLOR][/B] (есть еще 6.1.0.0; раздобыть не удалось)
[COLOR=#0000FF][B]Типы файлов для шифрования:[/B][/COLOR]
[QUOTE]*.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
[/QUOTE]
Как видим, из списка для шифрования ушли txt-файлы.
Кроме того, в этой версии:
1) автор отказался от дописывания мусора в конец файла;
2) автор отказался от вычисления MD5 всего файла;
3) внес изменения в работу первых двух этапов (я их не анализировал);
4) проверка наличия доступа в интернет теперь основана на ответе любого из трех серверов.
Сам блок, необходимый для расшифровки, тоже [B]претерпел изменения[/B] и теперь имеет следующий вид:
[QUOTE]
[LIST][*]StartSignature {CRYPTSTARTDATA}[*]Количество циклов преобразования[*]Массив с 256 номерами из мастер-ключа[*]MD5 мастер-ключа[*]Смещение первого блока для шифрования[*]Смещение второго блока для шифрования[*]Смещение третьего блока для шифрования[*]MD5 третьего блока[*]MD5 второго блока[*]MD5 первогого блока[*]MD5 блока в начале файла[*]Идентификатор зараженного компьютера[*]Номер версии[*]Оригинальное имя файла[*]EndSignature {CRYPTENDBLACKDC}[/LIST]
[/QUOTE]
Если размер файла меньше 1кбайт, то перед количеством циклов всё так же записывается [COLOR=#000000][B]{rlf+размер_файла} [/B].[/COLOR]
В этой версии автор пытается проверять, записан ли в конец файла блок, необходимый для расшифровки. Но проверка [B]реализована криво[/B] :) и срабатывает только потому, что буфер, куда читается информация, не очищается перед повторной записью в него. При этом еще и зашифрованный блок в начале файла перезаписывается несколько раз :)
-------------------------------------------------------------------------------------------------
[COLOR=#0000cd][B]Меры предосторожности[/B][/COLOR] или как не допустить порчу информации этим шифровальщиком (впрочем, это относится и к подавляющему большинству других).
Учитывая, что старт шифрованию дает наличие выхода в Интернет, совет нерадивым пользователям, которые
[COLOR=#141414][FONT=Tahoma]1) не позаботились о бэкапах на отдельных носителях;
2) расшаривают доступ к сетевым дискам и получают шифрование и особо ценной информации (чаще всего баз 1С);
3) используют легкие пароли для доступа к серверным системам через RDP
[/FONT][/COLOR]
[INFORMATION]уж если открываете неизвестное письмо и запускаете вложение из него, то делайте это при отключенном интернете. Это предотвратит шифрование, [B]как минимум[/B], до возобновления доступа в Интернет, [B]как максимум[/B], до перезагрузки и последующего подключения к Интернету. А за это время можно найти способы связаться с "авторами" письма и уточнить факт отсылки информации. И [B][COLOR="#FF0000"]не забудьте сменить пароли[/COLOR][/B], если не смогли предотвратить шифрование
[/INFORMATION]