Kernel KPTI 적용시 영향?
/mnt/c/Users/msh/Desktop/stack_based_BOF 1m 26s
❯ grep ": mov rdi, rax ; rep" ./gadgets.txt
0xffffffff8145a958 : mov rdi, rax ; rep movsb byte ptr [rdi], byte ptr [rsi] ; jmp 0xffffffff8145a368
0xffffffff814747df : mov rdi, rax ; rep movsb byte ptr [rdi], byte ptr [rsi] ; jmp 0xffffffff81474961
0xffffffff81479c79 : mov rdi, rax ; rep movsb byte ptr [rdi], byte ptr [rsi] ; jmp 0xffffffff81479cd8
0xffffffff8150a792 : mov rdi, rax ; rep movsb byte ptr [rdi], byte ptr [rsi] ; jmp 0xffffffff8150a391
0xffffffff81b08ab4 : mov rdi, rax ; rep movsb byte ptr [rdi], byte ptr [rsi] ; jmp 0xffffffff81b08a75
0xffffffff82a213e5 : mov rdi, rax ; rep movsb byte ptr [rdi], byte ptr [rsi] ; jmp 0xffffffff82a212b9
0xffffffff82a48d7c : mov rdi, rax ; rep movsb byte ptr [rdi], byte ptr [rsi] ; jmp 0xffffffff82a48d92
0xffffffff81b098e6 : mov rdi, rax ; rep movsb byte ptr [rdi], byte ptr [rsi] ; pop rbx ; pop rbp ; ret
0xffffffff82a081f0 : mov rdi, rax ; rep movsd dword ptr [rdi], dword ptr [rsi] ; ret
0xffffffff81132ad8 : mov rdi, rax ; rep movsq qword ptr [rdi], qword ptr [rsi] ; jmp 0xffffffff81132970
0xffffffff81b2413b : mov rdi, rax ; rep movsq qword ptr [rdi], qword ptr [rsi] ; retgef➤ x/10xi 0xffffffff82a081f0
0xffffffff82a081f0: Cannot access memory at address 0xffffffff82a081f0
gef➤ x/10xi 0xffffffff81132ad8
0xffffffff81132ad8: mov rdi,rax
0xffffffff81132adb: rep movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi]
0xffffffff81132ade: jmp 0xffffffff81132970
0xffffffff81132ae3: call 0xffffffff81b26270
0xffffffff81132ae8: nop DWORD PTR [rax+rax*1+0x0]
0xffffffff81132af0: push r15
0xffffffff81132af2: push r14
0xffffffff81132af4: push r13
0xffffffff81132af6: mov r13,rdi
0xffffffff81132af9: push r12KPTI가 적용된 커널에서 일부는 주소를 찾아도 gdb로 확인을 할 수 없는데, 왜 그런건가요?
user level에서 page table이 줄어들어서 특정 부분이 빠지다보니, 그 가젯이 있는 부분도 빠져서 안보이는거 같은데, 약간 이상한거같습니다.
[ Legend: Modified register | Code | Heap | Stack | String ]
───────────────────────────────────────────────────────────────────────────────────────────────────────── registers ────
$rax : 0xffffffff81b2c390
$rbx : 0x0
$rcx : 0x0
$rdx : 0x22a
$rsp : 0xffffffff82403eb0
$rbp : 0x0
$rsi : 0x83
$rdi : 0x0
$rip : 0xffffffff81b2c3ae
$r8 : 0xffff88801f01dec0
$r9 : 0x200
$r10 : 0x0
$r11 : 0x2f7
$r12 : 0x0
$r13 : 0x0
$r14 : 0x0
$r15 : 0x0
$eflags: [ZERO carry PARITY adjust sign trap INTERRUPT direction overflow resume virtualx86 identification]
$cs: 0x10 $ss: 0x18 $ds: 0x00 $es: 0x00 $fs: 0x00 $gs: 0x00
───────────────────────────────────────────────────────────────────────────────────────────────────────────── stack ────
[!] Unmapped address: '0xffffffff82403eb0'
─────────────────────────────────────────────────────────────────────────────────────────────────────── code:x86:64 ────
0xffffffff81b2c3a5 verw WORD PTR [rip+0x4d94d6] # 0xffffffff82005882
0xffffffff81b2c3ac sti
0xffffffff81b2c3ad hlt
→ 0xffffffff81b2c3ae mov ebp, DWORD PTR gs:[rip+0x7e4e4fab] # 0x11360
0xffffffff81b2c3b5 nop DWORD PTR [rax+rax*1+0x0]
0xffffffff81b2c3ba pop rbx
0xffffffff81b2c3bb pop rbp
0xffffffff81b2c3bc pop r12
0xffffffff81b2c3be ret
─────────────────────────────────────────────────────────────────────────────────────────────────────────── threads ────
[#0] Id 1, stopped 0xffffffff81b2c3ae in ?? (), reason: SIGINT
───────────────────────────────────────────────────────────────────────────────────────────────────────────── trace ────
[#0] 0xffffffff81b2c3ae → mov ebp, DWORD PTR gs:[rip+0x7e4e4fab] # 0x11360
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
gef➤ x/10xi 0xffffffff82a081f0
0xffffffff82a081f0: Cannot access memory at address 0xffffffff82a081f0혹시 몰라서 qemu script에서 qemu64로 바꿔서 kpti를 끄고 gdb를 달아서 테스트를 해봤더니, 이상하게 나오네요.
$r12 : 0x0
$r13 : 0x0
$r14 : 0x0
$r15 : 0x0
$eflags: [ZERO carry PARITY adjust sign trap INTERRUPT direction overflow resume virtualx86 identification]
$cs: 0x10 $ss: 0x18 $ds: 0x00 $es: 0x00 $fs: 0x00 $gs: 0x00
───────────────────────────────────────────────────────────────────────────────────────────────────────────── stack ────
[!] Unmapped address: '0xffffffff82403eb0'
─────────────────────────────────────────────────────────────────────────────────────────────────────── code:x86:64 ────
0xffffffff81b2c3a5 verw WORD PTR [rip+0x4d94d6] # 0xffffffff82005882
0xffffffff81b2c3ac sti
0xffffffff81b2c3ad hlt
→ 0xffffffff81b2c3ae mov ebp, DWORD PTR gs:[rip+0x7e4e4fab] # 0x11360
0xffffffff81b2c3b5 data16 data16 data16 xchg ax, ax
0xffffffff81b2c3ba pop rbx
0xffffffff81b2c3bb pop rbp
0xffffffff81b2c3bc pop r12
0xffffffff81b2c3be ret
─────────────────────────────────────────────────────────────────────────────────────────────────────────── threads ────
[#0] Id 1, stopped 0xffffffff81b2c3ae in ?? (), reason: SIGINT
───────────────────────────────────────────────────────────────────────────────────────────────────────────── trace ────
[#0] 0xffffffff81b2c3ae → mov ebp, DWORD PTR gs:[rip+0x7e4e4fab] # 0x11360
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
gef➤ x/10xi 0xffffffff82a081f0
0xffffffff82a081f0: int3
0xffffffff82a081f1: int3
0xffffffff82a081f2: int3
0xffffffff82a081f3: int3
0xffffffff82a081f4: int3
0xffffffff82a081f5: int3
0xffffffff82a081f6: int3
0xffffffff82a081f7: int3
0xffffffff82a081f8: int3
0xffffffff82a081f9: int3
gef➤vmlinux를 잘못 추출한건가 싶어서 다시 추출해봤는데도 이상합니다.
回答 1
강의 들으며 정리한 글을 블로그에 공개로 올려도 될까요?
0
73
2
cred 구조체에 __randomize_layout이 적용된건가요?
0
81
1
ppt자료 문의
0
106
2
빌드환경 및 커널소스의 버전
0
134
1
Stack based BOF 강의에서 질문입니다.
0
178
2
kaslr 우회 기법에서 commit_creds, prepare_kernel_cred의 offset을 구하는 과정 질문
0
215
1
CTF 참가 시 전문 분야
0
314
1
SMAP 우회에서 궁금한게 하나 있습니다.
0
404
2
KADR 우회에서 init파일이 없는 경우는 어떻게 하나요?
0
463
1
KADR 우회에서 init파일이 없는 경우는 어떻게 하나요
0
312
1
여전히 해결책 없는 build_result
0
426
1
KASLR 강의에서 주어진 환경에서는 /proc/kallsyms 확인 못하는 것이 맞나요?
0
605
1
build_result가 안보입니다
0
287
1
kernel stack pivoting에서 gadget 관련 질문드립니다.
0
504
1
안녕하세요 수강중 궁금한 것이 있습니다.
0
572
2
pwndbg가 커널에 attach는 되는데 디스어셈코드나 레지스터 표시가 안됩니다.
0
581
1
가젯에 대해 이해가 잘 안됩니다.
0
606
1
qemu 스크립트 실행시 Kernel panic이 발생합니다.
0
880
2
Kernel UAF
0
649
1
디버깅 방법
0
931
3
강의 자료 문의
0
377
1
boot.sh 실행시
0
363
1
Kernel Debugging
0
412
1
./boot_sh를 통해 qemu-script 실행 시 커널 실행이 안됩니다.
0
375
3

