На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Простой набор средств для взлома на уровне ядра Windows XP

В этом разделе мы рассмотрим структуру простого набора средств для взлома на уровне ядра Windows, который позволяет скрывать каталоги и запущенные процессы. Этот набор средств для взлома написан как драйвер устройства и поддерживает возможность загрузки и выгрузки из памяти. Пример набора средств для взлома тестировался на системах Windows NT 4.0, Windows 2000 и Windows XP.
Создание набора средств для взлома
Наш набор средств для взлома работает как драйвер для систем Windows 2000 или Windows XP. Значит, сначала нам потребуется среда для создания драйверов устройств. Для этой цели мы воспользуемся Windows XP DDK (Device Driver Development Kit —набор средств для создания драйверов устройств). Интересующиеся читатели могут также воспользоваться DDK для систем Windows 2000 или Windows NT 4 (http: / /www. microsoft. com/ddk/ ).
Для корректной работы может потребоваться установка Visual Studio. В зависимости от используемой платформы, также может потребоваться SDK. Мы рекомендуем обратиться к документации по выбранной версии DDK.
Контролируемая среда разработки
Набор DDK предоставляет две оболочки: контролируемую среду разработки (checked build environment) и свободную среду разработки (free build environment). В контролируемой среде создается код для отладки, а в свободной среде — код для окончательной версии. Мы будем использовать контролируемую среду. Как только наша программа заработает без ошибок, мы можем воспользоваться свободной средой. Свободная среда позволяет получить значительно меньший по размеру файл драйвера.
Исходные файлы набора средств для взлома
Мы создаем набор средств для взлома на языке С. Поэтому все наши файлы имеют расширение . с или . h.
Инструменты разработки
Для создания набора средств для взлома воспользуйтесь командой cd для перехода в каталог с исходными файлами. Затем введите команду build, и утилита разработки DDK выполнит все необходимые действия. При наличии ошибок в исходном коде на стандартный вывод будет выведено сообщение об ошибке.
При создании драйвера устройства огромное значение имеет файл SOURCES. В зависимости от используемой версии DDK, файл SOURCES может быть установлен отдельно. Одним из особо важных параметров является значение переменной среды TARGETPATH. Эта переменная указывает место, где будут размещаться объекты. В системах Win2k и ХР DDK переменная не должна хранить значение в форме $ (basedir) /lib, поскольку такой формат запрещен в файле makefile . def. В то же время существует специальная переменная OB J, которая уже определена и указывает на подкаталог, управляемый компилятором. Нашим читателям мы рекомендуем просто использовать OB J при установке значения для TARGETPATH.
Параметр SOURCES также имеет большое значение. Он описывает все исходные файлы, которые используются для создания драйвера. Если необходимо использовать несколько файлов, то каждый из них должен быть записан в отдельной строке. Все строки, кроме последней, должны завершаться символом обратной косой черты.
SOURCES= file.o \
file2.c \ file3.c
Обратите внимание на отсутствие завершающего символа обратной косой черты. Если для создания драйвера мы используем только один файл basic. с, то файл SOURCES будет выглядеть примерно следующим образом.
TARGETNAME=BASIC TARGETPATH=OBJ TARGETTYPE=DRIVER SOURCES= basic.o
Драйверы с доступом на уровне ядра
Драйверы устройств работают в привилегированном режиме ring-0, т.е. этим драйверам предоставляется физический доступ ко всем устройствам системы. В операци онной системе Windows драйвер расценивается как часть надежного кода. Можно спорить, является ли это верным решением. Большинство экспертов в области компьютерной безопасности считают, что нет. Давайте в качестве первого этапа создания набора средств для взлома напишем простой драйвер.
Основная структура драйвера
Драйвер устройства состоит из следующих основных компонентов. В базовом драйвере должна присутствовать функция DriverEntry. Драйверы устройств не являются темой этой книги, поэтому мы не станем рассматривать их подробно. Мы рекомендуем обратится к другим известным источникам информации, например к книге Деккера и Ньюкамера (Dekker и Newcomer) Developing Windows NTDevice Drivers: A Programmer's Handbook (1999).
Основной момент в том, что любой код, который помещается в функцию DriverEntry, после загрузки драйвера запускается в привилегированном режиме ring-0. Можно запустить драйвер в режиме "fire-and-forget" ("выстрелил и забыл"), т.е. просто переведите драйвер в режим ring-О и запустите его без какого-либо контроля со стороны операционной системы. Здесь все в порядке, если просто нужно запустить какой-то код в привилегированном режиме ring-02.
Мы хотим создать драйвер, который будет загружаться и выгружаться. Это делается для обеспечения возможности тестирования нашего кода при его изменениях. Перевод драйвера в режим "fire-and-forget" может завершиться необходимостью перезагрузки после каждого теста, что очень раздражает. Мы зарегистрируем свой драйвер в системе, благодаря чему мы сможем его запускать и останавливать по же­ланию. Далее мы покажем, как запускать драйвер без регистрации. Загрузка драйвера без регистрации означает, что нельзя использовать стандартные методы операционной системы для его загрузки, выгрузки, запуска и останова. Дело в том, что при регистрации драйвера он может быть обнаружен. Очевидно, что для реального набора средств для взлома регистрация нежелательна, т.к. отнюдь не способствует маскировке. Однако, что касается нашего примера, мы хотим, чтобы драйвер работал "по правилам" и мы могли его загружать и выгружать.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика