Kernel Stack Pivoting 질문 (SMAP bypass)
안녕하세요!
우선 좋은 강의 감사드리며, 잘 듣고 있습니다 :)
다름이 아니라 Kernel Stack Pivoting 강의에서 SMEP만 적용되어 있는 환경에서는 가젯을 사용하여 유저 공간으로 rsp를 이동시킨 뒤 해당 주소에 fake stack을 생성하여 Kernel ROP를 통해 권한 상승을 일으킬 수 있지만, SMAP가 적용되어 커널 모드에서 유저 공간으로의 접근이 아예 차단되어 있는 환경에서는 위 방법이 아닌 조금 더 복잡한 방법을 사용해야 한다고 하셨습니다.
이 부분에서 SMAP이 적용되어 있는 환경에서는 Kernel Stack Pivoting을 어떤 방법으로 사용하여 권한 상승을 일으키는지 궁금하게 되어 이렇게 질문을 남기게 되었습니다.
감사합니다.
답변 2
0
안녕하세요.
사실 smap에서의 피봇팅은 특정한 테크닉이 따로 있다기 보단, 주어진 상황에서 발생하는 '여러 개'의 취약점들을 체이닝해서 우회가 가능합니다.
간단히 예시를 들자면,
1) 슬랩 객체의 FP를 덮을 수 있고,
2) 원하는 주소로 피봇팅할 수 있는 가젯 혹은 함수를 찾았고,
3) 컨트롤이 가능한 '커널 공간'에 ROP payload를 쓸 수 있을 때 ex) 물리메모리 관련 영역
컨트롤이 가능한 공간에 ROP payload를 쌓고, 해당 영역으로 피봇팅을 진행하면, ROP payload가 있는 공간은 '커널 공간' 이기 때문에 smap의 영향을 받지 않고 피봇팅이 가능합니다.
더 구체적인 내용은 따로 찾아보시면서 공부해보시길 추천드립니다.
감사합니다.
강의 들으며 정리한 글을 블로그에 공개로 올려도 될까요?
0
68
2
cred 구조체에 __randomize_layout이 적용된건가요?
0
79
1
ppt자료 문의
0
104
2
빌드환경 및 커널소스의 버전
0
131
1
Stack based BOF 강의에서 질문입니다.
0
175
2
kaslr 우회 기법에서 commit_creds, prepare_kernel_cred의 offset을 구하는 과정 질문
0
211
1
CTF 참가 시 전문 분야
0
312
1
SMAP 우회에서 궁금한게 하나 있습니다.
0
402
2
KADR 우회에서 init파일이 없는 경우는 어떻게 하나요?
0
461
1
KADR 우회에서 init파일이 없는 경우는 어떻게 하나요
0
310
1
여전히 해결책 없는 build_result
0
423
1
KASLR 강의에서 주어진 환경에서는 /proc/kallsyms 확인 못하는 것이 맞나요?
0
602
1
build_result가 안보입니다
0
285
1
kernel stack pivoting에서 gadget 관련 질문드립니다.
0
501
1
안녕하세요 수강중 궁금한 것이 있습니다.
0
570
2
pwndbg가 커널에 attach는 되는데 디스어셈코드나 레지스터 표시가 안됩니다.
0
579
1
가젯에 대해 이해가 잘 안됩니다.
0
604
1
Kernel KPTI 적용시 영향?
0
652
1
qemu 스크립트 실행시 Kernel panic이 발생합니다.
0
878
2
Kernel UAF
0
646
1
디버깅 방법
0
929
3
강의 자료 문의
0
374
1
boot.sh 실행시
0
360
1
Kernel Debugging
0
409
1





