티스토리 뷰
[Reversing] ZwQuerySystemInformation(), ZwDuplicateObject(), ZwQueryObject()
정뚱띵 2020. 5. 14. 16:08[Reversing] ZwQuerySystemInformation(), ZwDuplicateObject(), ZwQueryObject()
분석 중 해당 API에 대해 정리가 필요해 작성한다.
NtQuerySystemInformation() API을 보게되면 첫번째 멤버는 System_Information_class로 인자값에 대한 시스템 정보를 보여준다. (그림 1)의 해당 API의 스택에 쌓인 인자를 보게되면 “10”을 가지고 있으며, SystemHandleInformation로 시스템 핸들의 정보를 원하는 것을 확인 할 수 있다.
[https://www.geoffchappell.com/studies/windows/km/ntoskrnl/api/ex/sysinfo/query.htm]
이후 진행 시 ZwDuplicateObject API을 보게되면 커널에 요청해 핸들을 가지고와 복사하는 것을 (그림 1)에서 확인 할 수 있다.
다음으로 ZwQueryObject() API을 이용하여 위에서 얻은 객체의 핸들을 통해 커널의 객체 타입에 대한 정보를 얻어오는 것을 확인 할 수 있다. 두번째 멤버의 인자값 “2”, ”1”에 따라 정보를 얻을 수 있다.
(그림 1)
// ZwQueryObject를 통한 Kernel Object의 Type typedef INT TYPE_KERNEL_OBJECT; #define TYPE_KERNEL_OBJECT_UNKNOWN 0 #define TYPE_KERNEL_OBJECT_TYPE 1 #define TYPE_KERNEL_OBJECT_DIRECTORY 2 #define TYPE_KERNEL_OBJECT_SYMBOLICLINK 3 #define TYPE_KERNEL_OBJECT_TOKEN 4 #define TYPE_KERNEL_OBJECT_PROCESS 5 #define TYPE_KERNEL_OBJECT_THREAD 6 #define TYPE_KERNEL_OBJECT_JOB 7 #define TYPE_KERNEL_OBJECT_DEBUGOBJECT 8 #define TYPE_KERNEL_OBJECT_EVENT 9 #define TYPE_KERNEL_OBJECT_EVENTPAIR 10 #define TYPE_KERNEL_OBJECT_MUTANT 11 #define TYPE_KERNEL_OBJECT_CALLBACK 12 #define TYPE_KERNEL_OBJECT_SEMAPHORE 13 #define TYPE_KERNEL_OBJECT_TIMER 14 #define TYPE_KERNEL_OBJECT_PROFILE 15 #define TYPE_KERNEL_OBJECT_KEYEDEVENT 16 #define TYPE_KERNEL_OBJECT_WINDOWSTATION 17 #define TYPE_KERNEL_OBJECT_DESKTOP 18 #define TYPE_KERNEL_OBJECT_SECTION 19 #define TYPE_KERNEL_OBJECT_KEY 20 #define TYPE_KERNEL_OBJECT_PORT 21 #define TYPE_KERNEL_OBJECT_WAITABLEPORT 22 #define TYPE_KERNEL_OBJECT_ADAPTER 23 #define TYPE_KERNEL_OBJECT_CONTROLLER 24 #define TYPE_KERNEL_OBJECT_DEVICE 25 #define TYPE_KERNEL_OBJECT_DRIVER 26 #define TYPE_KERNEL_OBJECT_IOCOMPLETION 27 #define TYPE_KERNEL_OBJECT_FILE 28 #define TYPE_KERNEL_OBJECT_WMIGUID 29 #define TYPE_KERNEL_OBJECT_FILTERCONNECTIONPORT 30 #define TYPE_KERNEL_OBJECT_FILTERCOMMUNICATIONPORT 31 #define TYPE_KERNEL_OBJECT_OTHER 32 |
'Reversing > ETC' 카테고리의 다른 글
[Reversing] MS Crypto API (0) | 2020.06.26 |
---|---|
[Reversing] 레지스터 관련 정리 (0) | 2020.06.18 |
[Reversing] ROP(Return Oriented Programming) (0) | 2020.04.28 |
[Reversing] 생성 방식에 따른 메모리 기본값 (0) | 2020.04.24 |
[Reversing] PowerShell 난독화 종류 (0) | 2020.04.06 |
- Total
- Today