문제 5.
이 프로그램의 등록키는 무엇인가?
해당 프로그램을 실행시키면 다음과 같다.
어떤 등록키를 입력하라는 것 같아서 1234라고 입력해 보았다.
역시나 잘못된 시리얼 넘버라고 하면서 다시 시도하라는 문구가 나왔다..!
그렇다면 이 문제 역시 올리디버거로 시리얼을 입력받는 함수를 찾아 적절하게 수정하면 될것이라고 생각했다.
1. 올리디버거 실행
올리디버거를 실행 한 후 마우스 우클릭 -> Serach for -> All referrenced text strings 클릭
다음과 같은 결과가 나왔다.
밑으로 내려봐도 아무런 문자열이 존재 하지 않았다.
이번에는 All intermodular calls를 클릭하여 API 함수 목록을 확인하였다.
이 역시 아무런 함수들도 확인되지 않았다.
2. 해결책
이렇게 문자열과 함수들이 보이지않는 이유는 바로 해당 프로그램이 패킹으로 감싸져있어서 그렇다.
**패킹이란?
영어 뜻 그대로 감싸다는 의미로 사이즈를 줄이거나 중요한 로직 또는 데이터를 리버스 엔지니어링으로부터 보호하기 위한 방법 중 하나이다
Stud_PE.exe 라는 프로그램을 사용하여 해당 프로그램을 열어보았다.
(Stud_PE 프로그램은 PE파일의 구조를 분석해주는 프로그램이다.)
Stud_PE 프로그램을 사용하면 해당 PE파일에 대한 정보를 알수 있다.
위에 카테고리쪽을 보면 헤더, 도스, 섹션, 함수, 자원, 시그니처 등이 있는데 우리는 Signature 탭을 클릭하였다.
밑에 보면 빨간색 박스로 Detected가 표시되는데 해당 프로그램에서 감지는 기술(?) 을 확인가능하다
UPX 라는 패킹기술이 적용이 되있다는 걸 알 수 있다.
인터넷에 해당 UPX로 패킹된 프로그램을 다시 언패킹해주는 프로그램들이 많은데 그 중 하나를 골라 리버싱을 진행하면 된다.
1) UPX 3.94w 다운받기(윈도우 용)
https://github.com/upx/upx/releases/tag/v3.94
2) 해당 프로그램으로 패킹된 05.exe 파일 언패킹 하기
위 사이트에서 UPX 3.94w.zip을 다운받고 압축을 푼다. 그리고 해당 경로를 복사한뒤, CMD 창에서 해당 경로로 이동한다.
이제 환경세팅은 다끝났다.
사용법 : upx -d "언패킹할 프로그램이 존재하는 경로\프로그램이름"
ex) upx -d D:\JungJaeho\STUDY\self\hacking\securityofall\codeengin\05\05.exe
(여기서 -d 옵션은 언패킹을 하라는 옵션이다. 만약 패킹을 하고싶다면 -d 옵션을 빼고 그냥 사용하면 된다.
현재 05.exe 파일은 패킹이 되어있으므로 그냥 upx ~~ 를 입력하면 이미 패킹이 되어있다고 하면서 에러가 뜬다.)
해당 명령어를 통해 언패킹에 성공하였다.
이를 아까 사용한 Stud_PE 프로그램으로 다시한번 돌려보겠다.
이번에는 Detected에 아무것도 감지되지 않았다. 따라서 언패킹이 성공적으로 이루어진것을 확인할 수 있다.
그렇다면 이제 올리디버거로 해당 프로그램을 실행시켜보자.
아까와는 달리 마우스 우클릭 -> Serach for -> All referrenced text strings 의 결과가 잘 확인 된다.
(API 함수 목록도 확인해보면 잘 확인이 된다)
여기서 나는 위 사진에 보이는 문자열, 특히 "CrackMe cracked successfully" 이 눈에 들어왔고, 이것은 시리얼이 제대로 입력되었을 때 나오는 문자열이구나 라고 생각하였다.
따라서 해당 부분을 더블클릭하여 그 위치로 이동해 보았다.
위에 "Registered User"라는 문자열이 보인다. 그리고 회색위치에서 EBP-4의 값을 확인해 보면
내가 입력한 ID 값인 AAA를 확인할 수 있다.
이를 통해
(1) User ID 입력( ex) AAAA ) --> "Registered User" 와 비교
(2) 시리얼 코드 입력( ex) 1234 ) --> "GFX-754-IER-954" 와 비교
따라서 해당 User ID 및 시리얼 코드를 Registered User , GFX-754-IER-954 이렇게 입력하면 크랙이 성공된다.
3. 결론
- 이 문제 역시 PE 파일 구조를 알면 좋기 때문에 얼른 PE파일 구조를 공부해야 할듯 싶다.
- 패킹, 언패킹에 대한 개념도 알수 있었음.
'워게임 > CodeEngn' 카테고리의 다른 글
[CodeEngn] Basic RCE L06 (0) | 2020.12.28 |
---|---|
[CodeEngn] Basic RCE L07 (0) | 2020.12.28 |
[CodeEngn] Basic RCE L04 (0) | 2019.05.16 |
[CodeEngn] Basic RCE L03 (0) | 2019.05.16 |
[CodeEngn] Basic RCE L02 (0) | 2019.05.16 |