본문 바로가기

정보보안/Forensics

[forensicscontest.com] evidence02 (SKS 포렌식 스터디 week2)

forensicscontest.com의 evidence02 문제 https://forensicscontest.com/2009/10/10/puzzle-2-ann-skips-bail입니다. 이번 문제는 네트워크 포렌식 도구인 wireshark를 사용해서 네트워크 패킷 내용을 살펴보는 문제입니다.

 

Puzzle #2: Ann Skips Bail – Network Forensics Puzzle Contest

After being released on bail, Ann Dercover disappears! Fortunately, investigators were carefully monitoring her network activity before she skipped town. “We believe Ann may have communicated with her secret lover, Mr. X, before she left,” says the pol

forensicscontest.com

 

evidence02.pcap
0.32MB

 

 

After being released on bail, Ann Dercover disappears! Fortunately, investigators were carefully monitoring her network activity before she skipped town. “We believe Ann may have communicated with her secret lover, Mr. X, before she left,” says the police chief. “The packet capture may contain clues to her whereabouts.” You are the forensic investigator. Your mission is to figure out what Ann emailed, where she went, and recover evidence including:

 

1. What is Ann’s email address?

2. What is Ann’s email password?

3. What is Ann’s secret lover’s email address?

4. What two items did Ann tell her secret lover to bring?

5. What is the NAME of the attachment Ann sent to her secret lover?

6. What is the MD5sum of the attachment Ann sent to her secret lover?

7. In what CITY and COUNTRY is their rendez-vous point?

8. What is the MD5sum of the image embedded in the document?

 

문제를 살펴보니 Ann과 Mr.X라는 사람이 주고받은 메일 내용을 살펴봐야 할 것 같네요. Wireshark로 패킷 파일을 열어서 살펴보겠습니다.

 

 

 

1번부터 572번까지 패킷이 수집된 시간, 보낸 위치와 수신 위치, 프로토콜과 패킷 길이, 내용이 순서대로 나와있습니다. 먼저 Ann의 이메일 주소와 비밀번호를 알아내야 하니 로그인과 관련된 부분을 찾아봐야 할 것 같습니다. SMTP 프로토콜을 이용한 패킷 중 AUTH LOGIN이라는 문자열을 포함한 패킷이 있네요. SMTP 프로토콜은 메일 송수신에 관련된 프로토콜인데요, 메일을 보내는데 필요한 로그인 부분도 SMTP 프로토콜을 사용해서 하는 것으로 보입니다. 

 

 

 

63번째 패킷과 66번째 패킷을 보니 User와 Pass에 해당하는 문자열이 보이고, 68번째 패킷을 보니 AUTHENTICATION 

SUCCESSFUL이라는 문자열이 보입니다. Ann은 해당 이메일 주소와 비밀번호를 입력해서 로그인에 성공한 것 같습니다.

 

 

 

Wireshark 화면에서 패킷 왼쪽 아래 부분을 보면 패킷의 내용을 자세히 볼 수 있고, 오른쪽 아래에는 패킷 내용을 바이트 단위로 볼 수 있습니다. Username: c25lYWt5ZzMza0Bhb2wuY29t, Password: NTU4cjAwbHo=라는 내용을 확인할 수 있습니다. Base64로 인코딩된 내용 같으니 복호화를 해보면

Username: sneakyg33k@aol.com

Password: 558r00lz

다음과 같이 복호화됩니다.

간단하게 암호화된 내용들은 https://dencode.com/에서 빠르게 복호화할 수 있습니다.

 

 

DenCode | Encoding & Decoding Online Tools

Encoding and Decoding site. e.g. HTML Escape / URL Encoding / Base64 / MD5 / SHA-1 / CRC32 / and many other String, Number, DateTime, Color, Hash formats!

dencode.com

 

 

다음으로 Mr.x의 이메일 주소를 알아내야 하는데요, SMTP 프로토콜을 이용한 패킷만 모아서 보면 빠르게 확인할 수 있을 것 같습니다. 필터로 적용하기를 이용해 SMTP 패킷만 보겠습니다. 

 

 

 

먼저 Ann이 sec558@gmail.com으로 보낸 메일이 보입니다. 78번째 패킷의 길이가 1402인것을 보니 저기에 내용이 들어있을 것 같습니다. 패킷 내용을 더블클릭해서 내용을 확인하겠습니다.

 

 

 

Line-based text data (40 lines)
    Message-ID: <000901ca49ae$89d698c0$9f01a8c0@annlaptop>\r\n
    From: "Ann Dercover" <sneakyg33k@aol.com>\r\n
    To: <sec558@gmail.com>\r\n
    Subject: lunch next week\r\n
    Date: Sat, 10 Oct 2009 07:35:30 -0600\r\n
    MIME-Version: 1.0\r\n
    Content-Type: multipart/alternative;\r\n
    \tboundary="----=_NextPart_000_0006_01CA497C.3E4B6020"\r\n
    X-Priority: 3\r\n
    X-MSMail-Priority: Normal\r\n
    X-Mailer: Microsoft Outlook Express 6.00.2900.2180\r\n
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180\r\n
    \r\n
    This is a multi-part message in MIME format.\r\n
    \r\n
    ------=_NextPart_000_0006_01CA497C.3E4B6020\r\n
    Content-Type: text/plain;\r\n
    \tcharset="iso-8859-1"\r\n
    Content-Transfer-Encoding: quoted-printable\r\n
    \r\n
    Sorry-- I can't do lunch next week after all. Heading out of town. =\r\n
    Another time! -Ann\r\n
    ------=_NextPart_000_0006_01CA497C.3E4B6020\r\n
    Content-Type: text/html;\r\n
    \tcharset="iso-8859-1"\r\n
    Content-Transfer-Encoding: quoted-printable\r\n
    \r\n
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r\n
    <HTML><HEAD>\r\n
    <META http-equiv=3DContent-Type content=3D"text/html; =\r\n
    charset=3Diso-8859-1">\r\n
    <META content=3D"MSHTML 6.00.2900.2853" name=3DGENERATOR>\r\n
    <STYLE></STYLE>\r\n
    </HEAD>\r\n
    <BODY bgColor=3D#ffffff>\r\n
    <DIV><FONT face=3DArial size=3D2>Sorry-- I can't do lunch next week =\r\n
    after all.=20\r\n
    Heading out of town. Another time! -Ann</FONT></DIV></BODY></HTML>\r\n
    \r\n
    ------=_NextPart_000_0006_01CA497C.3E4B6020--\r\n

 

라는 내용이 들어있습니다. 메일 수신자, 발신자, 메일 내용 등이 담겨있네요. Reassembled DATA in frame: 80이라는 문구가 패킷 마지막에 적혀있습니다. 

 

 

 

80번 패킷은 SMTP/IMF 프로토콜을 사용한 패킷인데요, 패킷 내용을 살펴보니 IMF는 Internet Message Format의 약자인 것 같습니다. 메일 내용이 더 읽기 편하게 정리되어있습니다.

 

내용을 읽어보니 Mr.X에게 보낸 메일은 아니지만 메일 내용을 확인할 수 있는 패킷 형식을 알아낸 것 같습니다. 다시 SMTP 패킷을 살펴보며 Mr.X에게 보낸 메일을 찾아야겠습니다. 

 

 

 

패킷을 내려보면 mistersecretx@aol.com이라는 메일 주소로 Ann이 보낸 메일이 눈에 띕니다. Mr.X의 메일 주소는 알아냈으니 메일 내용을 살펴보겠습니다. 

 

 

 

패킷 내용을 보니 Mr.X에게 fake passport와 bathing suit를 가져오라고 합니다. 이번 메일의 데이터는 너무 길어서 여러 개의 패킷으로 나눠서 전송되었는데, 첨부 파일의 크기가 커서 그런 것 같습니다. 557번째 패킷의 내용을 읽어보겠습니다.

 

