Способ отложенного устранения вредоносного кода

Иллюстрации

Показать все

Изобретение относится к антивирусным технологиям, а более конкретно к системам и способам отложенного устранения вредоносного кода. Технический результат настоящего изобретения заключается в обеспечении лечения вредоносных программ, которые препятствуют лечению. Настоящий технический результат достигается путем использования способа лечения обнаруженных вредоносных объектов, при котором обнаруживают вредоносные объекты на компьютере, формируют, по меньшей мере, одну задачу лечения обнаруженных вредоносных объектов, при этом задача формируется с использованием языка сценариев. Сформированную задачу лечения обнаруженных вредоносных объектов записывают в заданную ветку реестра перед перезагрузкой компьютера, проверяют целостность задачи лечения обнаруженных вредоносных объектов, перезагружают компьютер. Загружают драйвер для выполнения, по меньшей мере, одной задачи лечения обнаруженных вредоносных объектов, и драйвер операционной системы, позволяющий выполнить задачу лечения обнаруженных вредоносных объектов, выполняют, по меньшей мере, одну задачу лечения обнаруженных вредоносных объектов, при этом используют системные нотификации для начала выполнения задачи лечения обнаруженных вредоносных объектов. 3 з.п. ф-лы, 4 ил.

Реферат

Область техники

Изобретение относится к антивирусным технологиям, а более конкретно к способам отложенного лечения вредоносного кода.

Уровень техники

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

Стоит отметить стремление авторов вредоносных программ писать код, который очень труден в лечении (примером лечения может служить удаление или карантин, а также восстановление незараженных копий таких объектов, как файлы). Ранее создатели вредоносных программ мало заботились об этом аспекте, поскольку для многих непрофессиональных авторов вредоносных программ важнее было распространить вредоносные программы с наибольшей скоростью и заразить максимально возможное количество компьютеров. С коммерциализацией написания вредоносных программ цели также изменились - профессиональные авторы вредоносных программ часто идут на создание сложных по своей структуре участков кода с тем, чтобы гарантировать, что вредоносные программы, написанные ими, будет не так легко вылечить и удалить.

Таким образом, сегодня есть категория вредоносных программ, которая специально разработана для препятствия лечению. Например подобные вредоносные программы, препятствующие лечению, обычно создают множество собственных копий на одном и том же компьютере, которые одновременно выполняются, используя потоки различных процессов. Таким образом, в этой схеме вредоносная программа может иметь одну копию своего кода, который инфицировал Internet Explorer (выполняется в потоке этого процесса), и может иметь другую копию своего кода, который инфицировал почтовый клиент Outlook (т.е. выполняется в потоке процесса почтового клиента). Когда антивирусное программное обеспечение определяет одну из копий вредоносной программы (например, копию вредоносной программы, которая инфицировала Internet Explorer), антивирусное программное обеспечение удаляет эту копию вредоносной программы и удаляет копию исполняемого файла, которая содержит код вредоносной программы.

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

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

В настоящее время существуют технологии, которые позволяют бороться с подобными вредоносными программами. Например, в патенте US 8099785 описан способ удаления вредоносных программ, которые восстанавливают свои копии, с помощью блокировки доступа к диску и ряда API вызовов, что позволяет не допустить последующего восстановления копий вредоносной программы. В заявке US 20080005797 описан подход к проверке всех загружаемых во время загрузки операционной системы драйверов.

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

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

Раскрытие изобретения

Технический результат настоящего изобретения заключается в обеспечении лечения вредоносных программ, которые препятствуют лечению. Настоящий технический результат достигается путем использования способа лечения обнаруженных вредоносных объектов, содержащий этапы на которых: обнаруживают вредоносные объекты на компьютере; формируют, по меньшей мере, одну задачу лечения обнаруженных вредоносных объектов; загружают драйвер для выполнения, по меньшей мере, одной задачи лечения обнаруженных вредоносных объектов; выполняют, по меньшей мере, одну задачу лечения обнаруженных вредоносных объектов при загрузке функциональных драйверов операционной системы, позволяющих выполнить задачу лечения обнаруженных вредоносных объектов.

Согласно одному из вариантов реализации функциональным драйвером операционной системы является: драйвер файловой системы; плагин антивирусного драйвера.

Согласно еще одному варианту реализации задачи лечения обнаруженных вредоносных объектов формируют сценарий выполнения, в рамках которого каждая последующая задача выполняется после успешного выполнения предыдущей.

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

Согласно одному из вариантов реализации задачу лечения обнаруженных вредоносных объектов записывают в заданную ветку реестра перед перезагрузкой компьютера.

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

Согласно другому варианту реализации восстанавливают задачу лечения обнаруженных вредоносных объектов в случае ее повреждения.

Согласно одному из вариантов реализации используют системные нотификации для начала выполнения задачи лечения обнаруженных вредоносных объектов.

Краткое описание чертежей

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

фиг. 1 отображает способ работы настоящего изобретения.

Фиг. 2 приводит систему работы настоящего изобретения.

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

Описание вариантов осуществления изобретения

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

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

После обнаружения вредоносных объектов на этапе 110, на следующем этапе 120, формируют задачу лечения обнаруженных вредоносных объектов. Стоит отметить, что в предпочтительном варианте реализации задача должна быть составлена в виде машинного кода, который может исполняться непосредственно после загрузки компьютера, т.е. в тот момент когда операционная система еще не загружена полностью и отсутствуют (т.е. еще не загружены) всевозможные фреймворки, такие как, например. NET Framework или Java Runtime Environment, которые позволяют выполнять код, написанный на высокоуровневых языках, таких как С#. В других вариантах реализации предусматривается также загрузка специальных интерпретаторов, которые позволят выполнять псевдо-код, например используя скриптовый язык AVZ.

Задача лечения обнаруженных вредоносных объектов может состоять из последовательности действий (заданий) - удаления файла, копирования файла (например, из резервной копии) и т.д. Примерный список действий приведен ниже.

- Создание ключа реестра.

- Удаление ключа реестра.

- Удаление значения реестра.

- Создание значения реестра.

- Копирование файла.

- Удаление файла.

- Помещение файла в карантин.

- Помещение в карантин службы (сервиса).

- Удаление символьной ссылки ключа реестра.

- Удаление файла по хеш-сумме.

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

Пример сценария обхода папки Windows на наличие вредоносных файлов (на языке AVZ).

Пример 1. // Сканирование папки (с рекурсивным обходом)

var

MalwareFound: boolean;

// Обработка найденного файла

Procedure ScanFile(AFileName: string);

var

FMD5: string;

begin

// Вычисление MD5 суммы

FMD5:=CalkFileMD5(AFileName);

// Сравнение MD5 с искомыми зловредами

if ((FMD5=′116C0F42CA4BB8B9E9BEA876762DE8B8′) or

(FMD5=′0E35104727582288A4B0767FD5A41384′)) then begin

// Постановка задания драйверу

BC_DeleteFile (AFileName);

MalwareFound:=true;

end;

end;

Procedure ScanDir(ADirName: string; AScanSubDir: boolean);

var

FS: TFileSearch;

begin

ADirName:=NormalDir(ADirName);

FS:=TFileSearch.Create(nil);

FS.FindFirst(ADirName+′*.*′);

while FS. Found do begin

if FS. IsDir then begin

if AScanSubDir and (FS. FileName <> ′.′) and (FS.FileName <> ′..′) then

ScanDir(ADirName+FS. FileName, AScanSubDir)

end else

ScanFile(ADirName+FS. FileName);

FS. FindNext;

end;

FS. Free;

end;

begin

MalwareFound:=false;

ScanDir(′c:\windows\′, true);

if MalwareFound then begin

// Активация драйвера

BC_ACtivate;

// Перезагрузка

RebootWindows (true);

end;

end.

В данном примере показано, что на момент запуска не известно точно, какой именно файл (или файлы) требуется удалить, зато известны критерии, по которым его следует искать (расширение, примерный размер, некая статическая сигнатура или контрольная сумма). В данном примере сценария логика принятия решения находится в процедуре ScanFile, команда BC_Activate активирует задание драйвера, a RebootWindows выполняет перезагрузку. Подобные сценарии, как правило, создает антивирус на этапе 120. В общем случае у сценария может быть сложная логика, охватывающая анализ ключей реестра, настроек автозапуска приложений, зарегистрированных в системе классов, служб и драйверов, файлов на диске и т.п.

Также стоит отметить, что без поддержки возможности работы с вредоносными объектами разных типов задача лечения обнаруженных вредоносных объектов не может быть выполнена полностью. Например, для модификации определенных ключей реестра сначала должен быть загружен соответствующий куст (англ. hive). Для работы с файловой системой (например, для удаления файла) должен быть загружен соответствующий драйвер (таким образом, для файловой системы NTFS понадобится соответствующий драйвер). В различных вариантах реализации драйвер может загружаться сам, например во время процесса загрузки операционной системы. В других вариантах реализации может быть загружен специальный драйвер с ограниченной функциональностью, который необходим только для выполнения нужных для реализации задачи лечения обнаруженных вредоносных объектов функций. Например специальный драйвер файловой системы может содержать лишь вызов функции удаления файла, чего может быть достаточно для проведения лечения.

