4.4 Перехват функций LoadLibrary и GetProcAddress
Перехват функций LoadLibrary и GetProcAddress может быть выполнен любым методом, в классической реализации применяется методика 2 – модификация таблицы импорта. Идея методики проста – если перехватить GetProcAddress, то при запросе адреса можно выдавать программе не реальные адреса интересующих ее функций, а адреса своих перехватчиков. Как и в методе 2 программа «не почувствует» разницы. При вызове GetProcAddress она получает адрес и выполняет вызов функции. У данного метода есть минус – он не позволяет перехватить статически импортируемые функции;
Рис. 5 Перехват функций LoadLibrary и GetProcAddress
4.5 Метод, сочетающий методику 2 и 3
В данной методике модифицируется таблица импорта, причем в обязательном порядке перехватываются функции LoadLibrary и GetProcAddress библиотеки kernel32.dll. В этом случае при вызове статически импортируемых функций искаженные адреса берутся из таблицы импорта, при динамическом определении адреса вызывается перехваченная функция GetProcAddress, которая возвращает адреса функций-перехватчиков. В результате у программы не остается шансов узнать правильный адрес функции.
Рис. 6 Метод сочетающий Перехват функций LoadLibrary и GetProcAddress и модификацию таблицы импорта
4.6 Модификация программного кода API функции.
Данные метод сложнее в реализации, чем подмена адреса. Методика состоит в том, что RootKit находит в памяти машинный код интересующих его функций API и модифицирует его. При таком методе перехвата функции уже нет надобности в модификации таблицы импорта запущенных программ и передаче программам искаженных адресов при вызове GetProcAddress. С точки зрения вызова функции все остается «как есть» за одним исключением – теперь уже по «правильному» адресу внутри «правильной» DLL находится машинный код RootKit.
Рис.7. Модификация программного кода API функции.
Чаще всего вмешательство в машинный код перехватываемых функций минимально. В начале функции размещается не более 2-3 машинных команд, передающих управление основной функции-перехватчику. Для выполнения вызова модифицированных функций RootKit должен сохранить исходный машинный код для каждой модифицированной им функции (естественно, сохраняется не весь машинный код функции, а измененные при перехвате байты). Именно такая методика перехвата реализована в широко известном HackerDefender и библиотеке AFX Rootkit (www.rootkit.com).
4.7. Модификация библиотек DLL на диске
Данная методика состоит в том, что системная библиотека модифицируется на диске. Методы модификации аналогичны описанным выше, только изменения производятся не в памяти, а на диске. Подобная методика не получила широкого распространения.
5 Перехват функций в режиме ядра (kernel mode)
Рис.8 Перехват функций в режиме ядра
Для понимание типовой для методики перехвата функций в режиме ядра следует рассмотреть принципы взаимодействия библиотек пользовательского режима и ядра. Рассмотрим это взаимодействие на упрощенной схеме:
Основное взаимодействие с ядром производится через ntdll.dll, большинство функций которой являются переходниками, обращающимся к ядру через прерывание INT 2Eh (следует заметить, что прикладной программе ничто не мешает напрямую вызывать INT 2Eh). Дальнейшее обращение к функциям ядра основана на структуре, именуемой KeServiceDescriptorTable (или сокращенно SDT), расположенной в ntoskrnl.exe. SDT – это таблица, содержащая адреса точек входа сервисов ядра NT. Описание функций и методик перехвата можно найти в книге Свена Шрайбера «Недокументированные возможности Windows 2000», там же приведена схема взаимодействия, послужившая прототипом для приведенной здесь схемы. Упрощенно можно сказать, что для перехвата функций необходимо написать драйвер, который произведет модификацию таблицы SDT. Перед модификацией драйверу необходимо сохранить адреса перехватываемых функций и записать в таблицу SDT адреса своих обработчиков. Данный метод чем-то напоминает перехват прерываний в MSDOS или описанную выше методику 2.
Этот метод часто называют перехватом Native API и естественно он работает только в NT (и соответственно W2K, XP, W2003). Следует отметить, что перехват Native API осуществляют не только руткиты – существует масса полезных программ, перехватывающих функции при помощи правки SDT – в качестве примера могут служить популярная утилита RegMon от SysInternals или программа Process Guard.
Следует отметить, что описанный метод является наиболее простым, но далеко не единственным. Существует еще ряд способов, в частности создание драйвера-фильтра. Драйвер-фильтр может применяться как для решения задач мониторинга (классический пример – утилита FileMon от SysInternals), так и для активного вмешательства в работу системы. В частности, драйвер-фильтр может применяться для маскировки файлов и папок на диске. Принцип работы такого драйвера основан на манипуляциях с пакетами запроса ввода-вывода (IRP).
... на работу компьютера, является вирусом. Существуют следующие основные виды вредоносного ПО: · Троянские кони, программные закладки и сетевые черви; · Вирусы; · Шпионское ПО; · Руткиты; · Прочие вредоносные программы. 2.1 Троянские кони, программные закладки и сетевые черви Троянский конь – это программа, содержащая в себе некоторую разрушающую функцию, которая активизируется при ...
... адресам вашей адресной книги. Именно поэтому при подозрении на заражение лучше всего сразу отключиться от интернета. Запустите полную проверку компьютера. 4. Методы защиты от вредоносных программ Стопроцентной защиты от всех вредоносных программ не существует: от эксплойтов наподобие Sasser или Conficker не застрахован никто. Чтобы снизить риск потерь от воздействия вредоносных программ, ...
... Pro 2008 по результатам тестирования брандмауэров в лаборатории Matousec показал наилучшие результаты даже при настройках по умолчанию. Глава 3. Разработка рекомендаций по составу программного комплекса для защиты информации в ЛВС Кунгурского сельскохозяйственного колледжа Прежде, чем рекомендовать состав программного комплекса по защите информации в ЛВС КСХК. Необходимо реализовать политику ...
... проберутся на ваш жесткий диск, вы можете лишиться данных, у вас могут быть украдены пароли; вероятны и многие другие неприятности. Windows, к сожалению, не располагает собственными средствами антивирусной защиты, если не брать в расчет антивирус от McAfee, включенный в пакет Microsoft Plus 98. Хорошо, что на свете существует множество независимых программ для отлова программной заразы... Самые ...
0 комментариев