inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

리눅스 커널 해킹. A부터 Z까지

리눅스 커널 4.20.0-r3 소스코드 확보 방법 (BPF 취약점 관련)

해결된 질문

389

설구화

작성한 질문수 2

0

 

강의와는 거리가 있는 질문이지만 고심 끝에 다음 2가지 질문드립니다.

 

1. 리눅스 커널 4.20.0-r3 소스코드를 확보할 수 있는 방법이 있는지?

2. 소스코드 확보 없이 커널 디버깅이 가능한 방법이 있는지?(디버깅 심볼을 추출할 수 있는 방법 등)

 

팀 블로그에 올라와 있는 BPF Integer Overflow Heap Overflow 분석을 보고 직접 분석을 하고 있는데

올라온 소스코드만 보고는 이해가 가지 않아 힙 오버플로우가 발생하는 메모리 상태를 직접 동적분석해보려고 합니다.

 

https://github.com/ww9210/kernel4.20_bpf_LPE/ 에서 bzImage는 받을 수 있어 QEMU를 통해 

가상화는 가능하나 심볼테이블이 없어 gdb 분석에 어려움이 있습니다.

 

리눅스 커널 4.20.1 버전은 확보할 수 있으나 취약점이 발생하지 않고 4.20.0-r3는 확보에 실패했습니다.

혹시 어떻게 소스코드를 구해서 분석하신건지 질문드리고 싶습니다.

 

linux 시스템 해킹 모의해킹

답변 1

1

김현우

안녕하세요.

1. linux kernel archives 에서 다운받기 힘든 일부 rc 버전은 리눅스 커널 깃헙의 tags 에서 다운받을 수 있습니다.

https://github.com/torvalds/linux/tags

위 링크에서 원하는 커널 버전을 선택하시면 됩니다.

https://github.com/torvalds/linux/releases/tag/v4.20-rc3

4.20-rc3 버전은 위의 링크에서 다운받을 수 있겠네요.

 

2. 커널 소스 코드 없이 bzImage만 주어진 환경에서는, 강의에 나온 대로 KADR과 KASLR을 해제하고 rootfs의 init을 수정하여 root 권한으로 qemu를 실행한 뒤, /proc/kallsyms 를 확인하여 필요한 심볼의 주소를 뽑아내는 것이 가장 간편한 방법입니다.

감사합니다.

0

설구화

빠르고 유용한 답변 감사합니다! 

강의 들으며 정리한 글을 블로그에 공개로 올려도 될까요?

0

103

2

cred 구조체에 __randomize_layout이 적용된건가요?

0

90

1

ppt자료 문의

0

125

2

빌드환경 및 커널소스의 버전

0

152

1

Stack based BOF 강의에서 질문입니다.

0

199

2

kaslr 우회 기법에서 commit_creds, prepare_kernel_cred의 offset을 구하는 과정 질문

0

228

1

CTF 참가 시 전문 분야

0

328

1

SMAP 우회에서 궁금한게 하나 있습니다.

0

418

2

KADR 우회에서 init파일이 없는 경우는 어떻게 하나요?

0

473

1

KADR 우회에서 init파일이 없는 경우는 어떻게 하나요

0

317

1

여전히 해결책 없는 build_result

0

433

1

KASLR 강의에서 주어진 환경에서는 /proc/kallsyms 확인 못하는 것이 맞나요?

0

622

1

build_result가 안보입니다

0

298

1

kernel stack pivoting에서 gadget 관련 질문드립니다.

0

514

1

안녕하세요 수강중 궁금한 것이 있습니다.

0

581

2

pwndbg가 커널에 attach는 되는데 디스어셈코드나 레지스터 표시가 안됩니다.

0

591

1

가젯에 대해 이해가 잘 안됩니다.

0

615

1

Kernel KPTI 적용시 영향?

0

664

1

qemu 스크립트 실행시 Kernel panic이 발생합니다.

0

896

2

Kernel UAF

0

659

1

디버깅 방법

0

948

3

강의 자료 문의

0

383

1

boot.sh 실행시

0

368

1

Kernel Debugging

0

417

1