» » Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal

 

Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal

Автор: admin от 12-01-2018, 14:00, посмотрело: 23

Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal


Всем привет. Ниже будет много глупого текста, ностальгических воспоминаний и школотного кода. Кроме того будет рассмотрена эффективность сервиса VirusTotal, а также антивирусных движков в отношении исполняемых файлов.

Quick Batch File Compiler (далее — QBC)
  • 7za.exe из пакета 7z1800-extra.7z (далее — 7Z)

  • upx.exe из пакета upx394w.zip (далее — UPX)

  • файл eicar.com, скачать можно, например, тут (далее — Eicar)

  • cамый базовый компьютер с выходом в интернет под управлением любой ОС Windows



  • Часть 2. Совсем немного теории



    Для того, чтобы двигаться дальше, давайте разберёмся, о чём пойдёт речь. В настоящий момент, как, впрочем, и ранее, активно продвигается тема антивирусов. Дескать, антивирусы помогают не допустить потери важных данных, антивирусы спасают от уязвимостей, антивирусы — то, антивирусы — сё и так далее.



    При этом зачастую рядовой пользователь даже не понимает, что антивирус — это не просто сканер, это и резидентная защита, и эвристик, а зачастую — и проактивная защита, файервол и песочница.



    Каждому из этих компонентов мы можем посвятить не то что статью — книгу, но остановимся на самом базовом: сканере.



    Этот компонент не позволит предотвращать соединения с вредоносными сайтами, он не будет ловить вредоносный код на лету, но он позволяет проверить файл и дать ответ: стоит его хранить — или лучше удалить сразу и навсегда.



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



    Отдельно хотелось бы отметить ресурс VirusTotal — он позволяет не только проверить файл различными движками антивирусов, но и представляет собой некую песочницу по тестированию вредоносного (и вообще любого) кода. Плюс платформы — бесплатность, минус — все образцы, которые высылаются на VirusTotal впоследствии передаются всем антивирусным лабораториям.



    Именно по этой причине ниже я не буду давать ссылки на страницы с результатами сканирования, а предоставлю скриншоты с этими результатами, полученными в ходе работы. Очевидно (и я хочу в это верить!) после этой статьи результаты улучшатся.



    Авторы вредоносного кода чрезвычайно часто используют упаковщики и протекторы, которые не только сжимают вредоносный файл, но и затрудняют его детектирование по сигнатурам, а также его последующий анализ. При использовании ворованных лицензий протекторов типа WinLicense и Themida обычно антивирусные лаборатории не затрудняют себя распаковкой, а просто добавляют сигнатуры протектора с ворованным ключом в детект (знаменитые детекты типа Trojan:W32/Black.A). Это приводит к появлению ложных срабатываний — аналогичными ворованными лицензиями пользуются авторы генераторов ключей, патчеров и некоторых программ, которые по сути вредоносными не являются, но тем не менее защищаются от реверсинга.



    Поскольку всё, описанное в этой статье, ниже будет предоставлено читателю для ознакомления, я не работал с реальным вредоносным кодом (хотя ниже предоставлю и его результаты сканирования), а использовал файл Eicar, популярный при тестировании антивирусов: это — своеобразная заглушка, на которую любой антивирус должен давать стойкий детект.



    Итак, приступим.



    Часть 3. Практика



    [spoiler=Итак, как сейчас детектируется Eicar на VirusTotal]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
    [/spoiler]

    Признаться честно, увиденное меня несколько поразило, потому что два антивирусных движка — Comodo и Malwarebytes почему-то решили не следовать общим стандартам и проигнорировать детект. Тем не менее результат очевиден — файл имеет детект, близкий к 100%.



    Как мы договаривались в самом начале, мы — полная школота, а потому не будем изобретать свои методы упаковки, а просто упакуем файл в архив с помощью 7Z:



    7za a eicar.7z eicar.com


    [spoiler=Проверим полученный файл на VirusTotal]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
    [/spoiler]

    Да, детектов стало поменьше, поскольку не все антивирусные движки включают распаковщик архивов 7Z (ну либо это настройка не включена в VirusTotal по умолчанию) — но всё равно детект высок.



    Усложняем задачу: пакуем файл в архив с паролем. Пусть пароль будет fun:



    7za a -mhe=on -pfun eicar-fun.7z eicar.com


    [spoiler=Итог проверки очевиден]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
    [/spoiler]

    Файл — чист, поскольку даже имея процедуру распаковки антивирус не знает пароль на файл.



    Детект снят — но мы не получили исполняемый файл.



    В реальных пакерах решение бывает достаточно сложным и мы не будем вдаваться в эти подробности. Воспользуемся услугами QBC и напишем простейший скрипт:



    7za e -pfun eicar-fun.7z
    start eicar.com


    Скрипт просто распаковывает архив и запускает полученный файл. QBC позволяет не только сформировать простейший исполняемый файл на основе этого скрипта, но и включить в этот файл необходимое (7za.exe и архив eicar-fun.7z), доступ к которому выполняется через переменную %myfiles%.



    Полученный выполняемый файл может быть без открытия окна терминала (так называемый «Ghost»), а это нам как раз и надо:



    Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal


    Итоговый код выглядит следующим образом:



    cd %myfiles%
    7za e -pfun eicar-fun.7z
    start eicar.com


    После компиляции полученный файл dumb_bat.exe распаковывает Eicar и запускает его.



    [spoiler=Смотрим итог проверки этого файла на VirusTotal]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
    [/spoiler]

    Забавно, детект уменьшился с 60 для неупакованного файла и 41 для архива до 17 — при этом ни один из антивирусных движков не обнаружил Eicar, детекты явно имеют эвристический характер, а в ряде случаев напоминают ложное срабатывание (DrWeb, Baidu и др.)



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



    cd %myfiles%
    if exist d:/* (7za e -pfun eicar-fun.7z)
    start eicar.com


    [spoiler=Смотрим детекты]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal


    Особое внимание — на низ таблицы, я его выделил отдельно, потому что на одну картинку всё не влезало:



    Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
    Итак, проверка диска D «отломала» детекты китайцев, россиян и украинцев: Baidu, DrWeb, Zillya. При этом указанные движки, как и ряд других, были остановлены по таймауту (!)



    [spoiler=Справедливости ради стоит отметить, что повторный запуск всё-таки довёл сканирование до конца]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
    [/spoiler]

    Однако в этом случае эксперимент нельзя считать «чистым», поскольку прошло значительное время после первой проверки.



    Мне эта ситуация показалась любопытной — и я изменил строчку в коде на следующую:



    ...
    if [b]not[/b] exist d:/* (7za e -pfun eicar-fun.7z)
    ...


    [spoiler=Итог проверки впечатляющий]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
    [/spoiler]

    [spoiler=Однако опять повторный скан всё-таки состоялся.]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
    [/spoiler]

    Налицо разница в работе эвристиков ряда антивирусов (AegisLab и Baidu почему-то не обнаружили ничего во втором случае), а также налицо проблема в сканировании в случае проверки на наличие диска D. Впрочем, возможно это совпадение, хотя в ходе всего исследования я больше ни разу не наблюдал «отвала» такого количества движков сразу.



    Движемся дальше — добавим нашему файлу интерактивности, которой точно не будет ни в одной тестовой среде. Изменим скрипт — сделаем его полноценным консольным (не «Ghost»), а также добавим команду pause:



    @cd %myfiles%
    @pause
    @if exist d:/* (7za e -pfun eicar-fun.7z) > nul
    @start eicar.com


    Вот как выглядит итог выполнения такого файла:



    Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal


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



    [spoiler=Детект такого файла]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
    [/spoiler]

    6 детектов из 67. Шесть, Карл! Все — эвристические. И скорее всего ничего не подозревающий пользователь посчитает файл безопасным.



    Интересный итог я получил после сжатия итогового файла с помощью UPX командой:



    upx --best --ultra-brute --8086 --backup --compress-icons=3 dumb_bat3.exe


    [spoiler=Если делать это для самого первого нашего кода - который был вообще без проверок, то по детектам отвалился Antiy-AVL]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
    [/spoiler]

    [spoiler=Для последней же версии файл уменьшился, суть не изменилась, а вот детектов прибавилось]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
    [/spoiler]

    Детекты добавили китайцы, а вот украинский Zillya благополучно провалил тест.



    Часть 4. Выводы



    А можно без них? ;) Ну ладно.



    Безусловно, описанное выше — это примитивно, просто и в жизни всё не так. Хотя бы потому, что в реальности выполнение нашего файла сначала вызовет срабатывания проактивки, а потом будет заблокировано резидентным модулем, который увидит итоговый файл Eicar.



    Но дело не в том.



    Дело в том, что современные антивирусные сканеры так и остались барахлом, которым были десяток-два лет назад, абсолютно пасующим перед простейшими видами упаковки кода. Решения в виде тестовых сред — «песочниц», эвристических анализаторов и т.д. только добавили неразберихи, ложных срабатываний, но по сути не защищают от реальной угрозы. Со старым, открытым и разжёванным до потрохов UPX как был бардак — так он и остался. А ведь я вполне мог упаковать не файл, вызывающий вредоносную активность, а непосредственно код, работать не с файлами на диске в %temp%, а в памяти, использовать не свободно доступные утилиты, а собственные или закрытые разработки — и таким образом обойти срабатывание резидентной защиты. Я вполне мог добавить интересные элементы интерфейса или скопировать таковой из распространённой программы — и обойти проактивку у неискушённого пользователя, который просто будет соглашаться с любыми запросами, доверяя тому, что запустил.



    То, что мы сделали выше — примитивный способ обмануть антивирус, который может понять и реализовать практически любой. И он сработал. Что говорить про искушённых специалистов!



    Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal


    Архив с файлами, скриптами и результатами можно скачать здесь.



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




    • Файловый инфектор Sality.aa



      [spoiler=Результаты сканирования самого инфектора]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
      [/spoiler]

      [spoiler=Позор джунглям]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
      [/spoiler]

      [spoiler=Результаты сканирования 'упаковки']Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
      [/spoiler]

    • Довольно громко нашумевший совсем недавно локер Petya



      [spoiler=Результаты сканирования самого инфектора]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
      [/spoiler]

      [spoiler=Дважды позор джунглям]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
      [/spoiler]

      [spoiler=Результаты сканирования 'упаковки']Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal
      [/spoiler]




    [spoiler=Если Вы дочитали всё это до конца - нажмите здесь]Об особенностях сканирования исполняемых файлов антивирусами и доверии результатам VirusTotal


    Искренне надеюсь, что я был не скучен и ещё могу ясно излагать мысли по теме, как было когда-то раньше.

    [/spoiler]

    Источник: Хабрахабр

    Категория: Программирование

    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
    Введите два слова, показанных на изображении: *