포렌식 업무에 있어서 이메일을 분석 해 역추적 해 나가는 부분은 사실 자주 있는 일이 아니다. 

하지만 포렌식 업무 분석 과정에서 이메일이 분석대상에 포함되어 있다면 당연히 분석을 해야 하지만 이메일 헤더를 알지 못하고서는 정확히 분석하기가 어렵다. 

이 글에서는 이메일 헤더 별로 어떠한 의미를 지니는지 알아볼 것이다.

각 메일서비스를 제공하는 회사마다 메일 헤더는 조금씩 다르다. 하지만 그 기본 구조는 동일하여 분석하는데 아무런 문제가 되지 않는다.

아래는 이메일 헤더의 예시이다.

Received: (qmail 18671 invoked from network); 2 Apr 2012 09:43:05 -0000

Received: from 114.111.38.25 (HELO trcvmail12-1.nm.naver.com) (114.111.38.25)

  by tmda13-2.nm.naver.com with SMTP; 2 Apr 2012 09:43:05 -0000

Received: from [66.220.144.139] ([66.220.144.139]) 

          by trcvmail12-1.nm.naver.com ([202.131.27.71]) 

          with ESMTP id 1333359784.766907.3619679120.trcvmail12-1

          for <xxx@naver.com>; 

          Mon, 02 Apr 2012 18:42:27 +0900 (KST) 

Return-Path: <notification+zrdo6ig=lzgz@facebookmail.com>

DKIM-Signature: v=1; a=rsa-sha256; d=facebookmail.com; s=s1024-2011-q2; c=relaxed/simple;

q=dns/txt; i=@facebookmail.com; t=1333359784;

h=From:Subject:Date:To:MIME-Version:Content-Type;

bh=MynJ4HcdGV+jLma9/+h080zYMjRp5b4Skhq7XawtqeU=;

b=ftf2lkO1ErQyg2yQOSYQ4taT+BWcX46HzfxyI/Y6vPrd5baaiAKOfT6RPDc47zRs

kfCMa8aXtmIQqRxi51oEv3OcxHd/4U9v+WA+X7cFKnK88p+fdAJb4nXgXsYYBsNW

BaCk1PVB57RIyacZzJvqiD0lUUA+2X9vhVaN+rOd/38=;

Received: from [10.42.44.63] ([10.42.44.63:58545])

by smout005.snc4.facebook.com (envelope-from <notification+zrdo6ig=lzgz@facebookmail.com>)

(ecelerity 2.2.2.45 r(34222M)) with ECSTREAM

id 55/A2-14651-8A4797F4; Mon, 02 Apr 2012 02:43:04 -0700

X-Facebook: from zuckmail ([MTI3LjAuMC4x]) 

by m.facebook.com with HTTP (ZuckMail);

Date: Mon, 2 Apr 2012 02:43:04 -0700

To: xxx <xxx@naver.com>

From: "Facebook" <notification+zrdo6ig=lzgz@facebookmail.com>

Reply-to: noreply <noreply@facebookmail.com>

Subject: =?UTF-8?B?7J6l6rCV7Z2sIGlzIGF0IOqxtOq1reuMgO2Vmeq1kA==?=

 =?UTF-8?B?IOyDge2XiOq4sOuFkOuPhOyEnOq0gDogIuu5hOuPhCDrgrQ=?=

 =?UTF-8?B?66as6rOgIOyLnOqwhOuPhCDriqbsl4jsp4Drp4wg7IiY7JeFIA==?=

 =?UTF-8?B?64Gd64KY6rOgIOynkeyXkCDqsIDroKTri4jquZAg6riw67aE7J20?=

 =?UTF-8?B?IOyhsOycvOuLpC4gIO2VmOyngOunjCDsoJXsi6DsnYQg?=

 =?UTF-8?B?7LCo66Ck67O064uIIOy5uOunieydtOqwgCDss5Dsp4Qg7J20IA==?=

 =?UTF-8?B?7KGw7Jqp7ZWcIOyepeyGjOyXkCDsmYDsnoguLi4=?=

X-TERRACE-DUMMYSUBJECT: Terrace Spam system                                  *

Message-ID: <ca695c06be6574c1ec0984a13e62d44f@m.facebook.com>

X-Priority: 3

X-Mailer: ZuckMail [version 1.00]

Errors-To: notification+zrdo6ig=lzgz@facebookmail.com

X-Facebook-Notify: close_friend_activity; mailid=5e371d6G5af39c15a96dG90f951G79

X-FACEBOOK-PRIORITY: 0

MIME-Version: 1.0

Content-Type: multipart/alternative;

boundary="b1_ca695c06be6574c1ec0984a13e62d44f"

X-TERRACE-SUPERWHITEIP: 88212

X-Naver-ESV: +sFYpB3G1Hbqa0ixyueaKV/ZKZ0Y7BmmaxtqKAkYkXm=

기본적인 주소 정보는 From 과 To 라인에 정의되어 있고, 메일의 내용을 담고 있는 부분은 Subject와 Content 부분이다. 

메일의 발송 경로는 Received 부분에 정의되어 있는데 가장 이 부분을 주목해서 봐야 한다. 스팸메일 발송 근원지를 추적 할 때 중요하게 여겨지는 부분이기 때문이다.

메일에는 고유한 식별자 값이 부여되는데 그 부분은 Message-ID 라인 부분이다. 

앞서 말했듯이 이메일 헤더는 조금씩 그 구성요소 구조들이 다르다고 하였지만 기본적으로 아래와 같은 구조를 가진다.

제일 중요한 Received 부분을 보도록 하겠다.

Received: from (1)

by (2)

with (3) id (4)

        for (5);

        (6)


(1) : 이 부분은 메일을 발송하는 서버의 주소 또는 호스트이름을 명시하는 부분으로 메일을 처음 발송하는 부분이 될 수도 있고 중간 경유지가 될 수도 있다.

(2) : 해당 메일을 받는 서버의 호스트이름이나 주소

(3) : SMTP와 같은 메일 프로토콜

(4) : 해당 메일이 발송되는 서버나 수신되는 서버에서 해당 메일이 구분되어질 수 있는 고유한 식별자(Message-ID)

(5) : 수신 받는 사용자의 이메일 주소

(6) : 해당 메일이 수신된 날짜와 시간


메일의 헤더내용은 수정이 가능하다는 단점이 존재하여 이메일 헤더의 내용을 모두 믿어서는 안된다. 

 * 참고 : Message-ID는 메일을 발송하는 서버가 메일에 부여하는 고유한 식별자 값이다.

'[+] Forensic' 카테고리의 다른 글

Mac OS X - Live Response (1)  (0) 2012.04.29
디지털 포렌식과 하둡에 관한 고찰  (0) 2012.04.09
이메일 헤더 분석  (0) 2012.04.02
File System - HFS+ (5)  (0) 2012.03.24
File System - HFS+ (4)  (0) 2012.03.23

+ Recent posts