분류 전체보기
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLD6Wx%2FbtsvDi4cBfB%2F3UOsc856ssWfmmQNekDawk%2Fimg.png)
kernel security level9
1. intro 2. code 및 분석 2.1. code 생략 2.2. 분석 device_write로 유저 영역에서 값을 받아 0x108 위치를 참조하여 call 한다. 3. 취약점 확인 및 공격 준비 3.1. 취약점 임의 함수 실행 가능. 3.2. 공격 준비 임의 함수를 실행 가능하기에 결국은 어떤 함수를 실행하는지가 포인트이다. 커널에서도 execve나 system 함수와 같이 명령어를 실행해주는 함수가 있는데, 그것이 run_cmd 이다. 마찬가지로 rdi에 해당 함수의 인자를 담고있는 주소를 넣고 run_cmd 함수를 실행해주면 된다. 4. exploit 생략
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEVhAC%2FbtsvjgfkqMW%2FDhWYN1AX4Fh1m1DXDow0DK%2Fimg.png)
kernel security level8
1. intro 2. code 및 분석 2.1. code 생략 2.2. 분석 특정 바이너리에서 모듈을 load하는데, 이 때 seccomp가 걸려있어 write 함수 이외에는 사용할 수 없게된다. 다만, 모듈 내에서 바이너리로부터 전달받은 쉘코드를 실행해준다. 3. 취약점 확인 및 공격 준비 3.1. 취약점 seccomp bypass 3.2. 공격 준비 개인적으로 내가 이걸 풀었다는게 레전드라고 생각한다. 물론 힌트를 다소 참고하긴 했지만... 유저 영역에서의 seccomp는 결국 커널 영역의 특정 주소에 실행 가능 (또는 불가) 한 함수에 따라 bit setting을 해두고, 이를 참조하며 실행 여부를 판단한다. https://docs.google.com/presentation/d/1YMlOERClX6..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHY418%2FbtsvqzRJLnY%2F7lS6hLibHcICj5cOOhQdt0%2Fimg.png)
kernel security level1~7
1. intro 2. code 및 분석 2.1. code 생략 2.2. 분석 기초적인 kernel exploit 기법에 대해서 배울 수 있다. 3. 취약점 확인 및 공격 준비 3.1. 취약점 생략 3.2. 공격 준비 level 1~5까지는 커널 모듈에서 함수 호출 시 특정 값과 비교하며 권한 상승을 일으켜준다. level6~7에서는 모듈에서 쉘코드를 실행시켜주기에 shellcode를 작성해야하는데, 권한 상승을 일으켜주는 부분만 구현하면 쉽게 풀 수 있다. level8부터 시작이나 마찬가지인데, seccomp를 통해 실행 가능한 함수를 제한한다. 즉 prepare_kernel_cred와 같은 함수 사용이 불가능해지며 이를 어떻게 우회할 것인가가 주된 사항이다. 4. exploit 생략.
Kernel security - 명령어 사용법
서론 사실 커널 디버깅을 위해서는 사전 준비가 다소 필요하다. 하지만 pwn.college에서는 이를 위해 대부분의 사항을 준비해두어서 명령어 하나로 모두 처리할 수 있다. 처음에 다소 헤멧기에 정리해둔다. 모듈 디버깅 소스파일이 제공되지 않기에 커널 모듈을 직접 ida로 열어서 확인해야한다. 기본 명령어 기본적으로 vm 명령을 통해 모든 작업이 가능하다. hacker@vm_kernel-security-level-1-0:~$ vm usage: vm [-h] [--kaslr] [--no-kaslr] {connect,exec,start,stop,restart,logs,debug,build} ... vm: error: the following arguments are required: command virtu..
Kernel - KPTI 우회
서론 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 (간단 글)
서론 이번에는 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..