Computer Security

#7 리눅스 커널 보호 기법 본문

리눅스 커널 해킹

#7 리눅스 커널 보호 기법

쿠리 Kuri 2022. 8. 15. 18:30
반응형

리눅스 커널 보호 기법

 

리눅스 커널에는 공격자로부터 커널을 보호하기 위한 다양한 메모리 보호 기법들이 있다.

 

특정 보호 기법들은 아키텍쳐 별로 구현 및 명칭이 조금씩 다르다.

 

수 많은 보호 기법들이 있지만, x86_64 아키텍쳐의 KASLR,SMEP,SMAP,KADR,SSP,KPTI 보호기법을 다룰 것 이다.

 


 

 

 

KASLR : 커널의 메모리 주소를 랜덤화. similar to ASLR 

 

SMEP : 커널 공간에서 유저 공간의 실행 권한을 제한

 

SMAP : 커널 공간에서 유저 공간의 읽기/쓰기 권한도 제한

 

KADR : 로컬 유저가 커널의 심볼을 볼 수 없도록 제한

 

SSP : 유저 공간의 canary와 동일. Makefile에서 사용되는 gcc의 옵션(스택 오버플로우 방지 보호기법)

 

KPTI :  커널 공간과 유저 공간의 전환이 일어날 때, 각각의 페이지 테이블을 사용

 

 

 


 

사용 중인 보호 기법 체크

 

1. checksec 사용

 

2. /proc/cpuinfo 와 /etc/default/grub 확인

 

3.qemu script 확인

 

 


1. checksec 사용

 

checksec 다운로드부터 해보자.

(다운로드 하고 싶은 위치로 이동)

 

1.   wget https://github.com/slimm609/checksec.sh/archive/1.6.tar.gz

wget

 

 

 

2.tar -zxvf 1.6.tar.gz 명령어로 압축 풀기

tar -zxvf 1.6.tar.gz

 

 

 

3.checksec.sh-1.6 -> checksec.sh 로 이름 변경하기

checksec.sh

 

 

4.  cd checksec.sh  디렉토리 안으로 접근

 

 

5. cp checksec /usr/local/bin/  명령을 이용해 어디서든 사용 가능하도록 설정하면 설치 끝이다!

 

 

 


다시 본론으로 돌아와서

 

커널 이미지를 빌드한 디렉토리에서 checksec --kernel=.config 명령을 통해 설정 되어있는 다양한 커널 보호기법들을 확인할 수 있다.

checksec

하지만, checksec으로 부팅되지 않은 커널을 체크하는 경우, 커널이 부팅되며 변경되는 보호기법 옵션들에 대해서는 확인하기 어렵다.

 

 

 


2.  /proc/cpuinfo 와 /etc/default/grub 명령을 통해 cpu별 보호 기법을 확인 가능하다.

 

 

flags

KASLR 보호 기법은  /etc/default/grup 을 확인해야 한다.

 

 

 


3. qemu script 확인

 

cat boot.sh

append "nokaslr" : KASLR 보호기법 미적용

 

cpu smep :  SMEP 보호기법 적용

 

반응형

'리눅스 커널 해킹' 카테고리의 다른 글

#9 SMEP 우회  (0) 2022.08.17
#8 KASLR 우회  (0) 2022.08.16
#6 리눅스 CTF에서의 환경 셋팅  (0) 2022.08.14
#5 리눅스 qemu&gdb 셋팅  (0) 2022.08.13
#4 리눅스 커널&파일 시스템 빌드  (0) 2022.08.12
Comments