从邮件到邮件取证

电子邮件取证在现代司法调查中扮演着重要角色,尤其是在解决涉及电子邮件的案件时。随着电子数据被正式纳入证据种类,电子邮件证据的可靠性和验证方法也显得尤为重要。

现代司法调查中涉及电子邮件取证的实例应用包括:电子邮件泄露、邮件诈骗、钓鱼邮件、垃圾邮件、合同纠纷、企业内部调查等。熟悉电子邮件的结构及其整个生命周期的传递过程是解决电子邮件相关案件的技术前提。

 1.电子邮件概述

1.1什么是电子邮件

电子邮件(e-mail)是一种利用互联网在发送方和接收方系统之间快速交换信息的方法。您甚至可以将图像、视频和音频文件等非文本文件作为附件发送,它属于异步通信媒介。具有传递迅速和费用低廉的优点,自互联网建立以来就开始流行,随着互联网的不断发展,电子邮件也变得越来越便捷高效,时至今日电子邮件仍然是现代互联网最重要和实用的应用程序之一。

1.2电子邮件系统的组成

电子邮件系统由三大组件构成,包括:用户代理(User Agent)邮件服务器(Mail Server)邮件发送协议和读取协议

用户代理又称为:电子邮件客户端,它向用户提供了一个友好的接口,方便终端用户撰写、收发、阅读、转发和保存邮件。微软Outlook、苹果Apple Mail、基于Web的Gmail和移动终端的Gmail都是电子邮件用户代理的例子。

邮件服务器又称为:邮件传输代理,是形成电子邮件体系结构的核心。它的功能是发送和接收邮件,同时还要向发件人报告邮件传送结果。

1.3电子邮件的通信过程

一封邮件的成功发送不仅需要发送协议:简单邮件传输协议SMTP。还需要读取协议比如:邮局协议POP3因特网邮件访问协议IMAP。

图解用户Doris发送邮件给Stephen的过程。

  • 发件人Doris通过调用计算机中的用户代理撰写了一封电子邮件;
  • 当Doris点击屏幕上“发送邮件”按钮后,其余的工作就交给Doris的用户代理来完成了。用户代理把邮件用SMTP协议发送给Doris的邮件服务器。用户代理充当SMTP的客户,Doris的邮件服务器充当SMTP的服务器;
  • SMTP服务器收到Doris的代理发来的邮件后,就把邮件临时存放在邮件缓存队列中,等待发送到Stephen的邮箱服务器;
  • Doris邮件服务器的SMTP客户与Stephen邮件服务器的SMTP服务器基于TCP建立连接,然后把邮件缓存队列的邮件依次发送出去。值得注意的是:邮件不会在互联网中的某个中间邮件服务器落地。如果SMTP客户无法和SMTP服务器建立TCP连接,那么要发送的邮件会继续保存在Doris的邮件服务器中,并在稍后一段时间再进行新的尝试。如果SMTP客户超过了规定的时间还不能把邮件发送出去,那么Doris的邮件服务器就会把这种情况通知用户代理。
  • 运行在Stephen邮件服务器的SMTP服务器进程收到邮件后,把邮件放入Stephen的用户邮箱当中,等待Stephen进行读取。
  • Stephen在打算收信时,就运行他计算机的代理程序,使用POP3(或IMAP)协议读取Doris发送给他的邮件。这个过程是POP3客户把邮件从POP3服务器“拉”过来的。

1.4电子邮件的地址格式

TCP/IP体系的电子邮件系统规定电子邮件地址的格式为:

收件人邮箱名 @ 邮箱所在服务器域名

2.简单邮件传输协议SMTP(Simple Mail Transfer Protocol)

SMTP是TCP/IP协议簇中主机间传输邮件的标准协议,由RF822所定义。适用于用户代理向邮件服务器或者邮件服务器之间发送邮件。

SMTP和大多数应用层协议一样有两个部分,运行在发送方邮件服务器的客户端和运行在接收方邮件服务器的服务器端。每台邮件服务器上即运行SMTP的客户端也运行SMTP的服务器端。

SMTP的工作流程好似人与人之间相互交流前的自我介绍一般,服务器和用户代理会在建立连接后执行某些应用层的握手。举例客户(C)主机名:crepes.fr和SMTP服务器(S)主机名:hamburger.edu之间交换报文的过程。

HELLO:这是SMTP会话开始时使用的第一个命令,用于建立与接收邮件服务器的联系。发件方以此来向服务器标识自己身份,HELLO后通常是发件方的服务器地址或者域名。

MAIL FROM:用于标识邮件的发件人,启动邮件传输过程。此命令后跟随的是发件人的电子邮件地址。

RCPT TO:该命令用于标识邮件的一个或多个收件人。它可以多次使用,以添加多个收件人地址到当前邮件的传输中。

DATA:在MAIL FROM和RCPT TO命令之后,DATA命令告诉服务器接下来的数据是邮件的实际内容。服务器接收到DATA命令后,会将随后的数据视为邮件内容,直到遇到单独一行的“.”作为结束标志。

QUIT:所有的邮件发送完毕后,通常用QUIT来结束SMTP会话,关闭与服务器的链接。

注意:

SMTP一般不使用中间邮件服务器发送邮件,即使这两台服务器位于地球两端。

SMTP只能采用7比特的ASCII表示,不能是其他编码。

MAIL FROM命令后的地址可任意填写,给垃圾邮件提供了方便。

3.邮局协议POP3和因特网邮件访问协议IMAP

要知道SMTP是一个推协议,如果接收方想要通过用户代理获得邮件服务器上的邮件,需要借助读取协议,也就是因特网邮件访问协议IMAP(Internet Mail Access Protocol)或者邮局协议POP3(Post Office Protocol 3)

邮局协议第3版即POP3,是在RFC1399定义的因特网标准,POP3支持邮件收取的基本功能。

IMAP作为一个拉协议,同样是基于TCP链接实现客户与服务器之间的通信,是一个联机协议。IMAP第4版是IMAP的最新版本,由RFC3501定义,相较POP3改进了它的不足,并且拥有更多的功能与特性。

IMAP和POP3两种协议都按照客户服务器方式工作,但仍然有很大的不同

IMAP和POP3主要功能对比

操作位置

操作内容

IMAP

POP3

收件箱

阅读、标记、移动、删除邮件等

客户端与邮箱同步更新

仅客户端

发件箱

保存到已发送

客户端与邮箱同步更新

仅客户端

创建文件夹

新建自定义文件夹

客户端与邮箱同步更新

仅客户端

草稿

保存草稿

客户端与邮箱同步更新

仅客户端

垃圾文件夹

接收并移入垃圾文件夹的邮件

支持不支持

广告邮件

接收并移入广告邮件夹的邮件

支持不支持

4.通用互联网邮件扩充MIME

由于SMTP只能采用7位的ASCII码进行传输,且拒绝超过一定长度的邮件。因此1996年发布了通用互联网邮件扩充MIME(Multipurpose Internet Mail Extensions)作为对传统电子邮件的扩展,由RFC2045定义。MIME定义了许多邮件内容的格式,标准化了多媒体电子邮件的表示方法,定义了传送编码,可对任何内容格式进行转换。

MIME标准规定Content-Type说明必须含有两个标识符,“内容(type)”和“子类型(subtype)”,中间以“/”分开。

列举MIME Content Type中常见类型和子类型

内容(type)

子类型(subtype)

说明

text(文本)

plain,html,xml,css

不同格式的文本

image(图像)

gif,jpeg,tiff

不同格式的静止图像

sudio(音频)

basic,mpeg,mp4

可听见的声音

video(视频)

mpeg,mp4,quicktime

不同格式的影片

model(模型)

vrml

3D模型

application(应用)

octet-stream,pdf,javascript,zip

不同APP产生的数据

message(报文)

http,rfc822

封装的报文

multipart(多部分)

mixed,alternative,parallet,digest

多种类型的组合

其中multipart内容类型大大增加了邮件的灵活性,它的四个子类型每一个都提供重要的功能

multipart子类型

功能

mixed

允许单个报文含有多个互相独立的子报文,每个自保温可以有自己的类型和编码。用户可以在单个报文中附上文本、图形和声音,或者用额外的数据段发送一个备忘录,类似商业信笺中的附件。mixed后面还会用到一个关键字Boundary=,它定义了分隔报文各部分所用的连字符(由邮件系统生成)。当某一行以两个连字符“--”开始,后面紧跟着上述字符串,就代表下面开始了另一个子报文。

alternative

允许单个报文含有同一数据的多种表示。用户可同时用普通ASCII文本和格式化的形式发送文本,从而允许有图形功能的计算机用户在查看图形时选择格式化的形式。

parallet

允许单个报文含有可同时显示的各个子部分

digest

允许单个报文含有一组其他报文

举例一封邮件中的MIME语句所代表的含义

①指明这封邮件使用了MIME规范

②表明邮件信息内容是不同类型的混合;信件内容的分割线是“--000000000000a40f9305fba032ff”(通常是个很长的随机字符)

③表明邮件内容的第一部分,是"UTF-8"编码的纯文本,编码转换格式是:“base64”

④表明邮件内容的第二部分,是"UTF-8"编码的html文本,编码转换格式是“quoted-printable”

5.电子邮件信息的格式

一封电子邮件分为“内容(content)”和“信封(envelope)”两部分。

“内容”由“首部(header)”和“主体(body)”构成。2008年更新的RFC5322文档中定义了邮件内容的首部(header)和它们的语义解释的精确格式。首部后,紧接着一个空白行,然后是以ASCII格式表示的邮件“主体(body)”,此部分由用户自由撰写。

一个典型的邮件内容首部(header)如下:

“信封”的一部分信息由邮件系统自动生成,用户写好“首部(header)”后,邮件系统自动将信封所需信息提取出来写在信封上;另一部分是邮件通过SMTP服务器时被加上的。在所有被SMTP服务器加上的字段中,对取证而言重要的是Message-ID字段。这个字段是邮件传输过程中SMTP服务器赋予邮件的唯一标识符。可用这个号码作为邮件的编号。当然如果一封邮件发送过程中经过了若干个邮件服务器,那每个服务器都可能给这封邮件赋予一个Message-ID作为它的唯一编号。

6.邮件取证

6.1邮件头分析

除了对邮件内容的取证之外,分析邮件头所包含的信息对于如何追踪这封电子邮件的来源,或者能否确定电子邮件发件人的真实IP地址有相当大的帮助。在调查匿名邮件或者欺诈邮件案件时更多会关注到邮件头内包含的重要信息。

这里所说的邮件头就是前文给出的“信封envelope”。它的一部分信息由邮件系统自动生成,其中包括用户在邮件内容的“首部(header)”中填写的信息;另一部分是邮件在传输过程中通过SMTP服务器时被加上的。

Doris发送邮件给Stephen的过程中,邮件先是由Doris的用户代理发送给Doris的邮件服务器,而后Doris邮件服务器又发送给Stephen的邮件服务器,最后Stephen登录自己的用户代理,收取来自Stephen邮件服务器上的邮件。

在这个邮件传输的过程中,邮件头三次被加入到邮件中:

第一次是Doris使用邮件客户端编辑邮件时;

第二次是邮件被发送到Doris的邮件服务器时;

第三次是邮件被发送至Stephen的邮件服务器时。通常来说Stephen通过他的用户代理收取邮件服务器上的邮件时并不会添加邮件头。

邮件头字段

图例&解释

massage-ID

这个字段是邮件传输过程中SMTP服务器赋予邮件的唯一标识符。可用这个号码作为邮件的唯一编号。RFC 2822文档中定义的规范确保了massage-ID的唯一性。以“@”为界限,右侧的部分是生成该字段的服务器名称;左侧的部分可以是当前绝对日期和时间的组合,以及系统中可用的其他当前唯一标识符。

X-Maile

此字段表明了发送邮件的客户端程序。如果发件方使用的是网页邮件客户端,那么就不会产生此字段在邮件头中。

Received

这是邮件的所有收件人。这个字段像是一份日志,记录了邮件在到达最终目的地的途中收到的所有IP地址。在出现任何错误时,这个标头尤其有用,你可以检查邮件是在哪个时间点被更改的,以及是从哪里发出的。邮件经过多个邮件服务器传递就会产生多个Received字段,最初的记录在底端,较新的记录显示在上方。上图表明此封邮件来自服务器:mail-sor-f73.google.com,其IP地址为:209.85.220.73,接受服务器为:mx.google.com;此邮件收件人为:dorissss5304@gmail.com

X-QQ-mind

通常情况下,邮件头信息中Data字段会记录邮件发送的时间,Received字段也记录着邮件在被不同服务器传递时的时间,如果因为某种原因导致邮件头中信息缺失,这两个字段都没有时间的话,恰好这又是一封QQ邮箱的邮件,则可以在X-QQ-mid字段中尝试获取。字母t之间被分割出来的一串数字是此邮件的unix时间戳。

上图“1719372049”转换成北京时间为:2024-06-26 11:20:49

X-

以“X-”开头的行是不在任何标准中的额外数据,由邮件服务器和电子邮件客户端使用,为发送电子邮件提供信息。

6.2电子邮件验证协议

6.2.1 SPF(Sender Policy Framework)发件人策略框架

它提供了一种验证电子邮件发件人的机制,可确保指定白名单之外的发件人不得为该域发送电子邮件。这就消除了许多邮件欺骗攻击。当Doris的邮件服务器连接到Stephen的邮件服务器时,Stephen的邮件服务器从邮件信封地址中提取域名,并会检查Doris邮箱所在域名的IP地址是否列于发布在DNS上的SPF记录中。如果IP地址已列出,则SPF检查通过(Pass),或者不通过(Fail)。以及下述几种其他情况:

SPF结果

解释

Pass

SPF记录指定发件人有权发送以下信息。

Fail

SPF记录指定发件人不得发送以下信息。

None

无法在DNS中解析域名和/或无法找到该域名的SPF记录。

Neutral

SPF记录表明,它并不断言 IP 地址是否获得授权。SPF中性可解释为通过或失败,具体取决于服务器的设置方式,但通常默认为失败。

Softfail

这是一条弱失败消息,表明发件人可能未获授权,当域未设置强SPF策略导致硬失败时,就会出现这条消息。

Temperror

SPF检查遇到一个瞬时错误,通常由DNS超时引起。只要客户端的重试策略设置得当,通常会在稍后重试。

Permerror

SPF检查无法验证该域已发布的SPF记录,原因包括:在该域上发现多个SPF记录;SPF记录的写法不正确;SPF检查涉及的DNS查询次数超过10次;SPF检查涉及的无效查询次数超过两次。

SPF 检查是根据“Return-Path(返回路径)”值而不是“From(发件人)”标头进行验证,以确定发件人服务器的真实性。“Return-Path”字段是收件人邮件服务器用于在出现问题时与发件人联系的地址(例如退回电子邮件)。

这样做的问题是,如果电子邮件被送达,收件人就会在其电子邮件客户端中看到伪造的发件人地址。即使电子邮件未通过SPF检查,这种情况有时也会发生,这取决于接收电子邮件的 ISP(由其做出最终决定)。而后出现的另一种较新的标准DMARC解决了SPF的缺陷,它通过验证发件人标头来解决这个问题。

6.2.2 DKIM (DomainKeys Identified Mail)域名密钥识别邮件标准

它允许一个组织以邮箱提供商可以验证的方式对邮件进行签名,从而承担起传输邮件的责任。且DKIM记录验证是通过加密验证实现的。

它的基本工作原理同样是基于传统的密钥认证方式,会产生两组钥匙,公钥(public key)私钥(private key)。以Doris和Stephen的邮件通信为例。DKIM公钥将会存放在DNS中,以供自动获得。而私钥会存放在Doris的邮件服务器中。数字签名会自动产生,并依附在邮件头中,发送到Doris的服务器里。收信人Stephen的服务器,将会收到夹带在邮件头中的签名并在DNS上自己获取公钥,然后进行比对,比较发件人的域名是否合法,如果不合法,则判定为垃圾邮件。

DKIM和SPF可共同确保电子邮件安全、阻止窃听和防止数据篡改。它们都是DMARC(基于域的消息验证报告和一致性)的一部分,但作用不同。DKIM用于验证是否有第三方篡改了电子邮件中的数据。而SPF可阻止使用发件人域名的欺骗性邮件。

Gmail邮件中的DKIM签名示例

邮件头中DKIM签名字段由一系列“标签=值”组成。示例解释如下:

v:当前DKIM版本。

a:签名算法。

d:发件人域名。

s:是DKIM选择器,收件服务器使用它来查找DNS记录。

t:时间戳签名。

h:列出了用于创建数字签名(b)的标头字段列表。

bh:是电子邮件正文的哈希值。

b:是标题和正文的数字签名,由(h)和(bh)产生,并使用私钥签名。

6.2.3 DMARC(Domain-based Message Authentication, Reporting and Conformance)是基于域的消息验证、报告和一致性的缩写,是一种开放式电子邮件验证协议

DMARC建立在--发件人策略框架(SPF)和域名密钥识别邮件标准(DKIM)的基础上,是第一种也是唯一一种广泛部署的技术,可以使字段“发件人”域值得信赖。域名所有者可以在域名系统(DNS)中发布DMARC记录,并创建一个策略,告诉收件人如何处理验证失败的电子邮件。

通过DMARC,域名所有者可以指定策略来处理未通过身份验证检查的电子邮件。这些策略包括“none”、“quarantine”和“reject”。简而言之,如果电子邮件未能通过身份验证,设定的策略将决定是照常发送、标记为垃圾邮件还是直接拒收。

策略

解释

none

它建议接收服务器在收到不合格的电子邮件时不执行任何操作。不过,服务器将向DMARC记录中的电子邮件地址发送电子邮件报告。

quarantine

它建议接收服务器隔离任何不合格的电子邮件。因此,电子邮件通常会进入收件人的垃圾邮件文件夹。

reject

它建议接收方拒绝接收不合格的电子邮件。它可确保只有经过100%验证为来自某个域的电子邮件才能到达收件箱。任何未通过检查的电子邮件都将被拒绝。

一封Gmail邮件的DMARC结果

DMARC结果比较容易阅读。结果将显示电子邮件是否通过了DMARC。这三种结果都提供了DMARC判决(dmarc=pass)和DMARC策略域(header.from=accounts.google.com)。

此外,Google还提供域(p=REJECT)和任何子域(sp=REJECT)的现行政策声明,以及信息的处理方式(dis=NONE)。

6.2.4 ARC(The Authenticated Received Chain)DMARC认证接收链系统

(简称ARC)为电子邮件信息提供了有效的“监管链”,使处理信息的每个实体都能有效地查看之前处理信息的所有实体。此外它还能显示整个处理过程中每一步的信息验证评估。

ARC的主要优点以及大多数邮件服务器实施ARC的原因是:它解决了以前在转发受DMARC保护的电子邮件时存在的一个问题,即转发后的电子邮件无法通过DKIM验证,从而无法通过DMARC。有了ARC,所有原始验证信息都会被保留下来,当电子邮件被转发时,ARC结果会提供一个监管链,这样最终收件人的邮件服务器就能看到该电子邮件在所有转发之前都通过了DKIM验证。

ARC监管链字段

ARC的引入为电子邮件世界带来了三种新的邮件头字段:

ARC-Authentication-Results(AAR):实例编号(i)与SPF、DKIM和DMARC验证结果的组合

ARC-Sea(AS)):实例编号(i)、先前ARC-Seal标头的DKIM类签名和先前ARC条目的有效性的组合

ARC-Message-Signature(AMS):实例编号(i)与除ARC密封头之外的整个报文的类似DKIM的签名的组合

6.3如何查看邮件头

通过查看完整的邮件头,可以追踪到电子邮件地址的发件人。电子邮件标头包含路由信息和电子邮件元数据--这些信息对于取证来说和邮件内容一样重要,是追踪电子邮件的来源的重要渠道。

大多数电子邮件客户端都不显示标准的完整邮件头,因为它包含大量技术数据,对普通用户来说用处不大;大多数电子邮件客户端都提供了查看完整邮件标题的方法。对于取证分析人员来说需要知道在哪里查看,以及查看什么,因为不同的电子邮件提供商查找完整邮件头的方法各不相同。

6.3.1 查看Gmail完整邮件头

登录Gmail邮箱,然后打开要跟踪的电子邮件。选择右上角的下拉菜单,然后从菜单中选择“显示原始邮件”。

6.3.2 查看Outlook完整邮件头(Outlook 2010或更高版本)

双击要跟踪的电子邮件,然后前往文件 > 属性。信息会显示在“Internet headers”标题框中。你可以选中该框中的信息,按 Ctrl+C 复制,然后粘贴到记事本或 Word 中,这样就可以一次性看到整个邮件头。

6.3.3 查看Apple Mail完整邮件头

打开要跟踪的电子邮件,然后前往查看 > 邮件 > 原始来源。

6.3.4 查看QQ邮箱完整邮件头

进入邮箱点击要分析的电子邮件,右侧点击下拉菜单 > 显示邮件原文。

6.3.5 查看Yahoo完整邮件头

打开要分析的电子邮件。选择 "更多"(三点图标)>"查看原始邮件。

6.3.6 查看Proton完整邮件头

打开要分析的电子邮件,然后转到更多内容(三点图标)> 查看标头。

参考资料:

《计算机网络-自顶向下方法》(James F.Kurose Keith W. Ross)

《Computer Networking A Top-Down Approach》 (James F. Kurose, Keith W. Ross))

《计算机网络-第8版》(谢希仁)

《数据通信:基础设施、联网和安全》(William Stallings Tom Case)

《RFC 822》https://datatracker.ietf.org/doc/rfc822/

《RFC 2045》RFC 2045 - Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies

《RFC 3501》RFC 3501 - INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1

《RFC 5322》RFC 5322 - Internet Message Format

《RFC 2822》RFC 2822 - Internet Message Format

  • 32
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Doris Liu.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值