CodeEngn Basic 19

문제 : 이 프로그램은 몇 밀리세컨드 후에 종료 되는가

디버거로 실행시키면 PUSHAD가 보인다. 패킹 된 프로그램 같다. PEiD로 확인해본 결과 그림 21에서 보이듯이 UPX로 패킹 되어 있다.

19-1

19-2

직접 OEP를 찾아서 dump해도 되지만, 덤프따기 귀찮기 때문에 UPX를 이용해서 언패킹을 실행했다.

19-3

일단 프로그램을 실행시키면 그림 창이뜨고 확인을 누르거나 가만히 기다리면 혼자 종료한다. 일단 Exit가 들어가는 함수들과 문제가 몇 밀리세컨드 후에 종료 되는지 물었기에 sleep 함수를 확인했다. ExitWindowsEx는 윈도우 종료관련 API라서 무시했다.

19-4

19-5

일단 Exitprocess 함수 부분을 찾아서 브레이크포인트를 걸고 실행해봤더니,그림 25 같은 에러창이 떠서 안티디버깅 API가 있는지 확인했다.

19-6

함수목록에서 IsDebuggerPresent 를 확인했고 해당부분에 브레이크 포인트를 걸고 실행했다. 그리고 0040E969에서 에러 메시지박스 호출하는 함수로 가는 분기점에 TEST EAX,EAX를 CMP EAX,EAX 로 수정해서 Z플레그가 1이되게 저장했다.

19-7

그리고 다시 실행해보니 Exitprocess는 메시지창이 출력된 후에 확인을 누른후 종료하는 루틴으로 판단되고 sleep도 전부 브레이크포인트를 걸어봤지만, 별다른게 없어서 timeGetTime에 전부 브레이크포인트를 걸어봤다. 그후 실행시키고 브레이크포인트부터 진행하면 2번반복후 0041621E에서 계속 멈추고 재 시작하는 순간 메시지박스가 생기고 사라진다. 반복문 안에서 진행 시간이 어딘가 기록된다 판단하고 그 부분을 찾아봤다.

19-8

반복문이 두 번 실행하는데 그림 27을 보면 00444D3A에서 BTX+4값은 2B70 으로 고정되고 EAX값은 실행시키고 00444D3A까지 내려오는 시간이 기록된다. 그리고 진행하면 99444D4E에서 다시 위로 점프하고 두번째는 00444D3D에서 점프를 실행한 뒤 00444D54에서 끝나는 루틴으로 진행한다.

19-9

실행 하는 동안의 시간 값인 EAX가 EBX+4와 비교되는 것을 봤을 때 해당 값을 정답이라 판단했다. 2B70을 10진수로 바꾸면 11120 코드엔진에 확인한결과 정답이다.

19-10

박준영

박준영
아아 BOB되고싶다

2019년 CISA 합격 후기 및 공부 방법

CISA 합격 후기 및 공부방법

OpenVAS 사용 가이드/사용법 v.2018

Published on April 13, 2018

vsftpd 2.3.4 취약점 공격

Published on November 24, 2017