본문 바로가기

리버싱!

DKOM을 이용한 프로세스 권한 상승

승현형님의 스터디 자료를 보고 공부했습니다.

개념

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