[ 악성코드 ] PreLab 5, Lab 5 (계산기 후킹)
계산기 후킹
= 계산 결과가 123456이 아닌 "일이삼사오육"으로 출력되도록 하는 실습
https://win7games.com/#calc 에서 구버전 계산기 프로그램 다운 후 설치
경로 : "C:\Program Files\OldClassicCalc\calc1.exe"
(0) hookiat.cpp 파일의 MySetWindowTextW 함수 안에 정의된 wchar_t* pNum = L“영일이삼사오육칠팔구”;를 const wchar_t* pNum = L“영일이삼사오육칠팔구”; 로 변경한다. (안바꾸면 나중에 컴파일할때 에러남)
(1) Windows 10 가상머신에 접속한 후, Visual Studio를 구동하여 hookiat.cpp에 대응되는 hookiat.dll 파일과 InjectDll.cpp에 대응되는 InjectDll.exe 파일을 생성한다. (빈 프로젝트, 유니코드 문자집합, debug 모드에서 생성함) InjectDll.exe 파일과 hookiat.dll 파일은 같은 폴더에 있어야 한다.
(2) Windows 7용 옛날 계산기를 실행한 후 Process Explorer를 실행하여 옛날 계산기의 PID를 알아낸다.
PS C:\Users\swu04\source\repos\InjectDll\Debug> .\InjectDll.exe i 6204 C:\Users\swu04\source\repos\InjectDll\Debug\hookiat.dll
(3) Windows PowerShell 상에서 InjectDll.exe 프로그램을 실행한다.
(형식: InjectDll.exe i 옛날계산기 PID 전체 경로가 표시된 hookiat.dll) i는 injection
(4) Process Explore 상에서 옛날 계산기 프로그램에 hookiat.dll이 로딩된 것을 확인한다.
(5) 옛날 계산기 프로그램에서 숫자를 입력할 때 숫자가 한글로 표현되는 것을 확인한다.
PS C:\Users\swu04\source\repos\InjectDll\Debug> .\InjectDll.exe e 6204 C:\Users\swu04\source\repos\InjectDll\Debug\hookiat.dll
(6) Windows PowerShell 상에서 InjectDll.exe 프로그램을 실행한다.
(형식: InjectDll.exe e 옛날계산기 PID 전체 경로가 표시된 hookiat.dll) e는 ejection
(7) 옛날 계산기 프로그램에서 숫자를 입력할 때 숫자가 정상적으로 표현되는 것을 확인한다.
Lab 5
IAT 후킹 : Import Address Table Hooking
애플리케이션이 DLL에서 임포트한 함수를 포함한 IAT 항목을 후킹하는 것,
IAT를 찾아 후킹할 함수 항목을 식별한 뒤, 해당 함수의 주소를 악의적인 함수의 주소와 교체함 (해당 블로그 참고)
1. 공격자가 IAT 후킹을 이용하여 공격할 때 얻을 수 있는 이익을 무엇인가?
2. IAT 후킹에 의한 공격을 효과적으로 방어할 수 있는 기법들에 대해서 서술하시오.