전체 글

전체 글

    gef - for kernel debuging

    서론 기존 gef에서는 커널 디버깅, 즉 qemu remote 접속 시 오류가 발생하거나 메모리 맵핑이 잘 되지 않았는데 이를 보완한 버전이 있어 설치하게 되어서 공유한다. 본론 뭐 길게 말할 필요 없는 듯. https://github.com/bata24/gef GitHub - bata24/gef: GEF - GDB Enhanced Features for exploit devs & reversers GEF - GDB Enhanced Features for exploit devs & reversers - GitHub - bata24/gef: GEF - GDB Enhanced Features for exploit devs & reversers github.com

    kernel exploit helper - gdb, cpio 압축 및 압축해제, 컴파일

    서론 커널 익스를 하다보면 페이로드를 작성하고, 컴파일하고, 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

    서론 앞선 글에서는 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.

    서론 지금까지 단순히 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

    서론 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

    서론 앞서 공부한 보호기법 설명에서와 같이 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..

    Kernel - SMEP 우회, krop

    서론 이제 보호기법을 하나씩 추가해보자. 우선은 SMEP이다. 2023.08.20 - [Kernel Exploit] - Kernel 보호기법 및 우회법 Kernel 보호기법 및 우회법 서론 커널 공간도 유저 공간과 마찬가지로 보호기법이 있다. 다행이라면 유저 공간의 보호기법과 대동소이한다는 점. 아직 각 보호기법에 따른 공격법을 공부하지 않았기에 느낌적인 느낌으로 wyv3rn.tistory.com 본론 SMEP은 유저 공간에서의 NX와 같이 실행 권한을 제한하는 방법이다. CR4 레지스터에 SMEP을 제어하는 비트가 있어 이를 0으로 만들거나, 유저 공간의 rop과 같이 krop이 가능하다. 본 글에서는 krop을 기준으로 한다. 1. 환경설정 1.1. vmlinux 추출하기 익히 아는 것과 같이 rop..

    STB-sandbox

    보호되어 있는 글입니다.

    file structure __lll_lock_wait_private 우회

    문제를 풀다가 생긴 문제점을 간단하게 요약하겠다. fwrite 함수를 파일 스트럭쳐를 변조한 뒤 call 하여 aaw를 하던 와중, 분명 fwrite 함수가 실행됐는데 입력을 받으며 멈춰있는 현상이 발생했고, 페이로드는 아래와 같았다. pay += p64(0) #read ptr pay += p64(environ) #read end pay += p64(0) #read base pay += p64(environ) #write base pay += p64(environ+0x100) #write ptr pay += p64(0) #write end pay += p64(0) #buf base pay += p64(0) #buf end pay += p64(0) #save base pay += p64(0) #backup..

    heap safe linking

    서론 pwnable에서의 heap은 정말 대단한 영역인 것 같다. 수 많은 보호기법으로 지속적으로 취약점을 막으려하지만, 그 또한 뚫어내는 것을 보니 작은 해킹 생태계와 같아보인다. Safe linking 높은 버전에서 작은 사이즈의 chunk가 생성되었다가 해제될 때 마지막에 free된 chunk의 next chunk address 부분을 보면 이전 chunk 주소가 아닌 다른 값을 본 적이 있을 것이다. 2.32 >= libc에서는 safe_linking이 적용되며 이 때문이다. Safe_linking 시 address는 특정 값과 xor하여 mangle (엉망으로 만들기) 하기 때문에 주소를 완벽히 알기 어렵다. 사실 가장 먼저 free 된 주소를 통해 마지막 1.5바이트를 제외하고 알 수 있기에 ..