[Study] CCE 2020 easyransom Writeup
대회 당시에는 못풀었다가.. 다시 풀어봤던 문제이다.
우선 주어진 주어진 flag.txt.easyransom 파일을 HxD로 열어보자.
이 파일에 대해, 주어진 파일인 easyransome.exe 파일의 로직을 분석하여 해독하는 문제일 것이다.
그럼 주어진 파일을 IDA로 확인해보자.
랜섬웨어인 문제 파일의 특성 상
(1)대상이 될 파일을 "읽고" (2)이 파일에 대해 일련의 작업을 한 후 (3) 기존 파일을 삭제
하는 과정일 것이라고 생각해서 ReadFile 부분을 찾았다.
수도코드로 보면 아래와 같다.
파일을 읽은 후 반복문 쪽을 보면, 고정 값으로 XOR을 함을 알 수 있다. 그럼 그 특정 값이 무엇인지를 알아야 하는데,
이를 추측할 수 있는 근거가 있다.
랜섬웨어에 감염된 플래그파일을 다시 보면 bbd3131 이라는 부분이 cce2020과 유사한 형식이라는 것을 알 수 있다.
따라서 cce2020 ^ X = bbd3131 인 것은데 X를 구하기 위해 b에c를 XOR 해보면 1이 나옴을 알 수 있다.
따라서,
encdata = "13 62 62 64 33 31 33 31 7A 46 6E 6E 65 69 32 30 30 31 32 35 34 78 73 35 6F 34 31 6C 32 7F 20 7C".split(" ")
decdata = ""
for i in range(len(encdata)) :
x = int((encdata[i]), 16)
x = x^0x01
decdata+=chr(x)
print(decdata)
이라는 풀이 코드를 작성 했고 플래그를 획득 할 수 있었다.
FLAG = cce2020{Goodh3110345yr4n50m3~!}
-----------------------------------------------------------------------------------------------------------------------------------
도움주신 리버스 엔지니어링 오픈카톡방의 "메쏘드오버라이딩" 님 감사합니다.