Silly Equation
·
Kernel Exploit/Theory
보호되어 있는 글입니다.
pop rdi
·
Kernel Exploit/Theory
보호되어 있는 글입니다.
Kernel - Overwriting modprobe_path
·
Kernel Exploit/Theory
서론CTF에서 나와서 조금 더 공부해보는 글. modprobe_path우선 modprobe라는 프로그램은 커널에 로드 가능한 모듈을 추가하거나 제거하는데 사용하는 프로그램이다.다만, 여기서 만일 알 수 없는 형식의 파일이 실행되면 modprobe_path 경로의 프로그램이 root 권한으로 실행된다.즉, modprobe_path의 값을 조작할 수 있다면 임의의 프로그램을 실행할 수 있다는 것이다.또한 modprobe_path의 값은 writable 영역에 전역변수로 설정되어 있기에 매우 취약하다. exploit - before patch생각보다 꽤 간단하다.만일 aaw가 가능한 상황이라면 종전의 payload는save state -> prepare_kernel_cred -> commit_cred -> ..
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..
Kernel - SMEP 우회, cr4 overwrite #2
·
Kernel Exploit/Theory
서론 cr4 overwrite 2차전이다. 문제 환경 첨부 환경을 기준으로 한다. 1. 환경설정 1.1. vmlinux 추출하기 앞과 동일하다. ┌[root🐲 Wyv3rn]-(~/kernel/cr4) └> extract-vmlinux bzImage > vmlinux ┌[root🐲 Wyv3rn]-(~/kernel/cr4) └> ls bzImage rootfs.cpio start.sh vmlinux 1.2. 문제 환경 설정 start.sh qemu-system-x86_64 \ -m 512M \ -kernel ./bzImage \ -initrd ./rootfs.cpio \ -append "root=/dev/ram rw console=ttyS0 oops=panic panic=1 quiet nokaslr" \ -..
Kernel - SMEP 우회, cr4 overwrite
·
Kernel Exploit/Theory
서론 앞서 공부한 보호기법 설명에서와 같이 SMEP 보호기법은 결국 CR4 레지스터 값에 따라 결정된다. 만일 해당 값을 수정할 수 있다면 보호기법도 해제할 수 있지 않을까? 본론 SMEP은 유저 공간에서의 NX와 같이 실행 권한을 제한하는 방법이다. CR4 레지스터에 SMEP을 제어하는 비트가 있어 이를 0으로 만들거나, 유저 공간의 rop과 같이 krop이 가능하다. 본 글에서는 CR4 overwrite를 기준으로 한다. 1. 환경설정 1.1. vmlinux 추출하기 앞과 동일하다. 1.2. 문제 환경 설정 앞과 동일하다. init.d/S99pawnyable #!/bin/sh ## ## Setup ## mdev -s mount -t proc none /proc mkdir -p /dev/pts moun..