Ransomware

Objectives : File 을 복호화 하시오
프로그램 실행해 보니까 key값을 입력하면 FILE 을 복호화 해주는 프로그램인것 같다. 쌩으로 복호화하는 게 아니라 Key 검증과정만 확인해주면 될 것 같다
Key 입력받는 부분을 우선 찾아보자
→ 개 뻘짓하다가 이게 뭐지 싶어서 찾아봤는데 패킹된 거라고 한다. 다음부터는 패킹좀 찾아보자. 어쩐지 이상한 반복문, 분기문이 너무 많았고, IDA에서 디스어셈블한것도 이상하더라
그럼 어디서 메인 이벤트가 일어나는지를 확인해 보았을 때
문자열을 입력한 이후 0x44A81B에서 걸리는 것을 확인했다.
다음에 이 루프를 도는 것을 확인할 수 있는데
한 글자씩 getc로 읽어오는 것을 볼 수 있다. DE C0 1B 8C 순으로 읽어 오는데, FILE 의 시작 부분과 동일하다.
하다가 귀찮아서 그냥 언패킹을 해줬다
실행을 해서 찾아보면 0x44A8C3부분에서 위에서 읽어온 부분과 XOR 을 해준다.
이때 첫번째 XOR 에서 key 값으로 입력한 hello 의 첫 자리와 파일의 값을 XOR 해주고, 두번째 XOR에서는 0xFF와 XOR 해주는 것을 확인할 수 있다.
다음 과정에서는 hello의 e 와 XOR 해주고 0xFF와 XOR 해준다. 감이 온다
FILE 과 0xFF를 XOR 해준다면 Key 값이 드러날 것이다.
fp = open('file','rb') data = bytearray(fp.read()) ndata = bytearray() for i in range(0,len(data)): ndata.append(data[i] ^ 0xFF) fp = open('result','wb') fp.write(ndata)
Python
보면 letsplaychess가 반복되는 것을 확인할 수 있다.
사용해서 복구했을 때 정상적으로 복구된 것을 알 수 있다.
key : letsplaychess
flag를 확인할 수 있다.
나만 그런건지 모르겠는데, file이랑 run 을 실행하는데 있어서 dll이 필요했다. 혹시 필요한 사람을 위해 첨부해 놓았다.
msvcr100.dll
740.8KB
msvcr100d.dll
1463.8KB