Contents
Kernel memory protection
Linux command - control kernel
Kernel exploit methodology
KASLR(Kernel Address Space Layout Randomization)
기능 : 부팅에 따라 커널의 메모리 주소를 랜덤화 시킴
SMEP(Supervisor Mode Execution Protection)
기능 : 유저 영역의 주소 공간에서 커널의 코드를 실행할 수 없게 함
SMAP(Supervisor Mode Access Protection)
기능 : 유저 영역의 주소 공간에서 메모리 접근을 허용하지 않음.
Kernel DEP ( NX bit )
기능 : 커널에서의 실행 권한을 없엠
우회 : ROP
Canary
기능 : ebp-4
영역에 랜덤적으로 생성되는 임의의 값 생성, 이를 통해 함수 에필로그에서 이 값이 손상되었으면 오버플로우를 감지하여 프로그램을 종료시킨다. 지금까지 알아본 결과로는, 커널의 canary
에는 NULL byte
가 없다.
우회 : stack overflow
등을 이용한 canary leak
MMAP_MIN_ADDR
기능 : mmap
을 할 수 있는 최소 주소를 정해 NULL
pointer deterences 공격 방지
System Integrity Protection (SIP / rootless) - in MacOS
기능 : /bin
,/usr
같은 시스템 파일과 디렉토리를 보호한다.
Check Protection
mmap_min_addr : sysctl -a | grep vm.mmap
smep : cat /proc/cpuinfo | grep smep
kaslr : cat /proc/kallsyms | grep _text | head -n 1
Linux command - control kernel
Commands
lsmod
: 실행중인 모듈 리스트
insmod [module name]
: 커널에 모듈 적재
rmmod [module name]
: 커널에서 모듈 제거
modinfo [module name]
: 모듈 정보 출력
Functions
module_init
: 모듈 적재할 때 실행되는 함수이다. 성공하면 0을 반환한다.
module_exit
: 모듈 삭제할 때 실행되는 함수이다.
printk
: 주로 디버깅 목적으로 사용되며 flag
로 우선 순위를 정할 수 있는 출력함수이다.
printf: 출력 대상이 표준 출력 디바이스인 모니터
printk: 출력 대상이 커널이 실행중인 4GB 영역의 메모리 (tty가 아닌 pts로 출력)
dmesg 또는 cat /var/log/messages 로 확인
copy_form_user
,copy_to_user
: 유사 memcpy
이다.
Reference
https://www.lazenca.net/pages/viewpage.action?pageId=25624857
https://wally0813.github.io/kernel%20exploit/2018/09/17/Kernel-Exploit-Basic/
'Kernel & Browser > Kernel' 카테고리의 다른 글
[Kernel] Linux kernel (6) - CISCN 2017 babydriver write-up ( Linux kernel UAF ) (1) | 2019.10.23 |
---|---|
[Kernel] Linux kernel (5) - Exploit core functions (0) | 2019.10.09 |
[Kernel] Linux kernel (3) - ioctl function and make test program (0) | 2019.10.06 |
[Kernel] Linux kernel (2) - kernel basic 2 (0) | 2019.10.05 |
[Kernel] Linux kernel (1) - kernel basic 1 (0) | 2019.10.04 |