혜랑's STORY

Linux Exploitation & Mitigation Part 1 (2) 본문

무지성 공부방/Dreamhack SystemHacking

Linux Exploitation & Mitigation Part 1 (2)

hyerang0125 2021. 2. 7. 17:24
본 포스팅은 DreamHack 사이트의 Linux Exploitation & Mitigation Part 1 강의 내용을 요약한 것이다. 강의의 주소는 다음과 같다.
 

해커들의 놀이터, Dreamhack

해킹과 보안에 대한 공부를 하고 싶은 학생, 안전한 코드를 작성하고 싶은 개발자, 보안 지식과 실력을 업그레이드 시키고 싶은 보안 전문가까지 함께 공부하고 연습하며 지식을 나누고 실력 향

dreamhack.io

4. NX bit의 등장

앞에서는 프로그램의 취약점을 이용해 실행 흐름을 조작한 뒤 스택 영역에 저장된 쉘코드를 싱행하였다. 그러나 일반적인 프로그램에서의 스택 메모리는 코드를 실행하는 용도로 사용되는 것이 아니라, 일시적으로 데이터를 읽고 쓰는 데 사용되기 때문에 실행 권한이 있을 필요가 없다. 

따라서 메모리에 쓰기 권한과 실행 권한을 동시에 부여하지 않는 No-eXecute bit(NX bit)이 등장하였다.

Nx bit가 성정되어 있을 경우 쓰기 권한과 실행 권한이 동시에 있는 메모리 영역이 존재하지 않는다.

- Bypassing NX Bit

NX bit가 적용되어 있는 상황에서 스택 메모리 등으로 실행 흐름을 직접 바꾸어 공격하는 것은 불가능하기 때문에 메모리의 실행 가능한 영역에 있는 코드들을 활용해서 익스플로잇해야 한다. 

- RTL(Return To Libc)

리턴 주소를 라이브러리 내에 존재하는 함수의 주소로 바꿔 NX bit를 우회하는 공격 기법이다. 

- NX bot가 설정되어 있는지 확인하는 방법

바이너리의 NX bit 적용 여부를 알아내는 것은 스택 메모리의 권한을 검사하는 것으로도 충분하다. ELF 바이너리 분석 도구인 readelf를 사용하면 쉽게 확인이 가능하다.