심플스 - 프로그램과 책 이야기로 가득한 곳, (Simples.Kr)

  


   심플스 배너



 

SCSI Miniport와 같은 프레임 워크를 이용하여 개발을 할 때 내부 프레임 워크에서 자동으로 DEVICE_OBJECT를 생성하게 됩니다.

이 때 생성되는 DEVICE_OBJECT에 보안 디스크립터 설정이 기본적으로 높게 잡혀져 있습니다.


따라서 어플리케이션에서 생성 된 DEVICE_OBJECT와 통신할 때 비스타 이상에서는 관리자 권한으로 실행하여,

해당 DEVICE_OBJECT와 통신을 해야 하는데, 이미 만들어진 DEVICE_OBJECT에 대한 보안 디스크립터 권한을

최소로 할당하여, 관리자 권한없이 접근할 수 있게 만들어주는 함수입니다.


BOOLEAN SetUnprotectedSecurityDescriptor(PDEVICE_OBJECT pDeviceObject)
{
    HANDLE FileHandle;

    SECURITY_DESCRIPTOR SecurityDescriptor;
    NTSTATUS ntStatus;

    //
    // 보호되지 않은 보안 디스크립터를 만드는 방법은 IoCreateUnprotectedSymbolicLink Windows 2000 소스코드를 참고하였습니다.
    //
    memset(&SecurityDescriptor, 0, sizeof(SECURITY_DESCRIPTOR));

    ntStatus = RtlCreateSecurityDescriptor(&SecurityDescriptor, SECURITY_DESCRIPTOR_REVISION1);
    if (NT_SUCCESS(ntStatus) == FALSE)
    {
        return FALSE;
    }

    ntStatus = RtlSetDaclSecurityDescriptor(&SecurityDescriptor,
                        TRUE,
                        NULL,
                        TRUE);     //does not over-ride inheritable protection
    if (NT_SUCCESS(ntStatus) == FALSE)
    {
        return FALSE;
    }

    FileHandle = NULL;
    ntStatus = ObOpenObjectByPointer(pDeviceObject,
                            OBJ_KERNEL_HANDLE,
                            NULL,
                            WRITE_DAC,
                            0,
                            KernelMode,
                            &FileHandle);
    if (NT_SUCCESS(ntStatus) == FALSE)
    {
        return FALSE;
    }
    if (FileHandle == NULL)
    {
        return FALSE;
    }

    ntStatus = ZwSetSecurityObject(FileHandle, DACL_SECURITY_INFORMATION, &SecurityDescriptor);
    ZwClose(FileHandle);

    return NT_SUCCESS(ntStatus);
}

List of Articles
번호 제목 글쓴이 날짜 조회 수
162 Windows Research SCSI Miniport - IOCTL_SCSI_PASS_THROUGH_DIRECT ( ... [레벨:6]lain 2011-06-11 3649
161 Windows Research 커널레벨에서 IAT Hook [레벨:6]lain 2011-06-11 4348
» Windows Research DEVICE_OBJECT에 대한 보안 디스크립터 변경 [레벨:6]lain 2011-06-11 3166
159 Windows Research IE Cache 경로 변경하기 [레벨:6]lain 2011-06-09 3292
158 Windows Research 32Bit 윈도우즈에서 실제 물리메모리크기 얻어오기 [레벨:6]lain 2011-06-09 3431
157 Windows Research VMWare 탐지 기법 우회 - 2 [2] [레벨:6]lain 2011-04-04 8850
156 Linux Tip 우분투에 IRC서버 설치후 닉네임 길이와 동접자 조절. [1] [레벨:0]오랑캐꽃 2010-11-26 5829
155 Linux Tip VirtualBox에 우분투 설치 후에 내부 네트워크 접속 설정하기 file [레벨:8]esniper 2010-09-10 12222
154 Linux Tip VirtualBox에서 오른쪽 CTRL키 사용하기(VitualBox 호스트키) file [2] [레벨:8]esniper 2010-09-10 6057
153 Linux Tip 우분투 설치 후 putty에서 한글 안 깨지도록 설정하기 file [레벨:8]esniper 2010-09-10 6366
152 Linux Tip 우분투 ssh or mysql 서버 접속지연이 있는 경우 해결책 [레벨:8]esniper 2010-09-10 6244
151 문서자료 고품질의 무료 아이콘들 [3] [레벨:8]esniper 2010-09-08 7439
150 Windows Research Sysinternals - Filemon source code file [5] [레벨:6]lain 2010-09-04 5818
149 Windows Research Sysinternals - Regmon source code file [1] [레벨:6]lain 2010-09-04 5492
148 Windows Research PostQueuedCompletionStatus 함수에 실패 여부도 고려해야 할까... [레벨:6]lain 2010-09-04 4678
147 Windows Research SetEvent 함수는 언제 실패할까? [레벨:6]lain 2010-09-04 5491
146 Windows Research 커널모드 드라이버에서 사용하는 시간관련 매크로 [레벨:6]lain 2010-09-04 4443
145 Windows Research 화면캡쳐방지는 어떻게 구현될까? [3] [레벨:6]lain 2010-09-04 8658
144 Windows Research IRP Completion Hook file [레벨:6]lain 2010-09-04 3992
143 Windows Research IRP Hook [레벨:6]lain 2010-09-04 4195

  • 이용약관
  • 개인정보취급방침
  • 사이트맵