[Linux] Kernel protection
개요 Linux Kernel과 관련된 1-day를 분석하기 전, 어떠한 보호기법이 있는지 공부하기 위해서 해당 포스트를 작성합니다. KASLR KASLR은 ASLR과 동일하게 커널에 존재하는 주소 값을 랜덤하게 만드는 보호기법입니다. ubuntu@ubuntu:~$ cat /proc/sys/kernel/randomize_va_space 2 위...
개요 Linux Kernel과 관련된 1-day를 분석하기 전, 어떠한 보호기법이 있는지 공부하기 위해서 해당 포스트를 작성합니다. KASLR KASLR은 ASLR과 동일하게 커널에 존재하는 주소 값을 랜덤하게 만드는 보호기법입니다. ubuntu@ubuntu:~$ cat /proc/sys/kernel/randomize_va_space 2 위...
개요 Linux kernel에서는 모든 process와 thread를 Task라는 단위로 처리하게 됩니다. Kernel 단에서 아래의 함수가 호출되면서 생성되게 됩니다. 예전: _do_fork() 현재: kernel_clone() 💡 즉, User에서 호출하는 fork(), clone(), pthread_create() 같은 함수...
개요 Linux Kernel에서 Slab Memory Allocator란 user단에서 ptmalloc과 같이 Kernel에서 사용되는 동적 메모리 할당자 입니다. ex) kmalloc() Slab Cache: 자주 사용되는 크기에 대한 동적 메모리를 미리 확보하고 관리하는 역할 Slab Object: Slab Cache가 할당해 놓은 메...
개요 해당 포스터는 VirtFuzz에서 찾은 취약점에 대해서 RCA를 분석하기 위해 작성되었습니다. 해당 논문은 유료이기 때문에 내용은 올릴 수 없고, 현재 공개되어있는 취약점에 대해서 분석을 진행하겠습니다. CVE-2022-42722 패치내용 2개의 함수가 수정되었고, 공통적으로 rx->sdata->dev가 존재하는지 검증하...
개요 Linux Kernel을 공부하면서 wireless 분석을 하기 위한 qemu 환경이 필요했습니다. 따라서, 해당 포스터에서 어떻게 환경을 구축해야되는지 설명하고자 합니다. 💡 qemu에는 가상화 wireless 장치를 지원하지 않기 때문에 다음의 방법으로 환경을 구축했습니다. Kernel Build 우선 Kernel Build할때...
개요 Linux Kernel을 공부하기 위해 첫번째로 무선 통신 모듈인 중 Wireless를 타겟으로 잡고 분석을 시작했습니다. 우선, 해당 내용을 보기 전에 아래의 링크에서 보고 오시면 좋을 것 같습니다. Softirq : https://hogbal.github.io/posts/Linux-Softirq/ socket buffer des...
개요 oh my zsh을 사용하고 있었는데 기본 테마인 robbyrussell를 사용했을 때 지금 실행하고 있는 터미널이 docker인지 host인지 utm 인지 구분이 되지 않아서 이를 해결할 수 있는 theme를 제작했습니다. 완성된 theme는 아래 링크에 있습니다. https://github.com/hogbal/hogbal.zsh-th...
개요 Linux Kernel에서 sk_buff라는 구조체를 이용해서 network packet을 처리하게 됩니다. 그래서 해당 포스터에서 sk_buff라는 Socket buffer descriptors에 대해서 설명드리겠습니다. sk_buff struct sk_buff는 include/linux/skbuff.h에 정의되어 있습니다. struct...
개요 Linux Kernel Fuzzer 중 syzkaller 퍼저의 설명 및 환경 구축에 대해서 설명드리겠습니다. 해당 Fuzzer는 오픈소스로 아래의 링크에 있습니다. https://github.com/google/syzkaller 기본구조 syzkaller 퍼저는 공식문서에 따르면 다음과 같은 구조를 가지고 있다고 합니다. syz...
개요 Linux Kernel을 빌드하는 법과 ubuntu22.04 cloudimg를 이용해서 qemu로 실행하는 법을 서술했습니다. 💡 ENV? 만약, mac OS에서 빌드를 진행하게 된다면 파일 시스템이 대소문자를 구분하는지 확인해야 합니다! 또한 docker 환경에서도 bzImage까지 빌드는 가능하지만, 그 이후의 과정이 불가능합니다. ...