전형적인 랜섬웨어 문제다. 그나마 다른점은 보통의 랜섬웨어가 전체파일시스템을 암호화 하는거에 비해 이 문제는 하나의 파일에 대해서만 암호화 과정을 진행한다.
일단 프로그램을 실행해보면 키값을 입력하고 이를 토대로 암호화된 파일을 복호화 하는걸로 추측할 수 있다.
실질적인 복호화 루틴을 확인하기위해 분석을 해본 결과 다음과 같은 핵심로직을 찾을 수 있었다.
암호화된 파일을 1바이트씩 읽어서 내가 입력한 키의 hex값과 0xff를 순서대로 xor해서 복호화를 진행하고 있었다. 이 때 키 값은 내가 입력한 키를 반복적으로 적용하고 있었다.
즉 암호화된 파일 xor 키 xor 0xff = 복호화된 파일 요런 식으로 정의할 수 있었다.
이 때 키 값과 복호화된 파일 두가지를 모르기 때문에 xor를 통해 뭘 어떻게 할 수 있는 상황이 아니었다. 근데 문제파일중에 README파일을 보면 복호화된 파일이 exe파일이라는 힌트가 적혀있었다. 그렇다면 PE헤더의 DOS HEADER부분을 활용하면 Key값을 구할 수 있을거라고 생각했다.
DOS Header에서 0x30만큼의 바이트값을 가져와서 키 = 복호화된 파일 xor 암호화된 파일 xor 0xff 해주는 파이썬 스크립트를 짜서 돌렸더니 다음과 같이 키값으로 반복적인 값이 출력되는 걸 볼 수 있었다.
그렇다면 키 값은 letsplaychess라는걸 알 수 있고 이 값을 키로 입력해주면 파일이 복호화 된다.
복호화된 파일은 exe파일이기때문에 확장자를 변경해서 실행해주면 다음과 같이 flag가 나온다.
'Wargame > reversing.kr' 카테고리의 다른 글
Reversing.kr CSHOP (0) | 2018.02.16 |
---|---|
Reversing.kr Position (0) | 2018.02.16 |
Reversing.kr Music Player (0) | 2018.02.16 |
Reversing.kr Direct3D FPS (0) | 2018.01.21 |
Reversing.kr ImagePrc (0) | 2018.01.21 |