• 카테고리

    질문 & 답변
  • 세부 분야

    보안

  • 해결 여부

    해결됨

Kernel Stack Pivoting 질문 (SMAP bypass)

20.12.22 20:59 작성 조회수 344

0

안녕하세요!

우선 좋은 강의 감사드리며, 잘 듣고 있습니다 :)

다름이 아니라 Kernel Stack Pivoting 강의에서 SMEP만 적용되어 있는 환경에서는 가젯을 사용하여 유저 공간으로 rsp를 이동시킨 뒤 해당 주소에 fake stack을 생성하여 Kernel ROP를 통해 권한 상승을 일으킬 수 있지만, SMAP가 적용되어 커널 모드에서 유저 공간으로의 접근이 아예 차단되어 있는 환경에서는 위 방법이 아닌 조금 더 복잡한 방법을 사용해야 한다고 하셨습니다.

이 부분에서 SMAP이 적용되어 있는 환경에서는 Kernel Stack Pivoting을 어떤 방법으로 사용하여 권한 상승을 일으키는지 궁금하게 되어 이렇게 질문을 남기게 되었습니다. 

감사합니다.

답변 2

·

답변을 작성해보세요.

0

n1net4il님의 프로필

n1net4il

질문자

2020.12.23

좋은 답변 감사합니다 :)

해당 부분 더 공부해보도록 하겠습니다.

0

안녕하세요.

사실 smap에서의 피봇팅은 특정한 테크닉이 따로 있다기 보단, 주어진 상황에서 발생하는 '여러 개'의 취약점들을 체이닝해서 우회가 가능합니다.

간단히 예시를 들자면,

1) 슬랩 객체의 FP를 덮을 수 있고,

2) 원하는 주소로 피봇팅할 수 있는 가젯 혹은 함수를 찾았고,

3) 컨트롤이 가능한 '커널 공간'에 ROP payload를 쓸 수 있을 때 ex) 물리메모리 관련 영역

컨트롤이 가능한 공간에 ROP payload를 쌓고, 해당 영역으로 피봇팅을 진행하면, ROP payload가 있는 공간은 '커널 공간' 이기 때문에 smap의 영향을 받지 않고 피봇팅이 가능합니다.

더 구체적인 내용은  따로 찾아보시면서 공부해보시길 추천드립니다.

감사합니다.