일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 시스템해킹
- Bandit
- 드론
- 리눅스 커널
- 어셈블리어
- 시그널
- wargame
- C++
- 리눅스
- 리버싱
- pwn.college
- kernel
- 컴퓨터구조
- 시스템 프로그래밍
- 시스템프로그래밍
- radare2
- C언어
- Leviathan
- 워게임
- write up
- Pwnable.kr
- px4
- 취약점
- pwncollege
- 리눅스커널
- 알고리즘
- 프로그래밍
- 커널
- 시스템
- css
- Today
- Total
Computer Security
#7 리눅스 커널 보호 기법 본문
리눅스 커널 보호 기법
리눅스 커널에는 공격자로부터 커널을 보호하기 위한 다양한 메모리 보호 기법들이 있다.
특정 보호 기법들은 아키텍쳐 별로 구현 및 명칭이 조금씩 다르다.
수 많은 보호 기법들이 있지만, 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
2.tar -zxvf 1.6.tar.gz 명령어로 압축 풀기
3.checksec.sh-1.6 -> checksec.sh 로 이름 변경하기
4. cd checksec.sh 디렉토리 안으로 접근
5. cp checksec /usr/local/bin/ 명령을 이용해 어디서든 사용 가능하도록 설정하면 설치 끝이다!
다시 본론으로 돌아와서
커널 이미지를 빌드한 디렉토리에서 checksec --kernel=.config 명령을 통해 설정 되어있는 다양한 커널 보호기법들을 확인할 수 있다.
하지만, checksec으로 부팅되지 않은 커널을 체크하는 경우, 커널이 부팅되며 변경되는 보호기법 옵션들에 대해서는 확인하기 어렵다.
2. /proc/cpuinfo 와 /etc/default/grub 명령을 통해 cpu별 보호 기법을 확인 가능하다.
KASLR 보호 기법은 /etc/default/grup 을 확인해야 한다.
3. qemu script 확인
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 |