Как стать автором
Обновить

Комментарии 47

имхо чтобы обойти UAC достаточно просто выдать стандартный диалог, большинство кликнет самостоятельно.

мы никогда не научим их читать… =)
т.е. чтобы обойти достаточно не обходить? ;)
ну, тоже версия)
Чтобы обойти UAC сначала надо обойти UAC.

Тьфу!
И эта компания говорит о том, что WebGL не безопасен?
К способу с VBS-скриптом:
То есть, для изменения настроек UAC права администратора не нужны? Как-то очень сомнительно, что такая уязвимость живет и здравствует уже несколько выпусков системы.
Или же диалог UAC после выполнения скрипта все-таки появится?
В Windows все приложения имеют право двигать курсор, совершать клики и отправлять нажатия клавиш. Этот скрипт как раз делает все за пользователя: запускает команду отключения UAC и подтверждает действие в диалоге.
Диалог UAC создаётся на отдельном рабочем столе, куда ни одно приложение посылать подобные команды не может.
Вы так уверенно заявляете. Вы его хоть пробовали запускать? Ладно баги скрипта типа того, что после набора «change uac» не хватает WshShell.SendKeys("{ENTER}") для вызова диалога настройки (по крайней мере когда я пишу это комментарий его нет, соостветственно окно даже не появится), так ещё и после вызова диалога остальные SendKeys клавиши не работают. Видимо разработчики Windows не идиоты и в таких окнах запретили такие фокусы…
Всё правильно. У этого окна настроек Integrity Level выше, чем у запущенного скрипта. Взаимодействие таким образом не получится (без «согласия» со стороны окна настроек).
>и подтверждает действие в диалоге.

Этого он даже не пытается. Попробую прокомментировать.


 Set WshShell = WScript.CreateObject("WScript.Shell")
 WshShell.SendKeys("^{ESC}") 'Открываем меню Пуск
 WScript.Sleep(500)
 WshShell.SendKeys("change uac") 'Набираем этот текст в поиске (кстати, в русской версии не сработает, но можно искать просто UAC)
 WScript.Sleep(2000)
 WshShell.SendKeys("{DOWN}") 
 WshShell.SendKeys("{DOWN}") 'Выбираем изменение параметров контроля учётных записей
 WshShell.SendKeys("{ENTER}")
 WScript.Sleep(2000)
'Вот тут и вылетает диалог UAC
'Дальнейший код предполагает, что пользователь подтвердил согласие и открылся соответствующий раздел панели управления
 WshShell.SendKeys("{TAB}") 'Переводим фокус на ползунок уровня безопасности
 WshShell.SendKeys("{DOWN}") 'Понижаем его
 WshShell.SendKeys("{DOWN}")
 WshShell.SendKeys("{DOWN}")
 WshShell.SendKeys("{TAB}") 'Переводим фокус на кнопку OK
 WshShell.SendKeys("{ENTER}")
'И тут UAC вылетает ещё раз, требуя согласие на изменения
Еще раз: мы изменяем настройки UAC, чтобы диалог подтверждения не появлялся, но при входе в настройки появляется запрос подтверждения UAC, которое должен подтвердить сам пользователь?

То есть, мы избегаем показа диалога при повышении прав, а вместо этого показываем диалог при входе в настройки?
Я не очень понимаю, что мы таким образом выигрываем. Если пользователь согласится дать программе доступ к настройкам, то он согласится и при обычном повышении прав, так что этот способ не для глупых пользователей, потому что им все равно, с чем соглашаться. Но и не для умных, так как умные привыкли смотреть, что там происходит и о чем UAC нас спрашивает.
>Еще раз: мы изменяем настройки UAC, чтобы диалог подтверждения не появлялся, но при входе в настройки появляется запрос подтверждения UAC, которое должен подтвердить сам пользователь?

Да.

>Я не очень понимаю, что мы таким образом выигрываем.

Очевидно, отсутствие вопросов UAC в будущем, после того, как малварь уже установлена и отключила UAC.

>Если пользователь согласится дать программе доступ к настройкам, то он согласится и при обычном повышении прав, так что этот способ не для глупых пользователей, потому что им все равно, с чем соглашаться.

