1. Анализ показывает, что подавляющее большинство антивирусов используют сигнатурный поиск с жесткой привязкой к точке входа или физическому смещению в файле. Что все это значит? Не вдаваясь в неразбериху терминологических тонкостей, отметим, что сигнатурой называется уникальная последовательность байт, однозначно идентифицирующая вирус. Сигнатура может быть как сплошной (например, "DE AD BE EF") или разряженной (например, " DE ?? ?? AD ?? BE ** EF", где знак "??" обозначает любой байт, а "**" любое количество байт в данной позиции). Поиск по разряженной антивирусной сигнатуре иначе называется поиском по маске и это наиболее популярный алгоритм распознавания на сегодняшний день.
Для достижения приемлемой скорости сканирования, антивирусы практически никогда не анализируют весь файл целиком, ограничиваясь беглой проверкой одной-двух ключевых точек (например, окрестностей точки входа в файл, т. е. тех ячеек, с которых и начинается его выполнение). Реже используются привязка к смещению антивирусной сигнатуры относительно начала файла.
Тут есть различные методики. Как вариант — использовать сигнатуру, составленную из N байт вредоносного объекта. При этом можно сделать не тупое сравнение, а сравнение по некоторой маске (типа искать байты EB ?? ?? CD 13). Или задавать дополнительные условия вроде «такие-то байты должны находиться у точки входа в программу» и так далее. Сигнатура именно малвари — это частность.
Точно так же описываются некоторые признаки, по которым можно определить, что исполняемый файл упакован тем или иным криптором или упаковщиком (например, банальным ASPack). Если ты внимательно читаешь наш журнал, то точно слышал о такой тулзе как PEiD, способной определять наиболее часто используемые упаковщики, крипторы и компиляторы (в базе есть большое количество сигнатур) для переданного ей PE-файла. Увы, новые версии программы давно не выходят, а недавно на официальном сайте и вовсе появилось сообщение, что дальнейшего развития у проекта не будет. Жаль, потому что возможности PEiD (особенно учитывая систему плагинов) вполне могли оказаться мне полезными. После недолгого анализа все-таки стало ясно, что это не вариант. Но покопавшись в англоязычных блогах, я быстро нашел то, что мне подошло. Проект YARA (code.google.com/p/yara-project).
3. Для окончания
короткого обзора темы сигнатур можно предложить программу, помогающую
найти сигнатуры для отдельных случаев.
Это программа SignDetect версии
0.5.0.0 и 0.5.2.0. Скачать можно
здесь: SignDetect-05.rar. В архиве сами
программы, некое подобие хелпа от автора,
рисунки с результатами проверки службой VirusTotal и главных окон программ.
Смысл программы в затирании части файла исследуемой программы и проверки на
срабатывание по сигнатуре.
Окно программы SignDetect 0.52 |
Комментариев нет:
Отправить комментарий