Нужно ли корректировать привилегии токена для успешного вызова CreateRemoteThread?
Я разрабатываю средство отладки для своего приложения, чтобы помочь мне диагностировать тупики. Приложение работает на компьютерах моих клиентов, поэтому я ожидаю широкий спектр операционных систем, политик безопасности и т. Д.
Техника, которую я использую, заключается в реализации функции в целевом приложении, которая генерирует трассировки стека для всех потоков вместе с другой диагностической информацией. Затем он записывается в файл с отображением в памяти. Я также создаю служебное приложение, которое используется для запуска создания отчета о диагностике, а затем считывания из файла, отображенного в памяти.
Поскольку ожидается, что целевое приложение не работает, служебная программа не может отправить ему сообщение для запуска сбора диагностики. Вместо этого я используюCreateRemoteThread
так что я могу быть уверен, что получу живой поток, чтобы сделать работу.
Обратите внимание, что это отличается от методов внедрения DLL, которые обычно используютLoadLibrary
в качестве темы для процессаCreateRemoteThread
, Моя ветка proc является точкой входа в целевое приложение. Поэтому мне не нужно звонитьWriteProcessMemory
.
Я реализовал это, и в моих тестовых средах это работает хорошо. Согласно документацииCreateRemoteThread
Мне нужен дескриптор процесса со следующими правами доступа:
PROCESS_CREATE_THREAD
, PROCESS_QUERY_INFORMATION
, PROCESS_VM_OPERATION
, PROCESS_VM_WRITE
, and PROCESS_VM_READ
Итак, я передал эти флаги при звонкеOpenProcess
.
Теперь, наконец, к моему вопросу: какие привилегии мне нужно иметь, чтобы мой токен был необходим для вызоваOpenProcess
преуспеть?
В моей тестовой среде (Windows 7, UAC включен, пользователь с правами администратора) у меня не возникло проблем с токеном по умолчанию. Я видел различные примеры кода, который получаетSE_DEBUG_NAME
привилегия перед звонкомOpenProcess
, Я думаю, что это необходимо дляWriteProcessMemory
при внедрении DLL и что мне не нужна эта привилегия. Существуют ли сценарии, в которых мне нужно было бы настроить привилегии моего токена?
Я ничего не знаю о безопасности Windows, поэтому я был бы очень признателен за мудрые слова от всех, кто это делает!