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

Linux Security Check정리 포스팅 썸네일 이미지

Pwnable/포너블 정리

Linux Security Check정리

Security Check > malloc과 free함수를 쓸 때 악의적인 행위를 하지 못하게 함수 내부적으로 검증 단계가 존재한다. > 대표적으로 malloc에서 2가지, free에서 7가지, Unlink에서 2가지 검증 단계를 거친다. Malloc 1. malloc(): memory corruption (fast) 2. malloc(): memory corruption malloc에서는 검증 단계로 위의 두 가지가 존재한다. 위의 검증 단계에서 구체적으로 어떤 동작을 하는지 알아기 위해서 malloc source code를 보도록 하자. 아래 코드는 malloc함수 내부에서 security check를 하는 부분이다. https://github.com/andigena/glibc-2.23-0ubuntu..

2021.05.06 게시됨

Unsafe Unlink 정리 포스팅 썸네일 이미지

Pwnable/포너블 정리

Unsafe Unlink 정리

Unsafe Unlink 쓸 수 있는 상황 1. malloc으로 할당 받은 힙의 주소를 전역 변수에서 관리해야 함. 2. 힙 최소 2개이상에 두 번째 힙의 헤더를 조작할 수 있어야 한다. Unlink의 역할 Unlink는 freelist에 있는 힙 청크 중에 중간에 끼어 있는 청크에 메모리가 할당될 때 힙 청크 리스트 노드들 간의 연결관계를 정리해주는 역할을 함. 아래 그림은 P의 위치에 malloc, calloc으로 메모리가 할당될 때 Unlink가 수행하는 동작이다. UnLink 발생 조건 Unlink과정에서 발생하는 취약점을 알기 위해서 소스코드를 분석해보겠다. #define unlink(AV, P, BK, FD) { \ FD = P->fd; \ BK = P->bk; \ if (__builtin_e..

2021.04.07 게시됨