일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 어셈블리어
- pwn.college
- 컴퓨터구조
- Leviathan
- 리눅스 커널
- 프로그래밍
- 시스템 프로그래밍
- Bandit
- radare2
- 드론
- write up
- 리눅스커널
- 리버싱
- Pwnable.kr
- C언어
- pwncollege
- 시스템프로그래밍
- 워게임
- 시스템
- 알고리즘
- C++
- 커널
- 시스템해킹
- px4
- wargame
- 시그널
- css
- 리눅스
- kernel
- 취약점
- Today
- Total
Computer Security
#5 리눅스 qemu&gdb 셋팅 본문
qemu
리눅스에서 사용하는 에뮬레이터이며, KVM(1)을 추가하여 가상 머신으로 사용할 수 있다.
qemu-kvm 에서 Hypervisor를 지원한다.
qemu의 다양한 옵션들을 이용해 script를 작성해서 커널을 부팅할 수 있다.
(1) :KVM(Kernel-based Virtual Machine: 커널 기반 가상 머신)은 Linux®에 구축되는 오픈소스 가상화 기술이다.
구체적으로 말해서, KVM을 사용하면 Linux를 하이퍼바이저로 전환하여 호스트 머신에서 게스트 또는 VM(가상 머신) 등 격리된 가상 환경 여러 개가 실행되도록 할 수 있습니다.
1. 리눅스의경우 기본적으로 qemu가 설치되어있으며, qemu-kvm 을 apt-get install qemu-kvm 명령어를 통해 설치 해주자.
2. 일반적으로 사용되는 qemu스크립트는 아래와 같다. vi boot.sh 를통해 스크립트를 작성 후, chmod +x boot.sh명령어를 통해 권한을 획득후, 중요 옵션들을 살펴보자.
-m512M : 주 메모리 512mb 할당
-kernel./bzImage : bzImage를 커널 이미지로 사용
-initrd ./rootfs.cpio : rootfs.cpio를 파일 시스템으로 사용
-append"nokaslr" : KASLR 보호기법 미적용
-cpu smep : SMEP 보호기법 적용
-s : gdb attach를 위한 1234번 포트를 open
gdb
- GNU 시스템에서 사용되는 기본 디버거
- gdb의 remote debugging 기능을 통해 리눅스 커널을 디버깅 할 수 있다.
- 편의를 위해 gdb script를 작성해서 사용하도록 한다.
아래와 같이 스크립트를 작성해주자.
qemu script에서 -s 옵션을 통해 1234번 포트를 열어놨기 때문에, 1234번 포트를 이용해서 qemu를 디버깅 할 수 있다.
target remote localhost:1234 gdb 명령을 통해 attach 가능
직접 gdb를 해보면
한쪽 터미널에서 ./boot.sh 를 실행 시켜준뒤에, 다른 쪽 터미널에서 ./gdb_remote.sh 를 실행 시켜준다.
그 뒤에 반응이 없으면 ctrl + c 를 눌러주어서 gdb 를 실행 시켜주면된다!
'리눅스 커널 해킹' 카테고리의 다른 글
#7 리눅스 커널 보호 기법 (0) | 2022.08.15 |
---|---|
#6 리눅스 CTF에서의 환경 셋팅 (0) | 2022.08.14 |
#4 리눅스 커널&파일 시스템 빌드 (0) | 2022.08.12 |
#3 리눅스 커널 3 (0) | 2022.08.11 |
#2 리눅스 커널 2 (0) | 2022.08.10 |