Как предоставить доступ к сетевому ресурсу процессу низкого обязательного уровня?

#windows #security #winapi #uac #network-security

#Windows #Безопасность #winapi #uac #сеть-безопасность

Вопрос:

Есть ли какой-либо способ предоставить доступ к сетевым ресурсам процессам низкого обязательного уровня (UAC)?

Дополнительное объяснение: Чтобы перенести некоторые проблемы безопасности сторонних библиотек, мы рассматриваем возможность установки режима целостности для изоляции процесса на низкий уровень, но нам нужно, чтобы процесс свободно читал / записывал из указанного общего ресурса файловой системы (путь UNC, возможно, на отдельном компьютере).

Кто-нибудь знает, есть ли способ сделать это?

Спасибо

Ответ №1:

Да, это доступно по умолчанию. Целостность процесса влияет только на локальную безопасность, а не на удаленную безопасность. Это можно доказать, создав версию Notepad с низким уровнем целостности —

  1. Копировать C:windowssystem32notepad.exe в местоположение, т.е. C:testlownote.exe
  2. Запустите icacls C:testlownote.exe /setintegritylevel Low
  3. Запустите lownote
  4. Подтвердите с помощью Process Explorer (http://live.sysinternals.com/procexp.exe ) он работает с низкой целостностью. Обратите внимание, что вы можете открывать файлы на жестком диске, но не можете сохранять их, за исключением разделов с низкой целостностью профиля пользователя «Перейти к сети», «путь» с использованием общего ресурса UNC — вы можете открывать / сохранять файлы нормально.

При этом вы можете столкнуться с сообщениями об отказе в доступе при использовании процесса с низкой целостностью для записи в сетевые ресурсы. Эту причину можно найти с помощью procmon на компьютере, на котором запущено ваше приложениеhttp://live.sysinternals.com/ProcMon.exe и результатом фильтрации для включения является «ДОСТУП ЗАПРЕЩЕН», а имя процесса — это имя вашего процесса.

Что не будет доступно, так это сопоставления дисков…при попытке прочитать HKCU [местоположение буквы диска] вы увидите сообщение «доступ запрещен»

Согласно документации MSDN:

Однако вы можете использовать другие типы связи между процессом с низким уровнем целостности и процессом с более высоким уровнем целостности. Типы связи, которые вы можете использовать, включают:

  • Буфер обмена (копировать и вставлять)
  • Удаленный вызов процедуры (RPC)
  • Сокеты
  • Оконные сообщения, которые процессу с более высокой степенью целостности явно разрешено получать от процессов с более низкой степенью целостности, вызывая ChangeWindowMessageFilter
  • Разделяемая память, где процесс с более высокой степенью целостности явно понижает обязательную метку в разделе общей памяти (Важно, это особенно опасно, и процесс с более высокой степенью целостности должен тщательно проверять все данные, записанные в раздел общего доступа.)
  • COM-интерфейсы, где права на запуск активации устанавливаются программно процессом с более высокой степенью целостности, чтобы разрешить привязку от клиентов с низкой степенью целостности
  • Именованные каналы, где создатель явно устанавливает обязательную метку на канале, чтобы разрешить доступ к процессам с более низкой целостностью

ссылка http://msdn.microsoft.com/en-us/library/bb625960.aspx