wonder

정보보안 스터디 - 19주차 3일 - LENA reversing (level 10, 11) 본문

Security/리버싱

정보보안 스터디 - 19주차 3일 - LENA reversing (level 10, 11)

wonder12 2023. 2. 19. 14:03

 

 

level 10

 

 

 

지금 처음에 register 오류창이 뜨고

register 코드를 모르기 때문에 크랙을 하여 우회하거나 확실한 코드를 분석을 통해 알아내야합니다.

많은 프로그램들이 CMP비교를 통해 문자열key를 넣어두고 맞는지 확인하는 것 같습니다.

 

 

일단 이 정보들을 수집해두고요

 

 

 

 

 

NuMega SmartCheck 를 이용해 오픈 후 플레이 버튼을 누릅니다.

시작하자마자 팝업창이 출력되면서 쭉 진행하면

추가로 이벤트가 뜹니다.

 

 

할 수있는 이벤트는 실행시켜서 다 열어준 다음

 

 

 

이벤트 메세지 박스를 확인해보면 각자 메세지 박스로 떴던 내용을 확인할 수 있습니다.

 

 

 

 

 

 

 

VB Decompiler Lite 11 를 실행하여 오픈 후 

해당 Form의 이벤트들을 클릭해보면 어셈블리 처리 내용이 뜹니다.

C17, 18 부분은 함수 프롤로그네요.

 

 

 

 

Get rid of all ~ 을 검색해보면 

MOV 로 해당 메세지를 EBP-7에 대입하는 것을 확인합니다.

즉 팝업창 출력을 처리하는 함수의 시작입니다.

 

 

 

 

올리디버거로 함수 프롤로그 주소로 이동하여 확인하고 

실행하다보면 문자열을 EBP-7에 대입하는 것도 확인할 수 있습니다.

이 팝업창은 아예 출력되지 않게 하기 위해서 프롤로그 부분을 RETN으로 변경하여 함수가 바로 종료되도록 합니다.

 

 

 

 

 

Name (label) in current module 로 vbaStrCmp 함수를 검색합니다.

CMP처럼 값들을 비교할 때 사용하는 함수입니다.

idata 섹션에 있습니다.

BP on every reference할 시 총 3개의 BP가 지정됩니다.

 

 

 

 

실행될 때 아무거나 입력하고 register me 버튼을 클릭하면

 

 

BP 까지 오게됩니다.

이 때 비교하는 함수까지 BP를 걸어두었기 때문에

등록키로 보이는 문자열을 쉽게 찾을 수 있었습니다.

 

 

 

 

 

level 11

 

 

 

Select는 가입된 유저만 사용가능하고

패스워드도 확실한 패스워드여야 가입가능합니다.

 

 

그리고 프로그램 타이틀창에 (unregistered) 가 원래 떴었기 때문에

문자열을 찾아서 주소로 이동합니다. 

 

 

보면 AL이 0인지 TEST 비교하고 맞을 시에는 점프해서 비회원 유저로 뜨지만

아닐경우에는 회원 유저로 뜹니다.

그래서 AL값을 수정해줘야합니다.

 

레지스터창이나 메모리 창에서 esp +4위치 값을 확인해보면 AL값이 00인것을 확인할 수 있습니다.

 

MOV 명려어 전에 누가 호출했는지 확인합니다.

 

 

두 주소로 모두 가서 분석합니다.

 

 

 

두 곳에 모두 BP를 걸고 실행하면 처음 BP에 도달합니다.

이 때 EAX값을 push 하는 데 그 위의 CALL함수를 분석합니다.

 

 

XOR AL,AL로 0으로 처리해버리기 때문에

이걸 NOP로 없애도 되지만 MOV AL,1로 1로 설정해도됩니다.

 

 

 

그러면 기능사용이 가능합니다.

 

 

애초에 처음부터 registered 된 유저인지 확인하고 다른기능들을 허락해주는 구조였습니다.

 

 

 

 

 

 

 

Comments