티스토리 뷰
Direct EIP Overwrite
- 버퍼오버플로우에 취약한 함수를 사용하고 있을 때 발생되는 취약점으로 RET 변조를 통해 임의의 주소를 실행시킴
* 버퍼 보안 검사(GS), DEP, ASLR 기능을 제외하고 컴파일시에 성공
Trampoline Technique
- ASLR 기능으로 실행 시마다 코드 주소 및 스택 주소 등이 모두 변경되었을 때 직접 쉘코드의 주소를 써넣는 Direct EIP Overwrite 기법과 다르게 JMP ESP를 이용하여 동적으로 버퍼 주소로 이동하도록 하는 기법
* JMP ESP 주소를 찾는 방법
- 디버거를 통해 메모리(Ctrl+M)로 들어간 후 바이너리 검색(Ctrl+B)을 이용해 'JMP ESP(FF E4)'를 사용하는 주소를 찾음
SEH Overwrite
* 스택 쿠키 : RET, SFP 이전에 랜덤한 4바이트의 쿠키값을 삽입하는 것이며, 컴파일러는 함수가 종료되기 전 해당 쿠키값이 기존의 값과 동일한지 검사하는 코드를 추가.
* Next SEH Record에는 쉘코드로 점프하는 코드, Handler는 POP POP RET 코드의 주소를 넣어주면됨
* !search pop r32\npop r32\nret
- Immunity Debugger의 기능으로 pop pop ret 를 메모리 안에서 빠르게 찾아줌
변조된 SEH Chain
변조된 0018FF78(Next SEH Record) 와 0018FF7C(Handler)
Shift+F8 을 통해 004012D9(POP POP RET) 주소로 가게됨
POP POP RET를 통해 EB 06(JMP SHORT)이 나타나며 0018FF80(쉘코드 주소)이 실행됨
[ 힙 버퍼오버플로우 종류 ]
* 힙 메모리는 스택보다 큰 메모리를 필요로 할 때, 그리고 전역변수가 필요할 때 사용하며 객체를 생성할 때에도 대부분 힙을 사용.
Function Pointer Overwrite - 공격대상(함수 포인터)
Vtable Overwrite - 공격대상(객체(Object)와 Vtable)
정수 오버플로우 - 공격대상(변수 타입)
Use-After-Free - 공격대상(Free된 포인터(Dangling pointer))
참고 : 윈도우 시스템 해킹 가이드(hyunmini)
'리버싱 > 정리' 카테고리의 다른 글
자바스크립트 난독화 야매로 풀기 (0) | 2017.01.21 |
---|---|
pydbg 설치 (0) | 2016.11.13 |
Universal 쉘코드(cmd) (0) | 2016.10.31 |
WinDbg 사용법 (0) | 2016.10.30 |
ShellCode 생성과정(cmd) (0) | 2016.10.30 |
- Total
- Today
- Yesterday
- 출처 : Do it 안드로이드 프로그래밍
- CVE-2018-0798
- MS-Office
- Servey
- 한글악성코드
- Cisco Talos
- us-cert
- AMSI
- Flybits
- koodous
- Yara
- .wll
- malware
- Static Analysis Engine
- 비트코인
- 멋쟁이사자처럼 4기
- 스피어피싱
- vuln
- Kimsuky
- 해킹메일
- cuckoo-sandbox
- keylogger
- VirusBulletin
- Bisonal
- CVE-2018-9375
- idapython
- 위협정보공유
- infostealer
- 악성코드
- Decoding
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |