СИСТЕМА И СПОСОБ ОПРЕДЕЛЕНИЯ ПОТЕНЦИАЛЬНО ВРЕДОНОСНЫХ ПРОГРАММ НА ОСНОВЕ КОНТРОЛЯ ЦЕЛОСТНОСТИ ФАЙЛОВ С ИСПОЛЬЗОВАНИЕМ ВРЕМЕННЫХ ОТМЕТОК
SYSTEM AND METHOD OF DETERMINING POTENTIALLY MALICIOUS SOFTWARE BASED ON MONITORING FILE INTEGRITY USING TIME MARKS

Область техники
Данное изобретение относится к вычислительной технике, а именно к определению потенциально вредоносных программ на основе контроля целостности файлов. Особенностью данного изобретения является использование временных отметок для проверок измененных файлов.
Уровень техники
При использовании многих компьютерных приложений важна целостность файлов. Существует много приложений, для которых важно знать, когда файл был модифицирован, например, когда пользователь пытается восстановить систему (или состояние приложения), т.е. сделать "откат" состояния к предыдущей точке времени. В то же время файлы могут быть изменены случайно или преднамеренно, файл может быть заменен или части файла могут быть случайно или умышленно перезаписаны и т.п. В приложении к вирусной защите и защите от других рисков имеет особое значение знать обо всех изменениях файлов.
Существуют два широко используемых подхода проверки и выявления измененных важных файлов. Первый состоит в применении временных отметок, что используется всеми современными операционными системами (ОС), так как они отслеживают дату и время последнего изменения файла. Тем не менее возможность непосредственно изменять временные метки есть у каждого приложения пользователя. Так, вредоносные приложения способны запросто использовать эти преимущества сохранения более ранней временной отметки у файла, т.е. вернуть файлу предыдущую отметку об изменении после внесения изменений. Следовательно, проверки, основывающиеся только на сведениях временных отметок, как, например, в заявке US 20080229419, покажут, что файл не был изменен, когда в действительности изменение имело место. В то же время запрещение приложениям пользователя изменять временные отметки не является выходом из ситуации, т.к. существуют законно используемые пользователем приложения, изменяющие временные отметки.
Второй подход для отслеживания изменения файлов использует вызовы необратимых функций, например хеширующих. Хеш - это одностороннее преобразование информации о файле в гораздо меньшее двоичное значение, такое, что изменение содержимого файла изменит и значение хеша. В этих целях в компьютерных приложениях часто используют хеши MD5, как, например, в заявках ЕР 1351139 и US 20030192033. Недостатком такого пути является создание хеш-значений, на вычисление которых нужно тратить ресурсов системы тем больше, чем больше файл. Например, выполнение многих приложений требует загрузку объемных файлов в несколько мегабайт в память до выполнения. Вычисление хешей каждого из этих файлов перед каждым запуском приложения приведет к значительным задержкам перед действительным запуском приложения. Многие пользователи сочтут такие временные задержки в работе неудобными.
В силу раскрытых обстоятельств, становится ясно, что необходима новая быстрая система обнаружения измененных файлов.
Раскрытие изобретения
Анализ предшествующего уровня техники и возможностей, которые появляются при комбинировании их в одной системе, позволяет получить новый результат.
Технический результат изобретения заключается в предоставлении системы составления списка приложений пользователя, которые необходимо подвергнуть антивирусной проверке на основании проверки целостности измененных приложениями пользователя файлов, система содержит приложения пользователя, загруженные в память и исполняемые на процессоре; управляющее приложение, предназначенное для проверки целостности файла, загруженное в память и исполняемое на процессоре, при этом управляющее приложение проверки целостности файла содержит: а) базу данных, которая хранит: (i) число изменений временной отметки файла в виде счетчика, который соответствует каждому файлу; (ii) список приложений пользователя, которые делали изменения временной отметки файла; б) средство сравнения, выполняющее сравнение полученной записи о числе изменений с информацией, сохраненной в базе данных; формирующее вывод о нарушении целостности файла, если запись не соответствует информации, хранящейся в базе данных; определяющее в список для антивирусной проверки то приложение пользователя, которое модифицировало файл; средство перехвата, предназначенное для перехвата вызовов функций приложением пользователя перед изменением временной отметки файла и обновления записи о числе изменений приложением пользователя временной отметки файла, связанное с управляющим приложением проверки целостности файла, которому средство перехвата возвращает запись о числе изменений.
В частном варианте реализации при нарушении целостности файла система осуществляет антивирусную проверку этого файла.
Технический результат изобретения также заключается в предоставлении способа составления списка приложений пользователя, которые необходимо подвергнуть антивирусной проверке на основании проверки целостности измененных приложениями пользователя файлов, содержащего этапы, на которых производят следующие действия: инициализируют средство перехвата; перехватывают вызовы функций приложением пользователя перед изменением временной отметки файла; обновляют запись о числе изменений приложением пользователя временной отметки файла в базе данных; сохраняют информацию о приложении пользователя, которое произвело изменение временной отметки файла; формируют вывод о нарушении целостности файла, если запись о количестве изменений временной отметки файла не соответствует информации, хранящейся в базе данных; определяют в список приложений пользователя, которые необходимо подвергнуть антивирусной проверке, те приложения, которые производили изменение временной отметки файла.
Технический результат изобретения также заключается в предоставлении машиночитаемого носителя для составления списка приложений пользователя, которые необходимо подвергнуть антивирусной проверке на основании проверки целостности измененных приложениями пользователя файлов, на машиночитаемом носителе сохранена компьютерная программа, при выполнении которой на компьютере выполняются следующие этапы: инициализируют средство перехвата; перехватывают вызовы функций приложением пользователя перед изменением временной отметки файла; обновляют запись о числе изменений приложением пользователя временной отметки файла в базе данных; сохраняют информацию о приложении пользователя, которое произвело изменение временной отметки файла; формируют вывод о нарушении целостности файла, если запись о количестве изменений временной отметки файла не соответствует информации, хранящейся в базе данных; определяют в список приложений пользователя, которые необходимо подвергнуть антивирусной проверке, те приложения, которые производили изменение временной отметки файла.
Дополнительные преимущества данного изобретения будут раскрыты в нижеследующем описании. Дополнительно будут приведены примеры использования изобретения со ссылками на чертежи.
Краткое описание чертежей
Сопровождающие чертежи включены в описание для пояснения сути и основных принципов работы изобретения. Приведенное описание раскрывает варианты реализации изобретения со ссылками на позиции следующих чертежей.
Фиг.1А представляет временную диаграмму работы обычной системы временных отметок.
Фиг.1Б представляет временную диаграмму работы системы с управляющим приложением, которое использует счетчики изменений файлов; система сохраняет информацию, которую невозможно получить из временных отметок.
Фиг.2 отображает общую логику работы основного драйвера системы согласно настоящему изобретению.
Фиг.3 отображает использование приложением упомянутого выше основного драйвера для проверки целостности файлов.
Фиг.4А и 4Б отображают дополнительный перехватчик вызовов функций для управления запросами на изменения временных отметок.
Фиг.5 отображает работу перехватчика функций.
Фиг.6 отображает работу основного драйвера настоящего изобретения.
Фиг.7. - блок-диаграмма взаимодействия различных элементов, собранных в единую систему для реализации задач, стоящих перед изобретением.
Фиг.8 отображает диаграмму реакции основного драйвера настоящего изобретения на разные ситуации.
Фиг.9 схематически представляет компьютер, на котором возможно использовать данное изобретение.
Подробное описание вариантов осуществления
Детальное описание заявленного изобретения будет содержать определения и примеры использования тех признаков, из которых состоит изобретение.
Настоящее изобретение опирается на механизм временных отметок, которые выставляются ОС при внесении изменений в файл. Один из вариантов реализации изобретения состоит в добавлении основного драйвера в ОС. Посредством такого основного драйвера возможно отслеживать все доступы ко всем файлам, к одному файлу или к нескольким файлам, представляющим особый интерес (например, к системным файлам).
Настоящее изобретение также основано на особенностях файловой системы автоматически изменять временную отметку при модификации файла. Таким образом, чтобы изменить только одну временную отметку, необходимо вызвать функцию ОС, отвечающую за изменение временной отметки. Соответствующий основной драйвер, добавленный в ОС, отслеживает каждую функцию, которая выполняет обновление временной отметки. Например, драйвер способен перехватывать подобные запросы и вести счетчик, соответствующий каждому файлу. Когда выполняется функция изменения временной отметки, счетчик увеличивается на единицу. Таким образом, управляющее приложение позднее способно сравнить предыдущие значения счетчика и временной отметки с текущим значением счетчика и временной отметки и определить те файлы, которые действительно были перезаписаны.
Такая информация дает возможность принять решение, что измененный файл нужно подвергнуть дополнительному анализу. Например, в применении к антивирусу, если база данных основного драйвера показывает, что временная отметка не была изменена с некоторой предыдущей отметки времени, то нет необходимости выполнять проверку файла на содержание вируса. Если счетчик показывает, что временная отметка была подправлена, и временная отметка осталась прежней, то этот признак расценивается как изменение или ошибка, вызванная вирусом, и такой файл следует проверить.
Также такая информация может служить для определения списка тех приложений пользователя, которые следует проверить из-за того, что они переписывали файлы (высокая файловая активность) или же скрывали сам факт изменения файлов в системе (так также поступают руткиты). В операционных системах Windows вредоносные программы часто изменяют ключевые файлы, которые могут быть найдены, например, в папке C:/Windows и других с целью получения прав доступа администратора, получения прав на автозапуск и выполнения другой вредоносной активности.
Таким образом, помимо отслеживания изменения временной отметки файлов, а также возможных фактов сокрытия изменения, можно также вести некоторый набор критериев, которые определяют важность измененных файлов. Для будущей антивирусной проверки будет крайне важно сперва проверить критические области на жестком диске (например, папка C:/Windows) и найти те вредоносные программы, которые изменяли в этих областях файлы. Следовательно, можно сократить время на антивирусную проверку и выявление уже имеющихся вредоносных программ, используя список как приложений пользователя, которые проявляли повышенную файловую активность, включая сокрытие изменения временных отметок, так и зная список измененных файлов.
На Фиг.1А отображена временная диаграмма, представляющая взаимодействие систем, основывающихся только на функциях временных отметок. В момент времени t1 файл имел временную отметку TimestampA. После этого момента времени запросы к файловой системе будут возвращать отметку TimestampA. После изменения файла в момент времени t2 временная отметка будет TimestampB. После этого момента времени запросы к файловой системе будут возвращать отметку TimestampB.
В момент времени t3 вредоносное приложение напрямую изменяет временную отметку обратно таким образом, что запросы к файловой системе с этого момента будут возвращать отметку TimestampA, которая не соответствует действительному моменту последнего изменения файла.
На Фиг.1Б отображена временная диаграмма того, как учитываются не только данные системные временные отметки, но и статистика основного драйвера настоящего изобретения. Это не позволяет обмануть систему, как было описано ранее. Как отображено на Фиг.1Б, в момент t1 у файла временная отметка TimestampA, и счетчик временных отметок (TSCOUNTER) имеет значение 0. После этого момента запрос на основной драйвер (см. 710 и предыдущие рассуждения) о состоянии изменения файла вернет ответы, что временная отметка стоит в TimestampA и счетчик TSCOUNTER имеет значение 0.
Затем в момент времени t2 файл изменяют и он имеет временную отметку TimestampB. С этого времени запрос на основной драйвер о состоянии изменения файла вернет ответы, что временная отметка стоит в TimestampB и счетчик TSCOUNTER имеет значение 0.
В момент времени t3 вредоносное приложение напрямую изменяет временную отметку и меняет временную отметку из TimestampA в TimestampB. С этого времени запрос на основной драйвер о состоянии изменения файла вернет ответы, что временная отметка стоит в TimestampA и счетчик TSCOUNTER имеет значение 1, что означает, что временную отметку подправили. В таком случае логика работы и действий другого приложения пользователя может измениться и проинформировать пользователя об автоматическом запуске проверки на вирусы и т.п.
На Фиг.2 отображен алгоритм действия драйвера 710 (см. Фиг.7). Алгоритм начинается с этапа 202. На этапе 204 выполняют инициализацию переменных. TSCOUNTER является счетчиком изменений файла FILE в базе данных основного драйвера. FILE является указателем на наблюдаемый объект файла, TS - это временная отметка файла. TSCOUNTER устанавливается в 0, указатель (FILE) на наблюдаемый файл обнуляют (т.е. устанавливают в null) и временную отметку (TS) также устанавливают в null.
На этапе 206 драйвер 710 ожидает запросов от управляющего приложения 704 (см. Фиг.7) по поводу состояния временной отметки TS и количества изменений, по состоянию счетчика TSCOUNTER. Когда получают запрос, то на этапе 208 основной драйвер 710 возвращает временную отметку TS и значение счетчика TSCOUNTER для соответствующего файла (тождественного указателю FILE) управляющему приложению 704. Если запросов не поступает, драйвер 710 перехватывает события, которые связаны с изменением временных отметок TS файловой системы на этапе 210, без учета источника, который вызвал этот запрос. На этапе 212 драйвер 710, когда перехвачен системный вызов на подмену временной отметки, на этапе 214 драйвер 710 увеличивает счетчик TSCOUNTER на единицу для этого файла. На этапе 216 драйвер 710 проверяет необходимость продолжения работы. Если драйвер 710 завершил свою работу, то на этапе 218 процесс завершается. Таким образом, алгоритм возвращается к этапу 206.
Фиг.3 отображает каким образом управляющее приложение 704 использует драйвер 710 для проверки целостности файла. Как показано на Фиг.3, после запуска процесса на этапе 302 управляющее приложение 704 имеет доступ к базе данных изменений объектов (файлов) (этап 304). На этапе 306 получают или создают указатель FILE на рассматриваемый файл. На этапе 308 управляющее приложение 704 вызывает основной драйвер 710 с указателем (FILE) на соответствующий файл и получает временную отметку TS и значение счетчика TSCOUNTER от основного драйвера 710. На этапе 310 управляющее приложение 704 сопоставляет полученные данные с данными управляющей базы данных 706. База данных находится в адресном пространстве операционной системы и доступна только основному драйверу 710. Если данные о временной отметке различны, тогда выполняют соответствующее действие, например запускают проверку на вирус и т.п., что отображено на этапе 312. Если данные о временных отметках и их изменениях совпадают, тогда система продолжает свою обычную деятельность на этапе 314. Процесс останавливается на этапе 316.
Фиг.4А и 4Б отображают дополнение в схеме перехвата, которая влияет на временные отметки файловой системы. На Фиг.4А приложение пользователя 402 выполняет вызов функции SETFILETIME файловой системы 404. Файловая система 404 возвращает ответ (временную отметку TS) приложению 402.
На Фиг.4Б перехватчик расположен между приложением пользователя 402 и файловой системой 404 так, что любая попытка изменить временную отметку перехватывается перехватчиком 406. При изменении временной отметки перехватчик 406 также может фиксировать информацию о том приложении пользователя, которое произвело данное изменение.
Фиг.5 отображает работу перехватчика 406. Как представлено на Фиг.5, алгоритм начинается с этапа 502, перехватчик 406 инициализируется на этапе 504. На этапе 506 перехватчик 406 ожидает вызовов функций изменения временных отметок (например, функцию MS Windows SETFILETIME). Перехватчик 406 ждет вызовов функций изменения временных отметок на этапе 505.
Если получают запрос на остановку процесса, то алгоритм завершается этапом 512. Далее, если получен запрос изменения временной метки, следует этап 508, где перехватчик 406 определяет попытку изменения временной отметки. На этапе 510 перехватчик 406 увеличивает значение счетчика TSCOUNTER соответствующей записи в базе данных, и возврат алгоритма на этап 505. На этапе 514 перехватчик также сохраняет информацию о том приложении пользователя, которое произвело данное изменение.
Фиг.6 отображает работу основного драйвера 710 настоящего изобретения. Как представлено на Фиг.6, после активации основного драйвера 710 на этапе 602, ожидаются запросы временных отметок управляющим приложением 704 на этапе 604. Этап 606, при поступлении команды на остановку основного драйвера, передает управление на этап 616, где алгоритм завершается. Далее на этапе 608 основной драйвер получает идентификатор на файл FILE. На этапе 610 драйвер 710 получает значение счетчика TSCOUNTER из базы данных для идентификации файла. На этапе 612 основной драйвер 710 получает текущее значение временной отметки TS для определенного файла. На этапе 614 основной драйвер 710 возвращает управляющему приложению 704 значение текущей временной отметки TS из файловой системы 404 и значение счетчика TSCOUNTER для этого файла. Дополнительно основной драйвер 710 возвращает управляющему приложению 704 также список тех приложений пользователя, которые изменяли временную отметку TS. После этого алгоритм возвращается на этап 604.
Фиг.7 отображает блок-диаграмму взаимодействия между элементами настоящего изобретения. Как показано на Фиг.7, файловая система 404 записана на устройстве хранения 912 (см. Фиг.9). Файловая система 404 взаимодействует с операционной системой 708 через основной драйвер 710, который содержит перехватчик 406. Основной драйвер 710 имеет базу данных 712, которая хранит файловые идентификаторы и значения счетчиков для этих файлов. Приложение пользователя 402 осуществляет доступ к файлу через операционную систему 708, которая пропускает запросы доступа через основной драйвер 710 к файловой системе 404. Соответствующее управляющее приложение 704 по необходимости в проверке целостности файлов также взаимодействует с основным драйвером 710 и имеет управляющую базу данных 706, в которой хранятся значения временных отметок TS и счетчиков TSCOUNTER для каждого файла, которые позднее сравниваются со значениями в базе данных основного драйвера 712.
На Фиг.8 представлен основной драйвер 710, который взаимодействует с разными элементами. На Фиг.7 отмечены разные приложения пользователя 402, которые получают доступ к файловой системе 404 через выполнение запросов к файлам к операционной системе 708. Операционная система 708 пропускает такие запросы на доступ к файлам файловой системе 404. Некоторые из этих запросов на доступ не являются предметом проверки и управления (т.е. файлы, которые не нужно отслеживать) - они отправляются непосредственно к файловой системе 404. Другие запросы на доступ к файлам, представляющим интерес, и по этой причине обрабатываемые основным драйвером 710, в котором находится перехватчик 406. Перехватчик 406 получает файловый идентификатор (FILE) и увеличивает счетчик TSCOUNTER, который есть в базе данных основного драйвера 712.
После того как управляющему приложению 704 понадобится проверить то, что было записано в файл без соответствующего изменения временной отметки TS, управляющее приложение 704 выполняет запрос к основному драйверу 710, который обслуживается обработчиком запросов 802 основного драйвера. Обработчик запросов 802 основного драйвера получает файловый идентификатор, потом запрашивает в базе данных 712 основного драйвера значение счетчика и получает текущую временную отметку TS. Значение счетчика TSCOUNTER и временная отметка TS передаются управляющему приложению 704.
Настоящее изобретение применимо в области антивирусного программного обеспечения, но его можно использовать и в других областях. Например, программы антишпионы, сетевые экраны и т.п. тоже могут получить преимущества от использования данного изобретения. Также если приложение часто обновляет какие-то файлы, отслеживает целостность важных файлов, то в нем также можно использовать данное изобретение.
На Фиг.9 показана примерная компьютерная система, которая может выступать в роли реализующего изобретение компьютера 902. Компьютер 902 включает в себя один или более процессор, такой как процессор 901. Процессор 901 соединяется с коммуникационной инфраструктурой 906, такой как шина или сеть.
Компьютер 902 также включает в себя основную память 908 (RAM) и может также включать в себя вторичную память 910. Вторичная память 910 может включать в себя, например, внутренний диск или хранилище данных 912 (например, жесткий или оптический диск) и/или устройство чтения/записи 914 носителя данных 916 (устройство хранения данных на магнитной ленте, оптический привод и т.д.). Съемный запоминающий блок 916 представляет собой магнитную ленту, оптический диск или другие запоминающие носители, считываемые или записываемые с помощью соответствующего устройства чтения/записи 914 носителя данных 916. Как можно видеть, съемный запоминающий блок 916 может включать в себя машиночитаемый запоминающий носитель, имеющий хранимое на нем компьютерное программное обеспечение и/или данные.
В альтернативном варианте осуществления вторичная память 910 включает в себя другие средства для загрузки компьютерных программ или других команд в компьютер 902. Она включает в себя, например, съемный блок памяти 922 и интерфейс 920. Она может включать в себя съемный чип памяти (такой как EPROM или PROM) и связанный с ним разъем или другие съемные блоки памяти 922 и интерфейсы 920, которые позволяют передавать программное обеспечение и данные со съемных блоков памяти 922 на компьютер 902.
Компьютер 902 также включает в себя один или более интерфейс соединения, такой как сетевой интерфейс 924. Сетевой интерфейс 924 позволяет передавать данные между компьютером 902 и внешними устройствами. Например, сетевой интерфейс 924 включает в себя модем, сетевой интерфейс (например, карту Ethernet), порт соединения, PCMCIA слот и карту и т.д. Программное обеспечение и данные, передаваемые по сетевому интерфейсу 924, выполняются в форме сигналов 928, электронных, электромагнитных, оптических и других типов, которые могут быть приняты посредством сетевого интерфейса 924. Сигналы 928 выдаются сетевым интерфейсом 924 через канал связи 926. Этот канал 926 передает сигналы 928 и выполняется проводным или кабельным, оптоволоконным, РЧ каналом и другими каналами связи. В варианте осуществления изобретения сигналы 928 содержат пакеты данных, отправленные процессору 901. Информация, представляющая обрабатываемые пакеты, может отправляться в форме сигналов 928 от процессора 901 через канал связи 926.
Термином «машиночитаемый носитель программ» или «машиночитаемый носитель информации» обычно называют носитель, такой как съемные носители данных 916 и 922, жесткий диск, установленный в виде встроенного жесткого диска 912, и сигналы 928, которые обеспечивают передачу программного обеспечения в компьютер 902.
Компьютерные программы хранятся в основной памяти 908 и/или вторичной памяти. Компьютерные программы могут быть также получены через сетевой интерфейс 924. В частности, компьютерные программы при исполнении позволяют процессору 901 осуществлять настоящее изобретение. Когда изобретение осуществлено с использованием программного обеспечения, то программное обеспечение может быть сохранено в компьютерном программном продукте и загружено в компьютер 902, используя съемное устройство хранения данных 914, жесткий диск 912 или интерфейс 924 связи. Возможны и другие реализации, отличающиеся от логики построения и архитектуры данного примера.
Следует также отметить, что приведенные в описании примеры являются иллюстративными и не предназначены для ограничения объема и сущности заявленного изобретения, которые установлены в прилагаемой формуле.