【F2C】利用邮件头欺骗进行电子邮件伪造

参考地址←

备用地址←

邮件日志分析

邮件伪造方法(telnet)

邮件伪造方法(Swaks)

received的类型

邮件协议和日志详细分析

待研究:指定邮箱服务器发送邮件,邮件收件人不存在在该邮箱服务器记录中,邮件会转发到实际收件人或者退信

Email传输过程

邮件头的变化

graph TD
A[邮件客户端修改]-->B[转发邮件服务器修改]
B-->C[目的服务器修改]

阶段1
当 tom 的邮件客户程序编辑邮件并将其发送给 mail.alpha.com.cn 时,邮件内容如下。这些内容都是由邮件编辑程序 (outlook express)添加的:

From: [email protected] (Tom Lee) 
To: [email protected] 
Date: Tue, Mar 18 2003 14:36:14 PST 
X-Mailer: Outlook Express 6.0 
Subject: 明天放假? 

阶段2
当邮件从 mail.alpha.com.cn 传送到 mail.sina.com 后,邮件内容变为(新添加的内容是由 mail.alpha.com.cn ):

Received: from tom-pc.alpha.com.cn (tom-pc.alpha.com.cn [124.211.3.11]) by mail.alpha.com.cn (8.8.5) id 004A21; Tue, Mar 18 2003 14:36:17 -0800 (PST) 
From: [email protected] (Tom Lee) 
To: [email protected] 
Date: Tue, Mar 18 2003 14:36:14 PST 
Message-Id:  
X-Mailer: Outlook Express 6.0 
Subject: 明天放假? 

阶段3
当 mail.sina.com 收到信件并存储等待 betty 收取时,邮件内容变为,(新添加的内容是由 mail.sina.com 添加的):

Received: from mail.alpha.com.cn (mail.alpha.com.cn [124.211.3.78]) by mail.sina.com (8.8.5/8.7.2) with ESMTP id LAA20869 for ; Tue, 18 Mar 2003 14:39:24 -0800 (PST) 
Received: from tom-pc.alpha.com.cn (tom.alpha.com.cn [124.211.3.11]) by mail.alpha.com.cn (8.8.5) id 004A21; Tue, Mar 18 2003 14:36:17 -0800 (PST) 
From: [email protected] (Tom Lee) 
To: [email protected] 
Date: Tue, Mar 18 2003 14:36:14 PST 
Message-Id:  
X-Mailer: Outlook Express 6.0 
Subject: 明天放假? 

邮件协议

graph LR
A[HELO]-->B[MAIL FROM]
B-->C[RCPT TO]
C-->D[DATA]
D-->E[QUIT]
220 mail.sina.com ESMTP Sendmail 8.8.5/1.4/8.7.2/1.13; Tue, Mar 18 2003 14:38:58 -0800 (PST) 
HELO mail.alpha.com.cn 
250 mail.sina.com Hello mail.alpha.com.cn [124.211.3.78], pleased to meet you 
MAIL FROM: [email protected] 
250 [email protected]... Sender ok 
RCPT TO: [email protected] 
250 [email protected]... Recipient ok 
DATA 
354 Enter mail, end with "." on a line by itself 
Received: from tom-pc.alpha.com.cn (tom-pc.alpha.com.cn [124.211.3.11]) by mail.alpha.com.cn (8.8.5) id 004A21; Tue, Mar 18 2003 14:36:17 -0800 (PST) 
From: [email protected] (Tom Lee) 
To: [email protected] 
Date: Tue, Mar 18 2003 14:36:14 PST 
Message-Id:  
X-Mailer: Outlook Express 6.0 
Subject: 明天放假? 

Do you have time to meet for lunch? 

--Tom Lee 
. 
250 LAA20869 Message accepted for delivery 
QUIT 
221 mail.sina.com closing connection

HELO 命令用来标识自己的身份。HELO mail.alpha.com.cn 可以被解读为"嗨,我是 mail.alpha.com.cn"。当然这里发送者可能会撒谎,但是没有任何机制能防止发送者 mail.alpha.com.cn 说"嗨,我是 mail.xxx.com"或是"嗨,我是mail.yyy.com"。然而在大多数情况下接收者都有一些方法来确认发送者的真实身份。

MAIL FROM 命令标识开始邮件传输,含义是"我有从某人发送来的邮件",该命令后跟的地址就是所谓的“信封地址”(在后面我们将深入讨论),信封 from 地址不一定是发送者自己的地址。这个明显的安全漏洞是不可避免的(因为接收者并不知道发送者机器上有哪些地址),但是在特定的情况下这又是一个有用处的特色。

RCPT TO 和 MAIL FROM 是相辅相成的。其指定邮件接收者。通过多个 RCPT TO 命令一个邮件可以被发送给多个接收者。(在后面的邮件中继部分将解释该特色可能针对某些不安全的系统滥用)。该命令后跟的地址称为"envelope to"地址。其指定了邮件将被投递给哪些用户,而和信件中的To:指定的地址没有关系。

DATA 命令指示开始实际的邮件内容传输。DATA 命令后输入的任何内容都被看做是邮件的一部分。而格式并没有任何限制。以一个英文单词加冒号开始的行一般被邮件程序看做是邮件头。以英文句号符号(.)开始的行被认为是邮件内容结束。

QUIT 命令终止连接。

伪造邮件

HELO galangal.org 
250 mail.alpha.com.cn Hello linuxaid.com.cn [202.99.11.120], pleased to meet you 
MAIL FROM: [email protected] 
250 [email protected]... Sender ok 
RCPT TO: [email protected] 
250 [email protected]... Recipient OK 
DATA 
354 Enter mail, end with "." on a line by itself 
From: [email protected] 
To: (这里你的地址被隐瞒以实现秘密邮件转发和骚扰) 
. 
250 OAA08757 Message accepted for delivery 

其对应的邮件头是

From [email protected] 
Received: from galangal.org ([202.99.11.120]) by mail.alpha.com.cn (8.8.5) for ... 
From: [email protected] 
To: (这里你的地址被隐瞒以实现秘密邮件转发和骚扰) 

如果服务器 linuxaid.com.cn 的真实IP地址是 202.99.11.120,发送邮件给 mail.alpha.com.cn,但是使用HELO galangal.org命令来伪造自己的身份,则对应该次传输的"Received:"可能如下所示:

Received: from galangal.org ([202.99.11.120]) by mail.alpha.com.cn (8.8.5)... 
(后面的其他信息被省略以更加清晰)。

注意虽然zky.ac.cn没有明确地说galangal.org不是发送者的真实身份,但是它记录了发送者正确的IP地址。如果某接收者认为消息头中的galangal.org是伪造者伪造的身份,他可以查看IP地址 202.99.11.120 来得到对应的正确域名是linuxaid.com.cn,而不是 galangal.org。也就是说记录发送服务器的IP地址提供了足够的信息来确认可以的伪造行为。
很明显,最后两行内容完全是毫无疑义的,是由发送者编写并在发送以前附在邮件中的。由于一旦邮件离开 linuxaid.com.cn,发送者对邮件完全失去了控制。而且新的"Received:"头总是出现添加在消息的头部,因此伪造的"Received:"头总是出现在"Received:"头列表的尾部。这意味着任何人从头到尾读取"Received:"头列表,追踪邮件传输历史,都能安全地剔除在第一个伪造头以后的内容。即使"Received:"头看上去似乎是真实的,但是实际上都是伪造的。

当然,发送者不一定会用明显的垃圾信息来迷惑你,一个处心积虑的伪造者可能创建如下所示的看似真实的"Received:"头列表:

Received: from galangal.org ([202.99.11.120]) by mail.alpha.com.cn (8.8.5)... 
Received: from lemongrass.org by galangal.org (8.7.3/8.5.1)... 
Received: from graprao.com by lemongrass.org (8.6.4)... 

这里泄漏伪造问题的唯一地方是第一个"Received:"头中的 galangal.org 的IP地址。如果伪造者这里填写了 lemongrass.org 和 graprao.com 的真实IP地址,则这样的伪造伪造仍然非常难以检测。但是第一个"Received:"头中的域名和IP的不匹配仍然揭露了消息是伪造的,并且该邮件是有网络中地址为 202.99.11.120 的服务器注入到网络中。然而大多数邮件头伪造者一般都没有这么狡猾,一般额外添加的"Received:"头一般都很明显地是伪造的垃圾。

查看一个邮件是否是伪造的,应该看"Received:"头中的第一条信息,一般如果宣称自己是正规的SMTP服务器(网易、腾讯)转发过的,那么肯定是经过验证用户密码的才能转发过来,只需要看IP与宣称身份是否一致,一致就OK;如果是直接伪造身份(直接向目标SMTP服务器telnet发送邮件),或者是以不正规的SMTP服务器(本地搭建的SMTP服务器)转发过来的,看着宣称身份不正规的,或者通过"Received:"头中的第一条信息反查IP和域名不对应就是伪造

总结
信封头由服务器产生,是可信任的,称为envelope from(MAIL FROM)和envelope to(RCPT TO),From:和To:也是由发送者提供

你可能感兴趣的:(攻防)