Хак ядра NT

в ядро, попробуем разобраться зачем


Прежде чем вторгаться в ядро, попробуем разобраться зачем это вообще нужно и нельзя ли обойтись "демократичным" прикладным уровнем с которым намного меньше конфликтов и прочих проблем?
Черви, вирусы и rootkit'ы стремятся в ядро затем, чтобы дотянуться до функций, работающих с памятью, файлами, сетевыми соединениями и процессами на самом низком уровне, перехватив которые, можно надежно замаскировать свое присутствие в системе. Аналогичными приемами пользуются протекторы исполняемых файлов типа Themida (бывший eXtreme Protector), защиты лазерных дисков от копирования (Star-Force, SONY и т. д.) Методика та же самая, что и в Stealth-вирусах 10-15 летней давности, только программные реализации другие. Кстати говоря, после громкого скандала и судебного разбирательства, SONY признала свою неправоту, отозвав свыше 30 наименований защищенных дисков. А ребята из Star-Force продолжают использовать вирусные методики и до сих пор, регулярно роняя пользовательские системы в голубой экран и отказываясь работать с новыми версиями Windows без обновления самой Star-Force.
Брандмауэры, файловые мониторы, антивирусы и прочие сторожа перехватывают ядерные функции, контролируя и пресекая всякую несанкционированную деятельность. Вообще-то, для брандмауэров предусмотрены специальные "затычки" типа "Filter-Hook Driver" (Драйвер Фильтра-Ловушки) или Pseudo-Intermediate NDIS Driver (псеводо-промежуточным NDIS драйвер), однако, все они, в силу стандартности своих интерфейсов, легко дезактивируются зловредными программами и надежность решений такого типа крайне невелика — одна лишь видимость защиты, а в действительности — сплошная дыра. Противостоять же грамотно выполненному перехвату ядерных функций очень-очень сложно, особенно, если перехватчик активно сопротивляется своему снятию.
Кроме того, в последних ядрах Windows появилось множество нехороших защит. Достаточно упомянуть систему активации и связанную с ней ядерную функцию NtLockProductActivationKeys, реализованную в системном вызове 065h в случае Windows XP или 6Ah в случае Windows Server 2003 (перечень системных вызовов в разных версиях Widnwos можно найти на сайте Meta Exploit Project: http://www.metasploit.com/users/opcode/syscalls.html). А демонстрационные версии Windows, работающие, скажем, всего лишь 180 дней? А цифровая подпись драйверов? Кстати, в Longhorn (кодовое название системы, от упоминания официальной торговой марки которой меня сразу же блевать тянет) обещает обеспечить гораздо более радикальные изменения — никакой программный код не сможет войти в режим ядра (даже с правами администратора!), если только он не заверен цифровой подписью от единственного криптопровайдера VeriSign, начальный сертификат которого стоит 500$, при этом сертификаты выдаются только фирмам, зарегистрированным на территории США. Бедные разработчики драйверов! Вирусы, черви и прочая живность все равно пробьет к ядру прямой туннель (ну невозможно запретить захват нулевого кольца в системе изначально спроектированной без расчета на такие драконические запреты!), а вот легальным разработчикам придется либо выкладывать мешки с долларами на алтарь Microsoft, либо… пользоваться разными хакерскими трюками (как вариант, драйвер можно подписать "отладочной" подписью, входящей в состав DDK, однако, это несерьезно, несолидно и вообще в любой момент Microsoft может потребовать грузить такие драйвера только при нажатии F8 на стадии загрузки).
Наконец, иногда хочется слегка усовершенствовать ядро, например, поменяв скучный загрузочный логотип на что-нибудь свое (например, сексапильную красотку или мрачный готический собор).

Содержание раздела