2014년 2월 3일 월요일

Reversing.kr ransomeware 풀이

<upx로 패킹되어있으므로 언패킹한다.>
올리로 열어 분석한결과 file파일을 복호화하는 부분이 있었다.
그부분을 해석하자면,
0xFFFFFF-- ^ Key[i] ^ 0xFF = file[i] 이다. (--부분은 run.exe의 hex차례대로)

run.exe의 뒷부분을 보면 모조리 0x00으로 들어차있다.
0x00과 xor연산을 했다면 일정하게 반복될것이므로, file파일에서 반복되는부분을 찾아냈다.



enc = [0x93,0x9A,0x8B,0x8C,0x8F,0x93,0x9E,0x86,0x9C,0x97,0x9A,0x8C,0x8C]
data = 0x00
key = []
cnt=0
for i in range(len(enc)):
if cnt%13 == 0:
cnt=0
key.append(chr(enc[cnt]^(data^0xff)))
cnt+=1
print key


>>> letsplaychess
key를 악당에게 돈을 주지않고도 얻어내었으므로, ransomeware에 넣어본다.

그리고 file을 헥스에디터로 열어보니 헤더가 MZ..으로 시작했으므로 날렵하게 .exe파일로 바꾸어준후 실행하니 답이 나왔다.

Solved!

댓글 없음:

댓글 쓰기