일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- css
- 시스템
- kernel
- C언어
- pwncollege
- Pwnable.kr
- 어셈블리어
- 리눅스
- 드론
- Bandit
- 컴퓨터구조
- 알고리즘
- 리눅스커널
- C++
- 시스템해킹
- write up
- wargame
- 시스템프로그래밍
- Leviathan
- 워게임
- 시스템 프로그래밍
- px4
- 커널
- 리버싱
- 시그널
- radare2
- 취약점
- pwn.college
- 리눅스 커널
- 프로그래밍
- Today
- Total
목록리눅스 커널 해킹 (28)
Computer Security

Kernel UAF(Use-After-Free) UAF(Use-After-Free) 취약점은 할당된 heap 영역을 해제 후 재사용할 때 발생하는 취약점이다. 이러한 취약점이 커널에서도 발생할 수 있다. 일반적으로 커널에서의 heap은, 슬랩 할당자를 통해 할당 받을 수 있는 슬랩 객체를 의미한다.(vmalloc영역 제외) 디바이스 드라이버에서의 UAF 취약점은 보통 dangling pointer를 통해서 발생한다. 우리는 아래의 파일들로 실습 할 것이다. start.sh : qemu script uaf.c : kernel UAF 취약점이 터지는 디바이스 드라이버 예제 exp.c : 취약점을 이용해 권한 상승을 일으키는 exploit code 1. bzImage 이번 커널 이미지 버전은 이전의 예제에서의..

Stack based BOF 스택에 위치한 버퍼에 할당된 크기보다 더 많은 데이터가 쓰여질 때 발생하며, 이를 이용해 스택의 retrun address등을 덮어 프로그램의 흐름을 변조할 수 있는 취약점이다. 하나의 태스크에는 유저 공간 전용 스택도 존재하고, 커널 공간 전용 스택도 존재한다. 유저 공간의 스택과 마찬가지로 커널 공간의 커널 스택도 BOF가 발생할 수 있다. 우리는 아래의 파일들로 실습 할 것이다. start.sh : qemu script bof.c : Stack based BOF 취약점이 터지는 디바이스 드라이버 예제 exp.c : struct cred overwrite기법을 이용해 권한 상승을 일으키는 exploit code 1. cat start.sh를 통해 걸려있는 보호기법을 살펴보..

struct cred overwrite 정형화된 특정한 기법이라기보단, 권한 상승을 일으키는 방법론으로써, 태스크의 권한에 대한 정보를 담고 있는 cred 구조체를 덮어써서 root 권한을 획득하는 작업이다. 하나의 태스크의 모든 메타 데이터를 담고 있는 task_struct 구조체에는 cred 구조체를 가리키는 포인터 멤버가 있다. 이 cred 구조체는 태스크의 권한에 대한 정보를 담고 있기 때문에, 이 cred 구조체의 멤버를 덮어 쓰는 것으로 태스크의 권한을 바꿀 수 있다. struct task_struct 태스크의 모든 메타 데이터를 담고 있는 구조체이다. do_fork()함수에 의해 생성 된다. 권한과 관련된 멤버 중에서 cred 멤버가 바로 현재 태스크가 특정 작업을 할 때 참조되는 권한 정보..

kernel stack pivoting 기법 함수 포인터를 덮을 수 있는 취약점과 같이 rip control만 가능하고 rsp control이 불가능한 상황에서, kernel ROP로 실행 흐름을 변경하기 위해 kernel stack을 pivoting 하는 기법이다. xchg eax, esp 어셈블리 가젯과 mmap()함수를 이용한다. SMEP보호 기법을 우회할 수 있지만, SMAP도 걸려 있는 상황에선 좀 더 복잡한 과정이 필요하다. rsp control이 불가능한 상황 스택 버퍼 오버플로우 취약점 같은 경우, 스택의 return address 부분을 ROP payload로 덮으면 별도의 rsp control 작업이 필요 없다. 만약 함수 포인터를 덮은 뒤, 그 함수 포인터를 실행하는 취약점의 경우, ..