Перейти к содержанию
Сергей Ильин

Битые самплы: детектировать или нет?

Recommended Posts

Сергей Ильин

Обсуждение результатов теста на обнаружение полиморфных вирусов выявило серьезные разногласия в вопросе правильности детектирования "битых" (не рабочих) вариантов полиморфных вирусов.

Представители компании Доктор Веб считают неправильным детектирование работоспособных самплов, которые по какой-то причине были неудачно заражены. Это принципиальная позиция компании, которая стремится оградить пользователя от опасности, а не вычищать из файлов мусор.

С другой стороны Avira, Лаборатория Касперского, Symantec, Avast и BitDefender, взявшие на Virut'е все большую часть самплов, очевидно считают необходимым детектировать "битые по Доктору" самплы.

Взгляды и доводы диаметрально противоположные. Детектировать или нет?

На лицо конфликт двух подходов, который выливается в то, что результаты любого теста на качество детектирования будут восприняты неоднозначно.

Хочу высказать свою точку зрения. Если какой-либо файл был заражен вирусом, не важно прошло заражение корректно или нет, пользователь должен быть об этом проинформирован. Если же возможно вылечить "битый" файл и вернуть ему первоначальный вид, то это должно быть сделано.

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

Поделиться сообщением


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

Правильней будет сказать - "детектирование работоспособных файлов, которые по какой-то причине были неудачно заражены".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
sww
Представители компании Доктор Веб считают неправильным детектирование неработоспособных самплов, которые по какой-то причине были неудачно заражены. Это принципиальная позиция компании, которая стремится оградить пользователя от опасности, а не вычищать из файлов мусор.

Сэмплы вполне работоспособны, калькуляторы и нотепады запускаются и работают, просто они другие файлы не заражают.

Хочу высказать свою точку зрения. Если какой-либо файл был заражен вирусом, не важно прошло заражение корректно или нет, пользователь должен быть об этом проинформирован. Если же возможно вылечить "битый" файл и вернуть ему первоначальный вид, то это должно быть сделано.

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

Очень хочется послушать других вендоров. Где это большинство? Автодятлом наделали или параноидальной эвристикой? Или "проще записать, чем потом объяснять"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dan
Рекомендую для начала ознакомиться с азами структуры PE-файла и с загрузчиком ОС, а потом уже говорить про логику и оверлей.

Несколько лет назад видел прогу, которая при наличии оверлея в своём файле, выделяла память, зачитывала оверлей в эту память и запускала.

Билдер проги так подключал плагины с видеоэффектами если они были нужны автору.

Не факт конечно, что вирус бы "криво" заразил бы такой файл, но шанс, что с виду чистый файл вдруг запустит виря, есть!

И не волнуйтесь Вы так, со структурой PE-файла я знаком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
sww
Несколько лет назад видел прогу, которая при наличии оверлея в своём файле, выделяла память, зачитывала оверлей в эту память и запускала.

Билдер проги так подключал плагины с видеоэффектами если они были нужны автору.

Не факт конечно, что вирус бы "криво" заразил бы такой файл, но шанс, что с виду чистый файл вдруг запустит виря, есть!

И не волнуйтесь Вы так, со структурой PE-файла я знаком.

Я, кстати, нисколько не волнуюсь, спокоен как танк. А то, что Вы написали - бред.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
A.
Я, кстати, нисколько не волнуюсь, спокоен как танк. А то, что Вы написали - бред.

Можно вопрос ? Вячеслав, вот вы лично - сколько процедур детектирования сложных полиморф\метаморф вирусов написали (и каких конкретно) ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
E.K.
Взгляды и доводы диаметрально противоположные. Детектировать или нет?

IMHO детектить или нет криво зараженные или битые файлы - личное дело каждого АВ вендора. А вот в тестах таких файлов быть не должно.

Кстати, предлагаю составить список... "неоднозначных" файлов:

1. Криво зараженный файл: работоспособен, но вирус никогда не получает управления. (подмножество категории: криво вылеченные файлы).

2. Криво зараженный файл: неработоспособен.

3. Упакованный малвар, порезан посередине или испорчен, код распаковщика отсутствует или сильно испорчен. Файл неработоспособен.

4. Порезанный или испорченный малвар-скрипт.

5. Мусор, который некоторые почтовые черви (вымершие почти) посылали вместо себя в аттаче.

6. Шифрованные скрипты, которые малвары качают с управляющих серверов.

7. Что еще?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
sww
Можно вопрос ? Вячеслав, вот вы лично - сколько процедур детектирования сложных полиморф\метаморф вирусов написали (и каких конкретно) ?

Понятия не имею. Причем тут сабж?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
A.
IMHO детектить или нет криво зараженные или битые файлы - личное дело каждого АВ вендора.

Это особенности движков каждого конкретного вендора. Если кто-то находит вирусный код в файле, даже если этот код управление не получает - так что же им - ноги своему движку отрубать исскуственно ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dr_dizel
...Если кто-то находит вирусный код в файле, даже если этот код управление не получает ...

Тогда встаёт вопрос о возможности этого "кто-то" в восстановлении некорректно зараженного файла, иначе этот детект - пустышка. Следовательно, проверка АВ на детект (с битыми сэмплами) без лечения - некорректна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
A.
Тогда встаёт вопрос о возможности этого "кто-то" в восстановлении некорректно зараженного файла, иначе этот детект - пустышка. Следовательно, проверка АВ на детект (с битыми сэмплами) без лечения - некорректна.

О чем и речь. Лечение хорошо бы тоже проверить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Black Angel

Считаю, что такие файлы тоже нужно детектить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dan
О чем и речь. Лечение хорошо бы тоже проверить.

Тут есть другой нюанс.

А как?

Как проверить лечение?

Скажем антивирус1 из 10000 файлов вылечил 5000.

А антивирус2 - 6000.

Антивирус2 круче?

Неправда, так как надо ещё все файлы проверить на корректность лечения.

А как?

Запускать?

А если это ДЛЛ-ки? Или файлы изначально незапускаемые простым нажатием enter.

Сравнивать с эталонами? Так в 99% случаев точного совпадения не будет. А как оценивать разницу тоже не понятно.

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

А это ещё больше осложняет всю процедуру.

Слишком много вопросов.

По моему мнению будет сложнейшая методология и очень сложный тест.

А результаты всё равно все поставят под сомнение ;) .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dot_sent
А как?

Как проверить лечение?

Скажем антивирус1 из 10000 файлов вылечил 5000.

А антивирус2 - 6000.

Антивирус2 круче?

Неправда, так как надо ещё все файлы проверить на корректность лечения.

А как?

Запускать?

А если это ДЛЛ-ки? Или файлы изначально незапускаемые простым нажатием enter.

Сравнивать с эталонами? Так в 99% случаев точного совпадения не будет. А как оценивать разницу тоже не понятно.

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

А это ещё больше осложняет всю процедуру.

Есть, собственно, одна идея. Если сильно глупая - просьба не пинать :)

Допустим, у нас есть некий экзешник А и его зараженный и потом вылеченный вариант А'. Что, если сравнивать их по поведению? Написать робота, который будет последовательно запускать, скажем, А, A' и совместно с каждым из них набор диагностических утилит типа FileMon + RegMon + что-то ещё? Тогда можно один раз снять набор таких отчетов для чистого файла А, потом автоматически получить аналогичные от вылеченных файлов и их сравнить, а по степени сходства судить о корректности лечения...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dan
Есть, собственно, одна идея. Если сильно глупая - просьба не пинать :)

Допустим, у нас есть некий экзешник А и его зараженный и потом вылеченный вариант А'. Что, если сравнивать их по поведению? Написать робота, который будет последовательно запускать, скажем, А, A' и совместно с каждым из них набор диагностических утилит типа FileMon + RegMon + что-то ещё? Тогда можно один раз снять набор таких отчетов для чистого файла А, потом автоматически получить аналогичные от вылеченных файлов и их сравнить, а по степени сходства судить о корректности лечения...

