커널 익스플로잇을 공부하기 전에 먼저 커널 모듈을 개발하는 방법을 공부하면서
리눅스 커널에 대해서 점차 알아갈것입니다.
먼저 저는 공부 자료에 나와있는 환경과 같은 ubuntu 18 버전으로 구축했습니다.
먼저 위와 같이 필요한 패키지를 설치해야 합니다.
이제 임시 폴더를 만든뒤 이 폴더에 간단한 커널 모듈을 작성해봅니다.
이 코드는 간단한 헬로월드 예제라고 합니다.
init_module() 함수에는 모듈이 커널에 삽입될때 동작해야하는 코드가 포함되고
cleanup_module() 함수는 모듈이 커널에서 제거될때 동작해야하는 코드가 포함된다고 합니다.
커널 모듈에서 출력을 할때는 printk() 함수가 주로 사용되는거 같습니다.
그리고 이 코드를 커널에서 동작하게 할려면 Makefile을 작성해야합니다.
이제 이 디렉토리에서 make 명령어를 사용하면
.ko 확장자를 가진 커널 모듈이 생성됩니다.
그리고 modinfo 를 사용하면 해당 모듈의 정보를 확인할수 있습니다.
이제 이 커널 모듈을 사용할려면 리눅스 커널에 등록해야하는데
insmod 를 사용하면 커널에 모듈을 등록할수 있고, lsmod 를 사용하면 현재 모듈등록 상태를 확인할수 있습니다.
dmesg 를 사용하면 커널 모듈이 출력하는 내용을 확인할수 있는데
확인해보면 sample 모듈이 등록되고 난 직후
코드에서 작성했던것 처럼 Hello world가 출력된것을 확인해볼수 있습니다.
이제 마지막으로 rmmod 명령어로 sample 모듈을 제거한뒤 다시 메세지를 확인해보면
성공적으로 모듈이 동작한것으로 확인됩니다.
'잡다한 보안 공부 > Linux kernel exploit' 카테고리의 다른 글
[pwn.college] Kernel Security Challenges (0) | 2023.11.12 |
---|---|
리눅스 커널 익스플로잇 공부를 위한 커널 프로그래밍 공부 (2) (0) | 2023.06.09 |