убийство часового КРИС КАСПЕРСКИ, АКА МЫЩЪХ Спецвыпуск: Хакер, номер #072, стр. 072-072-8 Весь вопрос в том, насколько надежен и «законен» такой хак? Ведь модификация образа ядра — далеко не атомарная операция! Сначала мы должны рассчитать CRC32 «исправленного» файла, затем модифицировать некое количество байт образа, после чего внедрить четыре «корректирующих» байта. А что если в промежутке между модификацией и «коррекцией» неожиданно проснется Patch-Guard и закричит: «Измена!!! Нас поимели!!!». Чтобы заставить его заткнуться, достаточно вспоминать, что «стражники» представляют собой обыкновенные отложенные процедуры — (Deferred Procedure Call) или, сокращенно, DPC, исполняющиеся на IRQL-уровне, равном двум. Если мы повысим IRQL (не забывая, что в многопроцессорных системах каждый процессор имеет свой IRQL), то никакие DPC исполняться не смогут, пока уровень вновь не будет понижен. Правда, вместе с DPC не будет работать и подкачка с диска, так что можно очень легко нарваться на голубой экран смерти, но! Если сначала обратиться к той странице образа, которую мы собирались модифицировать, а затем — к странице, куда собрались внедрять корректирующие байты, обе страницы гарантированно окажутся в памяти, и мы можем смело повышать IRQL на время модификации. [заключение.] Так все-таки, насколько надежен Patch-Guard и от чего он нас реально защищает? По правде говоря (положа руку на хвост), как и все сделанное Microsoft, Patch-Guard катастрофически ненадежен. Во-первых, он может быть элементарным образом отключен (что и было продемонстрировано авторами статьи «Bypassing PatchGuard on Windows x64»), во-вторых, после установки гипервизора основная операционная система неожиданно для себя переходит в гостевой режим, полностью подконтрольный монитору виртуальных машин. В-третьих, подсчет контрольной суммы защищаемых объектов выполнен в «пионерском» стиле, и не обнаруживает преднамеренные искажения. В принципе! И это все методы, не требующие перезагрузки!!! А если добавить сюда возможность создания собственного загрузчика, имитирующего наличие системного отладчика, то получится вообще косяк! Черви, хакеры и rootkit'ы ничуть не пострадают, а вот легальным разработчикам придется попыхтеть. «По уму» в Висте должна быть опция «задействовать Patch-Guard или нет», позволяющая пользователю выбирать несекьюрную машину, несовместимую с кучей программ, или несекьютрную машину, на которой все программы работают исправно. Но... Microsoft как всегда идет своим путем, повторяя дело, начатое Иваном Сусаниным. |