Со временем в арсенале антивирусов появлялись всё более замысловатые способы обнаружения вирусов. Вирусы, впрочем, тоже не стояли на месте, но что ещё хуже — они плодились всё быстрее и быстрее. Вдобавок, всё чаще встречались вредоносные программы, специально разработанные или автоматически сгенерированные для небольшого числа жертв. У них куда больше шансов ускользнуть от внимания антивирусных компаний и, соответственно, антивирусов.
Следующий шаг: замечать вирусы, сравнивая программы, которые установлены на миллионах персональных компьютеров. Если у незначительного количества пользователей вдруг появляется новый исполняемый файл, распространяемый неизвестно кем — это по меньшей мере подозрительно. Подобный метод может служить дополнительным уровнем обороны против вирусов, о которых ещё не знают антивирусные программы.
Компания Symantec, разработчик одного из наиболее популярных антивирусных пакетов в мире, изучала такую возможность с 2007 года. В период с 2007 по 2010 год она накопила десятки терабайт анонимизированных сведений о приложениях, которые устанавливают её пользователи. Специалисты из Symantec Research Labs и исследователи из университета Карнеги-Меллона несколько лет корпели над этим гигантским массивом информации.
Этот объём и сейчас неплохо укладывается в определение «больших данных», а уж три года назад — и подавно. Изучению подлежали 900 миллионов исполняемых файлов, занимающие в сумме около 60 терабайт (это чуть больше половины всего массива, накопленного Symantec к тому времени). Файлы были переданы с 47,8 миллионов различных компьютеров.
Лишь 50 миллионов из этих файлов встречались на нескольких машинах. Остальные 850 миллионов присутствовали в единственном экземпляре. Часть из них представляла собой уникальную модификацию нормального приложения — например, скомпилированное «на лету» приложение .NET. Однако многие были редкими мутациями вредоносных программ.
Редкость — это одна из эвристик, помогающих отличить подозрительные файлы. «Приличные» приложения, как правило, встречаются на множестве компьютеров, принадлежат известному разработчику и обладают другими характерными чертами. Далеко не всякое приложение, не соответствующее этому описанию, окажется вирусом, но вероятность этого довольно высока. Есть и другие эвристики: например, очевидно, что на «грязных» компьютерах шансы встретить заражённый файл выше, чем на машине, за которой не замечено ничего странного.
Специалисты предложили построить гигантский граф, вершинами которого являются компьютеры и отдельные исполняемые файлы. Файлы будут связаны дугами с каждым компьютером, на котором они замечены. Когда есть граф, можно использовать алгоритм распространения доверия, чтобы оценить репутацию каждого файла. Если репутация недостаточно велика, система признает файл вредоносным.
Идея логично вытекала из прошлой работы исследователей из университета Карнеги-Меллона: они успешно применили аналогичный метод для того, чтобы искать мошенников, обманывающих посетителей интернет-аукционов. Тогда они использовали граф, где вершинами были продавцы и покупатели, а дугами — сделки между ними. «Компьютерра» описывала это в статье «Как анализ данных раскрывает преступные схемы»:
«Пользователи аукциона могут находиться в одном из трёх состояний: мошенник, пособник и честный пользователь. Чтобы прояснить, кто есть кто, служит алгоритм распространения доверия. Он действует так: вершины вычисляют своё состояние на основании сообщений, полученных от соседей, а затем переводят его в новые сообщения для соседей при помощи матрицы распространения. Матрица распространения — это самое важное. В ней указано, какова вероятность связи между вершинами с разными состояниями. По сути дела, получается нечто отдалённо напоминающее игру «Сапёр», где нужно угадывать клетки с бомбами по цифрам на соседних клетках.
Нет комментариев