2016 HDCON 역공학 OpenCTF 문제로 윈도우 바이너리를 하나 받았다.


hdconmalware



1. 악성코드 Entry Point는?

2. 악성코드 내부에는 악성 앱이 존재한다. 악성 앱이 생성되기 위해 입력해야 되는 Key 값(인자 값)은 무엇인가? 악성 앱의 MD5는?

3. 악성 앱이 UDP Flooding을 위해 해커로부터 받는 명령 문자[1]는 무엇인가?

4. 악성 앱이 UDP Flooding을 위해 해커로부터 받는 명령 문자[2]는 무엇인가?

주어진 바이너리를 분석하여 위에 해당하는 4가지 문제를 풀어야 한다.


file 명령어를 통해 파일을 확인했고 IDA Pro를 사용해 바이너리를 열었을 때 UPX로 패킹 된 것을 알 수 있다.


PEiD로 확인한 결과 역시 UPX로 패킹이 되어있다.



우선 문제 1. 악성코드 Entry Point는? 를 해결하기 위해서 IDA Pro를 사용하여 파일을 열었다.


어셈블리 코드 끝 부분의 popa 혹은 popad 뒤에 나오는 jmp 명령어가 OEP를 가르키므로 Entry Point는 00403E4D이다.

분석을 계속하기 위해서 Entry Point로 점프하는 부분에 브레이크포인트를 걸어주고 실행한 뒤 Step into기능을 사용하여 Entry Point로 이동했다.


Entry Point 부분에 도착한 뒤 Hex-Rays 기능을 사용하여 Pseudocode를 확인했다.

dword_401000[96] 이부분이 main 함수를 호출 하는 부분으로 0x401000 + 96*4 = 0x00401180 이다.


main 함수로 이동하여 바이너리를 분석하면 프로그램을 실행할 때 인자를 받고 XOR 연산을 통해 v6,"Z$B5K1]1" 값과 비교한다.

XOR 연산의 특징 때문에 어떤 값을 key로 넣었을 때 v6,"Z$B5K1]1"  값이 되는지는 아래의 Python 스크립트를 통해 간단하게 알 수 있다.


1
2
3
4
5
6
7
8
9
10
decode = "Z$B5K1]1"
key = ""
for i in range(len(decode)):
    if i % 2:
        key += chr(ord(decode[i])^0x45)
    else:
        key += chr(ord(decode[i])^0x32)
print key
 
# key: happytot



따라서 해당 바이너리는 happytot라는 값을 인자로 주고 실행 할 때 sub_4010B0() 함수를 호출한다.

sub_4010B0() 함수는 Temp 경로를 구하고 sub_401000() 함수를 호출하는데 sub_401000() 함수에서 Temp 폴더에 apk 파일을 생성한다.


따라서 올바른 키 값을 인자로 주고 실행을 하면 Temp 폴더에서 apk 파일이 생성 된 것을 확인 할 수 있다.

(malware.apk 파일의 md5 hash 값은 23D64BC5C908BFEBC227851090C8D1F9이다.)


malware.apk 파일을 JEB2를 사용하여 분석할 때 문제가 UDP Flooding 이였기 때문에 Receive Class 파일을 먼저 분석하였다.

(악성 앱이 UDP Flooding을 위해 해커로부터 받는 명령 문자는 무엇인가?)



처음에 문제를 잘못 이해해서 서버에 보내는 내용을 찾는 것으로 생각하고 www.krcert.or.kr의 5555 포르토 보내는 값인 아래 2개를 정답으로 제출했다.

- Thanks! HDCON!

- Do you wnat to get a blutooth keyboard?


OpenCTF 진행해주시는 분이 답안이 잘못 됨을 알려주시고 처음부터 차근차근 다시 봤다.


문제의 정답은 해커로부터 받는 명령어이기 때문에 아래 2개의 값이 정답이다.

- v5, You Got A HDCON Badge!

getReal(v1), v1의 Base64로 인코딩 된 문자열을 getReal 함수로 넣어주었을 때의 결과 값


getReal 함수를 분석해보면 v1 값과 512까지의 랜덤 수를 Test 클래스의 aaaaaaaaa 함수로 넘겨준다.


Test.aaaaaaaaa 함수를 따라 들어가면 위 함수와 같다.

Test.aaaaaaaaaa 함수를 호출하면서 마지막에 true라는 인자를 함께 넘겨준다.

(인코딩을 할 때 false를 사용하고 디코딩을 할 때 true 인자를 사용하는 것 같다.)


Test.aaaaaaaaaa 함수의 경우 sssssssssssssssss라는 스트링을 사용하는데 문자열의 길이는 자그마치 32768자이다. 

(여기서 엄청 삽질 한게 JEB2에서 출력해주는 경우 전체 문자열이 아닌 3000개 가량의 문자열만 출력을 해줘서 시간을 많이 보냈다.)


따라서 Test.aaaaaaaaaa 함수를 똑같이 Python 스크립트로 구현한 뒤 512개의 브루투포싱을 통해서 마지막 정답을 구할 수 있었다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import string
 
v1 = "77xChf0VUuJ6BSaZMuPhvJMdKuJ="
table = "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"
xx = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
 
for arg9 in range(512):
    new = ""
    for i in range(len(v1)):
        if v1[i] == "=":
            new += "="
            break
        new += table[arg9 * 2 * 2 * 2 * 2 * 2 * 2: arg9 * 2 * 2 * 2 * 2 * 2 * 2 + 64][xx.find(v1[i])]
 
    if False not in ([(char in string.printable) for char in new.decode('base64')]):
        print arg9, new.decode('base64')


정답은 arg9가 320일 때의 You win! 2016 HDCON! 이다.



오늘 2016 HDCON 역공학 OpenCTF를 1등해서 3등까지 주는 블루투스 키보드를 받았다.

내가 1등을 할 수 있었던 이유는 참가자가 나 혼자였기 때문이다.

잘하시는 분들이 푸셨으면 분석 속도부터 차이가 났을텐데...

만세!



'Write-ups' 카테고리의 다른 글

2016 HDCON 역공학 OpenCTF  (1) 2016.11.14
  1. Orca 2016.11.15 00:02

    ㅋㅋㅋㅋㅋ 주모! 여기 국가대표 단! 하나!

+ Recent posts