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 게시됨

[ bsides CTF 2021 ] khop 포스팅 썸네일 이미지

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 게시됨

[ Bsides CTF 2021 ] suscall 포스팅 썸네일 이미지

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 게시됨

[Kernel] QWB CTF 2018 - core (ret2usr) 포스팅 썸네일 이미지

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 게시됨

[Kernel] Kernel공부를 위한 커널문제 모음 포스팅 썸네일 이미지

Pwnable/Kernel exploit

[Kernel] Kernel공부를 위한 커널문제 모음

문제소스 ㅎㅎ커널공부 3일차..인프런 강의 다 듣고 첫 커널 문제들 클리어했다. 커널 공부할 때 처음에 모듈 소스들도 이해 못 했었는데 인프런 강의 듣고 정말 괜찮아졌다. 인프런 강의 정말 굳 공부할 때도움 많이 된거 같았다.. 이제 자신감도 얻었으니 본격적으로 CTF랑 워게임들에 나오는 커널문제들을 난이도순으로 차근차근 풀어나갈 것이다. 커널 문제들이 구하기 어려워 이 페이지에 구해놓고 문제들을 하나하나 풀어보겠다. + 팁 https://applemasterz17.tistory.com/231?category=1058137 1. Definit CTF 2020 - input test driver https://github.com/V4bel/2020_defenit_ctf 2. QWB CTF 2018 - co..

2021.07.22 게시됨

[Kernel] 커널에서 외워야할 명령어들 포스팅 썸네일 이미지

Pwnable/Kernel exploit

[Kernel] 커널에서 외워야할 명령어들

명령어 1. CTF에서 xxx.sh BzImage rootfs.cpio 3가지 파일이 주어진다. --> vmlinux추출해야된다. --> vmlinux 추출법 /usr/src/linux-headers-$(uname -r)/scripts/extract-vmlinux bzImage > vmlinux 2. Exploit파일을 파일 시스템에 넣고 실행하는법 - 커널을 부팅하면 링커와 gcc등이 없기 때문에 정적링킹으로 컴파일하여 파일 시스템에 넣어줘야 한다. gcc -static -o my_ex my_ex.c -no-pie -파일 시스템에 넣는 방법 --> rootfs.cpio를 압축해제하고 Exploit파일을 포함시켜 다시 재압축한다. - 압축 해제 mkdir rootfs mv ./rootfs.cpio ./r..

2021.07.21 게시됨

[Kernel] ret2usr 포스팅 썸네일 이미지

Pwnable/Kernel exploit

[Kernel] ret2usr

Ret2usr 조건 : SMEP, SMAP 보호기법이 걸려있지 않을 때 사용가능하다. Kernel Space에서 LPE를 일으켜 권한을 상승한 뒤 --> User Space에 있는 /bin/sh를 실행하는 코드 영역으로 쫨프하는 것 페이로드 1. commit_creds(prepare_kernel_cred(0)) --> 권한 상승 2. swapgs 3. rsp를 유저공간 스택으로 전환 4. iretq 주의할점 : 페이로드를 보내기 전에 backup_rv()함수를 통해 현재 레지스터 레이아웃 저장해놓기. 즉, 현재 스택이랑 레지스터 정보를 저장해놔야 권한 상승후 돌아올 주소를 알 수 있다.

2021.07.20 게시됨

[ Kernel Exploit] Kernel 공부를 위한 C언어 포스팅 썸네일 이미지

Pwnable/Kernel exploit

[ Kernel Exploit] Kernel 공부를 위한 C언어

예제 코드 __attribute__((속성)) 1. __attribute__((packed)) struct register_val{ uint64_t user_rip; uint64_t user_cs; uint64_t user_rflags; uint64_t user_rsp; uint64_t user_ss; }__attribute__((packed)); 위의 코드는 구조체로 padding이 끼지 않은 구조체를 만들고 이진코드로 만들어준다. --> C언어 시간에 배운 구조체 크기를 sizeof해보면 실제 예상하던 크기와 다를 수 있다는게 이말이었다. --> 1학년 때 왜 그랬던거지? 이렇게 넘겼던게 이어지는 느낌이 든다. https://unipro.tistory.com/197 2. __attribute__((r..

2021.07.20 게시됨

[ Kernel Exploit] Kernel 공부를 위한 자료들 포스팅 썸네일 이미지

Pwnable/Kernel exploit

[ Kernel Exploit] Kernel 공부를 위한 자료들

URL 및 공부 자료들 개인적으로 공부할 때 도움을 받을 수 있을만한 자료들을 정리하고자 한다. 포너블 처음 시작할 때처럼 어떤 자료라도 모든지 참고해서 내용을 다 흡수해서 내것으로 만들었으면 좋겠다. 1. https://www.inflearn.com/course/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A4%EB%84%90-%ED%95%B4%ED%82%B9 리눅스 커널 해킹. A부터 Z까지 - 인프런 | 강의 리눅스 커널의 각종 보호 기법과 그에 대한 우회 방안, 다양한 취약점들을 분석해보는 강의이며 강의별로 실습 예제가 제공 됩니다., [사진] 💡 강의 특징 이 강의는 리눅스 커널 해킹에 대한 www.inflearn.com 2. https://jiravvit.tistory.com..

2021.07.20 게시됨