反垃圾邮件技术之密径追踪(图)
程序员文章站
2022-12-15 15:18:01
中国的网民数量已突破1 亿,每年电子邮件发送量达500 亿封,但是这样的数据却并不能令我们惊喜,因为在这500 亿封电子邮件中,有将近60%也就是有300 亿封是垃圾邮件。垃圾邮件已经成... 08-10-08...
中国的网民数量已突破1 亿,每年电子邮件发送量达500 亿封,但是这样的数据却并不能令我们惊喜,因为在这500 亿封电子邮件中,有将近60%也就是有300 亿封是垃圾邮件。垃圾邮件已经成为一个综合性的社会问题,要想从根本上杜绝垃圾邮件的泛滥,必须采取全民总动员的方式。由*出面组织立法,行业制订规则、积极协调,邮件服务商则提供技术,用户积极参与、协同合作。只有这样,形成一个大众化的反垃圾邮件联盟,才能从根本上取得显著成效。
反垃圾邮件技术之 密径寻源
滥用smtp
垃圾邮件泛滥的今天,如果收到了垃圾邮件,你可能会根据邮件的提示采用取消订阅的操作,而这些取消订阅的方法根本就是一种伪装,几乎没有一个是有效的。相反,邮件的发起者却根据你的反馈信息,将你的邮件地址纳入有效投递用户数据库,得不偿失。追其原因,主要和商业利益以及smtp协议的安全机制不健全有关。
smtp协议对我们来说,应该是再熟悉不过的了,但是,这个协议在创建的时候并没有考虑到未来的邮件会成为垃圾,因此安全性很差(人们还是以rfc524为基础来执行smtp的),邮件头可以任意创建、伪造和修改。邮件服务器一般不检查发送者的内容,而只关心接收者,这就给了垃圾邮件发送者可乘之机。互联网上的smtp认证是针对无限制转发采取的措施。所谓无限制转发,就是任何人都可以使用你的服务器发送邮件,一方面降低了投入成本,另一方面隐藏了真实的来源。隐藏真实地址的原因主要是因为垃圾邮件发送在许多国家属于违法行为,另外,垃圾邮件发送者(spammer)都明白垃圾邮件是不受欢迎的,通过伪造发送者地址,就可能减少这种反应。早在2002年的时候,欧美的一些it技术论坛上,关于因为大量的垃圾邮件引起了西方isp屏蔽中国邮件服务器的“热潮”,就曾经广为部署过。当时,中国电信的202.96.0.0—202.111.255.255范围内的全部地址都被屏蔽,这都是垃圾邮件惹的祸。服务器被中继(open relay)的现象不但阻止垃圾邮件的首要任务,而且也是病毒邮件泛滥的罪魁祸首。
解读信头
追踪邮件将很大程度依靠对邮件头的分析,rfc2076 列出了多数通用的消息头,此外也可以参考rfc2822。比如在outlook express中,我们可以通过点击邮件的高级属性打开邮件头部的信息(图1),一个邮件头中常用于分析的项目如下:
1. return-path: eberlyolabode@domian1.net ;回复时发送的地址。很容易被伪造,但常常提供线索,比如有些垃圾邮件经常用该域指向一个合法的邮件地址,以便spammer能够接收到回复的邮件;
2. delivered-to: nospammer@mymail.com;和后面的“to”相同,收信人地址;
3. received: from mail.domian1.net (unknown [192.168.x.148])
by mail.domain2.com (postfix) with esmtp id 66b1612191f
for ; mon, 24 jul 2006 05:11:54 0800 (cst)
邮件头中最可信部分。一般会有几条,形成站点列表,这些信息表明达到目的地过程中邮件所经过的服务器,域名都是邮件服务器自动插入的,spammer 可以伪造,但是在被伪造以后经过的域名是可信的。这个列表从下往上表明了服务器路径,最上面的一条received是最终目的邮件服务器,也就是自己要接收邮件的服务器,除非它也出现了问题。receive 语句的基本表达格式是:from server a by server b,server a 为发送服务器, server b 为接收服务器。esmtp id 表示
4. message-id: 000001c6ae9c$a563a520$a4e8a8c0@saj61> ,邮件系统在创建邮件时的唯一标记(参考rfc822 、rfc1036)。也经常被伪造,但如果是正常的,那么message-id:也通常能确定发送者所登录的系统,而不仅仅是邮件被创建的系统。message-id 的结构同邮件服务器程序有直接关系,不同的邮件服务器的id也不相同,但区别于esmtp id;
5. 服务器产生的id 也不一样,有时相同邮件服务器的不同处理也会产生不一样的id
6. reply-to: "olabode eberly" eberlyolabode@domian1.net> 回复地址,被伪造;
7. from: "olabode eberly" eberlyolabode@domian1.net> 发信人地址,被伪造;
8. to: nospammer@ mymail.com
判别源头的要点
一个完整的邮件传输过程如下:“邮件发送者→ mua → mta → 网络传输→mta → mda→ 可能会有的邮件过滤 →mua → 邮件接收者”。通过邮件传输原理,就可以将每个环节的不同特征拿出来,这为我们判别垃圾邮件带来帮助(图2)。
l mua (mail user agent)
mail client端的软件,它帮我们传送与接受mail,使用者通过它来跟 mail server 沟通,最常见的 mua 有 outlook express和fox mail等
l mta (mail transfer agent)
它的作用是帮助我们把mail传送给其它mail serve,同时接受外部主机寄来的信件,所有的 smtp servers 都可称为 mta。
l mda (mail delivery agent)
这项服务是用来把 mta 所接受的mail传递至使用者 mailbox(收信箱)里面,部分smtp servers 也兼顾这mda的角色。
l 收信、发信人地址
在我们收到的垃圾邮件中经常遇到发信人是我们自己的名字,或者收信人根本是与自己毫无关系的名字。这是因为收信人的mua会从邮件中提取,from、to、date字段,如果发信人的mua不是按照正常的逻辑工作的,或者发信人有意的使用垃圾邮件发送软件,那么就会变更mail from 和rcpt to 的值,使其拥有了不同的邮件地址。这个时候,mail from的值绝对是不可信的,而发信者为了得到收信人的反馈信息,所有我们可以通过rcpt to 中的域名地址来定位来源。
l 非法中继
如果发信人使用的不是自己所拥有的邮件服务器,在传输过程中使用互联网上带有open relay漏洞的服务器,这就为判别邮件的真实来源带来的困难。在received字段中如果包含了既不是发信人,又不是收信人域名的邮件服务器,这就很有可能是被非法中继的服务器,我们可是使用telnet等工具测试这台服务器是否具有open relay漏洞。
l 反向解析不同
如果发信人的域名为sender.com,但他在smtp对话中的helo命令后冒充另外一个域名是,比如 helo testname.org ,此时信件的received字段很有可能是如下形式:received: from testname.org (sender.com [192.168.100.100]) by……, 我们通过对testname.org进行反向地址查询后,就能发现ip地址信息与这个域名地址不符。
l 查找伪造的received
由于怕暴露自己的真实信息,垃圾邮件的发送者经常在邮件头中插入大量的received行。如果你的邮件头中存在大量的received字段,最后几行一般是被插入的,因为信件一旦离开主机后,发信人是无法进行控制的,所经过的邮件服器将自动将信息加入到信头顶部。从上到下追踪from和by的信息,以及ip的路由信息,是可以判别那些行是被伪造的。
评论:
通过上述内容我们有可能查找出邮件的真实发送ip,将其屏蔽,但如果发信方采用拨号的方式进行发送,或者机场经常更换地址,这就增加了判别正确的可信度。早在 1999 年,垃圾邮件与病毒邮件还未成为全球it业关注议题时,制定因特网与电子邮件相关标准的 ietf/irtf等单位就提交文件 rfc 2505, 针对反制垃圾邮件的 smtp mta 主机设计提出规划建议:需要smtp mta 主机应针对邮件发送来源进行通透解析,判定是否具匿名、伪造、滥发等非法行为,以采取退件或延迟反制机制;rfc 2505 更提出技术洞见,预言具弹性辨识机制、精良设计的 mta 才能时时因应垃圾滥发者的反制手法。深度垃圾邮件行为解析必需在 mta 阶段执行,以邮件传输值追踪技术、邮件通讯行为解析技术与预设滥发者类型 pattern,追踪、验证并判断来信是否为垃圾邮件。绝非浅层邮件行为解析如联机次数分析、发送 ip 地址、发送时间、发送频率、收件者数目、浅层电子邮件标头检查、发送行为侦测与检验handshaking 联机阶段等信息可判断。