Как программе получить повышенные привилегии для выполнения команд в Windows?

chuchak

floppy-диск
Пользователь
Регистрация
13.05.2025
Сообщения
5
Реакции
-1
Здравствуйте, уважаемые форумчане!Я новичок в системном программировании и изучаю сетевые протоколы на C/C++. Пишу небольшую утилиту для учебного проекта, которая должна подключаться к моему тестовому серверу по сокету (Windows 10, локальная сеть). Для работы нужно открыть определённые порты, и я планирую сделать это через команду в CMD, например:netsh advfirewall firewall add rule name="MyApp" dir=in action=allow protocol=TCP localport=12345 .Проблема в том, что такие команды требуют админ-прав, а я хочу чтобы программа могла выполняться с повышенными привилегиями автоматически, без запроса UAC у пользователя. Я знаю что это сложная задача и возможно связана с повышением привилегий (privilege escalation) или настройкой манифеста программы.
 
без запроса UAC
Если юзер входит в локальные админы, то смотри в сторону autoelevated приложений, если не входит, то только эксплоитом(мб еще как-то можно, хз). Все возможно благодаря тому, что при попытке запустить приложение, виндоус проверяет его манифест на наличие autoElevate = “true”. Если прила подписана майками, то она стартует сразу с токеном админа или system без юак окна.

Таким образом, ключ к эскалации - заставить эту autoelevated прогу выполнить твой код.

Из популярных есть fodhelper, eventwvr.
Например, в случае фодхэлпера суть заключалась в создании значения в ветке реестра

HKCU\Software\Classes\ms-settings\Shell\Open\command куда вставляешь cmd.exe /c …
Фодхэлпер подхватывал эту команду и выполнял, с обходом UAC.
И таких autoelevated достаточно в системе,
computerdefaults.exe, sdclt.exe, wusa.exe, можно и более редкие поискать. И некоторые выполняют твой код через COM моникера, то есть нужно делать свою dll InProcServer32, которую autoelevated софт подгрузит в себя.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх