상세 컨텐츠

본문 제목

[FC3] 환경/메모리 보호 기법 요약

SYSTEM HACKING/LOB Fedora Core

by koharin 2019. 7. 4. 22:11

본문

728x90
반응형

1. Stack Dummy O

=> 이전 LOB에서는 입력받는 문자열이 저장되는 bufferdummy가 붙지 않아서 크기가 40 byte40으로, 256 byte256으로 생각했는데, stack dummy가 붙음.

 

2. Down privileage of bash O

 

3. Random Library X

=> ASLR 보호 기법 관련.

 

4. Random Stack O

=> ASLR 보호 기법: 스택, , 라이브러리 등의 주소를 랜덤하게 배치해 target addr 예측 어려움. 프로그램이 실행될 때마다 주소가 바뀜.

 

5. Random Program Binary Mapped X

 

6. ASCII Armor O

ASCII Armor: 공유 라이브러리 주소에서 최상위 바이트가 0x00인 메모리 영역

Libc address는 공유라이브러리의 주소값을 의미하는데, Fedora Core에서는 16M 미만이므로 첫바이트에 0x00이 들어가 인자값을 못 넣음.

(Red Hat 9에서는 이 주소가 16M 이상으로 4바이트 최상위 1바이트 주소값이 0x00이 아니어서 인자 값을 변조된 RET 뒤쪽에 넣을 수 있었는데 이제는 못하게 됨.)

16MB = 16777216 byte = 16진수 0x1000000

16MB 미만이므로 공유라이브러리의 주소값이 0x00FFFFFF보다 작음.

=> RTL 공격 시 연속적인 payload 작성 X (NULL 바이트가 삽입되어 payload가 끊김)

 

7. Non-Executable Stack O 비실행 스택

=> NX Bit/DEP: 공격자가 heap, stack, library 영역에서 shellcode를 저장해서 실행하기 위해서는 해당 영역에 실행권한이 있어야 하는데, DEP가 적용된 경우 실행권한이 없어서 shellcode가 실행되지 않음.

프로그램에서 해당 동작을 예외처리 후 프로세스 종료 됨.

메모리 영역 중 stack 영역에서 코드를 명령어로 실행하지 못하게 하는 패치.

버퍼나 환경변수 등에서 쉘코드 실행 안 됨.

$ cat /proc/self/maps 실행권한 확인

 

/proc process 줄임말로, 이 디렉터리로 프로세스의 정보 저장

/proc/self 현재 실행되고 있는 프로세스의 정보가 담긴 디렉터리

/proc/self/maps 현재 실행되고 있는 프로세스의 주소맵

 

8. Non-Executable heap O 비실행 힙

=> NX Bit/DEP

Heap 영역에 있는 코드를 명령어로 실행하지 못하게 하는 패치. Heap 상에서 코드 실행 불가능

 

9. Stack Carany X

=> Canaries 보호 기법: BOF 모니터 위해 버퍼와 제어 데이터 사이에 설정된 값 = Canary

 

공격자가 return address를 조작하기 위해 BOF 공격 시도 시,

return address 덮기 전에 Canary가 있어서 Canary가 먼저 덮어짐.

Canary 값 손상되어 Canaries 데이터 검증에 실패, BOF 경고 출력 후 손상된 데이터 무효화 처리

(오버플로우된 데이터가 무효화됨)

xor 연산 시 0이 아니면 BOF 오류 출력 후 데이터가 무효화되고 프로세스 종료됨

 

ROP(Return Oriented Programming)로 우회 가능

ROP는 취약한 프로그램 내에 있는 기계어 코드 섹션(Gadget)들을 이용해 BOF 공격 시 특정 명령을 실행시키는 방법

일반적인 Gadget은 함수 끝에 기술되는 ret 명령어를 포함하는 상위 몇 가지 명령어들의 집합으로 이를 이용해 한번에 공격 성공 가능하다고 함.

 

10. Stack Smashing Protector X

728x90
반응형

'SYSTEM HACKING > LOB Fedora Core' 카테고리의 다른 글

[FC3] evil_wizard -> dark_stone  (0) 2019.07.12
[FC3] hell_fire -> evil_wizard  (0) 2019.07.12
[FC3] dark_eyes -> hell_fire  (0) 2019.07.12
[FC3] iron_golem -> dark_eyes  (0) 2019.07.06
[FC3] gate -> iron_golem  (0) 2019.07.05

관련글 더보기