Для отключения UAC нет API, так что нет и способа с «обычным повышением прав».
Я уверен, что автор статьи «опустил» для читателей момент того, что скрипт этот должен выполняться из шедулера, в который его можно было бы добавить как-нибудь так (гугл помог):
schtasks.exe /create /S COMPUTERNAME /RU "NT AUTHORITY\SYSTEM" /RL HIGHEST /SC ONLOGON /TN "Administrative OnLogon Script" /TR "cscript.exe \"Path\To\Script.vbs\""
Нужны разумеется. Сразу после отправки команды Enter пользователю будет необходимо ответить на запрос UAC. Никакой vbs-скрипт за него это сделать не может, равно как и любое другое приложение.

Ну журнал ксакеп опять всех успешно взломал.
Всё закончится ещё раньше. В диалоге UAC уже не будут работать SendKeys от пользователя с обычными привилегиями.
Они ни от какого пользователя работать не будут, потому что он на отдельном рабочем столе открывается.
Более того, даже если отключить Secure Desktop (второе положение снизу) — обычное приложение все еще не сможет посылать ввод elevated приложению.

Remarks:
This function is subject to UIPI. Applications are permitted to inject input only into applications that are at an equal or lesser integrity level.

Ну и второй суперметод — использование уязвимости, запатченной полгода назад? Seriously?

И это при том, что в дефолтной конфигурации UAC таки не является безопасным, но это же ксакеп — откуда им знать информацию, публично доступную уже более двух лет.
Только не капчу в UAC!
Пожалуйста, Microsoft, услышь меня!
Придумайте что-нибудь удобнеe!
Да нет, через Nokia будете QR код считывать.
и отправлять по смс…
Через скайпик диктовать и показывать в камеру.
Вот мой унитаз, плитка в туалете у меня синяя, жопу я вам уже показывал.
Продайте мне туалетную бумагу…
© Старый детский анекдот.
Еще к способу с VBS-скриптом:
помнится в давние времена был вирус, который таким же способом (эмулируя действия пользователя) выключал антивирусы (касперского кажется)…
По поводу вбс скрипта —
а разве последовательные действия передаются в появляющееся окно, спрашивающее про UAC?
Т.е. вот там кнопочки/стрелочкки подвинули ползунок, вниз — нажали ок.
После этого, по идее, появляется диалог, спрашивающий да/нет. И, вроде бы, этот диалог не воспринимает нажатия из предыдущего шелла (который с обрезанными правами)… мм?
Конечно не передаётся. Но это же журнал Хакер. Когда бот Ализар читает посты журнала Хакер, они у него желтеньким фоном отмечены, чтобы отличать.

Учитывая откровенное враньё, второй способ также вызывает 99% недоверия.
Собственно, думаю кто-то обязательно должен попробовать, надо просто подождать отчета. Рад, что не поставил оценку по названию топика.
Второй способ основан на устранённой уязвимости:

secunia.com/advisories/42356/

Что бы его попробовать, надо доставать винду без обновлений, и в случае с семеркой — без сервиспаков.
Давно известно, что для надёжной работы UAC его настройки надо выкрутить на максимум. Тогда ваши способы работать не будут. Но кого это волнует? Отсюда и проблемы… Жаль Microsoft по-дефолту такой дырявый режим включила.
Эти способы работать и так работать не будут: первый не обходит UAC вообще, а второй устранён обновлением в феврале. Так как вы написали про выкручивание на максимум, скорее всего ваш комментарий вызван неправильным восприятием информации о вполне реальном способе через манипуляцию системными программами.
Да, вы правы, данные способы вообще ни о чем.
Какая возня. Есть «стандартная» дыра — возможность запускать программу через Task Scheduler.
Вот готовая программа, делает пункт контекстного меню для запуска программы «Elevate me».

