SeImpersonateClientEx 함수(ntifs.h)
SeImpersonateClientEx 루틴으로 인해 스레드가 사용자를 가장합니다.
구문
NTSTATUS SeImpersonateClientEx(
[in] PSECURITY_CLIENT_CONTEXT ClientContext,
[in, optional] PETHREAD ServerThread
);
매개 변수
[in] ClientContext
사용자의 보안 클라이언트 컨텍스트에 대한 포인터입니다.
[in, optional] ServerThread
사용자를 가장할 스레드에 대한 포인터입니다. 지정하지 않으면 호출 스레드가 사용됩니다.
반환 값
SeImpersonateClientEx 는 다음과 같은 적절한 NTSTATUS 값을 반환합니다.
반환 코드 | 설명 |
---|---|
|
가장 시도가 성공했습니다. |
|
ServerThread 매개 변수에 지정된 스레드에 ClientContext 매개 변수에 보안 클라이언트 컨텍스트가 지정된 사용자를 가장하기에 충분한 액세스 권한이 없습니다. |
|
SeImpersonateClientEx 는 가장 정보 구조에 대한 메모리를 할당할 때 풀 할당 오류가 발생했습니다. |
설명
SeImpersonateClientEx 는 스레드가 사용자를 가장하도록 하는 데 사용됩니다. ClientContext의 클라이언트 보안 컨텍스트는 최신 상태로 간주됩니다.
신뢰할 수 없는 사용자 스레드의 권한 상태를 높이는 것은 매우 안전하지 않습니다(예: 사용자의 스레드를 가져와 LocalSystem을 가장). 신뢰할 수 없는 사용자 스레드의 권한이 발생한 경우 사용자는 상승된 후 스레드 토큰을 잡고 전체 시스템의 보안을 전복할 수 있습니다.
더 높은 권한 상태가 필요한 경우 작업을 시스템 작업자 스레드에서 안전하게 처리할 수 있는 작업 큐로 디스패치해야 합니다. 이렇게 하면 가장이 필요하지 않습니다.
사용자의 가장을 종료하려면 SeStopImpersonatingClient 루틴을 호출합니다.
PsImpersonateClient 루틴을 사용하여 서버 스레드가 클라이언트를 가장하도록 할 수 있습니다.
보안 및 액세스 제어에 대한 자세한 내용은 드라이버 개발자를 위한 Windows 보안 모델 및 Windows SDK의 이러한 topics 대한 설명서를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 |
대상 플랫폼 | 유니버설 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |