Difference between pages "Email Headers" and "Network forensics"

From ForensicsWiki
(Difference between pages)
Jump to: navigation, search
m (Servers in Transit)
 
m (Deep-Analysis Systems)
 
Line 1: Line 1:
'''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.
+
'''Network forensics''' is the process of capturing information that moves over a [[network]] and trying to make sense of it in some kind of forensics capacity. A [[network forensics appliance]] is a device that automates this process.
  
== Making Sense of Headers ==
+
There are both open source and proprietary network forensics systems available.
  
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.
+
== Open Source Network Forensics ==
  
=== Mail User Agents ===
+
* [[Snort]]
 +
* [[OSSEC]]
  
Every [[Mail User Agent|MUA]] sets up the headers for a message slightly differently. The format and order of the entries can vary slightly under the ([http://www.faqs.org/rfcs/rfc2822.html RFC]. The examiner can use this 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.  
+
== Commercial Network Forensics ==
 +
===Deep-Analysis Systems===
 +
* Code Green Networks [http://www.codegreennetworks.com Content Inspection Appliance] - Passive monitoring and mandatory proxy mode. Simple to us Web GUI. Linux platform. Uses Stellent Outside In to access document content and metadata.
 +
* ManTech International Corporation [http://www.netwitness.com/ NetWitness]
 +
* NIKSUN's [[NetDetector]]
 +
* Sandstorm's [http://www.sandstorm.net/products/netintercept/ NetIntercept] - Passive monitoring appliance. Qt/X11 GUI. FreeBSD platform. Uses forensic parsers written by Sandstorm to access document content and metadata.
  
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.
+
===Flow-Based Systems===
 +
* Arbor Networks
 +
* GraniteEdge Networks http://www.graniteedgenetworks.com/
 +
* Lanscope http://www.lancope.com/
 +
* Mazu Networks http://www.mazunetworks.com/
 +
* Q1 Labs  http://www.q1labs.com/
  
=== Servers in Transit ===  
+
== Tips and Tricks ==
  
Mail servers can add lines onto email headers, usually in the form of "Received" lines, like this:
+
* The time between two events triggered by an intruder (as seen in logfiles, for example) can be helpful. If it is very short, you can be pretty sure that the actions were performed by an automated script and not by a human user.
<pre>Received: by servername.recipeienthost.com (Postfix, from userid 506)
+
id 77C30808A; Sat, 24 Feb 2007 20:43:56 -0500 (EST)</pre>
+
 
+
== Message Id Field ==
+
 
+
According to the current guidelines for email [http://www.faqs.org/rfcs/rfc2822.html RFC 2822]), every email should have a Message-ID field:
+
<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.
+
 
+
  ...
+
 
+
  The message identifier (msg-id) itself MUST be a globally unique
+
  identifier for a message.  The generator of the message identifier
+
  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.
+
 
+
== Message Id Field ==
+
 
+
According to the current guidelines for email [http://www.faqs.org/rfcs/rfc2822.html RFC 2822]), every email should have a Message-ID field:
+
<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.
+
 
+
  ...
+
 
+
  The message identifier (msg-id) itself MUST be a globally unique
+
  identifier for a message.  The generator of the message identifier
+
  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.
+
 
+
 
+
== 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 ==
+
 
+
* http://en.wikipedia.org/wiki/Computer_forensics#E-mail_Headers
+
* http://www.forensictracer.com software for forensic analysis of internet resources
+

Revision as of 12:18, 12 February 2007

Network forensics is the process of capturing information that moves over a network and trying to make sense of it in some kind of forensics capacity. A network forensics appliance is a device that automates this process.

There are both open source and proprietary network forensics systems available.

Open Source Network Forensics

Commercial Network Forensics

Deep-Analysis Systems

  • Code Green Networks Content Inspection Appliance - Passive monitoring and mandatory proxy mode. Simple to us Web GUI. Linux platform. Uses Stellent Outside In to access document content and metadata.
  • ManTech International Corporation NetWitness
  • NIKSUN's NetDetector
  • Sandstorm's NetIntercept - Passive monitoring appliance. Qt/X11 GUI. FreeBSD platform. Uses forensic parsers written by Sandstorm to access document content and metadata.

Flow-Based Systems

Tips and Tricks

  • The time between two events triggered by an intruder (as seen in logfiles, for example) can be helpful. If it is very short, you can be pretty sure that the actions were performed by an automated script and not by a human user.