RU2510074C2 - Система и способ проверки исполняемого кода перед его выполнением - Google Patents
Система и способ проверки исполняемого кода перед его выполнением Download PDFInfo
- Publication number
- RU2510074C2 RU2510074C2 RU2012106465/08A RU2012106465A RU2510074C2 RU 2510074 C2 RU2510074 C2 RU 2510074C2 RU 2012106465/08 A RU2012106465/08 A RU 2012106465/08A RU 2012106465 A RU2012106465 A RU 2012106465A RU 2510074 C2 RU2510074 C2 RU 2510074C2
- Authority
- RU
- Russia
- Prior art keywords
- memory page
- memory
- executable code
- attributes
- exception
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
Изобретение относится к вычислительной технике. Технический результат заключается в обнаружении программного кода, использующего уязвимости в программном обеспечении. Способ проверки исполняемого кода перед его выполнением, в котором определяют значения атрибутов страницы памяти в момент ее выделения или модификации атрибутов; сохраняют адрес страницы памяти при одновременно установленных значениях атрибутов страницы памяти, связанных с разрешением на запись и разрешением на выполнение исполняемого кода; меняют, по меньшей мере, один из атрибутов страницы памяти, связанный с разрешением на запись или выполнением исполняемого кода; получают исключение при обращении к странице памяти, адрес которой был сохранен; определяют атрибуты и адрес страницы памяти, при обращении к которой было получено исключение; производят проверку потока процесса, обращение которого к странице памяти вызвало исключение, и/или исполняемого кода, записанного в странице памяти, при обращении к которой было получено исключение. 2 н.п. ф-лы, 7 ил.
Description
Область техники
Изобретение относится к проверке программного кода, а более конкретно к проверке исполняемого кода перед его выполнением.
Уровень техники
В связи с ростом количества вредоносных программ, которые распространяются как через Интернет и локальные сети, так и с помощью переносных носителей, наиболее заметную роль в качестве средств для распространения вредоносного кода играют так называемые эксплойты - фрагменты кода или команд, которые используют уязвимости в программном обеспечении (http://www.securelist.com/m/threats/detect/troian-programs/exploit). Уязвимости являются результатом ошибок, допущенных при программировании или проектировании приложений. С ростом количества приложений и их сложности количество уязвимостей неизбежно растет, чем активно пользуются создатели вредоносных программ, используя уже не единичные эксплойты, а целые наборы, рассчитанные на целый ряд программ и их возможные версии. Эксплойты могут предназначаться для операционных систем, браузеров, сайтов и т.д.
Приведем пример работы одного из самых известных видов эксплойтов, который использует атаку на переполнение буфера. На Фиг.1 приведена схема загрузки исполняемого файла программы с диска в память. Каждый исполняемый файл имеет различные сегменты (секции) - код (text), данные (data), неинициализированные данные (bss), а также динамически распределяемую область памяти при загрузке - кучу (heap) и стек (stack). Каждый сегмент имеет собственное предназначение, например сегмент кода содержит непосредственно исполняемые инструкции. При загрузке для каждого сегмента выделяется некоторая область памяти (страницы памяти при страничной организации памяти).
При выполнении инструкций в сегменте кода используется регистр EIP, который содержит абсолютный адрес следующей инструкции, подлежащей выполнению. Как правило, указатель команд не выходит за пределы сегмента кода, однако подобное может произойти при срабатывании эксплойта, который может изменить адрес возврата выполняемой функции при переполнении буфера.
Для решения проблемы противодействия эксплойтам производители программного обеспечения постоянно выпускают обновления своих приложений с целью закрытия известных уязвимостей, производители операционных систем и антивирусные компании применяют различные способы борьбы с уже известными эксплойтами.
Одним из методов борьбы с эксплойтами является использование функции безопасности DEP (Data Execution Prevention), которая не позволяет приложению исполнять код из области памяти, помеченной как "только для данных", т.е. технология фактически реализует использования флага исполнение (eXecute) для страницы памяти. Данная технология успешно применяется для защиты от атак на переполнение буфера, когда приложение записывает данные за пределами выделенного в памяти буфера.
Другая технология - ASLR (Address Space Layout Randomization) позволяет случайным образом изменять расположение в адресном пространстве процесса важных структур, таких как образ исполняемого файла, подгружаемые библиотеки и стек, что значительно усложняет эксплуатацию определенных уязвимостей.
Можно выделить ряд патентных публикаций, которые описывают способы определения работы эксплойтов на основании операций модификации памяти. Патент US5949973 описывает технологию защиты от атаки на переполнение буфера (стека). Приведенный метод работы создает полную копию стека по случайному адресу в памяти и затем стирает старый стек. В патенте US7155741 приводится метод защиты от переполнения буфера. С этой целью реализуется программная логика (monitor layer), которая отслеживает попытки загрузки кода в память. В том случае, если загружаемый код имеет высокий уровень опасности (high-risk), то monitor layer загружает этот код в заранее отведенный сегмент памяти. Патент US7631292 описывает технологию, близкую к ASLR, что описывается в виде режима IREX (intrusion-resistant execution mode) для ОС. В подобном режиме происходит загрузка DLL по случайным адресам.
Стоит отметить, что приведенные технологии позволяют успешно бороться с большинством современных эксплойтов, однако в ряде случаев не удается отследить запуск самых последних версий эксплойтов, так как создатели эксплойтов ищут все новые способы для обхода имеющихся технологий защиты. Для решения данной задачи требуется разработать механизм отслеживания операций со страницами оперативной памяти для определения момента записи вредоносного исполняемого кода и попытки его выполнения.
Анализ предшествующего уровня техники и возможностей, которые появляются при комбинировании их в одной системе, позволяет получить новый результат, а именно способ для проверки исполняемого кода перед его выполнением.
Сущность изобретения
Технический результат настоящего изобретения заключается в обнаружении программного кода, использующего уязвимости в программном обеспечении (эксплойтов), с помощью проверки исполняемого кода перед его непосредственным выполнением.
Согласно одному из вариантов реализации предлагается способ проверки исполняемого кода перед его выполнением, включает этапы, на которых: определяют значения атрибутов страницы памяти в момент ее выделения или модификации атрибутов; сохраняют адрес страницы памяти при одновременно установленных значениях атрибутов страницы памяти, связанных с разрешением на запись и разрешением на выполнение исполняемого кода; меняют, по меньшей мере, один из атрибутов страницы памяти, связанный с разрешением на запись или выполнением исполняемого кода; получают исключение при обращении к странице памяти, адрес которой был сохранен; определяют атрибуты и адрес страницы памяти, при обращении к которой было получено исключение; производят проверку потока процесса, обращение которого к странице памяти вызвало исключение, и/или исполняемого кода, записанного в странице памяти, при обращении к которой было получено исключение.
Согласно одному из частных вариантов реализации исключение срабатывает при запрещенных действиях с данными, сохраненными в странице памяти, при обращении к которой было получено исключение.
В другом частном варианте реализации исключением является EXCEPTION_ACCESS_VIOLATION.
В еще одном из частных вариантов реализации проверка исполняемого кода включает анализ исполняемого кода, записанного в странице памяти, при помощи одного из: сигнатурной проверки, эвристического анализа, эмуляции.
Согласно одному из частных вариантов реализации проверка потока процесса включает анализ потока, обращение которого к странице памяти вызвало исключение, при помощи одного из: сигнатурной проверки, эвристического анализа, эмуляции.
Согласно одному из вариантов реализации предлагается система проверки исполняемого кода перед его выполнением, которая включает:
перехватчик, связанный с базой данных работы с памятью, при этом перехватчик отслеживает операции с атрибутами страницы памяти процесса, во время которых определяет значения атрибутов страницы памяти в момент ее выделения или модификации атрибутов, сохраняет адрес страницы памяти в базе данных работы с памятью при одновременно установленных значениях атрибутов страницы памяти, связанных с разрешением на запись и разрешением на выполнение исполняемого кода, меняет, по меньшей мере, один из атрибутов страницы памяти, связанный с разрешением на запись или выполнением исполняемого кода, получает исключение при обращении к странице памяти и передает антивирусному приложению информацию об исключении, которая включает, по меньшей мере, информацию о потоке процесса, обращение которого к странице памяти вызвало исключение, и/или адрес страницы памяти; базу данных работы с памятью, предназначенную для хранения адресов страниц памяти; антивирусное приложение, предназначенное для проверки, по меньшей мере, потока процесса, обращение которого к странице памяти вызвало исключение, и/или исполняемого кода, записанного в странице памяти, при обращении к которой было получено исключение.
Согласно одному из частных вариантов реализации исключение срабатывает при запрещенных действиях с данными, сохраненными в странице памяти, при обращении к которой было получено исключение.
В другом частном варианте реализации исключением является EXCEPTION_ACCESS_VIOLATION.
В еще одном из частных вариантов реализации проверка исполняемого кода включает анализ исполняемого кода, записанного в странице памяти, при помощи одного из: сигнатурной проверки, эвристического анализа, эмуляции.
Согласно одному из частных вариантов реализации проверка потока процесса включает анализ потока, обращение которого к странице памяти вызвало исключение, при помощи одного из: сигнатурной проверки, эвристического анализа, эмуляции.
В другом частном варианте реализации в качестве базы данных адресов используется Page Table, где в Page Table Entry (РТЕ) соответствующей страницы выставляется один из зарезервированных битов.
Краткое описание чертежей
Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления полезной модели со ссылкой на прилагаемые чертежи, на которых:
Фиг.1 иллюстрирует схему загрузки исполняемого файла программы с диска в память.
Фиг.2 иллюстрирует систему для обнаружения программного кода, использующего уязвимости в программном обеспечении.
Фиг.3 показывает способ работы перехватчика запросов при обращении потоков процесса на выделение страницы памяти.
Фиг.4 отображает способ отслеживания операций с памятью с помощью перехватчика запросов.
Фиг.5 иллюстрирует способ обнаружения потенциально опасного исполняемого кода перед его выполнением.
Фиг.6 показывает таблицу страниц (page table).
Фиг.7 приводит пример компьютерной системы общего назначения, на которой может быть реализовано настоящее изобретение.
Описание вариантов осуществления изобретения
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, обеспеченными для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется только в объеме приложенной формулы.
Фиг.2 иллюстрирует систему для обнаружения программного кода, использующего уязвимости в программном обеспечении. Запущенный в операционной системе (ОС) 240 процесс приложения 210, такой как, например, Microsoft Internet Explorer или Mozilla Thunderbird, имеет ряд исполняемых в ОС потоков 220. При исполнении один из потоков 220 обращается к операционной системе 240 при необходимости выделить страницу памяти 250. Каждая выделяемая страница имеет ряд атрибутов - ее можно прочитать (R)ead, записать в нее данные (W)rite, а также исполнять записанный в ней код E(X)ecute. При работе кода эксплойта, записанного по определенному адресу в памяти, страница памяти должна иметь как атрибут W, так и атрибут Х для того, чтобы сначала можно было записать в эту страницу код эксплойта, а затем передать ему выполнение. При этом код эксплойта должен быть внедрен при выполнении одного из потоков 220, что требует анализа как операций с памятью, так и самих потоков для успешного обнаружения эксплойтов.
Для отслеживания операций со страницами памяти используется перехватчик 230, который перехватывает запросы, связанные с обращением к памяти. Например, при обработке запроса на выделение новой страницы памяти со стороны одного из потоков 220 перехватчик 230 записывает в базу данных 260 работы с памятью адрес страницы, ее атрибуты, а также идентификатор потока 220 (TID) после того, как операционная система 240 выделяет страницу в виртуальной памяти 250. В одном из вариантов реализации вместо адреса страницы в базу данных работы с памятью вставляется один из зарезервированных битов в Page Table Entry (РТЕ) соответствующей страницы. В одном из вариантов реализации запись в базу данных 260 происходит только в том случае, если страница памяти имеет атрибуты W и X. В другом варианте реализации настоящего изобретения в базе данных 260 сохраняется информация обо всех операциях со страницами памяти. В еще одном варианте реализации в базе данных 260 дополнительно сохраняется идентификатор процесса 210 (PID) и записи в базе данных 260 по всем запущенным процессам в операционной системе 240.
В системе на Фиг.2 также приведено антивирусное приложение 270, которое обращается к базе данных 260 работы с памятью для проверки состояния виртуальной памяти 250 процесса 210 с целью отслеживания изменения атрибутов страниц памяти, что более подробно раскрыто далее.
Фиг.3 показывает способ работы перехватчика запросов при обращении потоков процесса на выделение страницы памяти. На этапе 302 происходит запрос на выделение страницы памяти, который перехватывается с помощью перехватчика 230 после выделения страницы памяти. На этапе 304 перехватчик 230 определяет атрибуты страницы и в том случае, если у страницы отмечены атрибуты W и X, то на этапе 306 адрес страницы сохраняется в базе данных 260. Атрибуты W и Х могут означать, что в странице памяти может быть записан эксплойт, т.е. вредоносный код, который сначала будет записан в память, а затем выполнен. Для того чтобы не допустить выполнения кода, перехватчик 230 на этапе 308 убирает атрибут X, что не позволит выполнять код, записанный в этой странице. На этапе 310 способ заканчивает свою работу.
Фиг.4 отображает способ отслеживания операций с памятью с помощью перехватчика запросов. На этапе 401 происходит обнаружение исключения, когда один из потоков 220 пытается провести запрещенные действия с данными, сохраненными по определенному адресу в памяти 250, например прочитать или записать данные, в то время как атрибуты соответствующей страницы памяти не заданы (т.е. атрибуты (R)ead и (W)rite не имеют установленного значения "Да"). В операционной системе Windows подобным исключением является EXCEPTION_ACCESS_VIOLATION.
Далее на этапе 402 происходит определение адреса страницы путем запроса в базу данных 260 работы с памятью, в которой была сохранена информация о странице с заданными атрибутами W и X. Если страница была найдена, то алгоритм переходит к этапу 404. В том случае, если исключения сработало на неизвестной странице, то будет вызван стандартный обработчик исключения, который присутствует в операционной системе 240 (этап 420). На этапе 404 происходит определение, почему сработало данное исключение, а именно - на запись или на выполнение (этапы 406 и 407 соответственно). Данная информация передается антивирусному приложению 270, которое определяет ответ на запрос путем оценки риска (этапы 408 и 409 соответственно).
Оценка риска может быть выполнена с учетом известных решений по оценке риска для определенного приложения или запущенного процесса. В одном из вариантов реализации оценка риска может быть выполнена с помощью проверки страницы памяти на наличие известных сигнатур эксплойтов. В других вариантах реализации оценка риска может быть выполнена с помощью методов эвристического анализа или эмуляции. В еще одном варианте реализации могут использоваться и другие подходы, например в патенте US7530106 описывается метод оценки риска процесса путем присвоения ему специального рейтинга. При этом сам рейтинг складывается из двух частей: статической и динамической. Статическая часть считается на основе статических признаков исполняемого файла: размер, местоположение, импортируемые библиотеки, сжатие и т.д. Динамическая часть основана на результатах эмуляции, зависит от того, какие были проделаны операции со службами, файловой системой, реестром, сетью и т.д.
В том случае, если антивирусное приложение 270 разрешает запись или выполнение, то перед этим оно меняет флаги страницы на:
W=Нет, X=Да, если был запрос на выполнение (этап 414),
W=Да, Х=Нет, если был запрос на запись (этап 416). Таким образом, достигается защита от одновременной записи и выполнения. Каждое исключение обрабатывается приведенным выше образом, и информация о каждом подобном событии сохраняется с результатами анализа для последующего определения возможного эксплойта на этапе 418. На этапе 422 способ отслеживания операций с памятью с помощью перехватчика запросов заканчивает свою работу.
Фиг.5 иллюстрирует способ обнаружения потенциально опасного исполняемого кода перед его выполнением. Под потенциально опасным исполняемым кодом понимается как код эксплойта, так и, например, код распаковщика. После того как на этапе 418 происходит обработка исключения, на этапе 502 разбирается информация по исключению - на этапе 504 определяется причина исключения, была ли это попытка исполнения кода или попытка записи. При попытке исполнения кода на этапе 506 происходит анализ исполняемого кода, записанного в странице памяти. При попытке записи на этапе 508 происходит анализ потока 220, который пытается записать исполняемый код в страницу памяти. Анализ исполняемого кода может быть выполнен с помощью известных методов сигнатурной или эвристической проверки, которые позволяют обнаружить как уже известные эксплойты, так и их модификации. Даже если не получится распознать исполняемый код как код эксплойта, операции с атрибутами страницы памяти позволяют надежно предотвратить его исполнение. Если на этапе 510 был сделан вывод о том, что признаки эксплойта выявлены, т.е. анализ на этапе 506 или на этапе 508 дал положительные результаты, то на этапе 512 произойдет завершение работы с памятью процесса приложения 210. В противном случае способ возвращается к этапу 501 ожидания следующего исключения. Под этим может подразумеваться как завершение процесса 210 целиком, включая все потоки 220, так и остановку конкретного потока, в рамках которого возможно исполнение кода эксплойта.
Один из вариантов реализации настоящего изобретения предусматривает выполнение перехватчика 230 в виде драйвера операционной системы 240. Однако вариант использования драйвера для модификации атрибутов страниц может иметь недостатки, связанные с производительностью. Фиг.6 показывает таблицу страниц (page table). Как правило, подобные структуры являются многоуровневыми. Регистр CR3 хранит адрес в физической памяти для первой страницы в page directory. Каждая запись в page directory (PDE) ссылается на соответствующую page table, каждая запись в которой (РТЕ) ссылается уже непосредственно на страницу памяти. Непосредственно с РТЕ (т.е. со страницей) связан ряд флагов, часть из которых отвечает за доступ - чтение (R), запись (W). Также в CPU используется специальный кэш - TLB (Translation Lookaside Buffer). Подобный кэш предназначен для ускорения трансляции адреса виртуальной памяти в адрес физической памяти. Однако TLB сам по себе должен быть синхронизирован с page table, тем более что каждый процесс имеет свое собственное адресное пространство. При многих операциях с памятью TLB полностью или частично очищается (flush), что является ресурсоемкой операцией с точки зрения затрат на очищение буфера и его заполнение (т.к. ответ от буфера занимает максимум несколько тактов, в то время как запрос в память отнимет несколько тысяч тактов).
Другие варианты реализации включают модификацию диспетчера памяти операционной системы 240 или в виде части гипервизора. В одном из вариантов реализации модификация диспетчера памяти операционной системы 240, которая предусматривает поддержку создания событий при переключении атрибутов страниц памяти для использования этих событий перехватчиком 230, модификацию РТЕ с целью поддержки дополнительных полей, используемых настоящим изобретением (например, бит признака изменения атрибутов W и X).
Стоит отметить, что приведенный способ работы направлен не только на обнаружение эксплойтов, но также и на обнаружение самомодифицирующегося кода, распаковки кода с возможностью проверить код перед выполнением, обнаружение внедрение исполняемого кода в системные процессы и т.д. Таким образом, описанный способ направлен на обнаружение нового кода в адресном пространстве процесса перед его выполнением в сочетании с возможной антивирусной проверкой этого кода.
Фиг.7 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 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, представленного на Фиг.7. В вычислительной сети могут присутствовать также и другие устройства, например маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящего изобретения, согласующиеся с сущностью и объемом настоящего изобретения.
Claims (2)
1. Способ проверки исполняемого кода перед его выполнением, включает этапы, на которых:
а) используют перехватчик, реализованный в виде драйвера операционной системы, с целью отслеживания операций с атрибутами страницы памяти процесса, во время которых:
i. определяют значения атрибутов страницы памяти в момент ее выделения или модификации атрибутов;
ii. сохраняют адрес страницы памяти при одновременно установленных значениях атрибутов страницы памяти, связанных с разрешением на запись и разрешением на выполнение исполняемого кода;
iii. меняют, по меньшей мере, один из атрибутов страницы памяти, связанный с разрешением на запись или выполнением исполняемого кода;
iv. получают исключение при обращении к странице памяти, адрес которой был сохранен на этапе ii);
б) используют антивирусное приложение для выполнения следующих действий:
i. производят проверку потока процесса на наличие признаков эксплойта, обращение которого к странице памяти вызвало исключение, и/или проверку исполняемого кода на наличие признаков эксплойта, записанного в странице памяти, при обращении к которой было получено исключение;
ii. завершают процесс при выявлении признаков экслойта или разрешают запись или выполнение исполняемого кода по странице памяти, обращение к которой вызвало исключение, при этом меняют флаги данной страницы памяти на:
W = Нет, Х = Да, если был запрос на выполнение,
W = Да, Х = Нет, если был запрос на запись.
а) используют перехватчик, реализованный в виде драйвера операционной системы, с целью отслеживания операций с атрибутами страницы памяти процесса, во время которых:
i. определяют значения атрибутов страницы памяти в момент ее выделения или модификации атрибутов;
ii. сохраняют адрес страницы памяти при одновременно установленных значениях атрибутов страницы памяти, связанных с разрешением на запись и разрешением на выполнение исполняемого кода;
iii. меняют, по меньшей мере, один из атрибутов страницы памяти, связанный с разрешением на запись или выполнением исполняемого кода;
iv. получают исключение при обращении к странице памяти, адрес которой был сохранен на этапе ii);
б) используют антивирусное приложение для выполнения следующих действий:
i. производят проверку потока процесса на наличие признаков эксплойта, обращение которого к странице памяти вызвало исключение, и/или проверку исполняемого кода на наличие признаков эксплойта, записанного в странице памяти, при обращении к которой было получено исключение;
ii. завершают процесс при выявлении признаков экслойта или разрешают запись или выполнение исполняемого кода по странице памяти, обращение к которой вызвало исключение, при этом меняют флаги данной страницы памяти на:
W = Нет, Х = Да, если был запрос на выполнение,
W = Да, Х = Нет, если был запрос на запись.
2. Система проверки исполняемого кода перед его выполнением, которая включает:
а) перехватчик, реализованный в виде драйвера операционной системы, связанный с базой данных работы с памятью, при этом перехватчик отслеживает операции с атрибутами страницы памяти процесса, во время которых:
i. определяет значения атрибутов страницы памяти в момент ее выделения или модификации атрибутов:
ii. сохраняет адрес страницы памяти в базе данных работы с памятью при одновременно установленных значениях атрибутов страницы памяти, связанных с разрешением на запись и разрешением на выполнение исполняемого кода;
iii. меняет, по меньшей мере, один из атрибутов страницы памяти, связанный с разрешением на запись или выполнением исполняемого кода;
iv. получает исключение при обращении к странице памяти и передает антивирусному приложению информацию об исключении, которая включает, по меньшей мере, одно из: информацию о потоке процесса, обращение которого к странице памяти вызвало исключение; адрес страницы памяти;
б) базу данных работы с памятью, предназначенную для хранения адресов страниц памяти;
в) антивирусное приложение, предназначенное для проверки на наличие признаков эксплойта, по меньшей мере, одного из:
потока процесса, обращение которого к странице памяти вызвало исключение; исполняемого кода, записанного в странице памяти, при обращении к которой было получено исключение;
при этом антивирусное приложение также завершает процесс при выявлении признаков эксплойта или разрешают запись или выполнение исполняемого кода по странице памяти, обращение к которой вызвало исключение, при этом меняют флаги данной страницы памяти на:
W = Нет, Х = Да, если был запрос на выполнение,
W = Да, Х = Нет, если был запрос на запись.
а) перехватчик, реализованный в виде драйвера операционной системы, связанный с базой данных работы с памятью, при этом перехватчик отслеживает операции с атрибутами страницы памяти процесса, во время которых:
i. определяет значения атрибутов страницы памяти в момент ее выделения или модификации атрибутов:
ii. сохраняет адрес страницы памяти в базе данных работы с памятью при одновременно установленных значениях атрибутов страницы памяти, связанных с разрешением на запись и разрешением на выполнение исполняемого кода;
iii. меняет, по меньшей мере, один из атрибутов страницы памяти, связанный с разрешением на запись или выполнением исполняемого кода;
iv. получает исключение при обращении к странице памяти и передает антивирусному приложению информацию об исключении, которая включает, по меньшей мере, одно из: информацию о потоке процесса, обращение которого к странице памяти вызвало исключение; адрес страницы памяти;
б) базу данных работы с памятью, предназначенную для хранения адресов страниц памяти;
в) антивирусное приложение, предназначенное для проверки на наличие признаков эксплойта, по меньшей мере, одного из:
потока процесса, обращение которого к странице памяти вызвало исключение; исполняемого кода, записанного в странице памяти, при обращении к которой было получено исключение;
при этом антивирусное приложение также завершает процесс при выявлении признаков эксплойта или разрешают запись или выполнение исполняемого кода по странице памяти, обращение к которой вызвало исключение, при этом меняют флаги данной страницы памяти на:
W = Нет, Х = Да, если был запрос на выполнение,
W = Да, Х = Нет, если был запрос на запись.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2012106465/08A RU2510074C2 (ru) | 2012-02-24 | 2012-02-24 | Система и способ проверки исполняемого кода перед его выполнением |
US13/648,863 US8990934B2 (en) | 2012-02-24 | 2012-10-10 | Automated protection against computer exploits |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2012106465/08A RU2510074C2 (ru) | 2012-02-24 | 2012-02-24 | Система и способ проверки исполняемого кода перед его выполнением |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2012106465A RU2012106465A (ru) | 2013-08-27 |
RU2510074C2 true RU2510074C2 (ru) | 2014-03-20 |
Family
ID=49004803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2012106465/08A RU2510074C2 (ru) | 2012-02-24 | 2012-02-24 | Система и способ проверки исполняемого кода перед его выполнением |
Country Status (2)
Country | Link |
---|---|
US (1) | US8990934B2 (ru) |
RU (1) | RU2510074C2 (ru) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2510641A (en) * | 2013-02-12 | 2014-08-13 | F Secure Corp | Detecting suspicious code injected into a process if function call return address points to suspicious memory area |
US9501649B2 (en) * | 2013-03-15 | 2016-11-22 | Symantec Corporation | Systems and methods for determining potential impacts of applications on the security of computing systems |
US9298911B2 (en) * | 2013-03-15 | 2016-03-29 | Intel Corporation | Method, apparatus, system, and computer readable medium for providing apparatus security |
US20150058926A1 (en) * | 2013-08-23 | 2015-02-26 | International Business Machines Corporation | Shared Page Access Control Among Cloud Objects In A Distributed Cloud Environment |
US9400885B2 (en) | 2014-01-10 | 2016-07-26 | Bitdefender IPR Management Ltd. | Computer security systems and methods using virtualization exceptions |
US9507935B2 (en) * | 2014-01-16 | 2016-11-29 | Fireeye, Inc. | Exploit detection system with threat-aware microvisor |
US9703726B2 (en) | 2014-06-24 | 2017-07-11 | Bitdefender IPR Management Ltd. | Systems and methods for dynamically protecting a stack from below the operating system |
RU2586576C1 (ru) * | 2014-12-05 | 2016-06-10 | Закрытое акционерное общество "Лаборатория Касперского" | Способ выполнения обращения к процедурам загрузочного драйвера |
US9934380B2 (en) * | 2014-12-23 | 2018-04-03 | Mcafee, Llc | Execution profiling detection of malicious objects |
US9984230B2 (en) | 2015-06-26 | 2018-05-29 | Mcafee, Llc | Profiling event based exploit detection |
US10216927B1 (en) | 2015-06-30 | 2019-02-26 | Fireeye, Inc. | System and method for protecting memory pages associated with a process using a virtualization layer |
US11113086B1 (en) | 2015-06-30 | 2021-09-07 | Fireeye, Inc. | Virtual system and method for securing external network connectivity |
US10642753B1 (en) | 2015-06-30 | 2020-05-05 | Fireeye, Inc. | System and method for protecting a software component running in virtual machine using a virtualization layer |
US10726127B1 (en) | 2015-06-30 | 2020-07-28 | Fireeye, Inc. | System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer |
US10395029B1 (en) | 2015-06-30 | 2019-08-27 | Fireeye, Inc. | Virtual system and method with threat protection |
US10365937B2 (en) * | 2015-07-24 | 2019-07-30 | Red Hat Israel, Ltd. | Entropy increase by executable loader |
US11093603B2 (en) * | 2015-08-26 | 2021-08-17 | Robotic Research, Llc | System and method for protecting software from buffer overruns |
US10033759B1 (en) | 2015-09-28 | 2018-07-24 | Fireeye, Inc. | System and method of threat detection under hypervisor control |
US9536088B1 (en) | 2015-11-09 | 2017-01-03 | AO Kaspersky Lab | System and method for protection of memory in a hypervisor |
US10447728B1 (en) | 2015-12-10 | 2019-10-15 | Fireeye, Inc. | Technique for protecting guest processes using a layered virtualization architecture |
US10846117B1 (en) | 2015-12-10 | 2020-11-24 | Fireeye, Inc. | Technique for establishing secure communication between host and guest processes of a virtualization architecture |
US10108446B1 (en) | 2015-12-11 | 2018-10-23 | Fireeye, Inc. | Late load technique for deploying a virtualization layer underneath a running operating system |
US10191861B1 (en) | 2016-09-06 | 2019-01-29 | Fireeye, Inc. | Technique for implementing memory views using a layered virtualization architecture |
US10546117B1 (en) * | 2016-11-15 | 2020-01-28 | Symantec Corporation | Systems and methods for managing security programs |
US10445007B1 (en) * | 2017-04-19 | 2019-10-15 | Rockwell Collins, Inc. | Multi-core optimized warm-start loading approach |
US10924505B2 (en) * | 2017-08-24 | 2021-02-16 | Red Hat, Inc. | Passcode based access-control with randomized limits |
US10671725B2 (en) * | 2018-03-20 | 2020-06-02 | Didi Research America, Llc | Malicious process tracking |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7673116B2 (en) * | 2006-01-17 | 2010-03-02 | Advanced Micro Devices, Inc. | Input/output memory management unit that implements memory attributes based on translation data |
US20100287414A1 (en) * | 2009-05-06 | 2010-11-11 | Microsoft Corporation | Exception raised notification |
US7886148B2 (en) * | 2002-12-19 | 2011-02-08 | Massachusetts Institute Of Technology | Secure execution of a computer program |
RU2417429C2 (ru) * | 2006-03-24 | 2011-04-27 | ЭйВиДжи ТЕКНОЛОДЖИЗ СиУай ЛИМИТЕД | Защита от использования уязвимости программного обеспечения |
US7984304B1 (en) * | 2004-03-02 | 2011-07-19 | Vmware, Inc. | Dynamic verification of validity of executable code |
US8024798B2 (en) * | 2005-05-06 | 2011-09-20 | Siemens Aktiengesellschaft | Method and apparatus for protecting against buffer overrun attacks |
US8074281B2 (en) * | 2008-01-14 | 2011-12-06 | Microsoft Corporation | Malware detection with taint tracking |
US8104089B1 (en) * | 2007-12-31 | 2012-01-24 | Symantec Corporation | Tracking memory mapping to prevent packers from evading the scanning of dynamically created code |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5826013A (en) | 1995-09-28 | 1998-10-20 | Symantec Corporation | Polymorphic virus detection module |
US5815719A (en) | 1996-05-07 | 1998-09-29 | Sun Microsystems, Inc. | Method and apparatus for easy insertion of assembler code for optimization |
US20030014667A1 (en) | 2001-07-16 | 2003-01-16 | Andrei Kolichtchak | Buffer overflow attack detection and suppression |
US6779099B2 (en) | 2001-07-20 | 2004-08-17 | Chien-Tzu Hou | Operation method for controlling access attributes of a memorized page of a memory unit and its structure |
GB2378005A (en) | 2001-07-27 | 2003-01-29 | Chien-Tzu Hou | Method for Controlling Paged Memory Access Attributes |
US20080177994A1 (en) | 2003-01-12 | 2008-07-24 | Yaron Mayer | System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows |
US7475220B1 (en) | 2003-08-18 | 2009-01-06 | Cray Incorporated | Buffer overflow detection |
US7971255B1 (en) | 2004-07-15 | 2011-06-28 | The Trustees Of Columbia University In The City Of New York | Detecting and preventing malcode execution |
US7836504B2 (en) | 2005-03-01 | 2010-11-16 | Microsoft Corporation | On-access scan of memory for malware |
US7624373B2 (en) | 2005-03-31 | 2009-11-24 | Microsoft Corporation | Security mechanism for interpreting scripts in an interpretive environment |
GB0513375D0 (en) | 2005-06-30 | 2005-08-03 | Retento Ltd | Computer security |
GB0525871D0 (en) * | 2005-12-20 | 2006-02-01 | Symbian Software Ltd | Malicious software detecting in a computing device |
US8479174B2 (en) | 2006-04-05 | 2013-07-02 | Prevx Limited | Method, computer program and computer for analyzing an executable computer file |
WO2008131446A2 (en) | 2007-04-23 | 2008-10-30 | Scrutiny, Inc. | Computing infrastructure |
US8763115B2 (en) | 2007-08-08 | 2014-06-24 | Vmware, Inc. | Impeding progress of malicious guest software |
US7996904B1 (en) | 2007-12-19 | 2011-08-09 | Symantec Corporation | Automated unpacking of executables packed by multiple layers of arbitrary packers |
US20090307669A1 (en) | 2008-06-06 | 2009-12-10 | Garst Jr Gerald Blaine | Memory management for closures |
US8321850B2 (en) | 2008-06-06 | 2012-11-27 | Vmware, Inc. | Sharing and persisting code caches |
US8341627B2 (en) * | 2009-08-21 | 2012-12-25 | Mcafee, Inc. | Method and system for providing user space address protection from writable memory area in a virtual environment |
US8984478B2 (en) * | 2011-10-03 | 2015-03-17 | Cisco Technology, Inc. | Reorganization of virtualized computer programs |
US8973144B2 (en) * | 2011-10-13 | 2015-03-03 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
-
2012
- 2012-02-24 RU RU2012106465/08A patent/RU2510074C2/ru active
- 2012-10-10 US US13/648,863 patent/US8990934B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7886148B2 (en) * | 2002-12-19 | 2011-02-08 | Massachusetts Institute Of Technology | Secure execution of a computer program |
US7984304B1 (en) * | 2004-03-02 | 2011-07-19 | Vmware, Inc. | Dynamic verification of validity of executable code |
US8024798B2 (en) * | 2005-05-06 | 2011-09-20 | Siemens Aktiengesellschaft | Method and apparatus for protecting against buffer overrun attacks |
US7673116B2 (en) * | 2006-01-17 | 2010-03-02 | Advanced Micro Devices, Inc. | Input/output memory management unit that implements memory attributes based on translation data |
RU2417429C2 (ru) * | 2006-03-24 | 2011-04-27 | ЭйВиДжи ТЕКНОЛОДЖИЗ СиУай ЛИМИТЕД | Защита от использования уязвимости программного обеспечения |
US8104089B1 (en) * | 2007-12-31 | 2012-01-24 | Symantec Corporation | Tracking memory mapping to prevent packers from evading the scanning of dynamically created code |
US8074281B2 (en) * | 2008-01-14 | 2011-12-06 | Microsoft Corporation | Malware detection with taint tracking |
US20100287414A1 (en) * | 2009-05-06 | 2010-11-11 | Microsoft Corporation | Exception raised notification |
Also Published As
Publication number | Publication date |
---|---|
RU2012106465A (ru) | 2013-08-27 |
US20130227680A1 (en) | 2013-08-29 |
US8990934B2 (en) | 2015-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2510074C2 (ru) | Система и способ проверки исполняемого кода перед его выполнением | |
RU2637997C1 (ru) | Система и способ обнаружения вредоносного кода в файле | |
EP3123311B1 (en) | Malicious code protection for computer systems based on process modification | |
RU2691187C1 (ru) | Система и способы аудита виртуальной машины | |
US9465700B2 (en) | System and method for kernel rootkit protection in a hypervisor environment | |
RU2589862C1 (ru) | Способ обнаружения вредоносного кода в оперативной памяти | |
US8954959B2 (en) | Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU | |
US8479295B2 (en) | Method and apparatus for transparently instrumenting an application program | |
JP5819535B2 (ja) | ハイパーバイザ環境でカーネル・ルートキットから保護するシステムおよび方法 | |
JP6411494B2 (ja) | 仮想マシンにおけるページフォールトインジェクション | |
Schatz | BodySnatcher: Towards reliable volatile memory acquisition by software | |
US9178900B1 (en) | Detection of advanced persistent threat having evasion technology | |
US8631170B2 (en) | Memory overcommit by using an emulated IOMMU in a computer system with a host IOMMU | |
Qi et al. | ForenVisor: A tool for acquiring and preserving reliable data in cloud live forensics | |
US20080016314A1 (en) | Diversity-based security system and method | |
US7251735B2 (en) | Buffer overflow protection and prevention | |
Tang et al. | Exploring control flow guard in windows 10 | |
Mittal et al. | A survey of techniques for improving security of gpus | |
Cheng et al. | CATTmew: Defeating software-only physical kernel isolation | |
Enomoto et al. | Efficient Protection Mechanism for CPU Cache Flush Instruction Based Attacks | |
JP2008234248A (ja) | プログラム実行装置及びプログラム実行方法 | |
Zhong et al. | A virtualization based monitoring system for mini-intrusive live forensics | |
EP2720170B1 (en) | Automated protection against computer exploits | |
RU2585978C2 (ru) | Способ вызова системных функций в условиях использования средств защиты ядра операционной системы | |
Sun et al. | Kernel code integrity protection based on a virtualized memory architecture |