Что делать с .dll, .scr ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dot_sent
Что делать с .dll, .scr ?

.scr - экзешник, так что с ними все то же самое.

С .dll - у меня лично идей нет. Можно, конечно, запускать приложение, которое загрузит исследуемую библиотеку, но лично я писать парсер для отчетов в таком случае не возьмусь :) Впрочем, идея на полноту и не претендовала...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
alexgr

свои 5 копеек. Вылеченный - не значит идентичный исходному, а просто с восстановленной функциональностью. При чем тут сравнения вовсе? Именно функциональность и есть критерием жизни этих файлов после дезинфекции (западное словечко, но правильное)

Возвращаясь к теории надежности - исправный и работоспособный не есть синонимы. Второй может иметь дефекты существенно не влияющие на функциональность или показатели качества функционирования

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Сергей Ильин
Возвращаясь к теории надежности - исправный и работоспособный не есть синонимы. Второй может иметь дефекты существенно не влияющие на функциональность или показатели качества функционирования

Вот вот, кто и как это будет проверять? На каких критериях основываться при анализе вылеченных файлов?

А если зараженных/вылеченных файлов, например, 1000 или 10000? :)

Кстати, предлагаю составить список... "неоднозначных" файлов:

А как на счет различных версий ОС? Если мы проводим тест на XP, но зараженный сампл на ней не запускается. Исключаем из коллекции? Вопрос весьма спорный ИМХО.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ThreatSense®Vitalik

Невозможно поставить АВ в равные условия, если имеются такие спорные моменты. Потому зловреды в базе должны быть 100% НЕ битые и "зловредные" (в смысле, чтобы не фолсить).

Вирус по определению должен причинать вред. А если нет вреда, то нет и проблемы.

Отредактировал Umnik
даже объяснять не буду

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ASMax
Сравнивать с эталонами? Так в 99% случаев точного совпадения не будет.

Можно сравнить с эталонными файлами посекционно на предмет совпадения первых MIN(VirtualSize, RawSize) байт. Импорт и ресурсы (если менялись) можно сравнить с эталонами уже не как массивы, а как соответствующие структуры, исключив эти области из общей проверки. Плюс сверить ключевые поля заголовков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dr.Golova
Можно сравнить с эталонными файлами посекционно на предмет совпадения первых MIN(VirtualSize, RawSize) байт. Импорт и ресурсы (если менялись) можно сравнить с эталонами уже не как массивы, а как соответствующие структуры, исключив эти области из общей проверки. Плюс сверить ключевые поля заголовков.

И даже при полном совпадении это не означает корректное лечение - у инсталлятора мог повредиться оверлей с данными. Без полной установки понять что он умер невозможно. Часто даже при "ручной" проверке это сложно понять.

