Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #70, СЕНТЯБРЬ 2006 г.

Враг неведом

Зайцев Олег

Спецвыпуск: Хакер, номер #070, стр. 070-034-1


http://www.z-oleg.com/secur/

Руткиты и антируткиты – кто как программирует и кто как воюет

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

[история возникновения руткитов]

Бытует мнение, что руткиты появились в последние несколько лет. Это, естественно, не так: идея руткита известна уже более десяти лет. Все началось еще во времена MS DOS – тогда большинство компьютерщиков были достаточно опытными и могли на глаз обнаружить появление вируса в системе по модификации размеров файлов. Следовательно, вирусописателям пришлось применять активные меры для маскировки своих детищ — и на свет появились так называемые стелс-вирусы (от англ. Stealth – невидимка). Таким образом, возникает вопрос: какая связь между вирусом (тем более древним) и руткитом? Ответ прост: они применяют совершенно идентичные методики. Во времена MS DOS аналогом API-функций были прерывания — следовательно, возникало два пути маскировки:

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

2. Модификация машинного кода прерывания.

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

[user-Mode руткиты]

Работающие в UserMode руткиты, по моей статистике, наиболее распространены и многочисленны. На то есть несколько причин, основные из которых – возможность работы под Win9x и NT, простота разработки и отладки. Подобные руткиты можно писать практически на любом языке (даже на встроенном в офис бейсике). По принципу действия, руткиты UserMode можно разделить на несколько типов:

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

* Модификация таблицы импорта.

* Модификация машинного кода API-функций.

[руткиты, модифицирующие машинный код поражаемой программы]

Руткиты данного типа не получили широкого распространения. Их принцип действия основан на том, что вместо перехвата API-функций модифицируется машинный код поражаемой программы. Естественно, что для реализации данного метода разработчик руткита должен предварительно изучить поражаемую программу, выбрать места для модификации и внедрения кода и подготовить сигнатуры, которые впоследствии позволят руткиту найти нужные фрагменты машинного кода и модифицировать их. Данный метод неприменим для глобального перехвата, но с успехом может применяться для внедрения перехватчиков в некую заранее известную программу.

[руткиты, основанные на модификации таблицы импорта]

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

Содержание  Вперед на стр. 070-034-2