[리버싱] REGA.exe 후킹(Hooking)하기
Updated:
REGA 도구를 후킹하여 CLI 명령어를 따서, GUI 기반의 해당 프로그램을 직접 실행시키지 않고, 커맨드 창에서 명령어를 통해 레지스트리 정보를 수집하는 방법에 대해 기술한다.
- REGA 실행 후, 기능 살펴보기
- x64Dbg 를 통한 후킹
- 명령어 확인
1. REGA 실행 후, 기능 살펴보기
REGA 를 실행시킨 후, [파일]-[레지스트리 파일 수집]-[현재 시스템 레지스트리 수집] 을 클릭하면, 현재 시스템의 레지스트리를 수집한다.
2. x64Dbg 를 통한 후킹
x64 Dbg 를 이용하여 REGA.exe 를 불러온 다음 F9 을 통해 실행시킨다. (REGA 를 실행시킬 때는 관리자 권한이 필요하므로, x64 Dbg 또한 관리자 권한으로 실행시켜야 한다.)
Ctrl + G 를 통해 KERNEL32.CreateProcessA, KERNEL32.CreateProcessW 를 검색한 후 해당부분에 Break point 를 설정한다.
※ CreateProcessA, CreateProcessW 에 Break Point 를 설정하는 이유는 [현재 시스템 레지스트리 수집] 클릭 시, “폴더 찾아보기” 창이 생성되기 때문이며, 이러한 기능을 하는 것이 위의 두 함수이다.
Break Point 설정 이후, F9 를 통해 진행을 시키면 다음과 같은 “폴더 찾아보기” 창이 뜬다. 현재 시스템에서 레지스트리를 수집하여 저장할 폴더 위치를 물어보는 것이다.
폴더 지정 후 확인버튼을 누르게 되면, 다음처럼 CreateProcessW 에서 멈추며, 이때 DUMP 창과 STACK 창에서 CLI 명령어를 확인 할 수 있다.
[DUMP 창]
[STACK 창]
[CLI 명령어]
"C:\Users\holywater\Desktop\#Reversing\REGA_CLI\REGA Release\RegEx.exe" -h "C:\\Users\\holywater\\Desktop\\#Reversing\\REGA_CLI\\REGA Release\\registry"
STACK 창에서 보았을때 나타나는 표현을 CMD 창에 그대로 입력하면 오류가 난다. 결국엔 DUMP 에 있는 것을 x64Dbg 가 해석해서 보여주는 값이기 때문에 경우에 따라 부정확할 수 있으므로, STACK 창에서 해당 주소 00FECAD8 의 주소 값을 DUMP 창에서 Ctrl + G 를 통해 찾아가 정확한 표현을 확인하는 것이 중요하다.
[주의 2]
폴더 경로에 한글이 섞여있을 경우 STACK 창에서 아무것도 안보이는 현상이 발생하므로, 컴공생이라면 폴더경로에 한글을 쓰지 않는다.
[교훈]
Immunity Dbg 와 x64Dbg 두 가지 도구를 통해 코드 analysis 를 진행했을 때 해석되는 정도가 다르다. CreateProcessW, CreateProcessA 를 찾는 것은 x64Dbg 를 통해 보는 것이 편한 반면, 어셈블리 함수 단위 해석은 Immunity Dbg 이 더 낫다. 두 가지 도구 모두 이용해서 분석을 진행해야 한다.
Comments