simples 시즌2 리버싱 문제 level1 풀이입니다.

하지만 level1 클리어의 조건은 이 프로그램을 리버싱 하는것이 아닌 accdb파일의 패스워드를 크랙하여 분석하는 것입니다.

accdb파일의 패스워드를 크랙하는 것은 풀이하지 않을 것이니 참고 하시기 바랍니다.

순수하게 프로그램만 풀이하도록 하겠습니다.

일단 리버싱을 하기전에 필수로 프로그램이 어떻게 동작하는지 봐야겠죠.

실행해보면 아래와 같습니다.



이번에는 프로그램을 PeScan해 보면 아래와 같이 나옵니다.


UPX로 패킹되어있네요.

UPX는 널리 알려진 패킹이므로 구글링하시면 언패킹 툴을 쉽게 구하실수 있습니다.

물론 수동 언패킹도 가능하구요.


전 수동 언패킹으로 패킹을 하였습니다.


위와 같이 나옵니다.

이젠 분석을 해봐야겠죠

디버거로 해당 파일을 오픈하여 줍니다.


OEP로 이동한 후 아래와 같이 Strings를 검색하여 줍니다.


인증에 실패하였을 때 나오는 문구가 검색이 됬네요.

저 문구를 더블클릭하여 해당 부분으로 가봅시다.



이동된 부분에서 조금만 위로 스크롤을 올리면 위와 같이 $표시가 되어있는 곳이 보입니다.

저번 풀이에서도 말을 했듯이 저 부분은 어떠한 함수의 시작부분을 뜻하는데요.

저 부분에 BP를 걸고 분석을 해보도록 하죠.


인증 버튼을 누르면 BP를 걸었던 주소에서 프로그램이 일시정지 하게 되는데 천천히 트레이싱을 해봅시다.

트레이싱을 하게 되면 아래와 같은 부분에서 이상한 문자열들을 발견하실수 있으실 겁니다.



잘 안보이실것 같아 밑에 복사했습니다.

00481BBE  |.  8B45 FC     MOV EAX,[LOCAL.1] // 이상한 문자열이 들어있는 첫번째 부분.
00481BC1  |.  BA 341C4800 MOV EDX,Level1.00481C34                   ;  ASCII "5653c6b1f51852a6351ec69c8452abc6" // 프로그램 내에 지정되어있는 이상한 문자열 부분

그리고 00481BC1 주소 밑에 어떠한 콜문이 있고 그 콜문밑에는 JNZ 점프문이 존재합니다.

그 점프문이 점프하는 구간 사이를 보니 우리가 원하는 인증성공 메시지가 보이네요.

기본적으로 저 문구를 뛰어넘을테니 점프 여부를 결정해주는 건 JNZ 위에 있는 Call 문일것입니다.

그 Call 내부로 들어가 어떠한 코드들이 작동되는지 확인해봅시다.


00404D03  |.  39D0        CMP EAX,EDX                               ;  Level1.00481C34

이 구문의 값들을 보니 프로그램내에 지정되어있던 이상한 문자열과 또 어떠한 문자열을 비교합니다.

정해진 어떠한 문자열과 비교하는것을 보니 저 문자열이 이 프로그램의 패스워드인것 같습니다.

하지만 저 문자열 자체가 패스워드는 아닙니다.

저 문자열은 md5라는 인코딩방식에 의해 생성된 문자열입니다.

그러니 md5 디코딩을 통하여 원래 문자로 바꿔주면 우리는 패스워드를 얻어 낼수 있습니다.

제 블로그 링크에 있는 인코딩 디코딩 사이트들을 통하여 디코딩을 하면 solo라는 문자를 얻을 수 있습니다.

이제 저것이 패스워드가 맞는지 확인을 해야겠네요.


 

인증이 됬군요 ^^ 이로써 해당 프로그램 리버싱이 끝이 났습니다.

결론을 간단히 정리하면 이 프로그램의 패스워드 인증방식은 패스워드 내에 정해진 md5문자열과 사용자가 입력한 문자열을 md5로 복호화하여 비교한후 인증 여부를 결정하는 것입니다.


이것으로 심플스 리버싱문제1을 클리어한것은 아닙니다.

그 뒤로는 스스로 풀어보시는것이 좋을 듯 싶어 여기까지만 풀이합니다 ^^

언팩한 파일 올립니다~


 

'[+] Information > [-] RCE' 카테고리의 다른 글

재밌는 리버싱 문제~  (120) 2009.07.03
cffo-4 크랙미 풀이.  (10) 2009.04.14
simples 시즌2 리버싱 문제 level1 풀이.  (4) 2009.04.14
abex3 Crackme 풀이.  (0) 2009.04.14
심심해서 해본 닷지 리버싱  (9) 2009.04.11
  1. 1 2009.05.19 20:08

    이건 JNZ SHORT 00481BE4
    부분에서 JE SHORT 00481BE4
    로 바꿔주면 금방풀리지않나염 ㅎㅎ

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2009.07.03 14:48 신고

      그렇긴 하죠 ㅎㅎ

      근데 근본적인 문제는 그게 아니라서요 ㅎㅎ

      패스워드를 찾아내서 그 패스워드를 가지고 또 다른 문제로 접근을 해야해서 ㅋㅋ

  2. ㅇㅅㅇ 2010.03.17 16:13

    md5방식으로 인코딩되있다는사실을 어떻게알져?

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2010.03.27 17:01 신고

      인코딩 문장을 많이보다보면 대부분 감이 와요 ㅋ

+ Recent posts