부동산, 채권, 주식, 경제흐름 자료를 모아 보는 블로그입니다.

CALL Gate를 이용한 행위 은폐 - 1 본문

디바이스 드라이버

CALL Gate를 이용한 행위 은폐 - 1

runardor 2016. 9. 6. 23:51

금일 정리할 내용은 CALL GATE를 이용한 행위 은폐에 대해 정리할 예정입니다.



일단 Call Gate를 정리하기 전에 몇가지 정리를 하고 넘어가야할 내용이 있습니다.



유저레벨( 낮은 특권 계층 )에서 프로그램을 실행하는 도중 높은 특권계층으로 권한이 변경되는 대표적인 수단으로 크게 3가지가 존재합니다.


1. 인터럽트

2. 예외처리

3. 콜게이트



인터럽트

인터럽트는 하드웨어 인터럽트 + 소프트웨어 인터럽트를 생각하시면 됩니다.


하드웨어 인터럽트의 경우 특정 디바이스를 연결하거나 특정 하드웨어 이벤트가 발생할 경우 디바이스 드라이버에서 해당 이벤트 처리를 위해 인터럽트를 발생 시키고, 우선순위가 높아지게 됩니다.


소프트웨어 인터럽트의 경우 INT 명령어가 대표적인 소프트웨어 인터럽트입니다.



예외처리

예외처리는 특정 코드 실행이나 흐름에서 실행시 문제가 생길 경우 응용 프로그램 실행이나 OS에 영향을 줄 수 있으므로 이를 관리하기 위해 높은 특권을 가지고 해당 예외를 처리하게 됩니다.



콜게이트

콜게이트는 IDT, GDT 테이블을 이용하여 유저레벨에서 커널레벨의 함수를 직접 호출하는 기법입니다. 해당 기법은 정상적으로 많이 쓰이는 SYSENTER와는 다른 호출 구조를 가지게 됩니다.





추가적으로 정리해야할 내용은 특권 권한에 대한 내용입니다.


크게 알아봐야할 특권 권한은 총 3개입니다.


CPL (Current Priviledge Level) : 현재 실행중인 TASK의 특권 레벨로 CS, SS 셀렉터 레지스터에 기록되며 프로그램의 실행제어에 관계합니다.


여기서 다루지 않지만 유저레벨과 커널레벨에서 CS 레지스터는 다른값을 가리키며, 해당 CS 레지스터를 보정하지 않을 경우 커널레벨에서는 잘못된 포인터를 가리킬 수 있습니다.



DPL ( Descriptor Priviledge Level ) : 디스크립터에 기재하는 값으로 프로그램 실행시 권한에 대한 명세를 하게됩니다. 해당 내용은 차후 다룰 예정입니다. 쉽게 말하면 실행을 위한 명세 권한을 알리는것으로 커널레벨에서 실행가능한 권한값이 셋팅되어 있지 않고 커널에서 실행하려고 할 경우 실행이 되지 않습니다.



RPL ( Requested Priviledged Level ) 잘 셋팅 되지 않는 특권 권한으로 일시적으로 CALL Gate에서 Ring 0 호출시 이를 표시하기 위한 권한입니다.


해당 권한이 셋팅 된 경우 커널에서는 해당 코드가 유저레벨에서 직접호출되었음을 확인하고 커널 영역의 접근 불가 메모리에 대해 접근제어를 실시 합니다.


RPLDescriptor Priviledge Level Current Priviledge LevelCurrent Priviledge Level 

 


'디바이스 드라이버' 카테고리의 다른 글

CALL Gate를 이용한 행위 은폐 - 2  (0) 2016.09.07
IOCTL_CODE  (0) 2015.04.05
Comments