sweetchip's blog


안녕하세요 pgnsc입니다.


몇달전 친구가 리버싱문제를 하나 건네줬지만 풀지 못햇고..


오늘 다시 보니 매우 쉬운 문제였더군요 ㅎㅎ;;



8_securekorea2011-1.exe


문제의 파일입니다.


처음 디버거로 열어보니 대충 모양새로 보아 upx로 패킹 되어있엇고 간단한 트레이싱을 통해서


언패킹을 할수 있었습니다.




프로그램은 간단합니다.


key를 입력하세용~ 이라고 나오면 키를 입력합니다.


그러면 success / fail 로 갈리는 문제인데요,,


전형적인 Crack me 문제입니다. 음.. 이문제는 크랙미라 해야 할지 키젠미라고 해야할지 약간 헷갈리네요


crackme 에 더 가까운것 같습니다 ^^



텍스트로 검색한 결과 수상한 글자가 나옵니다.


영어숫자 32글자의 MD5로 추정되는 글자가 하나 있구요


그밑에거는 간단하게 연산을 거치고 system32에 password.txt 관련해서 어쩌구 하는거같은데..


윈64라 그런지 아니면 훼이크인지 안나와서 그냥 생략하겠습니다



프로그램을 처음 시작하면 2735f2c54e255f10ba7f03b6e318b843 라는 값을 저장합니다.


나중에 쓰이기 위해서이겟지요 ? ㅎㅎ



그리고 이제 본격적으로 키를 쓰라고 하는 구문에 들어가려고 합니다.


00403128 . FF15 98404000 CALL DWORD PTR DS:[<&MSVCP90.??$?5DU?$char_traits@D@std@@V?$allocator@D@1@@>; MSVCP90.??$?5DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z


에서 키값을 받고 다음으로 넘어갑니다.


00403143 . 8985 70FFFFFF MOV DWORD PTR SS:[EBP-90],EAX ; |

00403149 . 8D85 7CFFFFFF LEA EAX,DWORD PTR SS:[EBP-84] ; |

0040314F . 50 PUSH EAX ; |Arg1

00403150 . 8D4D 9C LEA ECX,DWORD PTR SS:[EBP-64] ; |

00403153 . E8 F8FDFFFF CALL aa.00402F50 ; \aa.00402F50


위 구문에서는 입력받은 문자열로 MD5 문자를 생성하고 반환합니다.


예를들어서 90- 를 넣엇다면 b082c2c15055ef79953e69888e85822f 를 반환합니다.



그리고 아까 나왓던 32글자의 md5로 추정되는것과 비교를 해서 맞으면 success 로 다르다면 fail로 분기합니다.


그렇다면 이문제의 핵심은 md5의 평문을 알아내라 입니다.


하지만 md5는 평문으로는 복호화가 불가능하고 무차별대입 공격이나 레인보우 테이블의 데이터로만 알아낼수 있습니다.


또는 제가 트레이싱을 자세히 하지않아서 앞에서 뭔가 문자열로 생성 하는 부분도 있을수도 있겟군요 :)


별 다른 방법이 없으니 레인보우 테이블을 이용하기로 했습니다.




결과 nanum.info@gmail.com



Password Is nanum.info@gmail.com


아까 password.txt 부분을 자세히 분석하지 않았고 작동도 잘 안되는거같아 영찜찜하네요


기회가 된다면 다시한번 포스팅하겠습니다.


신고

댓글 0