В одном из вариантов реализации задача лечения обнаруженных вредоносных объектов сохраняется в одной из веток реестра, которая будет загружена в память одной из первых после начала загрузки операционной системы. В других вариантах реализации задача лечения обнаруженных вредоносных объектов может быть вычитана из файла, с переносного носителя (например, флеш накопителя) или из сети.

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

На этапе 130 перезагружают компьютер и на этапе 140 загружают драйвер для выполнения задачи лечения обнаруженных вредоносных объектов. Важно отметить, что загрузка драйвера должна быть произведена как можно раньше, так как не исключена ситуация, когда до этого драйвера будет загружен вредоносный драйвер, реализующий руткит функционал для сокрытия вредоносных объектов.

На этапе 150 происходит выполнение задачи лечения обнаруженных вредоносных объектов функций. Как правило, выполнение задачи включает последовательное выполнение действий (заданий), однако при наличии интерпретатора сценариев (такого как AVZ) возможно использование циклов, условных и безусловных переходов, проверки условий и т.д. Важной особенностью является возможность выполнения задачи в момент загрузки соответствующих драйверов или служб. Например, после загрузки драйвера файловой системы (например, NTFS) появляется возможность проводить все файловые операции.

На Фиг. 2 приведена система работы настоящего изобретения. Антивирус 210 предназначен для проверки различных объектов в операционной системе 240, таких как процессы, а также объектов 250, доступ к которым требует наличия отдельного драйвера (например, драйвера файловой системы). Обнаружив вредоносные объекты, антивирус 210 составляет задачу 230 лечения обнаруженных вредоносных объектов, состоящую из отдельных действий по их лечению, после чего перезагружает компьютер. В одном из вариантов реализации задача 230 лечения обнаруженных вредоносных объектов может быть сохранена в одной из веток реестра, которая будет загружена в память одной из первых (актуально для семейства операционных систем MS Windows). Другой вариант подразумевает сохранение задачи 230 в отдельное место на жестком диске, доступ к которому имеет только антивирус 210 и драйвер 220. При загрузке компьютера загружается драйвер 220, который выполняет задачу 230 лечения обнаруженных вредоносных объектов. Драйвер 220 может как обращаться к операционной системе 240 (посредством системных API вызовов) для выполнения нужных операций, так и к объектам 250, используя собственный протокол (например, урезанный вариант драйвера файловой системы).

В еще одном варианте реализации в драйвер 220 дополнительно загружаются (со стороны антивируса 210) те необходимые драйверы, которые требуются для работы с объектами 250 (т.е. данные драйверы выполнены в виде плагинов антивирусного драйвера 220). Например при необходимости лечения файлов (удаления или карантина), которые находятся на диске с файловой системой ReiserFS, дополнительно будет загружен драйвер данной файловой системы. В качестве другого примера можно привести загрузку драйверов внешних устройств для возможности доступа к их внутренним данным (например, к прошивке).

Фиг. 3 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26 содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.

Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.

Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.

Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например колонками, принтером и т.п.

Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 3. В вычислительной сети могут присутствовать также и другие устройства, например маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.

Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.

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

1. Способ лечения обнаруженных вредоносных объектов, содержащий этапы на которых:а) обнаруживают вредоносные объекты на компьютере;б) формируют, по меньшей мере, одну задачу лечения обнаруженных вредоносных объектов, при этом задача формируется с использованием языка сценариев;в) записывают сформированную задачу лечения обнаруженных вредоносных объектов в заданную ветку реестра перед перезагрузкой компьютера;г) проверяют целостность задачи лечения обнаруженных вредоносных объектов;д) перезагружают компьютер;е) загружают драйвер для выполнения, по меньшей мере, одной задачи лечения обнаруженных вредоносных объектов;ж) загружают драйвер операционной системы, позволяющий выполнить задачу лечения обнаруженных вредоносных объектов;з) выполняют, по меньшей мере, одну задачу лечения обнаруженных вредоносных объектов, при этом используют системные нотификации для начала выполнения задачи лечения обнаруженных вредоносных объектов.

2. Способ по п. 1, в котором драйвером операционной системы является:драйвер файловой системы;плагин антивирусного драйвера.

3. Способ по п. 1, в котором задачи лечения обнаруженных вредоносных объектов формируют сценарий выполнения, в рамках которого каждая последующая задача выполняется после успешного выполнения предыдущей.

4. Способ по п. 1, в котором восстанавливают задачу лечения обнаруженных вредоносных объектов в случае ее повреждения.