발자취
시스템 보안 07-1. 코드 재사용 공격 본문
1. 개념
1. 코드 재사용 공격이란?
- 악성코드를 공격 대상 시스템에 삽입하는 것이 아닌, 공격 대상 시스템에 존재하는 코드를 재활용해서 악성행위를 하는 공격
[종류]
- RTL (Return-to-Libc) 공격: libc 라이브러리에 있는 코드를 재사용해서 악성행위를 함
- ROP (Return-Oriented Programming) 공격: 공격 대상 시스템에 존재하는 ret로 종료되는 명령어 gadget들을 적절히 조합하여 공격자가 원하는 악성행위를 구현함.
2. 방어책
Address Space Layout Randomization (ASLR) 주소 체계 사용
(ASLR이란? exe 파일을 로드할 때 주소 체계를 계속하여 랜덤하게 바꾸는 기법이다.)
→ 코드 재사용 공격은 함수나 가젯의 주소를 사용하기 때문에, 이 기법을 사용하면 함수나 가젯의 주소를 예측하기 어려워 공격을 성공할 가능성이 적어진다.
▶ ASLR 회피 방법
이 기술도 주소 체계를 완전히 랜덤하게 바꿔주지 않는다. 정해진 규칙에 따라 주소체계를 바꾸는 것이기 때문에 공격을 여러 번 거듭하여 시도해보면서 규칙을 알아내 다음에 변경될 주소를 알아낸다면 쉘코드 주입 공격을 성공시킬 수 있다.
쉘코드 주입 공격과 다르게 이 공격은 스택 내에서 실행되지 않기 때문에 스택 내에서 실행되지 않게 하거나, 쓰기와 실행이 동시에 이뤄지지 않게 설정하는 방식은 방어책으로 사용할 수 없다.
3. 보안 관점 연습문제
1. 쉘코드 주입 공격과 코드 재사용 공격의 차이점은?
- 쉘코드 주입 공격: 대상 서버에 쉘코드 + NOP 코드 + 쉘코드 시작 주소로 구성된 공격 코드를 보냄
- 코드 재사용 공격: 대상 서버에 함수의 주소나 가젯의 주소 + 사용할 문자열 주소로 구성된 공격 코드를 보냄
2. ROP 공격에서 재사용되는 gadget들이 모두 ret 명령어로 종료된다고 가정한다. 이러한 특징을 이용해 방어자는 1분마다 수행중인 전체 코드 중, ret로 종료되는 gadget들의 개수를 검사해서 해당 개수가 25개 이상이면 ROP 공격 발생을 선언한다고 했을 때 이 공격 탐지 기법의 문제점과 우회 방법을 서술하시오.
- 문제점: 특정 개수 이상이면 ROP 공격으로 선언한다면, 이 특정 개수는 어떻게 정할지가 문제이다. ROP 공격이 많은 수의 ret를 사용하기 때문에 취지는 좋으나 사용하기 쉽지 않다.
- 우회 방법: 공격자는 이 특정 개수를 미리 알아내어 1분간 25개를 넘지 않게 보낸 뒤, 그 다음에 연속해서 보내는 방식을 사용할 수 있다. 즉, 검사하는 시간 내에는 특정값 미만으로 보내는 방식을 사용하는 것이다. 공격자는 이 특정 개수를 알아내기 위해 미리 여러 번의 공격을 시도해봐야 한다.
3. 재사용 가능한 명령어와 함수의 개수 관점에서 ROP 공격의 장점과 RTL 공격의 단점을 서술하시오.
ROP 공격은 어떤 코드 안에 있는 가젯들을 다 사용할 수 있기 때문에 재사용 가능한 가젯이 굉장히 많다.
반면 RTL 공격은 libc 라이브러리 안에 있는 가젯 중에서만 사용할 수 있기 때문에 재사용 가능한 가젯이 적다.
4. ROP 공격에서 재사용되는 gadget들이 모두 ret 명령어로 종료된다고 가정할 때, 방어 시스템이 하나의 gadget 안에 포함된 명령어들의 개수가 5개 이하이면서, 사용된 gadget들의 개수가 20개 이하인 ROP 공격만을 탐지할 수 있다면 공격자는 어떤 방식으로 이러한 방어 시스템을 우회할 수 있는지 서술하시오.
하나의 gadget 안에 포함된 명령어들의 개수가 5개를 초과하거나, 사용된 gadget들의 개수가 20개를 초과하는 ROP 공격을 수행한다.
'3-2 > 시스템보안' 카테고리의 다른 글
| 시스템 보안 07-2. 코드 재사용 공격 실습 2 - ROP (0) | 2023.12.15 |
|---|---|
| 시스템 보안 07-2. 코드 재사용 공격 실습 1 - RTL (0) | 2023.12.15 |
| 시스템 보안 05-2. 버퍼 오버플로우 연습문제 (0) | 2023.12.14 |
| 시스템 보안 06. 쉘코드 기본 개념 및 연습문제 (0) | 2023.11.21 |
| 시스템 보안 05-1. 버퍼 오버플로우 공격 (0) | 2023.11.03 |