Difference between revisions of "Email Headers"

From ForensicsWiki
Jump to: navigation, search
(Known Header Formats: - Wikified the text)
 
(10 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
== Making Sense of Headers ==
 
== Making Sense of Headers ==
  
There is no single way to make sense of email headers. Some examiners favor reading from the bottom up, some favor reading from the top down. Because information in the headers can be put there at any time (e.g. when the message is created, in transit, or by the reader's MUA), there is no single method for making sense of them.
+
There is no single way to make sense of email headers. Some examiners favor reading from the bottom up, some favor reading from the top down. Because information in the headers can be put there by the user's [[Mail User Agent|MUA]], a server in transit, or the recipient's [[Mail User Agent|MUA]], it can be difficult to determine when a line was added.
  
Many legitimate programs put data in a fixed order that can be validated. If parts of the data are not in the correct order or missing, the header can be shown to be forged. For example, if an email purports to have been sent by [[Apple Mail]] but has a Message-Id field that could not have been generated by that program, it has been forged.
+
=== Sender's IP Address ===
 +
{{main|IP addresses in webmail messages}}
 +
Some web-based email providers include the sender's IP address in the message headers. Some do not.
  
== Message Id Field ==
+
=== Mail User Agents ===
 +
{{main|List of MUA Header Formats}}
 +
Every [[Mail User Agent|MUA]] sets up the headers for a message slightly differently. Although some headers are required under the applicable [http://www.faqs.org/rfcs/rfc2822.html RFC], their format and ordering can vary by client. Almost all clients, however, add their headers in a fixed format and order.
 +
The examiner can use the format and order for each client to show that messages were forged, but not that they were legitimate. For example, if a message purports to be from [[Apple Mail]] but the order or the headers do not match the [[Apple Mail Header Format]], the message has been forged. If the headers of the message do match that format, however, it does not guarantee that the message was sent by that program.
  
According to the current guidelines for email ([http://www.faqs.org/rfcs/rfc2822.html RFC 2822]), every email should have a Message-ID field:
+
=== Servers in Transit ===
<pre>  The "Message-ID:" field provides a unique message identifier that
+
  refers to a particular version of a particular message.  The
+
  uniqueness of the message identifier is guaranteed by the host that
+
  generates it (see below).  This message identifier is intended to be
+
  machine readable and not necessarily meaningful to humans.  A message
+
  identifier pertains to exactly one instantiation of a particular
+
  message; subsequent revisions to the message each receive new message
+
  identifiers.
+
  
  ...
+
Mail servers can add lines onto email headers, usually in the form of "Received" lines, like this:
 +
<pre>Received: by servername.recipeienthost.com (Postfix, from userid 506)
 +
id 77C30808A; Sat, 24 Feb 2007 20:43:56 -0500 (EST)</pre>
  
  The message identifier (msg-id) itself MUST be a globally unique
+
== Message Id Field ==
  identifier for a message. The generator of the message identifier
+
{{main|Using message id headers to determine if an email has been forged}}. According to the current guidelines for email [http://www.faqs.org/rfcs/rfc2822.html], every message should have a Message-ID field. These id fields can be used to determine if a message has been forged. It is harder, but sometimes possible, to show that a message is authentic using the message id field. Where known, the Message-ID algorithms for known programs are [[List of MUA Header Formats|given on the separate pages for those programs]].
  MUST guarantee that the msg-id is unique.  There are several
+
  algorithms that can be used to accomplish this. Since the msg-id has
+
  a similar syntax to angle-addr (identical except that comments and
+
  folding white space are not allowed), a good method is to put the
+
  domain name (or a domain literal IP address) of the host on which the
+
  message identifier was created on the right hand side of the "@", and
+
  put a combination of the current absolute date and time along with
+
  some other currently unique (perhaps sequential) identifier available
+
  on the system (for example, a process id number) on the left hand
+
  side. Using a date on the left hand side and a domain name or domain
+
  literal on the right hand side makes it possible to guarantee
+
  uniqueness since no two hosts use the same domain name or IP address
+
  at the same time.  Though other algorithms will work, it is
+
  RECOMMENDED that the right hand side contain some domain identifier
+
  (either of the host itself or otherwise) such that the generator of
+
  the message identifier can guarantee the uniqueness of the left hand
+
  side within the scope of that domain.</pre>
+
  
Where known, the Message-ID algorithms for known programs are given on the separate pages for those programs.
+
== Signature Fields ==
 +
{{main|Using signature headers to determine if an email has been forged}}. Some email programs allow users to sign messages. This gives the recipient some assurance that the sender given in the message really sent the message. Obviously these headers can be used by an examiner for the same purpose.
  
 
+
== Sample Header ==  
== Known Header Formats ==
+
 
+
The format for the given headers are different for each [[Mail User Agent]]. We currently know the [[Apple Mail Header Format]] and [[Thunderbird Header Format]].
+
 
+
We would like to know the [[Outlook Header Format]], [[Outlook Express Header Format]], [[Microsoft Mail Header Format]], [[Yahoo! Mail Header Format]], and [[Gmail Header Format]]. Additions to this list are welcome.
+
 
+
== Example ==
+
  
 
This is an (incomplete) excerpt from an email header:
 
This is an (incomplete) excerpt from an email header:
Line 86: Line 62:
  
 
== External Links ==
 
== External Links ==
 
+
* [http://en.wikipedia.org/wiki/E-mail#Header Wikipedia entry on email headers]
* http://en.wikipedia.org/wiki/Computer_forensics#E-mail_Headers
+
* http://www.forensictracer.com software for forensic analysis of internet resources
+

Latest revision as of 09:04, 14 February 2009

Email Headers are lines of metadata attached to each email that contain lots of useful information for a forensic investigator. However, email headers can be easily forged, so they should never be used as the only source of information.

Making Sense of Headers

There is no single way to make sense of email headers. Some examiners favor reading from the bottom up, some favor reading from the top down. Because information in the headers can be put there by the user's MUA, a server in transit, or the recipient's MUA, it can be difficult to determine when a line was added.

Sender's IP Address

Some web-based email providers include the sender's IP address in the message headers. Some do not.

Mail User Agents

Every MUA sets up the headers for a message slightly differently. Although some headers are required under the applicable RFC, their format and ordering can vary by client. Almost all clients, however, add their headers in a fixed format and order. The examiner can use the format and order for each client to show that messages were forged, but not that they were legitimate. For example, if a message purports to be from Apple Mail but the order or the headers do not match the Apple Mail Header Format, the message has been forged. If the headers of the message do match that format, however, it does not guarantee that the message was sent by that program.

Servers in Transit

Mail servers can add lines onto email headers, usually in the form of "Received" lines, like this:

Received: by servername.recipeienthost.com (Postfix, from userid 506)
	id 77C30808A; Sat, 24 Feb 2007 20:43:56 -0500 (EST)

Message Id Field

Main article Using message id headers to determine if an email has been forged. According to the current guidelines for email [1], every message should have a Message-ID field. These id fields can be used to determine if a message has been forged. It is harder, but sometimes possible, to show that a message is authentic using the message id field. Where known, the Message-ID algorithms for known programs are given on the separate pages for those programs.

Signature Fields

Main article Using signature headers to determine if an email has been forged. Some email programs allow users to sign messages. This gives the recipient some assurance that the sender given in the message really sent the message. Obviously these headers can be used by an examiner for the same purpose.

Sample Header

This is an (incomplete) excerpt from an email header:

Received: from lists.securityfocus.com (lists.securityfocus.com [205.206.231.19])
        by outgoing2.securityfocus.com (Postfix) with QMQP
        id 7E9971460C9; Mon,  9 Jan 2006 08:01:36 -0700 (MST)
Mailing-List: contact forensics-help@securityfocus.com; run by ezmlm
Precedence: bulk
List-Id: <forensics.list-id.securityfocus.com>
List-Post: <mailto:forensics@securityfocus.com>
List-Help: <mailto:forensics-help@securityfocus.com>
List-Unsubscribe: <mailto:forensics-unsubscribe@securityfocus.com>
List-Subscribe: <mailto:forensics-subscribe@securityfocus.com>
Delivered-To: mailing list forensics@securityfocus.com
Delivered-To: moderator for forensics@securityfocus.com
Received: (qmail 20564 invoked from network); 5 Jan 2006 16:11:57 -0000
From: YJesus <yjesus@security-projects.com>
To: forensics@securityfocus.com
Subject: New Tool : Unhide
User-Agent: KMail/1.9
MIME-Version: 1.0
Content-Disposition: inline
Date: Thu, 5 Jan 2006 16:41:30 +0100
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Message-Id: <200601051641.31830.yjesus@security-projects.com>
X-HE-Spam-Level: /
X-HE-Spam-Score: 0.0
X-HE-Virus-Scanned: yes
Status: RO
Content-Length: 586
Lines: 26

External Links