Internet Message Format
    Message-ID: <001101ca49ae$e93e45b0$9f01a8c0@annlaptop>
    From: "Ann Dercover" <sneakyg33k@aol.com>, 1 item
        Item: "Ann Dercover" <sneakyg33k@aol.com>\r\n
            Display-Name: "Ann Dercover"
            Address: sneakyg33k@aol.com
    To: <mistersecretx@aol.com>, 1 item
    Subject: rendezvous
    Date: Sat, 10 Oct 2009 07:38:10 -0600
    MIME-Version: 1.0
    Content-Type: multipart/mixed;\r\n\tboundary="----=_NextPart_000_000D_01CA497C.9DEC1E70"
        Type: multipart/mixed
        Parameters: \r\n\tboundary="----=_NextPart_000_000D_01CA497C.9DEC1E70"
    Unknown-Extension: X-Priority: 3 (Contact Wireshark developers if you want this supported.)
        Type: X-Priority
        Value: 3
    Unknown-Extension: X-MSMail-Priority: Normal (Contact Wireshark developers if you want this supported.)
        Type: X-MSMail-Priority
        Value: Normal
    X-Mailer: Microsoft Outlook Express 6.00.2900.2180
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
    MIME Multipart Media Encapsulation, Type: multipart/mixed, Boundary: "----=_NextPart_000_000D_01CA497C.9DEC1E70"
        [Type: multipart/mixed]
        Preamble: 546869732069732061206d756c74692d70617274206d65737361676520696e204d494d4520666f726d61742e0d0a0d0a
        First boundary: ------=_NextPart_000_000D_01CA497C.9DEC1E70\r\n
        Encapsulated multipart part:  (multipart/alternative)
            Content-Type: multipart/alternative;\r\n\tboundary="----=_NextPart_001_000E_01CA497C.9DEC1E70"\r\n\r\n
            MIME Multipart Media Encapsulation, Type: multipart/alternative, Boundary: "----=_NextPart_001_000E_01CA497C.9DEC1E70"
                [Type: multipart/alternative]
                Preamble: 0d0a
                First boundary: ------=_NextPart_001_000E_01CA497C.9DEC1E70\r\n
                Encapsulated multipart part:  (text/plain)
                    Content-Type: text/plain;\r\n\tcharset="iso-8859-1"\r\n
                    Content-Transfer-Encoding: quoted-printable\r\n\r\n
                    Line-based text data: text/plain (2 lines)
                        Hi sweetheart! Bring your fake passport and a bathing suit. Address =\r\n
                        attached. love, Ann
                Boundary: \r\n------=_NextPart_001_000E_01CA497C.9DEC1E70\r\n
                Encapsulated multipart part:  (text/html)
                    Content-Type: text/html;\r\n\tcharset="iso-8859-1"\r\n
                    Content-Transfer-Encoding: quoted-printable\r\n\r\n
                    Line-based text data: text/html (11 lines)
                        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r\n
                        <HTML><HEAD>\r\n
                        <META http-equiv=3DContent-Type content=3D"text/html; =\r\n
                        charset=3Diso-8859-1">\r\n
                        <META content=3D"MSHTML 6.00.2900.2853" name=3DGENERATOR>\r\n
                        <STYLE></STYLE>\r\n
                        </HEAD>\r\n
                        <BODY bgColor=3D#ffffff>\r\n
                        <DIV><FONT face=3DArial size=3D2>Hi sweetheart! Bring your fake passport =\r\n
                        and a=20\r\n
                        bathing suit. Address attached. love, Ann</FONT></DIV></BODY></HTML>\r\n
                Last boundary: \r\n------=_NextPart_001_000E_01CA497C.9DEC1E70--\r\n
        Boundary: \r\n------=_NextPart_000_000D_01CA497C.9DEC1E70\r\n
        Encapsulated multipart part:  (application/octet-stream)
            Content-Type: application/octet-stream;\r\n\tname="secretrendezvous.docx"\r\n
            Content-Transfer-Encoding: base64\r\n
            Content-Disposition: attachment;\r\n\tfilename="secretrendezvous.docx"\r\n\r\n
            Data (283864 bytes)
                Data [truncated]: 554573444242514142674149414141414951446c6555414766774541414e6346414141544141674357304e76626e526c626e526656486c775a584e644c6e6874624343694241496f6f4141430d0a41414141414141414141414141414141414141414141414141414141414141414
                [Length: 283864]
        Last boundary: \r\n------=_NextPart_000_000D_01CA497C.9DEC1E70--\r\n
        Trailer: 0d0a
  

Ann과 Mr.X가 만날 장소는 secretrendezvous.docx라는 파일에 들어있고, 283864 바이트의 데이터인것으로 보입니다. 

 

첨부파일 데이터 내용도 base64로 인코딩되어있기 때문에 이걸 복호화해서 파일로 만들면 docx 파일 하나가 만들어지게 됩니다. 이름을 secretrendezvous.docx로 설정하고 내용을 읽어보면 내용을 확인할 수 있습니다.

 

 

 

md5sum 명령어로 md5sum 값을 확인해보니 9e423e11db88f01bbff81172839e1923라는 값이 나왔습니다. 메일에 들어있는 사진을 살펴보니 Playa del Carmen이라는 Mexico의 장소에서 만나자고 하고 있네요.

 

docx 파일에 들어있는 사진 파일의 원본을 추출하려면 docx 파일을 zip 파일로 바꾸면 된다고 합니다. 1주차 스터디를 하면서 docx 파일과 zip 파일의 파일 구조가 같다는 것을 알게 되었는데 그래서 파일 확장자만 바꿔서 내부 파일을 추출할 수 있는 것 같습니다.

 

 

 

사진 파일은 압축 파일 내의 word/media/ 폴더 안에 있습니다. md5sum 값을 확인하니 aadeace50997b1ba24b09ac2ef1940b7라는 값이 나왔습니다.

 

문제를 다 풀고 나서 검색해보니 이메일 내용을 담은 패킷을 .eml 파일로 저장하면 이메일 형식으로 내용을 읽을 수 있다는 것을 알게 되었습니다. 첨부파일 다운로드도 이렇게 하는 편이 훨씬 빠르고 편할 것 같습니다.