본문 바로가기

study/write_up

codeEngn.com basic 2 write up [ArturDents CrackMe #1]

[그림 1] 문제

문제에서 주어진 내용을 분석해 보자

 1. 패스워드로 인증한다.

 2. 실행파일이다.

 3. 실행파일이 손상되어 있다.

 4. 패스워드가 무엇인지만 알아 내면 된다.

 

 실행파일을 복구 시켜서 인증하는 내용이였으면 어려워졌을텐데 다행히도 해당 파일을 복구하는 것 보다 그냥 패스워드만 알아내라는 것이였다.

 lena의 튜토리얼 문제 풀이를 보면 메세지박스 형식으로 정답과 오답을 처리하는걸 판별할걸 알려주고 보내주고 있다면 메모리 값을 들여다 보면 발견할 수 있다. 일단 이 문제풀이에서는 파일 상태부터 천천히 파고 들어가겠다.

[그림 2] 압축해제

압축을 해제하면 그림 2와 같이 exe파일 하나 달랑 던져 준다.

[그림 3] 윈도우에서 실행 불가
[그림 4] Wrong PE File!
[그림 4] PE view 1
[그림 5] file signature MZ확인

 그림 3과 그림 4와 같이 해당 문제를 xdbg랑 윈도우로 아무리 접근해도 안 되는것을 알 수 있다. 참고로 xdbg로 안 열리면 해당 파일은 진짜로 PE파일이 아니거나 정상적인 PE파일이 아닌 손상된 파일이라는 소리이다.

 두 상황으로 일단 파일이 손상되었다는게 문자열 같은게 손상된게 아니라 파일 구조 자체가 손상되었다는 것을 알 수 있었다. 

 

복구가 쉽게 가능한지 여부를 알기 위해서 PE view를 사용해서 보았다. 그림 5와 그림 6으로 미루어봤을 때, 해당파일은 PE파일이 맞으나, 복구할 수 있는 단서를 쉽사리 알아낼 수 없었다. 그렇다면 메모리를 직접 확인해 보는 방법밖에 없다.

의심되는 문자열을 발견 되면 이제 해당 패스워드를 유추해 보는 일밖에 안 남아 있다.

[그림 6] 문자열 1
[그림 7] 문자열 2
[그림 8] 문자열 3

 

[그림 8] 문자열 4
[그림 9] 문자열 5

 

그림6은 아무리 봐도 api호출관련 내용이다. 그림 7은 문자열 비교후 성공과 실패가 나타나는 부분이다.

그림 8은 해당 파일의 원래 이름이거나 처음으로 뜨는 메세지 창이였을 것이다. 그림 9는 힌트를 주는 내용인거 같다.

그림 9를 확인해보자.

 다 한칸씩 00바이트를 사용되서 떨어져 있다. 붙여서 보면

Rules Just find the unlock code no patching allowed it's easy so don't expect to much - 그저 unlock code를 찾으라고 한다. 패칭도 필요없고 간단하게 생각하라는거 같다.

 

Greeting to the whole TNP especially Folko for helping me to make my first steps in Win32ASM - 작성자는 folko라는 사람한테서 도움을 받아 어셈블리어에 처음 발을 들였나 보다. 이건 전혀 쓸데없는 부분이였다.

 

힌트가 간단하게 생각하라는 것 말고는 얻을 수 있는게 없었다. 그러면 문자열을 비교해서 결과를 출력하던 그림 7로 넘어가겠다.

[그림 10] Flag??

보통 함수가 끝나면 얼마만큼의 길이동아 00바이트로 채워지는 것에 비해 이상한 문자열이 더 들어가있는것을 확인할 수 있엇다. 혹시 몰라서 codeengn auth에 값을 입력해 보았다.

[그림 11] yes flag...

한번 시도해봤는데 인증이 완료되는 것을 보고 놀랐다. 하지만 그것도 잠시 스크린샷을 남기는 것을 깜빡 잊어서 다시 입력했더니 Duplicate!!가 떴다. 이미 입력했던 Auth값이면 통과가 되나 보다...

 

삽질한것에 비해 허무하게 찾았다. 나중에 알고 보니까 lena 튜토리얼문제에서 포스팅 한 것과 같이 간단하게 짠 프로그래밍이라면 메모리 분석하면 비교하는 문자열을 찾을 수 있다는 점이였다...