СПОСОБ ВЫЯВЛЕНИЯ НЕИЗВЕСТНЫХ ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ ЭМУЛЯЦИИ ПРОЦЕССА ЗАГРУЗКИ
METHOD OF DETECTING UNKNOWN PROGRAMS BY LOAD PROCESS EMULATION

Область техники
Настоящее изобретение относится к средствам безопасности и более конкретно к способам выявления неизвестных программ, изменяющих процесс загрузки компьютерной системы.
Уровень техники
Одними из наиболее трудно обнаружимых вредоносных программ для современных компьютерных систем являются вредоносные программы, изменяющие процесс загрузки компьютерной системы. Внедрение в загрузочный процесс позволяет вредоносному коду обходить существующие средства защиты, скрывать свое присутствие и усложнять процесс лечения компьютера.
Процесс загрузки компьютера имеет несколько этапов, во время которых происходит проверка и инициализация аппаратного обеспечения, загрузка операционной системы и автозагрузка пользовательских приложений. Чем раньше в процессе загрузки находится этап, на котором вредоносная программа получает управление, тем сложнее противодействовать данной угрозе. Задача антивирусной программы - получить управление раньше, чем это сделает вредоносный код, что позволит контролировать дальнейший процесс загрузки и выявлять аномалии, подозрительные данные.
На данный момент известны и используются анти-руткит (anti-rootkit) технологии, описанные в патентных публикациях US 2006/480774 и US 2007/873583, выполненные в виде драйверов операционной системы, которые модифицируют процесс загрузки операционной системы, отслеживают дальнейший процесс загрузки и при необходимости производят блокирование и удаление загрузочных вредоносных программ.
Данные технологии эффективны только против угроз, направленных на внедрение кода в операционную систему, и не позволяют обнаруживать вредоносные программы, которые были загружены до операционной системы. К таким вредоносным программам относятся буткиты - программы, модифицирующие процесс загрузки на самом раннем этапе, изменяя загрузочную запись. В совокупности с использованием руткит (rootkit) технологий данный вид программ становится недосягаемым для средств защиты, установленных на компьютерной системе. Для борьбы с программами такого рода применяются технологии внешней загрузки, описанные в патентных публикациях ЕР 1995936668 А и WO 2006IL1428 A. При загрузке с внешних устройств вредоносные программы компьютера не загружаются и обнаруживаются при антивирусном сканировании файловой системы, жесткого диска и т.д. К недостаткам такого типа решений можно отнести необходимость в приобретении и установки внешних устройств, сложность обновления данных устройств, а также проведение пользователем специальных действий.
Описанное далее изобретение устраняет указанные недостатки предшествующих средств и позволяет эффективно противодействовать вредоносным программам, изменяющим процесс загрузки на различных этапах, с помощью эмуляции процесса загрузки. Под эмуляцией подразумевается воспроизведение программным или аппаратным способом в зависимости от реализации внутренних операций устройств и программ. Эмуляция позволяет отследить процесс загрузки начиная с включения компьютера, выявить вредоносный код на носителе информации компьютера или сети. Данное изобретение позволяет определять не только известный вредоносный код, например, по контрольным суммам, но и обнаруживать аномалии в процессе загрузки (выявлять вредоносный характер в процессе загрузки). Применение изобретения на практике позволяет анализировать зараженные носители информации удаленно, без использования внешних устройств загрузки. В результате использования средства выявления неизвестных программ с использованием эмуляции процесса загрузки время обнаружения и анализа неизвестных программ и неизвестных секторов диска, изменяющих процесс загрузки, значительно сокращается.
Сущность изобретения
Настоящее изобретение предназначено для противодействия вредоносным программам. Технический результат настоящего изобретения заключается в выявлении неизвестных программ, изменяющих процесс загрузки, и достигается за счет применения эмуляции процесса загрузки компьютерной системы и анализа обрабатываемых в эмулируемом процессе загрузки данных. Применение изобретения на практике позволяет собирать данные с носителя информации, относящиеся к загрузочным программам, анализировать собранные данные, обнаруживать и определять неизвестные виды вредоносных и безопасных программ, производить лечение активных вредоносных программ, предотвращать заражение компьютерных систем.
Способ выявления неизвестных программ с использованием эмуляции процесса загрузки компьютерной системы, содержит этапы, на которых: а) инициализируют эмулятор в соответствии с программно-аппаратной конфигурацией компьютерной системы, при этом инициализация эмулятора включает получение загрузочных данных и физических параметров объекта проверки; б) эмулируют процесс загрузки компьютерной системы с учетом инициализации в эмуляторе, при этом эмуляция включает исполнение инструкций процесса загрузки и регистрацию данных, обрабатываемых в эмулируемом процессе загрузки; в) записывают зарегистрированные данные в контейнер, по которому можно восстановить процесс загрузки компьютерной системы; г) на основании записанного контейнера определяют наличие неизвестных программ, изменяющих процесс загрузки компьютерной системы.
Метод содержит дополнительные этапы, которые могут выполняться как на локальной, так и на удаленной компьютерной системе: д) инициализация эмулятора в соответствии с контейнером; эмуляция процесса загрузки компьютерной системы с учетом инициализации в эмуляторе, при этом эмуляция включает исполнение инструкций, содержащихся в контейнере; е) антивирусная проверка исполняемых инструкций.
В разных вариантах реализации объектом проверки является жесткий диск, логический диск, область памяти, файл, носитель информации или контейнер.
Обрабатываемые в процессе загрузки данные в одном из вариантов реализации представляют собой секторы диска, файлы или цифровой код.
В другом варианте реализации инициализация эмулятора дополнительно включает воспроизведение объекта проверки в виде виртуального жесткого диска.
Один из вариантов реализации способа определяет наличие неизвестных программ, производя проверку данных контейнера по списку доверенных программ, при этом в случае нахождения всех зарегистрированных данных в упомянутом списке, процесс эмуляции завершится, а процесс загрузки будет считаться безопасным.
Выполняться способ в различных реализациях может по расписанию,
при модификации загрузочной записи, в случае, когда загрузочная запись не найдена в списке доверенных программ. При этом, если причиной для эмуляции стала попытка модификации загрузочной записи, то программный процесс, модифицирующий загрузочную запись, приостанавливается, и после эмуляции блокируется, если программа в результате эмуляции процесса загрузки компьютерной системы признана вредоносной.
По результатам работы предложенного способа, если выявленная неизвестная программа признана вредоносной, восстанавливается процесс загрузки, удаляются данные выявленной программы и обновляется список вредоносных программ.
В случае если выявленная неизвестная программа признана безопасной, обновляют список доверенных программ.
Краткое описание прилагаемых чертежей
Сопровождающие чертежи, которые включены для обеспечения дополнительного понимания изобретения и составляют часть этого описания, показывают варианты осуществления изобретения и совместно с описанием служат для объяснения принципов изобретения.
Заявленное изобретение поясняется следующими чертежами, на которых:
Фиг.1 показывает пример схемы заражения диска компьютерной системы.
Фиг.2а показывает схему противодействия новым угрозам на примере использования сервисов антивирусной лаборатории.
Фиг.2б показывает вариант формата контейнера для хранения передачи и воспроизведения работы буткита.
Фиг.3а показывает пример сценария лечения зараженного компьютера.
Фиг.3б показывает пример сценария предотвращения заражения компьютера.
Фиг.4 показывает многоуровневую модель компьютерной системы.
Фиг.5 показывает схему защищенного доступа к диску в обход действующему руткиту.
Фиг.6 показывает функциональную схему эмулятора процесса загрузки.
Фиг.7 показывает блок-схему алгоритма эмуляции процесса загрузки компьютерной системы.
Фиг.8 показывает схему компьютерной системы общего назначения.
Описание предпочтительных вариантов осуществления
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, она может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется только в объеме приложенной формулы.
Процесс загрузки компьютера - это сложный процесс, имеющий ряд особенностей и нюансов, который в общем случае можно разделить на два этапа: первичная загрузка и загрузка операционной системы.
После включения компьютера блок питания проверяет все необходимые уровни напряжений, если все уровни напряжений соответствуют номинальным, то на материнскую плату поступает соответствующий сигнал - PowerGood. В первоначальном состоянии на вход процессора подается сигнал RESET, который удерживает процессор в сброшенном состоянии. Но после получения сигнала PowerGood от блока питания сигнал RESET будет снят, и процессор начнет выполнять свои первые инструкции. Таким образом, процессор после теста на питание стартует с состояния: командный регистр CS содержит 0xFFFF, указатель команд - регистр IP содержит 0, сегментные регистры данных и стека содержат 0. После снятия RESET процессор выполняет инструкцию по адресу 0xFFFF0 в реальном режиме, где располагается область ROM BIOS. Ее размер составляет 16 байт, вплоть до конца максимально адресуемого адресного пространства в реальном режиме - 0xFFFFF. По этому адресу располагается инструкция перехода на реально исполняемый код BIOS. Исполняя код BIOS, компьютер проходит стадию диагностики POST (Power-On Self Test). Проверяется процессор, память, ресурсы ввода/вывода, а также конфигурируются программно настраиваемые ресурсы системной платы.
После прохождения процедуры тестирования и конфигурации компьютер переходит к процессу загрузки операционной системы. Программа BIOS считывает с активного загрузочного диска (определяется настройками BIOS) BOOT сектор, который для флоппи диска или жесткого диска располагается по адресу Цилиндр = 0, Головка = 0, Сектор = 1, в память компьютера по физическому адресу 0x7C00. Размер сектора равен 512 байтам. После чего происходит проверка, является ли этот сектор загрузочным. Это осуществляется поиском сигнатуры 0х55АА в конце сектора. Если такой последовательности в конце сектора не обнаружено, то BIOS выдает сообщение, что загрузочный сектор не найден.
Сектор - минимально адресуемая ячейка жесткого диска. Прочитать меньше чем один сектор невозможно. На большинстве дисков размер сектора составляет 200h байт, новые жесткие диски обладают большим размером сектора. Нулевой сектор жесткого диска содержит так называемую «главную загрузочную запись» MBR (Master Boot Record). Она целиком занимает весь сектор - 512 байт. По данной записи BIOS определяет количество логических дисков, какую систему ему загружать и откуда.
MBR содержит машинный код, исполняемый процессором, информацию о четырех разделах диска и сигнатуру 0хАА55 в самом конце. Исполнение начинается с нулевого смещения сектора. Структуру MBR можно описать следующим образом. Сигнатура используется загрузчиком BIOS для проверки корректности MBR, в случае неудачи работа компьютера приостанавливается. Каждый раздел также описывается отдельной структурой. Байт признака активности может быть равен либо 0, либо 0×80. Если он равен 0×80, то раздел считается активным, загрузчик считывает его первые 0×200 байт и передает туда управление. Поле «тип раздела» описывает форматирование конкретного раздела и может принимать множество значений.
Как правило, больше четырех разделов на одном жестком диске существовать не может. Однако ОС Windows позволяет делить диск на большее количество частей. Расширенный раздел (код типа раздела - 7) помимо собственно содержимого раздела содержит указатель на следующий раздел. Следовательно, образуется связанный список из расширенных разделов. Их количество ограничивается только свободным неразмеченным пространством. Таким образом, полный алгоритм загрузки компьютера следующий: код в MBR проверяет работоспособность жесткого диска, затем ищет раздел с выставленным признаком активности 0×80, просматривая таблицу разделов, и передает управление на нулевой байт последнего.
Код MBR подгружает необходимые сектора с диска, после чего передает управление операционной системе. Данные, которые хранятся на диске и участвуют в загрузке компьютерной системы, в том числе MBR и подгружаемые сектора, составляют загрузочные данные.
Главным уязвимым местом с точки зрения безопасности в процессе загрузки является MBR-запись. Ее редактирование и изменение кода загрузки приведет к тому, что в ядро операционной системы будет загружен вредоносный компонент, у которого будет возможность исключить любые защитные программы на компьютере, в том числе антивирус. Данной особенностью пользуются некоторые злоумышленники и создают специальные программы, получившие название bootkit (буткиты).
Буткит (Bootkit) - это вредоносная программа, которая осуществляет модификацию загрузочного сектора MBR (Master Boot Record) - первого физического сектора на жестком диске. Данный тип вредоносных программ используется для получения максимальных привилегий в операционных системах и сокрытия в системе. Буткит может получить права администратора (суперпользователя) и выполнять любые вредоносные действия, поэтому данный тип вредоносных программ является одним из самых опасных.
Работа буткита начинается, когда компьютер перезагружается. Перезагрузка может быть инициирована вредоносной программой или произведена пользователем. После того как компьютер загрузился с инфицированного загрузочного сектора, запускается компонент буткита, который осуществляет вредоносный функционал.
Существует много разновидностей буткитов, которые различаются по сложности схемы работы. Простые буткиты редактируют загрузочную запись, помещают данные и код в сектора диска, не шифруют данные и не используют технологии скрытия себя в системе (руткит технологии). Другие же, наоборот, применяют всевозможные средства самозащиты для противодействия антивирусной проверке.
Схема одного из вариантов заражения и функционирования буткита представлена на Фиг.1. Если на компьютере установлено приложение 100, в котором существует уязвимость 101, известная злоумышленникам, она используется для перехвата управления процессом исполнения с целью записи на диск 110 тела вредоносной программы (120, 121, 122). Заражение может происходить на взломанных веб-сайтах. На компьютер загружается вредоносный компонент, который, используя, например, уязвимости в установленном программном обеспечении, перехватывает управление и изменяет загрузочную запись. Заражение может быть реализовано другими способами, но конечный результат направлен именно на подмену загрузочного сектора. Вредоносными компонентами, которые осуществляют заражение, могут являться дроппер 102 (dropper) или управляемая удаленно шпионская программа (Trojan-downloader), которые содержат в себе буткит или загружают его с удаленного адреса соответственно. Пример записи сектора диска:
HANDLE hDisk = CreateFileA("\\\\.\\PhysicalDrive0", GENERIC_WRITE| GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0×0, 0×0);
WriteFile (hDisk, MbrBuffer, sizeof (MbrBuffer), & dwWritten, NULL);
В различных вариантах реализации содержимое буткита записывается в неразмеченную часть диска, в псевдо-«bad» сектора (сектора, помеченные файловой системой как «неисправные», а на деле не являющиеся таковыми), помещается в конце первого сектора или скрываются с использованием руткит-технологий и тому подобное. На Фиг.1 показаны места на диске (131, 132, 133), куда могут быть записаны данные буткита. Таким образом, данные буткита (121, 122) и скрытая копия загрузочной записи 130 не отображаются в файловой системе операционной системы, не входят в состав разделов дисков и не поддаются обнаружению с помощью сканирования файлов и дискового пространства, в том случае, если антивирус не использует эффективные против данного вида угроз средства. Эффективно построить защиту компьютера можно, анализируя текущие угрозы, используемый в них вредоносный функционал, для чего необходимо иметь доступ к файлам или области данных, в которых хранится и которые использует вредоносная программа. Особенно важно оперативно собирать данные об угрозе для быстрого реагирования на нее, иначе заражение нескольких компьютеров может превратиться в эпидемию и нанести большой урон мировому сообществу.
В приведенном примере буткит состоит из драйвера 121, реализующего руткит-функционал, модифицированной загрузочной записи 120 и кода с вредоносным функционалом 122. При этом буткит может дополнительно содержать компоненты шифрования 122 для сокрытия данных, компоненты противодействия 122 обнаружению и другие дополнительные функции 122, усложняющие анализ вредоносной программы. Количество используемых секторов диска в процессе загрузки системы может измеряться десятками и сотнями, а область диска, занимаемая вредоносным функционалом, исполняемым после загрузки операционной системы, еще больше.
В процессе загрузки компьютера с диска 111, в котором модифицирован загрузочный сектор, код загрузочной записи 120 подгружает сектора диска, в которых в том числе располагается код буткита, после чего передается управление и операционная система загружается вместе с руткит-компонентом. Данная последовательность загрузки позволяет буткиту оставаться незамеченным. Оригинальная загрузочная запись 130 копируется в определенное место на диске 133 и в некоторых случаях может быть зашифрована. Ее копия необходима буткиту, чтобы пройти проверку целостности загрузочной записи и подставить оригинальную запись при обращении к загрузочному сектору диска. В результате этого у операционной системы, антивирусных программ и других средств защиты создается видимость, что загрузочная запись 120 не модифицирована и диск 111 не заражен. Необходимость сохранения оригинальной загрузочной записи 120 также дает возможность восстановления системы. Для этого необходимо определить адрес записи на диске, расшифровать ее (если необходимо) и переписать в загрузочный сектор, заменив ею модифицированную запись 120.
Каждый буткит имеет собственную функциональность: одни направлены на сбор конфиденциальной информации и ее удаленную отправку, другие нацелены на блокирование работы компьютера, третьи используются для создания бот-сетей. В зависимости от модели работы буткита запись исполняемого кода, содержащего вредоносный функционал, в память может происходить до загрузки операционной системы или после. В первом случае для трассировки области диска, содержащего упомянутый исполняемый код, достаточно эмулировать процесс загрузки системы до момента запуска операционной системы. В другом случае необходимо эмулировать работу операционной системы и отслеживать процесс исполнения исследуемого функционала после момента загрузки системы. Данная операция требует больших вычислительных ресурсов и актуальна для аппаратной эмуляции.
Для эффективной борьбы с буткитом необходимо проанализировать данные буткита, включая модифицированную загрузочную запись. Однако собрать данные файлы из-за особенностей работы вредоносной программы путем сканирования дисков, файлов, поведенческих анализаторов практически невозможно. Определять данный вид угрозы необходимо в момент заражения. Описанное в данной заявке изобретение позволяет выявлять, блокировать и лечить от загрузочных вредоносных программ компьютер, который подвергся заражению. На Фиг.2а показана схема противодействия новым угрозам с применением сервисов антивирусной лаборатории.
Новое решение для данного типа угроз предполагает эмуляцию процесса загрузки компьютера, что позволяет определить сектора на диске, содержащие части вредоносной программы. Система борьбы с буткитами содержит антивирус 200, анализатор 210 и антивирусную базу данных 220, а также средство коммуникации 230.
В разных вариантах реализации системы компоненты могут быть установлены локально на компьютере пользователя, на серверах антивирусной лаборатории или могут иметь распределенную архитектуру. Независимо от реализации решение позволяет находить новые неизвестные угрозы, использующие заражение загрузочной записи, не применяя при этом сканирование по сигнатурам в средстве обнаружения 201. Анализ по сигнатурам эффективен в данном смысле для обнаружения дроппера - программы, осуществляющей заражение диска. В последующем выявить буткит на диске по его «отпечатку» (сигнатуре) будет возможно, загрузив компьютер с внешнего носителя данных и отсканировав зараженный физический диск или произведя проверку по сформированным сигнатурам, обращаясь к диску через средства анти-руткит. Анализ компьютера с помощью внешних загрузочных дисков (CD, flash-накопитель, внешний жесткий диск) невозможно реализовать при удаленной работе с компьютером, в результате чего описанный в изобретении метод определяет новый подход к решению, позволяющий устранить угрозу и в дальнейшем эффективно противодействовать ее распространению.
В ходе эмуляции можно локально определять все известные на данный момент версии буткитов. Эмуляцию загрузки производит эмулятор 202, 214. Более детальный анализ вредоносной программы нужно производить, чтобы:
- выделить из тела программы адреса вредоносных ресурсов, с которых происходит заражение;
- выделить сигнатуры на файлы буткита 211, сектора диска и другие данные, для последующей сигнатурной проверки и препятствования заражению;
- выделить оригинальную загрузочную запись и метод ее расшифровки для лечения компьютера.
Для оперирования результатом эмуляции загрузки, в одном из вариантов реализации, используется формат контейнера 250, показанный на Фиг.2б. Данный пример контейнера 250 содержит в себе все сектора жесткого диска, которые хранят данные буткита (120, 121, 122), включая модифицированный загрузочный сектор и оригинальную загрузочную запись 130. В контейнере 250 сохраняются физические параметры 253 (параметры геометрии) исследуемого жесткого диска, содержимое секторов в совокупности со смещением сектора 251 относительно нулевого сектора. Также контейнер может содержать информацию о размерах совокупности секторов 252, если они расположены смежно. В результате информация, содержащаяся в контейнере, является достаточной для восстановления буткита с учетом его расположения на диске. Сформированный контейнер далее используется для анализа буткита.
В одном из вариантов реализации контейнер отправляется в антивирусную лабораторию. Для этого существует много различных способов передачи данных. Одним из них является средство сбора данных с компьютеров пользователей для анализа угроз 230 (более подробно процесс анализа новых угроз с использованием распределенной сети описан в публикации патента US 7743419 B1).
Исследование контейнера производится с помощью анализатора 210, который в различных вариантах реализации присутствует на компьютере пользователя или установлен в антивирусной лаборатории. В случае, когда анализатор установлен удаленно, он также содержит в себе эмулятор 214, для воспроизведения загрузочного диска. Получив контейнер буткита для исследования, анализатор 210 загружает его в эмулятор 202, 214 таким образом, что сектора буткита (120, 121, 122) располагаются в соответствии со смещениями 251, указанными в контейнере. Подобный подход дает возможность воссоздать состояние жесткого диска в виртуальном пространстве на виртуальном диске и удаленно анализировать процесс загрузки системы. Виртуальный диск повторяет геометрию жесткого диска, параметры 253 которой также записана в контейнере.
В процессе эмуляции загрузки отслеживаются все действия буткита: команды чтения и записи диска, обращения к памяти и другие действия с объектами компьютерной системы. Одна из целей исследования заключается в получении оригинальной загрузочной записи 130, которая может быть зашифрована или запакована для прямого доступа к ней.
Другая цель исследования состоит в анализе вредоносного функционала программ. В случае, когда функционал буткита предполагает, например, передачу или загрузку данных или выполнение удаленных команд с заданного внешнего адреса, исследование буткита с применением средств, описанных в данном изобретении, позволяет выявить адрес ресурса, представляющего угрозу.
В результате работы анализатора обновляются антивирусные базы данных 220 - в них записываются сигнатуры выявленных угроз 211 и файлов вредоносных компонент, а также сценарии лечения компьютера 212. После того как базы обновлены, новые записи используются средством восстановления 203 для лечения компьютера и средством обнаружения 201 для предотвращения повторного заражения компьютера. Восстановление (лечение) компьютера происходит путем перезаписи загрузочной записи 120 компьютера оригинальной версией 130, выявленной в ходе анализа буткита или сохраненной в резервной копии, и путем очистки жесткого диска от компонент буткита. При этом сектора, которые были изменены вредоносной программой в момент заражения, могут быть восстановлены из резервной копии.
На Фиг.3а и 3б показаны возможные сценарии работы программы для лечения зараженного диска и для блокирования заражения диска путем эмуляции загрузки.
На временной оси отложены моменты времени, соответствующие определенному событию. Над осью показаны события, относящиеся к вредоносному функционалу, под осью отложены события антивирусной защиты.
Сценарий событий, показанный на Фиг.3а, описывает случай, когда буткит заразил компьютер и находится в системе. Для эффективной борьбы с угрозами необходимо использовать функционал антивируса за рамками эмулятора процессов и сигнатурной проверки. Необходимо использовать модули карантина, которые создают резервные копии подозрительных файлов, облачные сервисы для сбора статистики по заражениям пользователей, системные журналы, которые ведут запись выполненных команд процессора и команд работы с памятью, ведение потоков и процессов компьютера, вызовы API-функций, запись и чтение файлов, соединения на сетевом и прикладном уровне и другое. Поэтому данный сценарий исполняется еще до момента появления угрозы на компьютере - начинается мониторинг системных объектов и операций с ними и ведение журналов 300, позволяющих в дальнейшем выявить связи между процессами, объектами, физической памятью, пользователями компьютера и внешними ресурсами.
Ведение такого рода защиты позволит установить обстоятельства заражения по текущим состояниям компьютерной системы. Например, если на жестком диске обнаружена информация, относящаяся к вредоносным объектам, можно будет определить по системному журналу процесс, который последним обращался к секторам заданной области диска, установить соответствующий исполняемый файл. Если заражение произошло с использованием эксплойта (exploit - код, использующий уязвимость в приложениях или устройствах), то определяют URL ресурса или файл, которые его содержат.
Рассмотрим пример заражения компьютера путем загрузки 301 на заражаемый компьютер dropper. После того как на компьютер загружен 301 или запущен с внешних носителей информации dropper, все его действия будут отмечены в системном журнале: произойдет перехват доступа к диску и обращение к MBR в момент, когда буткит будет устанавливаться 302 на жесткий диск и подменять MBR 303. Предположим, что вредоносная программа сумела обойти средства защиты и произвести заражение 302. После внедрения руткит компонента начинается выполнение вредоносного функционала 305, который может продолжать функционировать также после перезагрузки 304 компьютерной системы. Далее запускается эмуляция процесса загрузки компьютера согласно описанному в данном изобретении способу эмуляции загрузки 306. Эмуляция загрузки стартует в разных вариантах реализации по требованию пользователя, периодически (с заданным периодом времени), по событию или по установленному плану задач (в заданные моменты времени). В процессе эмуляции происходит сбор подозрительных компонент в контейнер, после чего производится анализ буткита 307 с использованием известных способов анализа вредоносных программ и определение буткита. Далее производится лечение компьютера 308 путем удаления буткита и восстановления процесса загрузки, а новые сигнатуры угрозы передаются другим пользователям через KSN, напрямую или путем обновления антивирусных баз.
Сценарий развития событий, описывающий проактивную защиту компьютера от буткитов с использованием эмулятора загрузки, показан на Фиг.3б. В данном случае заражение компьютера будет предотвращено. Последовательность вредоносных действий не изменилась: dropper, запустившись или перехватив управление на компьютере 301, посылает команду на запись загрузочного сектора 302. Операции с диском перехватываются антивирусом 311, работа вредоносной программы приостанавливается, после чего запускается эмулятор 312, на вход которого поступает заменяющая загрузочная запись и записываемые на диск данные с учетом их размещения. Другими словами формируется контейнер из перехваченных команд записи диска и отдается на эмуляцию. Далее производится эмуляция загрузки виртуального диска, содержащего заявленные изменения, и в случае обнаружения угрозы 313 антивирусное средство блокирует и удаляет из системы вредоносную программу, предварительно отправив ее в антивирусную лабораторию и сгенерировав сигнатуру угрозы. Генерация сигнатуры может происходить как на стороне сервера антивирусной лаборатории, так и на компьютерной системе пользователя. Таким образом, будет предотвращено выполнение функций буткита 305, представляющих основной функционал вредоносной программы.
Эмулятор процесса загрузки может быть реализован аппаратно в виде микросхемы, программно в виде приложения, службы, драйвера, или программно-аппаратно в виде микросхемы, управляемой операционной системой.
Различие в реализациях состоит в том, что собой представляют отдельные компоненты эмулятора - физические устройства или программы, эмулирующие внутренние функции соответствующих устройств.
В одном из вариантов реализации эмулятор выполнен в виде приложения. Архитектура компьютерной системы представляет собой многоуровневую модель, показанную на Фиг.4. Разделение памяти ведется по режимам безопасности, отделяя системные службы операционной системы 401, которые исполняются в режиме ядра 400, пользовательские приложения 411, исполняемые в режиме пользователя 410, и микропрограммы 421, хранящиеся в микросхемах 420. Количество уровней безопасности может быть больше. В ОС семейства Windows используется двухуровневая модель защиты. Примером микропрограммы в компьютерной системе является BIOS (Basic Input/Output System), которая определяет логику взаимодействия драйверов операционной системы 401 с аппаратным уровнем 420 компьютерной системы и непосредственно участвует в процессе загрузки компьютерной системы.
Для улучшения понимания работы данной модели рассмотрим пример работы приложения с диском. Процесс работы приложения с диском в описываемой модели содержит следующие этапы: в ходе исполнения приложения поток процесса содержит команду чтения/записи/создания/удаления файла на одном из дисков. Данный запрос адресуется соответствующему драйверу файловой системы (FAT, NTFS и другие), который определяет кластера, в которых записан файл. После чего драйвер файловой системы обращается к драйверу непосредственно жесткого диска, который выполняет команду работы с диском по заданному протоколу через контроллер жесткого диска. При этом приложение исполняется в режиме пользователя 410, драйвера находятся на уровне ядра 400 (Kernel mode или Ring0), а аппаратный уровень 420 представлен контроллером жесткого диска. Для того чтобы приложение могло осуществить операцию с диском в обход операционной системе 401, ему необходимо получить привилегии (root) или обращаться к внедренному в режим ядра драйверу.
На Фиг.5 показан пример работы с диском, если на компьютере установлен руткит 501, который перехватывает операции с диском 111 (файлами) и блокирует их или возвращает ложные данные. Когда антивирус 200 проводит сканирование диска 111 или файлов, хранящихся на жестком диске, или когда антивирусу необходимо создать образ диска для эмуляции или резервирования данных, он не сможет получить достоверную информацию и корректно обеспечить безопасность информации при работающем руткит-драйвере 501. Как видно на Фиг.5, доступ к диску или файлам антивирус должен контролировать специальным анти-руткит драйвером 502, обеспечивая доступность и целостность обрабатываемой информации, иначе она будет перехвачена и заменена вредоносной программой.
Буткиты содержат в себе руткит-функционал для скрытия данных в системе. Загрузившись после перезагрузки системы, драйвер буткита (на Фиг.5 изображенный как руткит 501) перехватывает обращения к диску, где находятся его данные, в том числе запросы к загрузочному сектору 120 и возвращает заведомо ложное значение (пустое значение, случайное значение, заменяет запрашиваемый сектор другим и т.д.). Если операционная система по запросу к загрузочному сектору вернула бы текущий MBR, который модифицирован для загрузки буткита, руткит возвращает копию оригинальной неизменной загрузочной записи, которая хранится в другой области диска.
На Фиг.6 изображена функциональная схема системы выявления неизвестных программ в процессе загрузки. Система содержит эмулятор 202, 214, виртуальный жесткий диск 601 и средство регистрации операций с диском 602. Для воспроизведения процесса загрузки необходимо эмулировать процессор 611, оперативное запоминающее устройство (ОЗУ*) 612 и BIOS 613. Под эмуляцией подразумевается воспроизведение программным или аппаратным способом в зависимости от реализации внутренних операций устройств и программ.
Виртуальный жесткий диск 601 является абстрактным представлением входящего объекта. Если на вход эмулятора подается жесткий диск 110, то виртуальный диск копирует геометрию жесткого диска (имеет идентичные размеры секторов, объем, количество цилиндров и головок). Виртуальное представление диска необходимо для того, чтобы оградить эмулятор и все выполняемые в нем инструкции от реальной системы, в том числе от реальных данных жесткого диска 110.
В одном из вариантов реализации процесс чтения с жесткого диска 110 выглядит следующим образом: сначала запрос направляется к виртуальному диску 601, после чего виртуальный диск 601 запрашивает данные у реального жесткого диска 110 и затем возвращает ответ на запрос в эмулируемый процесс. Эмулятор 202, 214 может не отвечать на запросы или выдавать заведомо ложные данные. Так, например, процесс записи на диск не будет осуществлен на реальном диске 110, а ограничится записью виртуального жесткого диска 601. Аналогичное взаимодействие эмулятора и реальной среды выполнено в виртуальной оперативной памяти: обращение к реальному ОЗУ 621 проходит через абстрактное представление, где фильтруется, перенаправляется, блокируется или симулируется (подставляется искусственное значение).
Процесс эмуляции загрузки входящего объекта описан далее. На вход системы выявления неизвестных программ (входным параметром системы) подается объект, которым может быть жесткий диск 110, логический диск, память (ОЗУ) 621, файл-контейнер 250 и т.д., для эмуляции загрузки с данного объекта. Для данного объекта создается виртуальный жесткий диск 601. После этого загрузочная запись 120 копируется в виртуальную оперативную память ОЗУ* 612, откуда начинается выполнение на процессоре эмулятора CPU* 611. Исполняемый 16-битный код загрузки обрабатывается BIOS* 613. В ходе загрузки с диска будут загружаться дополнительные сектора 630. Все обращения к диску протоколируются в средство регистрации операций с диском 602. Процесс эмуляции может быть ограничен количеством команд, тактов процессора, периодом времени или другим параметром. Процесс загрузки продолжается до загрузки операционной системы и передачи ей управления. Процесс эмуляции может быть остановлен вместе с окончанием загрузки или продолжен для отслеживания вредоносного функционала, для чего потребуется эмулировать также службы и драйверы операционной системы, что создаст большую нагрузку на реальную систему. Проблему может решить программно-аппаратная схема реализации эмулятора, перенеся вычисления эмулятора с реальной системы на отдельную плату.
После завершения эмуляции загрузки считанные и записанные сектора собираются с виртуального диска в контейнер, который передается в антивирусную лабораторию, например, посредством KSN (Kaspersky Security Network).
На Фиг.2б показан пример формата контейнера 250 для хранения и передачи буткита. Данный формат контейнера составлен таким образом, чтобы была возможность произвести обратное действие по монтированию контейнера 250 в виртуальный жесткий диск 601. В данном варианте реализации контейнер можно использовать как входной объект системы выявления неизвестных программ, тем самым произвести эмуляцию загрузки повторно или эмулировать загрузку другой компьютерной системы.
Контейнер содержит поле параметров диска, которые могут быть необходимы для процесса чтения диска эмулятором, включающие:
количество цилиндров, число головок на цилиндр, размер сектора и другое.
В контейнер 250 записываются сектора диска 630, которые были запрошены в ходе загрузки компьютера. На Фиг.2б в качестве примера контейнер содержит сектора диска: сектор модифицированной загрузочной записи 120, сектора, хранящие руткит функционал (driver) 121, сектор загрузочной записи 130, которая была перемещена из загрузочного сектора и, возможно, зашифрована, а также сектора 122, содержащие вредоносный и вспомогательный функционал буткита. Данный вариант реализации контейнера показан для примера и может содержать больше или меньше секторов в зависимости от исследуемого буткита.
Размер контейнера может быть ограничен по количеству секторов, объему памяти или другим параметрам. Для оптимального оперирования контейнером и передачи контейнера без нагрузок по сети размер контейнера не должен превышать ~1 Мбайт памяти.
Для каждого записываемого в контейнер сектора или области данных диска, состоящей из последовательно расположенных секторов, указывается смещение относительно нулевого сектора 251 и размер 252. Смещение и размер могут измеряться как в количестве секторов, так и в количестве информации (байты, биты).
На Фиг.7 изображен алгоритм эмуляции загрузки компьютерной системы с целью обнаружения неизвестных программ и данных. После начала эмуляции загрузки 700 определяется геометрия диска 705 (считывается из файла контейнера или определяется из параметров жесткого диска). Далее устанавливаются значения регистров процессора 710. В первую очередь загружается главная загрузочная запись в виртуальную память эмулятора 715 и начинается исполнение кода загрузочной записи на виртуальном процессоре 720. Запросы обрабатываются с помощью виртуализации BIOS 725, которая осуществляет трансляцию адреса 730 для прямого обращения к диску. Все запрашиваемые в процессе эмуляции сектора, адрес которых получен на этапе 730, записываются в контейнер 735. Эмуляция загрузки может быть прекращена в зависимости от реализации и настройки по разным причинам: при достижении максимального количества эмулируемых команд, при достижении максимального размера контейнера и т.д. Цикл 725-735 будет повторяться до тех пор, пока не будет закончен процесс эмуляции 740. Когда контейнер сформирован, он передается на анализ 745 в антивирусную лабораторию, выделенный сервер, другой компьютер или средство анализа, установленное на исследуемой компьютерной системе. Результатом анализа является обновление антивирусных баз 750 и лечение компьютера 755 от выявленной и обработанной угрозы.
Фиг.8 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 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, представленного на Фиг.8. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются только примерами, которые не ограничивают объем настоящего изобретения, описанной формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящего изобретения, согласующиеся с сущностью и объемом настоящего изобретения.