Information Security
[ Debug 방식의 API 후킹 ] 디버거(Debugger): 디버깅/후킹 프로그램(hookdbg.exe)디버기(Debuggee): 디버깅 당하는 프로그램(notepad.exe) 이번에는 디버그 방식으로 API 후킹을 할 것이다. 위의 두 프로세스로 실습을 진행한다.디버거는 디버깅을 당하는 디버기에 대한 모든 권한을 가지므로 후킹 함수를 쉽게 설치할 수 있다. notepad는 파일에 내용을 입력하고 저장할 때 WriteFile() API를 사용한다. 이 API를 후킹하여 저장되는 문자열 중 소문자를 대문자로 덮어쓸 것이다. 먼저 notepad의 WriteFile() 시작 주소에 Break Point를 설치하고 메모장에서 문자열을 저장한다. 그리고 스택에서 파라미터를 확인한다. 두 번째 파라미터(ESP+..
[ Code Injection ]-프로세스에 독립 실행 코드를 삽입한 후 실행하는 기법-CreateRemoteThread() API를 이용하여 원격 스레드 형태로 실행하므로 Thread 인젝션이라고도 한다. Windows 메시지 박스를 출력하는 간단한 코드이다. Ollydbg에서 ThreadProc()를 확인한다.PUSH 명령어로 MessageBox() API의 문자열 주소를 스택에 저장하고 있다.1000781C, 10007828 주소는 DLL의 데이터(.rdata) 섹션 영역에 정의된 문자열을 가리킨다. CALL 명령어의 100060E4 주소는 MessageBox() API의 IAT이다. DLL 코드에서 사용되는 모든 데이터(파라미터, IAT 등)는 DLL의 데이터(.rdata) 섹션에 위치한다. 이 ..
[ PE 패치를 이용한 DLL 로딩 ]실행 파일을 직접 수정하여 DLL을 로딩시켜 봅시다. TextView.exe 파일을 직접 수정하여 실행 시에 myhack3.dll을 로딩하도록 실습을 진행한다.myhack3.dll은 www.google.com에서 index.html을 다운 받아서 프로세스에 드롭(drop)시키는 기능을 가진다. PE 파일에서 어떤 DLL을 import한다는 것은 그 DLL이 코드 내에서 제공하는 export 함수를 호출한다는 의미이다.myhack.dll도 이를 따라 아무런 기능이 없는 dummy라는 export 함수를 정의한다. TextView.exe는 읽고 쓰는 기능을 가진 단순한 텍스트 뷰어이다. PEview에서 이 프로세스의 IDT(IMPORT Directory Table)를 확..