크리스마스 이벤트 대회 이후에 SANS 문제는 쳐다보지도 않았었는데 여러가지 일을 하다가 머리 좀 식힐겸 하여 SANS Forensic Contest 페이지를 접속 해 보았다.

문제들 중 해당 문제가 Defcon 2010에 출제 되었다고 하여 재밌을 것 같아 도전해 보았다.

생각외로 문제 난이도 높지 않아 심심찮게 놀랐었다.

이번 문제는 이전 문제들처럼 질답 형식이 아닌 단 하나의 질문 답변만 있다.

답변이 곧 키 값이 되는 것이다.

문제 다운로드 주소는 아래와 같다.

http://forensicscontest.com/contest07/evidence-defcon2010.pcap

먼저 이 문제의 지문을 보자.

Ann has arranged a rendezvous with Dark Tangent. You are the forensic investigator. Can you figure out their destination? 

간단하게 번역하면 당신은 법의학 전문가 인데 "그들이 가려고 하는 목적지를 증거분석을 통해 알 수 있겠느냐?" 이다.

패킷파일을 열면 무수히 많은 패킷들이 아래와 같이 나온다.

[그림 1 - 증거로 제시된 pcap 파일 내용]

빨간박스만 봐도 무선랜 패킷 캡쳐 파일인 것을 알 수 있다. 하지만 패킷을 분석하기가 쉬워보이지 않는다.

무선랜이면 암호화가 걸려있을 수도 있으니 aircrack-ng로 한번 알아보자.

[그림 2 - aircrack-ng 스캔 결과]

스캔 결과를 보니 WEP 암호화 패킷이라고 알려준다. 친절하게 Key까지 자동으로 찾아 주었다. 우리는 이 key를 이용해 해당 패킷을 복호화 하면 된다. aircrack 패키지에는 복호화 툴도 함께 있는데 그 툴 이름은 airdecap-ng이다.

[그림 3 - 복호화 수행]

복호화가 완료되면 패킷파일이 하나 생성된다. 그 패킷 파일을 보면 IMAP, 프로토콜과 SMTP 프로토콜이 보인다.

이 둘은 전자메일 프로토콜인데 두 프로토콜 패킷들을 보면 어떤 전자메일이 전송 된 것을 확인 할 수 있다.

그 전자메일에는 jpg 첨부파일이 존재하는데 IMAP 프로토콜에서 추출한 jpg 첨부파일 경우 완벽하게 복구가 되지 않고 SMTP 프로토콜에서 추출한 jpg 파일이 완벽하게 복구 된다. 아래는 복구한 메일 내용과 jpg 이미지 파일이다.

[그림 4 - 복원된 메일 내용]

[그림 5 - 복원된 이미지 첨부파일]

메일 내용은 첨부파일에 내용이 목적지 힌트라고 말하고 있다. 첨부파일의 이미지를 보니 5가지의 어떤 제시 문구가 있다. 아무래도 이 제시문구를 기준으로 패킷 파일을 분석하라는 이야기 같다.

각각 하나씩 찾아보도록 하자.

1. App store - App Name
   - 패킷파일에서 HTTP 오브젝트들을 보면 software를 검색한 URL을 볼 수 있다.

[그림 6 - 아이튠즈에 요청한 검색 쿼리 URL]

즉, solitaire 라는 App을 검색한 것이다. 이 이후 URL들은 App과는 별개인 URL 뿐이어서 해당 URL이 제일 유력하다.

2. Podcast Title
   - 팟캐스트는 라디오나 뉴스등을 방송하는 걸 말하는데 HTTP 오브젝트들을 보면 팟캐스트로 추측되는 URL을 볼 수 있다.

[그림 7 - 팟캐스트로 의심되는 URL]

radionews 라는 문자열이 있는 xml 파일인데 해당 파일을 저장하여 보면 아래와 같이 나온다.

[그림 8 - 팟캐스트 title]

팟캐스트가 맞았으며, title은 onion Radio News 이다.

3. YouTube Video Title
    - NetworkMiner로 분석하면 정말 쉽게 찾을 수 있다.

[그림 9 - NetworkMiner의 메시지 파싱기능 결과]

메시지에 나와 있는 주소로 접속하면 아래와 같이 나온다.

[그림 10 - Video title]

Video title은 Cry For Help - Rick Astley

4. Google Earth City Name
    - 이 부분도 NetworkMiner를 이용하면 쉽게 풀린다. NetworkMiner의 Parameter 기능을 이용하면 되는데 일단 google earth 주소를 찾아야 한다. 

[그림 11 - NetworkMiner의 Parameter 기능 결과]

일단 maps.google.com 주소가 google Earth 주소라는 것은 직관적으로 파악 할 수 있다. 그 서버에 q 인자(검색 문자열)로 hacker valley, wv라는 값을 보낸 것을 알 수 있는데 실제로 검색해보면 존재하는 지명이다.

City Name은 hacker valley, wv

5. AIM Buddy Name
    - 이 부분 또한 NetworkMiner를 통해 알 수 있다. Parameter 기능 결과를 보면 아래와 같은 부분을 찾을 수 있다.

[그림 12 -  NetworkMiner의 Parameter 기능 결과]

서버가 aim.net 으로 끝나는 것을 보니 AIM 메신저 서버인듯 하다. 메시지까지 보면 정확하게 추측 했다는 것을 알 수 있다.
일단 서버로 가는 인자만 봐서는 솔직히 어떤게 메신저 대화명인지 모르지만 일단 k에 들어가는 값은 대화명이라고 하기에는 조금 무리가 있어 보인다. 그나마 t 인자값에 들어가는 값이 읽을 수 있어 대화명이라고 할 수 있을 것이다.

즉 AIM Buddy Name은 inter0ptic

결과를 정리하여 보면 아래와 같다.

App store - App Name : solitaire
Podcast Title : onion Radio News
YouTube Video Title : Cry For Help - Rick Astley
Google Earth City Name : hacker valley, wv
AIM Buddy Name : inter0ptic

이렇게만 보면 감이 안오지만 조금만 생각해보면 답이 보인다.

Solitaire
Onion Radio News
Cry For Help - Rick Astley
Hacker valley, wv
Inter0ptic

그들이 가려고 하는 곳은 yes 평창과 라이벌 이었던 Sochi 이다
정말 우연찮게 푼 문제입니다.

일단 지문부터 보겠습니다.

감사합니다./ありがとうございます./Dank u./Tak.Danke./Gratias./Спасибо./Terima kasih.
Mulţumesc./Cảm ơn bạn./Дзякуй./Благодаря./Tack./Gracias./شكرا لك./Go raibh maith agat.
Dankie./Grazie./Terima kasih./謝謝./ขอบคุณ./Obrigado./Dziękuję./Merci./Kiitos./Köszönöm./शुक्रिया.
Thank you very much for spending time with us.
The final problem enjoy with you. It may not look hard.
Let's view the problem from another angle.
Decrypt it.

RDCVGF_YGBNJU_TGBNM_YGBNJU_TGBNM_TGBNM_YGBNJU_TGBNM



RDCVGF_YGBNJU_TGBNM_YGBNJU_TGBNM_TGBNM_YGBNJU_TGBNM

요 문장을 해독하는 문제 입니다.

마지막 문장에 다른 각도에서 문제를 보라고 나와 있는데 처음에는 이 문장이 뭘 뜻하는지 몰랐습니다.

그런데 오늘 강의를 들으면서 딴 짓(...) 하던 도중에 이 문장의 의미를 깨달았습니다.

바로 키보드 배열의 순서 입니다.

[그림 1 - RDCVGF(G)]

[그림 2 - YGBNJU(O)]

[그림 3 - TGBNM(L)] 

이 세가지 패턴만 파악하여 놓으면 3가지 패턴 반복으로 인해 위 암호문장은 금방 풀려버립니다.

 - G_O_L_O_L_L_O_L 

'[+] Hacking > [-] Challenge Report' 카테고리의 다른 글

Honeynet Project Challenge 3 풀이 보고서  (0) 2012.03.18
SANS Forensic Contest Puzzle #7  (0) 2012.03.11
Codegate 2012 Misc 500 풀이  (0) 2012.03.05
Codegate 2012 Misc 4 300 풀이  (7) 2012.03.03
Codegate 2012 Misc 100 풀이  (2) 2012.03.01
이번 문제는 원래 4단계 문제이지만 점수가 300점입니다.

아무래도 난이도가 그리 높지 않다보니 점수가 다른 분야 동일 단계에 비해 낮게 책정 된 것 같습니다.

이번 문제는 따로 지문이 있지 않고 zip 압축 파일 하나만 제공해 줍니다.

파일은 codegate의 html 페이지들 인데 처음에는 썸네일 파일이 있어 이미지 추출 문제인가 하고 viewer로 긁어 봤으나 별 다른 것이 없어 낙담 하던 중 codegate.js 라는 파일을 발견하였습니다.

해당 파일은 그리 길지 않은 javascript 소스의 파일로 소스 자체도 어렵지 않은 파일이었습니다. 그런데 그 파일 마지막에 이런 javascript가 존재하고 있었습니다.

[그림 1 - 문제로 추정되는 javascript]

난독화가 되어 있는 것으로 보이는데 이 난독화를 그렇게 어렵지 않은 난독화 이므로 수동으로 풀어줘도 되고 아래와 같이 도구를 이용해도 됩니다.

[그림 2 - 난독화 풀어준 모습]

이런! 난독화를 풀어줬는데도 또 한번의 난독화가 되어있네요. 하지만 이번 난독화는 변수만 조금 보기 힘들게 해놓은 거군요.

소스를 보다보면 마지막에 eval() 함수로 무언가를 실행시켜주고 있습니다. 소스를 분석 할 필요 없이 이 부분만 보면 될 것 같네요.

이 부분에 eval() 함수를 alert() 함수로 바꿔주면 실행하려던 어떠한 코드를 알림창으로 띄어 줄 것입니다.

[그림 3 - 실행하려던 코드]

참 분석하기 애매하게 코딩 해 놨습니다. 이번 소스도 맨 마지막에 authkey 라는 변수에 unescape() 한 어떤 문자를 넣어주고 있는 걸 볼 수 있습니다. 이걸 또 한번 알림창으로 띄어봅시다.

[그림 4 - 인증 키값]

키값처럼 생기지 않았지만 이게 바로 키 입니다. ㅎㅎ

ahhamrs kang forever 대충 이런 글자인 것 같네요... 앞에 저건 뭐지 ㅡㅡ;;

 

 

 

'[+] Hacking > [-] Challenge Report' 카테고리의 다른 글

SANS Forensic Contest Puzzle #7  (0) 2012.03.11
Codegate 2012 Misc 500 풀이  (0) 2012.03.05
Codegate 2012 Misc 4 300 풀이  (7) 2012.03.03
Codegate 2012 Misc 100 풀이  (2) 2012.03.01
Codegate 2012 Network 300 풀이  (2) 2012.02.29
  1. 익명 2012.03.07 00:14

    비밀댓글입니다

  2. 트라 2012.03.08 00:45

    tra3318@nate.com 감사합니다

  3. 익명 2014.04.22 12:53

    비밀댓글입니다

  4. 익명 2014.10.01 15:02

    비밀댓글입니다

얼마전 Codegate 2012 예선전이 개최되었습니다.

저는 세미나 참석으로 인해 부득이하게 참가하지 못했었는데, 예선전 문제 제공 사이트가 48시간 열린 다는 페친님들의 소식을 듣고 바로 문제를 백업하였습니다.

여러가지 분야의 문제가 있지만, 일단 풀이는 포렌식만 하도록 하겠습니다.

이번 글에서는 포렌식 문제 중 100점 짜리 문제를 풀어 보도록 할 것 입니다.

일단 문제는 다음과 같습니다.

In order to steal financial information of Company X, IU got a job under cover. She decided to attack CFO's computer, and then insert malicious code to his computer in the way of social engineering. She figured out that he didn't use to turn off his computer, when he gets off work. After he leaves the office, she obtains financial data from his computer to search EXCEL file. By checking installed application program, she can find the information in the file. She lacks the file externally. In order to remove all traces, she erases malicious code, event logs and recent file list. The company X has to figure out what information she stole correctly to make an appropriate measure. These are files attacked from CFO's computer. Find the full path and size of the file which she stole. On the day, CFO left the office at 14:00. The time is based on Korea Standard Time(UTC +09:00). 

