다양한 기록

Ret2Libc 정리 및 ROP 개념 본문

운영체제보안

Ret2Libc 정리 및 ROP 개념

라구넹 2024. 12. 5. 21:13

Ret2Libc의 기본 아이디어

- 리턴 어드레스를 Libc의 함수 주소로 덮어쓰는 것

- 코드 주입 대신 이미 존재하는 코드를 이용

- 프로세스의 메모리 이미지 구성

1. 쓰기 가능한 메모리 영역 (ex. 스택, 데이터, 힙)

2. 실행 가능한 메모리 영역 (ex. 코드 세그먼트, 연결된 시스템 라이브러리)

 

Libc

- 모든 유닉스, 리눅스 계열의 프로그램에 링크됨

- 시스템 콜이나 다른 기능들 들고 있음 .. ex. system()


ROP (Return-Oriented Programming)

기본적인 Ret2Libc는 두 함수를 체인했음 (system, exit)

이 기법을 일반화 시킨 것

- 무한히 코드 청크를 연결 가능


방어 기법

ASLR

CFI (Control-flow integrity)

 

Ret2Libc는 NX 비트를 우회함