승현형님의 스터디 자료를 보고 공부했습니다.
개념
PEB->Process Environment Block , TEB->Thread Environment Block
EPROCESS->Executive Process , ETHREAD->Executive Thread
프로세스가 생성되면 커널메모리에 EPROCESS 구조체 생성 및 사용할 스레드마다 ETHREAD도 할당
유저메모리에서 프로세스, 스레드에 대한 정보를 가진 구조체인 PEB, TEB 생성
DKOM이란?
Direct Kernel Object Manipulation의 약자로써 커널 오브젝트를 직접 수정하는 행위를 의미한다.
DKOM으로 할 수 있는 일에는 프로세스 은닉, 디바이스 드라이버 은닉, 스레드 권한 상승, 프로세스 권한 상승, 포렌식 회피등이 있다.
EProcess의 주요필드
+0x000 Pcb : _KPROCESS->PCB,KPROCESS의 위치
+0x448 ImageFileName : [15] UChar->EPROCESS 구조체에 저장되는 프로세스 이름
+0x2f0 ActiveProcessLinks : _LIST_ENTRY->모든 프로세스를 관리
+0x2e8 UniqueProcessId : Ptr64 Void->프로세스 ID
+0x418 ObjectTable : Ptr64 _HANDLE_TABLE->프로세스의 핸들 테이블포인터
+0x358 Token : _EX_FAST_REF->프로세스의 토큰정보
+0x610 VadRoot : _RTL_AVL_TREE->프로세스에 할당된 유저 메모리영역의 포인터
+0x3f8 Peb : Ptr64 _PEB->PEB를 가르키는 포인터
Acess Token이란?
어떤 객체에 접근하기 위해 사용되는 접근 권한 정보이다. EX) linux의 user group other의 rwx권한
윈도우에서 가장 높은 권한은 SYSTEM이다.(리눅스에서는 ROOT)
저장되는 정보는
- SID(Security IDentifier)
- 사용자가 Security Descriptor를 지정하지 않고 보안 객체를 만들 경우에 사용하는 기본 DACL
- Access Token의 출처
- 토큰의 종류(기본 토큰, 위장 토큰)
- 제한된 SID 목록
- 현재 위장 수준
- 기타
가 있다.
token 중 privileges가 중요하다.
Present filed means privilege present in the token
Enabled filed means enabled privileges in the token
권한 상승 과정
Cheat Engine
OS 버전마다 OFFSET이 다르다.
https://wiki.cheatengine.org/index.php?title=Lua
작업관리자의 프로세스 목록은 EPROCESS 구조체를 이용해 확인을 한다.
프로세스에서 목록들이 나오는것은 위의 사진처럼 서로 연결 되어 가르키고 있는데 A->B->C,A<-B<-C에서 A->C, A<-C로 값을 바꾸게 되면 B를 은닉할수있게 된다.
'리버싱!' 카테고리의 다른 글
방독면책-4 (0) | 2021.03.05 |
---|---|
방독면책-3 (0) | 2021.03.03 |
Christmas CTF 2019-welcome rev (0) | 2020.01.10 |
방독면책-어셈블리2 (0) | 2020.01.06 |
방독면책-어셈블리 (0) | 2020.01.06 |