• Внимание. Восстановление баз 1С7, 1C8 и Mssql после атаки шифровальщика, подробности и отзывы читайте в профильной теме.

    Внимание. Восстановление архивов RAR и ZIP, образов Acronis и виртуальных машин, баз почтовых программ после атаки шифровальщика, подробности и отзывы читайте в профильной теме.

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

thyrex

Ассоциация VN/VIP
VIP
Сообщения
3,786
Реакции
2,394
В ответ на мою предыдущую статью и возросшее количество успешных расшифровок предыдущих версий этого шифровальщика компанией 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

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