Pull to refresh

Comments 14

Это скорее фильтр, отсекающий ленивых разработчиков руткитов.

Т.е. вместо того, чтобы реализовать какую-то функциональную систему защиты вроде SELinux / GRSecurity / AppArmor они потратили силы на создание некоего суррогата, который останавливает только недоучек и script-kiddies?
Насколько я понимаю, при помощи PatchGuard была осознанно ограничена возможность использования недокументированных функций API ядра, потому как все это сказывается на стабильности системы.
То же яблоко поступает еще проще: пишешь софт с драйвером — не попасть тебе в AppStore.
ограничена возможность использования недокументированных функций API ядра

Т.е. выпилить эти функции не судьба? Нужно их именно закрыть, но оставить?
Дело в том, приватные функции это или нет. Приватные — для внутренних нужд. Просто есть приватные документированные, типа NtQuerySystemInformation, и ими пользоваться можно. Под «можно» понимается, что код будет работать во всех следующих версиях ОС.
К сожалению, не настольтко знаком с перечисленными решениями, чтобы сравнить их назначение.
UFO just landed and posted this here
Как раз не так давно ломался VirtualBox после обновления. Меня не радует то, в какую сторону сейчас продвигается windows.
Уух, там через каждое слово матюги и уловить суть тяжело. Понятно только то, что кто то там у оракла упертый баран и вообще очень нехороший человек. Пожалуй я вернусь к тому тексту позже, когда буду в более адекватном состоянии, способном воспринимать и фильтровать информацию.
Windows, там не только VirtualBox ломался и вскоре обновление откатили.
Спасибо за статью, было интересно.
По поводу PatchGuard помню было дело, когда один весьма известный файервол вышел в релиз первым работающим в Win XP64 системах из всего секьюрного софта. А потом, в процессе посмотреть как они это сделали оказалось, что парни просто патчили ядро на файловой системе.
Кста, чаще всего хуком таблицы системных вызовов в наших любимых операционках занимается практически любой антивирь с про-активной защитой, а не вредоносный софт. Собственно поэтому, настоятельно не рекомендуется ставить в систему больше одного антивируса
Я правильно понял, что это пособие по обезвреживанию капканов, опусканию моста над пропастью и переплыванию рва с крокодилами с целью добраться до заветных охраняемых грабель и наступить на них?
Ммм, ну если нельзя, но сильно хочется, то иногда можно )
KPP был бы хорошей идеей, если бы MS предоставили все новые API, как и обещали. Про стандартные альтернативы SSDT-хукам я, к сожалению, ничего не слышал. Может быть, кто-нибудь когда-нибудь найдёт этот комментарий и порадует меня таковыми новостями, но пока что нет.

— А зачем кому-то вообще нужно ставить низкоуровневые SSDT-хуки? — спросите вы, — Почему нельзя обойтись чем-то попроще вроде DLL injection или, если уж так хочется попатчить, user-mode jmp patching (как это сделано в minhook)?

А дело в том, товарищ, что всё зависит от того, зачем это может быть нужно. Если вам нужно отслеживать изменения файлов на диске для какого-нибудь скрипта билда, и вам не хватило вещей вроде CDT-хука, Shell-хука или вообще NotifyDirectoryChanged, то да, может хватить и minhook. Но если вы компилируете и запускаете произвольный код на С++, как это делают ideone, то вы не можете быть уверены, что люди будут тихо и спокойно вызывать API-функции. DLL hook'и обходятся тривиально, user-mode jmp обходится непосредственным вызовом syscall'ов. Остаётся только одно место в системе, где можно хоть как-то перехватить настолько общий вектор атаки: таблица SSDT, где мы заменяем все возможные функции на свои.

— А почему бы не запускать просто на виртуальной машине?

В чистом виде это очень медленно. В комбинации с более слабыми хуками это гарантирует безопасность сервера, но не гарантирует безопасность клиентов: люди, использующие одну VM, будут подвержены атакам друг друга. Конечно, вряд ли кто-то будет на ideone.com заставлять чужой код работать неправильно, но если речь идёт про online judge для каких-нибудь ACM-соревнований, или тренировочный сервер вроде codeforces, то эти векторы атаки уже нужно учитывать.

С KPP же мы получаем, что и без того сложный sandboxing под Windows сейчас становится практически непосильной задачей. Человек, который заберётся так далеко, уже будет десять раз квалифицирован и осведомлён о местоположении граблей.
Sign up to leave a comment.