kernel exploit / NahamCon 2025 CTF - The jumps
·
Kernel Exploit/Exercise
1. intro얼마전 열렸던 nahamcon에서 kernel exploit 문제가 나왔다.그냥 쫄아서 던졌는데, 아무래도 열받아서 커널 익스 공부를 통채로 다시 해버림. 2. code 및 분석2.1. code2.1.1. proc_readssize_t proc_read(file *file,char *buf,size_t count,loff_t *ppos){ long lVar1; int iVar2; long in_GS_OFFSET; char tmp [32]; lVar1 = *(long *)(in_GS_OFFSET + 0x28); if (0x400 값을 user에게 전달한다.tmp size가 32이나, 0x400 이하로는 모두 복사해주기 때문에 이를 이용해 leak이 가능하다. 2.1.2. pr..
kernel exploit payload - krop
·
Kernel Exploit/Exercise
서론커널 영역에서 실행권한이 없는 경우에 rop을 통해 exploit이 가능하다.이를 위한 기본 페이로드이다.특이사항으로 gadget을 찾을 때 ropgadget을 이용하는 경우 intel 문법으로 나온다는 것이다. 즉,mov rax, rdi가 아닌mov rdi, raxgadget을 찾아야한다. Payload#include #include #include #include #include int kbuf_size = 0x400;int global_fd;void open_dev(){ global_fd = open("/dev/holstein", O_RDWR); if (global_fd
kernel exploit payload - kaslr
·
Kernel Exploit/Exercise
서론[ Holstein v1 (LK01) - Pawnyable ] 기준으로 작성하였다.주소 랜덤화 시 read를 통한 필요 주소 leak 후 offset을 계산하여 이를 적용한다.즉, 우선 kaslr을 적용하지 않고 leak, offset을 계산하고 이를 반영하면 된다. Payload#include #include #include #include #include int kbuf_size = 0x400;int global_fd;void open_dev(){ global_fd = open("/dev/holstein", O_RDWR); if (global_fd
kernel exploit payload - no mitigation
·
Kernel Exploit/Exercise
서론[ Holstein v1 (LK01) - Pawnyable ] 기준으로 작성하였다.아무 보호기법도 없고, 주소도 랜덤화하지 않을 때 쓸 수 있는 payload이다.사실 leak 부분도 필요 없지만, 기본 template로 만들어보았다. Payload#include #include #include #include #include int kbuf_size = 0x400;int global_fd;void open_dev(){ global_fd = open("/dev/holstein", O_RDWR); if (global_fd
Kernel exploit 기본 setting
·
Kernel Exploit/Exercise
서론오랜만에 공부를 다시 시작하며, 죄다 까먹어서 정리를 위해 글을 쓴다. System settingQemu 설치sudo apt install qemu-utils qemu-system-x86Kerner debugging tool 설치gef addon을 통해 커널 디버깅을 원활히 하자.wget -q https://raw.githubusercontent.com/bata24/gef/dev/install-uv.sh -O- | sudo shhttps://github.com/bata24/gef GitHub - bata24/gef: GEF - GDB Enhanced Features for exploit devs & reversersGEF - GDB Enhanced Features for exploit devs & r..
Kernel - KPTI 우회
·
Kernel Exploit/Theory
서론 KPTI는 유저 영역에서의 보호기법에는 없는 보호기법이다. 요약하자면, 커널 - 유저공간 간의 전환 시 최소한의 커널 주소만 포함하는 것이다. 이에 커널에서 유저공간으로 넘어갈때는 상관 없지만, 유저 공간에서 다시 커널 공간으로 넘어올 때 문제가 발생한다. 접근 가능한 주소의 범위는 cr3 레지스터를 사용하여 판별하게된다. 본론 KPTI 보호기법이 걸려 있으면 무슨 현상이 일어나는지 알아보고 익스플로잇까지 진행해보자. 1. 환경설정 전과 동일하며, qemu 실행 파일 상 append에서 nopti 삭제 및 cpu를 kvm64로 변경하였다. #!/bin/sh qemu-system-x86_64 \ -m 64M \ -nographic \ -kernel bzImage \ -append "console=tt..
Kernel - SMAP 우회, krop (간단 글)
·
Kernel Exploit/Theory
서론 이번에는 SMAP다. 한줄 요약 하자면, smep에서는 유저 공간의 실행 권한만 제한하였다면, smap에서는 유저공간의 읽기, 쓰기 권한도 제한한다. 본론 모듈에서 어디에 어떻게 값을 쓸 수 있는가에 따라 다르겠지만, 결국은 커널 영역의 명령어들을 사용하면 되기 때문에 기존의 krop payload로 파훼 가능하다. 2023.09.07 - [Kernel Exploit] - Kernel - SMEP 우회, krop Kernel - SMEP 우회, krop 서론 이제 보호기법을 하나씩 추가해보자. 우선은 SMEP이다. 2023.08.20 - [Kernel Exploit] - Kernel 보호기법 및 우회법 Kernel 보호기법 및 우회법 서론 커널 공간도 유저 공간과 마찬가지로 보호기법이 있 wyv3r..
kernel exploit helper - gdb, cpio 압축 및 압축해제, 컴파일
·
Kernel Exploit/Theory
서론 커널 익스를 하다보면 페이로드를 작성하고, 컴파일하고, cpio 파일을 압축 해제하고, 여기에 컴파일된 파일을 넣고, 다시 압축하는 일련의 과정을 반복하기에 이를 쉘 스크립트로 만들어보았다. 사용법 설명서는 아래와 같다. ┌[root🐲 Wyv3rn]-(~/kernel/pwnyable/LK01) └> ./kernel_helper Usage: ./kernel_helper [OPTION] OR ./kernel_helper [FILE1] [FILE2] ... Put this file in same directory with rootfs.cpio [OPTION] -ext Extract rootfs.cpio to unzip directory. Caution! unzip directory shall be rem..
Kernel - stack pivoting #2 - with xchg
·
Kernel Exploit/Theory
서론 앞선 글에서는 mov esp gadget을 활용하여 stack pivoting을 해보았다. 2023.09.08 - [Kernel Exploit] - Kernel - stack pivoting #1 - with mov esp. Kernel - stack pivoting #1 - with mov esp. 서론 지금까지 단순히 ret address를 변조할 수 있는 경우에 대해 공부하였다. 만일 ret address 변조가 아닌 함수 pointer 주소만 변조할 수 있는 경우에는 어떨까. 예를 들면 *input() 과 같은 식으로 실행 wyv3rn.tistory.com 이번에는 xchg gadget으로 해보자. 문제 환경 pwnyable 기본 커널로 한다. 1. 환경설정 vmlinux 추출, 분석 및 취..
Kernel - stack pivoting #1 - with mov esp.
·
Kernel Exploit/Theory
서론 지금까지 단순히 ret address를 변조할 수 있는 경우에 대해 공부하였다. 만일 ret address 변조가 아닌 함수 pointer 주소만 변조할 수 있는 경우에는 어떨까. 예를 들면 *input() 과 같은 식으로 실행될 때이다. 이 경우 결국 주소로 jmp하는 것과 같기 때문에 페이로드의 흐름과 rop에 따른 흐름이 일치하지 않는다. 그러므로 이를 일치시켜주기 위한 stack pivoting이 필요하다. 문제 환경 pwnyable 기본 커널로 한다. 1. 환경설정 vmlinux 추출, 분석 및 취약점이 모두 앞과 동일하다. 2023.08.27 - [Kernel Exploit] - kernel - ret2usr kernel - ret2usr 서론 가장 기본적인 커널 익스 기법인 ret2us..