Как функции обхода пакетов обходят безопасность? - PullRequest
0 голосов
/ 08 декабря 2010

Я смотрю на некоторый код, который использует пакет функции обхода под названием DetourXS.Мое приложение предназначено для операционных систем Microsoft Server.У Microsoft Research также есть пакет Detours, и у них есть статья о том, как он работает.Они исправляют машинный код, который загружен в память, и вставляют код, который делает безусловный переход во вновь введенный код.

Если этот код работает путем изменения машинного кода во время выполнения, они должны столкнуться с ограничениями безопасности:Операционная система.Это может стать серьезным недостатком безопасности в ОС, поскольку я могу изменить любую критически важную DLL, например, kernel32, чтобы делать все, что захочу.Насколько я понимаю, если пользовательский процесс пытается изменить код DLL, уже загруженный в память, он должен быть остановлен ОС.Есть ли в ОС Widows Server параметр, позволяющий включить / отключить эту проверку?

Как они преодолевают это?

Есть ли у кого-нибудь опыт использования такого рода обходных пакетов в любых приложениях в производственной среде предприятия?

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Несмотря на название, kernel32.dll - это , а не на самом деле ядро;он содержит точки входа в функции Win32 API, которые реализуют интерфейс Win32 к системным вызовам NT.

Кроме того, Windows (как и любая современная ОС) поддерживает копирование при записи, поэтому, если вы используете обходные пути для исправления общей DLLкак и kernel32.dll, ОС сначала сделает личную копию для вашего процесса и исправит ее.Само ядро ​​NT совершенно безопасно.

1 голос
/ 04 марта 2011

Первое, что важно, это то, что с помощью обходных путей вы изменяете инструкции вашего собственного процесса . В вашем процессе - вы можете делать все, что хотите, в любом случае, и вам даже не нужно ничего обходить, с точки зрения операционной системы код пользовательского пространства (например, код в вашей DLL и код в системном kernel32.dll, загруженном в ваш процесс), является то же самое с точки зрения безопасности. Причина проста - взломать безопасность ОС - это не то же самое, что изменить некоторый код вашего процесса в пользовательском пространстве. ОС защищает себя, не давая вашему процессу слишком много энергии (если вы не работаете от имени администратора). В целях безопасности более интересно, как изменить код другого процесса (чтобы получить его привилегии или интересные данные, такие как пароли), но это тема для другого обсуждения.

Во-вторых, detouring рассматривался как способ реализации оперативного исправления, то есть исправления критических системных служб на лету, без перезагрузки. Я не знаю, используется ли он в настоящее время / поддерживается Microsoft (согласно Google это ), но не случайно стандартный пролог имеет длину 5 байт (да, он идеально подходит для ваша jmp инструкция).

...