А ведь файлы в исталляшке могут быть изначаль повреждены, как например одня из dll корейской локализации в офицальном аппловском iTunes :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  • Сообщения

    • demkd
      ---------------------------------------------------------
       4.15.6
      ---------------------------------------------------------
       o Исправлена ошибка из-за которой автоматически не замораживались потоки внедренные в uVS,
         если их код НЕ принадлежал одной из загруженных DLL.

       o Добавлена поддержка английского интерфейса при запуске под Win2k.

       
    • demkd
      Иногда спрашивают, как загрузиться в командную строку без диска, я постоянно забывают дополнить Общий FAQ.
      И вот наконец-то я про это вспомнил:
      Q: Как запустить uVS с командной строки Windows без использования загрузочного диска/флешки для работы с НЕактивной системой.
         (!) Для текущей версии uVS работа с командной строки доступна только для 32-х битных систем. (что бы работало в x64 системах, нужно делать uVS x64 и это запланировано).
         1. Если у вас Windows 8 и старше, то запустите start.exe и нажмите кнопку "Перезагрузить систему в меню дополнительных параметров загрузки".
         2. Далее в меню "Поиск и устранение неисправностей->Дополнительные параметры->Командная строка"
         3. Выберите админскую учетную запись и введите для нее пароль.
         4. Запустите start.exe из каталога uVS с командной строки.
            (!) Обычно система расположена на диске D.
                Например: uVS лежит в каталоге С:\uvs (в командной строке это будет D:\uvs)
                Для запуска uVS необходимо последовательно набрать 3 команды, завершая каждую нажатием клавиши Enter.
                1. d:
                2. cd d:\uvs
                3. start.exe
         5. Выбрать каталог Windows (обычно D:\Windows).
         Если у вас Windows 7 и младше, то в меню вы можете попасть только нажав F8 при перезагрузке системы
         (!) Использовать msconfig для этого не рекомендуется, система может не загрузиться после его использования.
         Для младших систем доступен только безопасный режим с поддержкой командной строки, т.е. система будет активна.
       
    • demkd
      ---------------------------------------------------------
       4.15.5
      ---------------------------------------------------------
       o Обновлена функция трансляции переменных окружения USERPROFILE, HOMEPATH, LOCALAPPDATA, APPDATA.
         Значения этих переменных теперь зависят от того где физически находится lnk файл.
         Теперь с разбором lnk файлов будет меньше проблем, но я все же рекомендую удалять ссылки
         на отсутствующие объекты только под текущем пользователем.

       o Исправлена функция разбора путей не содержащих букву диска.

       o Исправлена функция разбора аргументов rundll32.

       o Обновлен start.exe.
         o Обновлен интерфейс.
         o Изменена кнопка по умолчанию, теперь это "запуск под текущим пользователем".
         o Исправлена ошибка: при определенных параметрах повторный запуск uVS в режиме "до запуска эксплорера" был невозможен.
         
    • Ego Dekker
      Домашние антивирусы для Windows были обновлены до версии 17.1.13.
    • demkd
      ---------------------------------------------------------
       4.15.4
      ---------------------------------------------------------
       o Обновлен интерфейс.

       o Из Ф портировано окно "История запуска процессов" для комфортного распутывания цепочек запуска и взаимодействия
         процессов с задачами.
         Доступ к окну можно получить через меню "Дополнительно->История процессов и задач".
         В первом списке отображается история запуска процессов с момента старта системы (по данным журнала Windows).
         В списке доступен фильтрующий поиск по имени, PID и фильтрация по родительскому процессу (см. контекстное меню).
         В нижнем списке отображается история воздействия процессов на задачи с момента запуска системы, а если установлен
         фильтр родительского процесса то отображаются лишь те задачи с которым взаимодействовал родительский процесс.
         (!) История доступна лишь при активном отслеживании процессов и задач (Твик #39).
         (!) История не доступна для неактивных систем.

       o Обновлен формат образа автозапуска, образы созданные v4.15.4 не будут читаться старыми версиями uVS.
         Добавлено:
          o Мгновенный срез активности процессов на момент завершения создания образа (Запустить->Просмотр активности процессов [Alt+D])
          o История процессов и задач (Дополнительно->История процессов и задач)
            (!) История доступна лишь при активном отслеживании процессов и задач (Твик #39).
          o Защита образа от повреждений.

       o Утилита cmpimg обновлена до версии 1.04 для поддержки нового формата образов автозапуска.

       o Утилита uvs_snd обновлена до версии 1.05 для поддержки нового формата образов автозапуска.

       o Теперь при подключении к удаленной системе всегда запускается "v" версия uVS, если клиентская система не младше Vista.
         На удаленной системе всегда запускается обычная версия uVS для совместимости с системами младше Vista.

       o Исправлена ошибка отображения имени процесса при работе под Win2k в окне "Активность процессов".
         (!) Английская версия uVS НЕ_совместима с Win2k, с Win2k работает только русская версия.

       o Исправлена ошибка разбора состояния TCPIPv6 соединений.
       
×