msmvps.com/blogs/martinzugec/archive/2008/05/16/ignore-uac-for-specific-programs.aspx
Так ведь повышенные права всё равно нужны будут, чтобы добавить такой таск.
А вот способ, который использовали многие зловреды:
Не знаю как на современных ОС, но раньше UAC без подтверждения отключался (при наличии прав админа разумеется) после перезагруки несением записи в реестр.
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Спасибо за объяснение механизмов работы UAC. Некоторое время назад заметил, что исходный исполняемый файл показывался со значком щита, но при его переименовании щит пропадал. Тогда и возник вопрос, как система без запуска приложения определяет, нужны ли ей права администратора или нет. Тогда найти информацию по этому вопросу не смог, но теперь все стало понятно.
Статья безнадёжно устарела. Пожалуйста обновите базу знаний.
Не хотел писать, но приходится идти против собственных убеждений.
Мдааааа, я прямо в замешательстве…
А кто сказал вообще, что те исходники, которые я выкладываю, должны работать?
Если все, на что тебя хватило — это тупо скопипастить и попытаться запустить скрипт (или код), после чего начать орать благим матом, что «аффтар-де, мол, даже не пытался его запустить» и «код не работает, потому что не работает», то грош тебе цена.
Друзья, для того чтобы выложить на всеобщее обозрение рабочий vbs-скрипт, стоимостью несколько тысяч американских рублей, надо, наверное, полным идиотом быть, не правда ли? Общее направление я дал, остальное твоя забота — додумать детали и своими ручками добавить отсутствующие звенья.
Или что? Слабо? Не хватает мозгов?
Есть фильм такой, «Тринадцатый воин», надеюсь все видели. Там есть такой момент, когда арабу (которого играет Антонио Бандерас), суровый викинг дает тяжелый двуручный меч, который Бандерас даже не в силах поднять. Он возмущается, мол он слишком тяжелый для меня, на что получает ироничный ответ: «Стань сильнее». Так вот — все что я хочу, чтобы ты стал сильнее и научился думать своими мозгами, а не тупо копипастить чей-то код.
Ни в одной моей статье нет и не будет ни одного рабочего исходника (ну или почти нет, если они не компрометируют безопасность системы). И не потому что их нет вообще, а по нескольким элементарным причинам, которые, как мне думалось, очевидны. Увы, оказалось, что это не так. Нет, мне не жалко. Да, они у меня есть. И не буду я выкладывать ничего рабочего. Показать вектор движения — легко, но выкладывать рабочий код я не могу в силу определенных обстоятельств. Одним из таких обстоятельств, например, является политика неразглашения. Например, я даю слово, что тот код, который попадает мне в руки на ревью или для еще «чего-то», я никому показывать не буду. У меня, к примеру, на данный момент на руках есть такие рабочие исходники одной зверушки, что TDL покажется детским лепетом младшей группы детского сада и такой руткит вылезет на поверхность только через год-полтора.
И потом, мне обычно глубоко фиолетово до подобного холивара, но все-таки… Не надо гнать на журнал, обзывать его «хакиром», «ксакепом» и пр. Некрасиво. Критикуя — предлагай. Или сделай лучше, найди 0-day уязвимость, напиши охренительную статью и стань героем. Или не критикуй вообще.
P.S. Меня зовут Александр Эккерт, я автор вышеопубликованной статьи
НЛО прилетело и опубликовало эту надпись здесь
Думаю, было бы круто упоминать об этом нюансе хоть одной строчкой. Как раз что-то вроде: «Это, конечно, пример, который у тебя не заработает. А чего ты ожидал? Однако вектор мы тебе задали и работы в этом направлении увенчались успехом». Так оно как-то честнее, что ли. Обычный человек и правда попробует пример, поймёт, что он не работает и его зарождающаяся лояльность изданию рухнет как подбитая. А так хоть будет знать — не врут, просто не договаривают, но ниточку дали.
НЛО прилетело и опубликовало эту надпись здесь
Ни первый ни второй вариант не будет работать. То есть принципиально — с любым количеством «фиксов».
Что в сочетании с претенциозным заголовком и менторским тоном (присущим практически всем материалам Хэккира) вызывает крайне неприятные ощущения.

> Не надо гнать на журнал, обзывать его «хакиром», «ксакепом» и пр. Некрасиво.
Почему же некрасиво? Если этот журнал сам себя позиционировал как Космополитан для wannabe хэккиров.

> Или сделай лучше, найди 0-day уязвимость, напиши охренительную статью и стань героем.
Мдя. Вы серьезно? Может еще и Сони взломать и выложить в инет базу с информацией о юзерах? Одно дело блекхэты, которые, как и прочие преступники, просто зарабатывают бабки, а другое — всякая «воровская романтика», бригады и прочий шлак для инфантильных школьников.

На всякий случай повторю вопрос: Вы действительно считаете публичное раскрытие 0-day уязвимости героизмом?
Очень старый баг
Зарегистрируйтесь на Хабре, чтобы оставить комментарий