PDA

Показать полную графическую версию : Есть идея: "обёртка" для IE


VitRom
17-09-2006, 18:11
2 Mod-s: если "ошибся койкой" - перенесите плз в нужную ветку

Некоторое время назад до Майкрософта дошло-таки, что Винда - не Юникс, софта много, авторы его бывают вообще халтурщиками... В общем, что "под юзером", как ни настраивай, полноценно работать нельзя, и что народ, невзирая на увещевания, работает-таки "под админами". :) И тогда был сделан гениальный "ход лошадью" - выпущена тулза для понижения прав пользователя при запуске какого-либо приложения. Или понижения прав приложения, запущенного от конкретного пользователя с высокими правами. :) В общем, этакий su user ;)

Зовётся утилита DropMyRights и делает именно то, как зовётся. Я на неё впервые наткнулся на SecurityFix-е (http://blog.washingtonpost.com/securityfix/2006/04/windows_users_drop_your_rights.html). Там же есть ссылка на скачку и "родную" страницу (http://msdn.microsoft.com/security/securecode/columns/default.aspx?pull=/library/en-us/dncode/html/secure11152004.asp).

Использование предельно простое (но всё-же не для "домохозяек"):
Делаем ярлык для проги
Открываем свойства ярлыка
Перед путём добавляем "волшебное слово" (DropMyRights.exe)
И при желании параметр "опускания"
Параметры такие:wchar_t *wszUsage =
L"\n\n"
APPLICATION L" " VERSION L" by " AUTHOR L"\n"
L"Usage is:\n\n"
L"\t" APPLICATION L" {path} [N|C|U]\n\n"
L"Where: \n"
L"\tpath is the full path to an executable to run.\n"
L"\tN = run as normal user (default).\n"
L"\tC = run as constrained user."
L"\tU = run as an untrusted user.\n";
Есть, как вы поняли, сырцы (2 .cpp и 1 .h :)).

Идея проста:
Ставить это прямо в system32 и везде заменять все вызовы iexplore.exe на соответствующим образом исправленные. Можно и hh не обделить вниманием. :)

Таким образом получим почти "дефолтную" (без миграции на Фокс и пр.) и безопасную "стандартную" систему.

Как вариант развития - хранить где-нибудь, например, в реестре и считывать оттуда параметр "опускания".
Ещё вариант - интеграция в контекстное Экплорера в качестве "альтернативного RunAs".

К сожалению, как я понял, работает только с исполняемыми файлами, т.е. COM-компонент (то же "ядро" IE) не ограничишь... Но ведь есть сырцы... :)

VitRom
06-10-2006, 18:54
Поднимаю тему.

С "обычным" софтом типа IEXPLORE.EXE дело движется, но ведь остаётся самое неприятное - его ядро, вызываемое как COM, и аналогичные компоненты. Идея трансформируется в этакий "супер-пупер-патч" для Винды. Правда, с лёгким вирусным уклоном... :)

Ломание головы (я не программер, не пинайте!) родило такие мысли:

1. Нужно поменять GUID-ы "жертв" (просто патчить бинарники?)

2. Перерегистрить их после этого? Или просто сделать "поиск-замену" по всем классам в реестре?

3. Некая "обёртка" тоже в виде COM-а регистрит себя (или опять-таки просто правит реестр?) как сервер тех интерфейсов, которые обрабатывались "жертвами".

4. "Обёртка" при вызове соотв. интерфейса просто вызывает старый обработчик с установкой безопасности как в приведённых исходниках, и дальше весь обмен командами и данными "пропускает через себя" к старому серверу и обратно.

Надеюсь, не совсем бредово?

И найдётся ли кто, могущий это воплотить в коде?




© OSzone.net 2001-2012