Как поймать вирус в запароленом архиве

в 12:05, , рубрики: virustotal, антивирусы, информационная безопасность, мистика

Прочитав статью rattlersnake А твой антивирус ловит запароленные архивы? я прошел стадии от неверия через сомнение к разочарованию и обратно к пониманию.

Как поймать вирус в запароленом архиве - 1

Как вполне правильно отмечают в комментариях, получение содержимого запароленного архива без знания пароля невозможно, следовательно, невозможна и проверка. Но значит ли это, что детект вируса невозможен? Как мне кажется, я разобрался, почему такое возможно и почему такой метод имеет право на жизнь.

Желание проверить правильность описанной в статье ситуации и разобраться, как такое возможно, побудили меня провести небольшой эксперимент.

Проверяемый файл info.exe был найден по хэшу с VirusTotal и запакован архиватором WinRar в три архива: zip, rar и rar версии 5.

На все архивы был установлен сложный пароль для исключения его подбора антивирусом либо использования стандартных паролей. К моему удивлению, антивирус Fortinet сработал на архивах zip и rar, но не сработал на rar5!

Как поймать вирус в запароленом архиве - 2

В комментариях к статье была версия, что это — «false positive, ложное срабатывание». Но эта версия неправдоподобна, так как это ложное срабатывание выдает тот же самый детект, что и незапакованный вирус. Более того, при использовании разных паролей полученный архив должен значительно отличаться. Тут должен работать какой-то другой механизм, но какой?

Пытясь понять, чо влияет на срабатываение антивируса, я изменил один байт в файле и снова запаковал его в архивы с паролем. После проверки меня ждал другой сюрприз – хотя детект вируса в архиве пропал (0/53), пропал детект этим антивирусом и неупакованного файла, хотя большинство остальных антивирусов продолжали его видеть (35/52)!

И тут мне в голову пришла отличная идея:

  • Смотрим, какие свойства файла доступны в архиве – и видим контрольную сумму CRC32:

    Как поймать вирус в запароленом архиве - 3

  • Создаем пустой файл такого же размера, например командой fsutil file createnew info.exe 450362
  • Подгоняем его CRC32 под значение у оригинального файла (например, так: py.exe forcecrc32.py info.exe 0 76718968) или просто устанавливая значение первых четырех байт в 67 EE C6 57:

    Как поймать вирус в запароленом архиве - 4

  • Запаковываем его в архив с паролем и проверяем CRC32 — совпадает
  • Проверяем полученный архив на VirusTotal

Бинго! Fortinet теперь считает, что в архиве находится вирус (1/52).

Как поймать вирус в запароленом архиве - 5

Проверяем на всякий случай и получившийся exe файл – и видим странный результат – Fortinet продолжает находить в файле вирус. Похоже, он детектит его исключительно по CRC32!

Как поймать вирус в запароленом архиве - 6

Да, похоже, чудес не бывает и настоящий детект вируса в запароленом архиве невозможен.

С другой стороны, учитывая что Fortinet занимается программно-аппаратными комплексами сетевой безопасности, и цель — не пропустить писмо с вредоносным вложением, то такой подход имеет право на жизнь.

Если мы знаем CRC32 вредоносного файла, будет не лишним предупредить пользователя, когда такой файл найдется в архиве с паролем.

Автор: Dr52

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js