Fedora Core 4에서는 Fedora Core 3 환경에서 몇 가지 추가되었다.
Stack Dummy O
=> stack에 dummy가 붙는다. gdb로 SFP까지의 거리를 알아야 한다.
Down privileage of bash O
Random Library O
=> ASLR 보호 기법 관련.
Random Stack O
=> ASLR 보호 기법: 스택, 힙, 라이브러리 등의 주소를 랜덤하게 배치해 target addr 예측 어려 움.
프로그램이 실행될 때마다 주소가 바뀜.
ASCII Armor O
ASCII Armor: 공유 라이브러리 주소에서 최상위 바이트가 0x00인 메모리 영역
Libc address는 공유라이브러리의 주소 값을 의미하는데,
Fedora Core에서는 16M 미만이므로 첫 바이트에 0x00이 들어가 인자값을 못 넣음.
(LOB Red Hat 9에서는 이 주소가 16M 이상으로 4바이트 최상 위 1바이트 주소값이 0x00이 아니어서 인자 값을 변조된 RET 뒤쪽에 넣을 수 있었는데 이제는 못 하게 됨.)
16MB = 16777216 byte = 16진수 0x1000000
16MB 미만이므로 공유라이브러리의 주소값이 0x00FFFFFF보다 작음.
=> RTL 공격 시 연속적인 payload 작성 X (NULL 바이트가 삽입되어 payload가 끊김)
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 현재 실행되고 있는 프로세스의 주소맵
Non-Executable heap O 비실행 힙
=> NX Bit/DEP
Heap 영역에 있는 코드를 명령어로 실행하지 못하게 하는 패치.
Heap 상에서 코드 실행 불가능
library 함수가 인자를 참조할 때 ebp를 사용하지 않는다.
=> 함수의 인자 참조 방식이 EBP에서 ESP로 바뀌었다.
fgets 함수의 임시 버퍼 주소가 random이다.
=> 지난 FC3에서 fgets 함수로 입력받을 경우 stdin 임시 버퍼의 주소가 고정적이라서 이 영역의 주소값에 원하는 값을 넣었었는데, 이번 FC4에서는 이 stdin 임시 버퍼의 주소가 random이라서 이 방법도 사용하지 못할 것이다.
[FC4] dark_stone -> cruel (0) | 2019.07.14 |
---|---|
[FC4] Fedora Core 4 에서의 RTL 기법 (0) | 2019.07.14 |
[FC3] dark_stone (0) | 2019.07.12 |
[FC3] evil_wizard -> dark_stone (0) | 2019.07.12 |
[FC3] hell_fire -> evil_wizard (0) | 2019.07.12 |