- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: Dr52

Источник [12]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/antivirusy/111214

Ссылки в тексте:

[1] rattlersnake: https://habrahabr.ru/users/rattlersnake/

[2] А твой антивирус ловит запароленные архивы?: https://habrahabr.ru/post/276347/

[3] хэшу с VirusTotal: https://www.virustotal.com/en/file/27dd9d1f6f8fc50d8dd21528170bb38111b3f27cdbf58469d8a9fa6f8a078a44/analysis/1443592913/

[4] zip: https://www.virustotal.com/en/file/81dbbfe4eb69381e177adbaa3a23a635d0ffcc759765ae1119af081d0d3580f9/analysis/

[5] rar: https://www.virustotal.com/en/file/830b70acd0936cdbdb5906a14ab0c4bf45b2f7b19e48757aa508c2086d35669a/analysis/

[6] rar5: https://www.virustotal.com/en/file/7b8d8e0a39328f312ed5d2e43062b05c0a26629a51f70dd89e4c89630ef57321/analysis/

[7] (0/53): https://www.virustotal.com/en/file/c1b7f63cb6a601a064b1b38b6056855de8fe530632f9ae271c9dba32ad6bd25c/analysis/

[8] (35/52): https://www.virustotal.com/en/file/1ca1728c0cdc1cfe17ae3d05e3e0087fd10c59f0a9898f6de7b25fe3a59589f7/analysis/

[9] forcecrc32.py: http://www.nayuki.io/page/forcing-a-files-crc-to-any-value

[10] (1/52): https://www.virustotal.com/en/file/c5485e4dc36c8d54ef80abd1c21fe3efb6fc312e815d308ba93f2ee8d67ae8df/analysis/

[11] результат: https://www.virustotal.com/en/file/250a37d1b2a3bb962dc91b1ecda70112347c02add21b6bfef5b2d7f7a7b73ea6/analysis/

[12] Источник: https://habrahabr.ru/post/276503/