扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共2页)
自从电子邮件大大降低了信息的传播成本,垃圾邮件便随之而产生。
笔者作为国内互联网的较早的用户,使用的是自己注册的域名的电子邮件地址,从一开始使用至今一直没有变过,而该邮件地址在国内互联网发展初期曾注册过许多网站服务,因此成为垃圾邮件的目标。
笔者的邮件地址在2000年即每天收到近百封垃圾邮件,因此从那时即开始关注垃圾邮件的控制方法。
2004年1月底,国家四部委联合发文整治垃圾邮件和不良信息,快速启动了国内反垃圾邮件的市场,反垃圾邮件产品厂商风起云涌,但笔者认为许多宣传仅从邮件安全的某个局部出发,失于片面。反垃圾邮件仅仅是邮件安全的一部分技术,邮件安全至少应当包括反垃圾邮件、反邮件病毒、内容过滤等功能,还可能包括邮件溯源、邮件审计等功能。本文由于篇幅所限,只说明反垃圾邮件的技术。
1. SMTP安全漏洞与垃圾分析
1.1 SMTP起源
在互联网上使用的邮件传输协议称为SMTP(Simple Mail Transfer Protocol简单邮件传输协议,RFC-821),也许有很多初次了解SMTP协议的人会奇怪为什么称为简单邮件传输协议,那么复杂邮件传输协议在哪里?如果这样考虑,可以理解1984年ISO(国际标准化组织)和ITU(国际电信联盟)发布的X.400信件传递标准就是复杂邮件传输协议(当然,其相关协议早在近十年前就在讨论、完善,只是直到1984年才发布标准)。1982年由互联网协会发布了基于TCP/IP的SMTP(RFC821)后,随即发布了RFC822 ASCII纯文本邮件结构,这样就满足了人们发送纯文本邮件的需求,随着需求的增长,1996年发布了一系列MIME(Multipurpos Internet Mail Extensions)格式定义,使电子邮件可以传递任意格式的文件,大家发送邮件时会发现,邮件的大小比附件的大小要大很多,原因就是附件可能经过了MIME编码,导致变大。MIME满足了人们发送任意格式邮件的需求,也同时导致了恶意代码通过电子邮件传递。
1.2 邮件发送过程
一封邮件从发件人编辑邮件到收件人接收邮件一般要通过如下四步:
1. 发送客户端‘(smtp)‘发送邮件服务器:发件人在发送客户端(~MUA~,~Mail User Agent~)编辑邮件后发出,MUA向他定义的发送邮件服务器(~MTA~,~Mail Transport Agent~)发出SMTP请求并握手,发送邮件服务器将邮件接收下来放在相关的邮件队列中。一般来说,MUA在和发件MTA握手时,使用的是用户在MUA该帐号上注册的邮件帐号信息作为信封Mail From和信头From的参数,是相同的;
2. 发送邮件服务器-->(smtp)-->接收邮件服务器:发送邮件服务器根据邮件的目的地址,如果目的地址不是本地,则会将邮件转而放到相应的发送队列中,MTA将邮件从等候的发送队列中取出,向接收邮件服务器发起SMTP请求并握手,接收邮件服务器将邮件接收下来,放入相关的邮件队列中。一般来说,发送MTA会把邮件的信封部分和邮件部分(data,包括信头和信体)分开保存,这样在与接收MTA通信时,Mail From依然使用原来的信息不变;
3. 接收邮件服务器dispatch到邮箱:接收邮件服务器根据邮件的目的地址(当然是本地了),将邮件由MDA(Mail Deliver Agent)放到用户的邮箱中。接收MTA在和发送MTA握手时,得到的Mail From数据仍然是发件MUA给出的信息。
4. 邮箱服务器-->(pop/imap)-->接收客户端:最后,接收客户端使用POP或IMAP协议将邮件下载、阅读。
1.3 模拟收发过程
SMTP协议是TCP/IP协议的应用层协议,其传递的数据都是人可读的数据,因此可以使用Telnet来仿真、观察SMTP协议的握手过程(假设邮件服务器IP是192.168.100.100)。
Telnet 192.168.100.100 25 ;25是TCP/IP协议给SMTP定义的端口号
<<<220 smtp.my.com ESMTP Service (SMTP server) ready at 日期、时间 +0800
>>>helo haha.com
<<<250 smtp.my.com Hello haha.com ([192.168.100.50]), pleased to meet you
>>>mail from:abc@abc.com
<<<250 abc@abc.com... Sender OK
>>>rcpt to:realname@my.com
<<<250 realname@my.com... Recipient OK
>>>data
<<<354 Enter message, end with "." on a line by itself
>>>Reply-to:ccc@ccc.com
>>>From:aaa@aaa.com
>>>To:bbb@bbb.com
>>>Subject:testest
>>>
>>>This is a Test Email.
>>>.
<<<250 Message accepted for delivery
>>>quit
<<<221 smtp.my.com SMTP Service closing transmission channel
这样就用Telnet直接向smtp.my.com送入了一封给realname用户的邮件。
让我们来看一下收到的这封邮件的源文件:
Received: from haha.com ([192.168.100.50])
by smtp.my.com (SMTP server)
with SMTP id 2004062314152297-16576 ;
Wed, 23 Jun 2004 14:15:22 +0800
Reply-to:ccc@ccc.com
From:aaa@aaa.com
To:bbb@bbb.com
Subject:testest
X-MIMETrack: Itemize by SMTP Server on Mail/my() at 2004-06-23 14:17:10,
Serialize by POP3 Server on Mail/my() at 2004-06-23 14:18:45,
Serialize complete at 2004-06-23 14:18:45
Date: Wed, 23 Jun 2004 14:17:10 +0800
Message-ID: <OF39FF5AC9.A74F14E2-ON48256EBC.00228835@my.com>
This is a Test Email.
从上面的模拟过程可以看出,该邮件在邮件头中声称邮件来自~aaa@aaa.com~,要发给bbb@bbb.com;而在SMTP握手中声称使用计算机haha.com,邮件来自abc@abc.com,要发给realname@my.com(这是真正收到该邮件的用户)。邮件头的说法和SMTP握手中的说法完全不同,而当用户(~realname@my.com~)收到此邮件时,他所能看到的只是邮件头中所声称的内容和发送该邮件所声称的机器名和IP。然而,要使用户realname收到这封邮件,除了SMTP握手中rcpt to必须是真实的以外,其他所有东西都可以伪造,From:和To:都可以不写。尤其不幸的是:为了返回错误提示邮件,SMTP协议甚至允许mail from:后面是空白。
上面data后的内容是真正的邮件,data之前的内容是SMTP握手,或称信封。用户收到的邮件已没有信封,但SMTP服务器可能会根据信封内容在data的信头部分增加Received数据保存一些信封的内容。
在邮件客户端,用户将看到邮件来自aaa@aaa.com,而回复时,自动将ccc@ccc.com作为目的地址。
上述邮件模拟发送过程中,只有收件人地址是真实的(呵呵,否则谁收啊?);收到的邮件看到的源文件,只有最后一个发件IP是真实的(前面如果还有,也可能是伪造的)。
从我们对已有反垃圾技术的研究,分类如下:
2.1 传统技术
2.1.1 关闭OpenRelay
关闭OpenRelay并不是最简单的技术,之所以把它放在传统技术的第一个,是因为OpenRelay是发送垃圾邮件的方法,而关闭OpenRelay是防止自己的邮件服务器发送垃圾邮件,而本书后面的内容基本上都是防止接收垃圾邮件。
但关闭OpenRelay是非常重要的,应该说是整个反垃圾邮件体系的基础,OpenRelay的存在,使邮件可以任意转发,导致发件人完全不可追查,无论是技术手段还是法律手段都无法起作用。
另外下面要提到,关闭OpenRelay也是下面要介绍的内部可追查检查的基础。
关闭OpenRelay和发件认证原本是两件事、两个概念,但一般都是一起使用的,因为仅仅关闭OpenRelay,邮件服务器就成为CloseRelay,只能从某些指定的IP发送邮件,或者只能将邮件发送到某些邮件域,这在实际使用中是极不方便的,甚至可以说CloseRelay是基本不可用的,只能用于机构内部邮件。关闭OpenRelay并增加了发件认证后,所有该邮件服务器的合法注册用户都可以任意发送邮件,而非本邮件服务器的邮件地址只能向该邮件服务器发送邮件,不能通过该邮件服务器向未允许的其他邮件域发送邮件。
2.1.2 静态黑白名单
静态黑白名单对反垃圾邮件实际上没有任何意义,作为内容过滤、内容监控、内容审计还可以作为一个初步技术。
2.1.3 静态内容过滤
静态内容过滤实际上只针对"规矩"的垃圾邮件有效,这些规矩的垃圾邮件常常是网络营销公司的广告,有些更规矩的广告在邮件主题上提示"ADV:",这种邮件其实反而不是我们要主要防范的邮件,如果用户不想接收广告邮件,只需简单过滤邮件主题,发现ADV即拒收。而目前的用程序自动生成和发送的垃圾邮件对于发件人、收件人、邮件主题甚至邮件内容都是随机生成的,在邮件内容中经常被过滤的词汇,例如"免费"、"赚钱"、"性感"或者一个和政治相关的词汇,经常被随机变种,比如"免费"被变为"免...费"或"免\_\_费"等等,令防垃圾过滤防不胜防,同时导致了正常邮件如果使用了这些词汇也被拒绝。实际上,静态内容过滤无法在反垃圾邮件中实用。
2.1.4 实时黑名单及改进
RBL(Realtime Blackhole List)
实时黑名单是使用最早的技术,但这种技术存在巨大的局限性,无法防止宽带用户自行发出的邮件,尤其是动态IP的(比如拨号用户和ADSL),这样经常导致整个IP区域被列入黑名单,因此有时反而形成了垄断和不正当竞争。中国互联网协会就曾因国外将中国大片IP列入黑名单而提出抗议。
基于RBL的优点和问题,国际上产生了许多改进的方案,不仅针对IP地址,而且针对URL和邮件内容等,产生了多个可用的类RBL服务网站。
大部分下述黑名单都属于所谓的DNSbl(DNS BlockList),是通过DNS查询的方式来查询Blocklist结果,并且许多新的邮件服务器都支持标准的DNSbl。一般的类RBL是针对IP地址的,有些是针对域名的,这时成为RHSbl。
笔者认为,实际上实时黑名单存在的意义在于如下事实:据统计,全球可能有80%以上的垃圾邮件来自200个左右的垃圾邮件发送团体,无论他们如何变更IP地址和托管服务商,追踪这200个团体还是一个可能完成的任务。而实时黑名单追踪小型的团体或垃圾邮件发送者,是力不从心且容易误判的。
2.2 数量控制
2.2.1 带宽/连接限制
这是网络层的重复限制。使用QoS策略限制每一个IP向自己发送邮件的可用网络带宽,用防火墙策略限制每个IP向自己发送邮件的并发SMTP连接数目。
2.2.2 邮件重复限制
这是应用层的重复限制。一般根据发件IP、发件人、邮件主题三个元素在一段时间内的重复速率做限制。这种限制虽然技术简单,但对从一个IP发出的大量邮件非常有效。
2.3 新型技术
2.3.1 贝叶斯分析
贝叶斯过滤器是根据贝叶斯准则和贝叶斯定理,以已知垃圾邮件和非垃圾邮件为样本、来判断下一封邮件是垃圾邮件的概率。
因此贝叶斯过滤器需要已知的邮件作为样本进行自学习。
2.3.2 分布协作的内容指纹分析
分布协作分析是基于这样的实际情况:垃圾邮件发送者将相同的邮件发送给巨大数量的邮件地址,可能试图从中取得某些商业、政治利益。
这种邮件绝大部分是使用假的邮件地址、伪造了邮件头或利用了OpenRelay发送的,只有内容是这种垃圾邮件要传递的信息。但每个收件人必须看了内容以后才知道这是垃圾邮件。因此分布协作分析是基于这样的方法:从邮件中提取出可以代表内容的指纹数据(一般是利用加密哈希算法或检查和的算法来产生指纹特征),不同的内容会产生不同的指纹(为了防止垃圾邮件发送者利用小的变化,比如大小写等,来躲避反垃圾系统,一般还做模糊指纹,使相似内容的邮件产生相同的指纹),用这些指纹代表邮件,全球的兼容用户会提交邮件(或只提交垃圾邮件)的指纹,从服务器得到响应以知道有多少封相同的邮件在全球传播,这样来识别邮件是否垃圾邮件。
分布式Hash数据库是分析邮件内容并根据指纹算法产生指纹。分布式Hash数据库是将认为是垃圾的邮件(或全部邮件)的指纹特征提交给分析服务器,由分析服务器根据提交总数量、频率等参数认定它是垃圾邮件的可能性。这样的系统可以集合全球的邮件特征,将大范围发送、但局部数量并不多的垃圾邮件甄别出来。所有支持分布式Hash数据库的防垃圾邮件系统都回互相促进、提高准确性。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者