리버싱 발표ppt_7_25

Download Report

Transcript 리버싱 발표ppt_7_25

발표자 : 박현우
1
• 1. API 후킹
• 2. 메모장 WriteFile() API 후킹 실습
2
• 후킹(Hooking) : 정보를 가로채고, 실행 흐름을 변경하고, 원래
와는 다른 기술을 제공하게 하는 기술
• 순서
1) 디스어셈블러/디버거를 이용하여 프로그램의 구조와 동작원리 파악
2) 버그 수정 또는 기능 개선에 필요한 훅(Hook)코드 개발
3) 실행 파일과 프로세스 메모리를 자유롭게 조작하여 훅 코드 설치
그 중 Win32 API를 후킹하는 기술을 API 후킹이라 함.
3
4
• API Hooiking : Win32 API 호출을 중간에서 가로채서 제어권
을 얻어내는 것.
5
Method
Object
(what)
Static
Dynamic
Location
(where)
Technique
(how)
API
File
X
X
Process
memory
A) Debug
(interactive)
DebugActiveProcess
GetThreadContext
SetThreadContext
1) IAT
2) Code
3) EAT
B)
Injection
(stand
alone)
B-1)
Independ
ent Code
CreateRemoteThread
B-2) DLL
file
Registry(AppInit DLLs)
SetWindowsHookEx
CreateRemoteThread
6
• 디버그 방식의 API 후킹 사용
• 디버거(debugger) : 프로그램(debuggee)의 명령어를 하나씩
실행하며 레지스터와 메모리에 대한 모든 접근 권한을 가진
다.
디버그 이벤트
Debuggee
이벤트 처리
이벤트 처리
OS
디버그 이벤트
이벤트 처리
이벤트 처리 요청
Debugger
7
• BP(Break Point) : “INT3(어셈)” , “0xCC(IA-32)”
• 작업순서
1) 후킹을 원하는 프로세스에 attach하여 디버기로 만듦
2) 훅 : API 시작 주소의 첫 바이트를 0xCC로 변경
3) 해당 API가 호출되면 제어는 디버거에게 넘어옴
4) 원하는 작업을 수행 (파라미터, 리턴 값 조작 등)
5) 언훅 : 0xCC를 원래대로 복원시킴 (API의 정상 실행을 위해)
6) 해당 API 실행 (0xCC가 빠진 정상적인 상태)
7) 훅 : 다시 0xCC로 바꿈 (지속적인 후킹을 위해)
8) 디버기에게 제어를 되돌려줌
8
• 실습 => Notepad.exe의 WriteFile() API 후킹 (소문자->대문자)
9
• 실습 => Notepad.exe의 WriteFile() API 후킹 (소문자->대문자)
10
• 동작 원리
11
• 소스코드 분석
12
• 소스코드 분석
13
감사합니다.
14