반응형

Pwnable/Kernel exploit

[ Kernel ] Kernel 대표적인 보호기법

1. KASLR : 커널의 메모리주소를 랜덤하게 맵핑. ASLR보다 엔트로피가 작아 브루트포싱 공격에 조금 더 약하다. 2. SMEP : 커널 공간 --> 유저공간의 코드 실행을 제한 3. SMAP : 커널 공간 --> 유저공간의 읽기/쓰기 권한 제한 4. KADR : 루트권한 사용자 빼고 커널의 맵핑된 심볼을 볼 수 없도록 한다. 5. SSP : Canary 보호기법과 동일, 스택쿠키 6. KPTI : 커널공간과 유저공간의 전환이 일어날 때, 각각의 페이지 테이블을 사용 보호기법 체크하는법 1. checksec 2. /proc/cpuinfo와 /etc/default/grub 확인 3. qemu script를 확인한다.

2021.12.28 게시됨

 포스팅 썸네일 이미지

Pwnable/Kernel exploit

[ bsides CTF 2021 ] khop

문제소스 보호기법 KPTI : YES SMEP : YES KASLR : NO 문제 분석 및 페이로드 모듈 파일을 open하면 "message"라는 전역변수에 kmalloc을 할당해준다. 또한 일반적인 strlen함수와 다르게 \x00이 아닌 \n을 만날 때까지 문자열 길이를 세어준다. close(fd)를 해주면 kmalloc된 영역 free되어지고 message 전역 변수가 0을 가르킨다. read함수는 strlen을 통해 글자수를 세고 이것을 커널영역 --> 유저영역 변수로 복사해준다. 익스플로잇 순서는 이렇다. 1. 카나리 릭 -->strlen 취약점 2. 스택 피보팅 3. KPTI bypass 1. 카나리 릭 open()함수를 2번 해주고 close()함수로 하나를 닫어주면 message변수는 0을..

2021.08.11 게시됨

 포스팅 썸네일 이미지

Pwnable/Kernel exploit

[ Bsides CTF 2021 ] suscall

문제소스 #include #include #include MODULE_LICENSE("GPL"); #ifndef __NR_SUSCALL #define __NR_SUSCALL 546 #endif SYSCALL_DEFINE1(suscall, unsigned long int, addr) { void (*fp)(void); fp = addr; fp(); } SYSCALL_DEFINE1 매크로를 통해 syscall을 만들고 있다. https://holeeman.github.io/linux/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%BD%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0-1/ http://egloos.zum.com/rousalome..

2021.08.10 게시됨

 포스팅 썸네일 이미지

Pwnable/Kernel exploit

[Kernel] CISCN 2017 - babydriver (UAF)

문제소스 보호기법 SMEP : Yes 문제 분석 및 페이로드 1. 모듈 파일 얻기(.ko) mkdir rootfs cp rootfs.cpio ./rootfs cd ./rootfs mv rootfs.cpio rootfs.gz gzip -d rootfs.gz cpio -id -v < rootfs cd /lib/modules/4.4.72/ 2. 모듈 파일 취약점 분석 ioctl함수 2번째 인자로 0x10001을 줄 경우 _kmalloc함수 실행 close()함수 실행시 release함수가 실행되고 kfree함수 실행 --> NULL로 초기화해주지 않는다. release함수에서 발생한 취약점에서 UAF발생 익스플로잇 순서 1. fd 2개 생성 2. fd 1개 close 3. fork를 이용해 해제된 힙에 cre..

2021.07.26 게시됨

 포스팅 썸네일 이미지

Pwnable/Kernel exploit

[Kernel] QWB CTF 2018 - core (ret2usr)

문제소스 https://github.com/ctf-wiki/ctf-challenges/tree/master/pwn/kernel/QWB2018-core 보호기법 Canary : Yes KASLR : Yes 문제 분석 및 페이로드 일단 이 문제는 KASLR 보호기법만 걸려있기 때문에 ret2usr로 익스플로잇이 가능하다. ret2usr에서 기본적인 순서는 이렇다. 1. commit_creds(prepare_kernel_cred(0))을 호출 (함수의 주소는 /tmp/kallsyms파일을 읽어서 위치를 알 수 있다) --> init파일을 보면 일반 유저도 우회하여 kallsyms를 읽을 수 있게 해두었다. 2. trap_frame구성 3. iretq을 통해 유저모드의 코드를 실행 커널 문제는 포너블 문제처럼 ..

2021.07.25 게시됨

반응형