-榮-

[CodeEngn] Advance RCE L06 본문

CodeEngn/Advance

[CodeEngn] Advance RCE L06

xii.xxv 2021. 4. 2. 23:37

● CodeEngn Advance RCE L06 문제

 

CodeEngn Advance RCE L06

 

◎ 파일 실행 화면

 

[그림 1] 파일 실행 화면 - 확인을 누르면 숫자가 올라간 창이 계속 뜬다.

 

◎ 패킹 및 난독화 여부 확인

[그림 2] exeinfo PE - UPX 패킹 확인

 


 

● CodeEngn Advance RCE L06 풀이

 

[그림 4] 디버거 - OllyDbg / 디버기 - 06.exe (Advance RCE L06 실행파일)

 

디버거에서 실행 시 [그림 5]의 창이 뜹니다. 이를 통해 디버거를 탐지하는 함수가 있다는 것을 알 수 있습니다.

[그림 5] compiled AutoIt script

 

디버거를 탐지하는 함수 부분을 패치하기 위해 우선 언패킹을 해줍니다.

[그림 6] UPX Unpacked

 

언패킹 한 파일을 디버거에 올리고 디버거 탐지 함수를 찾습니다.

[그림 7] 디버거 - OllyDbg / 디버기 - 06.exe (Unpacked)

[Search for > All intermodular calls]에서 디버거를 탐지하는 함수에 BP[F2]를 걸고 실행[F9]합니다.

[그림 8] IsDebuggerPresent BP

 

0040E961의 IsDebuggerPresent 함수에서 멈춥니다. 이 함수의 반환 값의 TEST 명령어를 기준으로 디버거에서 실행되었는지를 판단하는 겁니다. 이 부분을 패치하여 디버거에서도 정상 실행되게 합니다.

[그림 9] IsDebuggerPresent

 

TEST EAX, EAX --> CMP EAX, EAX로 패치하였습니다. 이제 패치 파일을 만들어 디버거에 올려줍니다.

[※참고]

패치파일 만드는 법은 CodeEngn Basic RCE L01의 "+α 패치파일 만드는 법"

[그림 10] 패치
[그림 11] 디버거 - OllyDbg / 디버기 - 06_Patched.exe

 

남은 군생활을 나타내는 메시지 창은 MessageBox 관련 함수를 사용했을 것입니다. 따라서 [Search for > All intermodular calls]에서 MessageBox 관련 함수에 BP[F2]를 걸고 실행합니다.

[그림 12] MessageBox 관련 함수 BP

 

0045E071에서 MessageBoxW 함수가 남은 군생활을 띄우는 함수인 것을 찾았습니다.

[그림 13] 남은 군생활을 띄우는 MessageBoxW

 

[그림 13]을 시작점으로 트레이싱해본 결과, 파일의 대략적인 핵심 흐름은 [그림 14]와 같습니다.

MessageBoxW에서 남은 군생활을 출력하고 많은 반복문과 JMP를 거쳐 Switch문에서 호출된 함수 내부에서 남은 군생활 숫자를 EBP로 옮기고 출력한 숫자를 EAX로 옮겨서 EBP와 EAX를 비교합니다.

[그림 14] 대략적인 흐름

 

남은 군생활 숫자와 출력한 숫자를 비교하는 코드를 보면 남은 군생활은 316h입니다.

[그림 15] 남은 군생활 숫자

 

316h를 10진수로 변환하면 790d이 나옵니다. 즉, 790일이 남았다는 겁니다.

[그림 16] 10진수 변환

 

CodeEngn Advance RCE L06의 답은 790의 MD5 해시값인 6ECFADC3D3F9053BFB0A2878C38A8BDD입니다.

 


 

CodeEngn Advance RCE L06의 파일을 Exe2Aut에 올리면 MsgBox를 출력하는 반복문(For문)을 확인할 수 있습니다.

 

[그림 -] Exe2Aut

 

 

'CodeEngn > Advance' 카테고리의 다른 글

[CodeEngn] Advance RCE L08  (0) 2021.04.05
[CodeEngn] Advance RCE L07  (0) 2021.04.04
[CodeEngn] Advance RCE L05  (0) 2021.04.02
[CodeEngn] Advance RCE L04 Serial 생성 분석  (0) 2021.04.02
[CodeEngn] Advance RCE L04  (0) 2021.04.02