Answer: strlwr(md5(full_path|file_size)) 
('|' is just a character)


문제를 간단하게 요약하여 보면 IU가 CFO 컴퓨터를 공격한답니다...(왜 아이유를...)

그리고는 IU가 금융관련 엑셀 파일들을 훔친답니다. 이와 같은 침해대응 사고를 대처하기 위해 X라는 사람은 파일을 훔친 시간과 훔쳐간 파일의 크기를 알아내야 한다는 것 입니다.

또 제공 된 파일은 CFO 컴퓨터의 자료들이라고 하는군요.

시간값은 UTC(+9) 라고 합니다. 우리나라 시간이죠.

일단 해당 문제 파일을 받으면 확장자가 존재하지 않습니다. 그러므로 hex 에디터로 열어봅니다.

 

[그림 1 - hex 에디터로 본 문제 파일]

아! 7z 압축 포맷이네요. 이 압축 포맷을 해제하여 주는 프로그램은 상당히 많습니다. 이러한 프로그램들로 해당 문제 파일을 압축 해제 하여 주면 CFO 컴퓨터의 Users 폴더 트리가 나오게 됩니다.

 [그림 2 - CFO 컴퓨터의 Uses 폴더]

CFO가 proneer님 인 것 같네요 ^^

무튼 엑셀 파일을 찾아야 합니다. 하지만 아이유가 엑셀 파일을 훔치고 파일을 지운 듯 합니다. 보이지가 않네요.

CFO 컴퓨터가 windows라는 점을 감안 하였을 때 대부분의 파일에는 링크파일이 존재합니다. 특히 열어본 최근 문서의 경우는 더더욱이 그렇죠.

엑셀 파일이라고 하였으니 엑셀 파일의 링크 파일이 있는 곳을 찾아가 봅시다. 경로는 아래와 같습니다.

 - Users\proneer\AppData\Roaming\Microsoft\Office\Recent

[그림 3 - Micorosoft Office 파일들의 링크 파일들]

여러가지 파일들이 있지만, 대부분 포렌식에 관련된 문서들 입니다. 하지만 유독 눈에 띄는 파일이 있었으니.... 바로 

[Top-Secret]_2011_Financial_deals 파일 입니다.

제목만 봐도 금융에 관련된 파일이라고 보여집니다. 해당 링크 파일이 가리키는 엑셀 파일의 크기와 전체 경로를 파악해야 합니다. 

링크파일에는 이러한 정보가 대부분 들어 있기에 쉽게 정보를 파악 할 수 있으니 문제는 다 풀었다고 봐도 무방합니다.

링크파일을 분석하여 주는 도구는 이미 많이 나와있습니다. 이러한 도구들을 이용해도 되고 또 직접 오프셋을 확인해도 됩니다.

[그림 4 - 오프셋 분석]

우리가 원하는 정보인 크기와 경로는 빨간 박스로 따로 하이라이트 해 두었습니다. 정리하여 보면 아래와 같습니다.

 - 경로 : C:\INSIGHT\Accounting\Confidential\[Top-Secret]_2011_Financial_deals.xlsx
 - 크기 : 0x00002450(9296byte)


이제 문제에서 원하는 형태로 답을 만들면 됩니다.

문제에서는 strlwr(md5(경로|크기)) 형태로 문제의 답을 원하고 있습니다.

간단하게 프로그래밍 언어 아무거나 이용하면 아래와 같은 결과가 나옵니다.(필자는 python을 이용 하였습니다.)

[그림 5 - 문제에서 요구하는 형태의 답]

최종적으로 문제의 답은 "d3403b2653dbc16bbe1cfce53a417ab1" 입니다. 

  1. driver 2012.02.27 21:54

    좋은풀이 감사합니다 ^^ 아직 초보라그런데, 마지막 암호 코딩할때 hexdigest 의 함수는 무엇을 의미하는건가요? 내용을 16진수로 받아드린다는건가요? 출력을 16진수로 한다는건가요???

  2. 익명 2012.03.29 15:19

    비밀댓글입니다

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2012.03.29 15:48 신고

      헉.. ㅋ 답은 문제에서 제공하는 형태로 하면 될텐데요 ㅋ

+ Recent posts