Kung Fu Wang正在监视着你的邮件
[文章作者:叶歆昊 最后修改:2010-07-19 转载请注明原文链接:http://littz.com/kung-fu-wang-is-watching-over-you-e-mail.html]
由以下的转载消息得出结论:
1、不要使用任何在国内的电子邮箱,通过这些邮箱发出的email会经过Kung Fu Wang, 可能会被shen-cha、过滤或者消失。另外国内的电子邮件提供商可能会把你的帐户信息交给第三方;
2、使用国外的电子信箱的时候,web方式必须用https安全协议, 如果采用客户端那么必须在SMTP和POP3上启用TLS(SSL升级版), 否则一样会被Kung Fu Wang拦截;
上周和几位反垃圾邮件专家共进午餐时听他们谈到了目前仍然存在和墙内的邮件服务器沟通不畅的奇怪问题,其中一位已经做了不少实验和研究证明了的确是在网络上存在不明设备干扰邮件通信。想起来差不多一年多前曾经出现过Kung Fu Wang拦截email造成奇怪的邮件以及发信失败的问题,这些问题已经有一段时间没有听说了,我还以为Kung Fu Wang暂且罢手了。
拦截邮件通信是件非常可耻的行为,可以说比屏蔽网站更为卑鄙,为了证实以及分析问题,晚上做了几个小实验,得到的结论是令人发指的——Kung Fu Wang不但正监听过墙的SMTP (25号端口)的通信,而且比过去发现的行为更为糟糕的是,Kung Fu Wang不再像过去出现的那样总是发送欺骗性SMTP错误码,而是可能直接在通讯过程中发送欺骗的RST报文使通信中断。 这种中断在实际发送email中可能会导致没有任何反馈, 也就是你以为你的邮件正常发出,但实际上邮件已经消失了,邮件的收件人永远无法收到。
更奇怪的行为是,Kung Fu Wang对SMTP的拦截pattern更像一个anti spam的IDS, 并不需要发送任何Special Key Words也可能导致被拦截。 据分析这可能是flg发送垃圾email导致“Kung Fu Wang”ed的行为, 不可否认这种拦截对阻止垃圾email的进入和发出是有一定作用的,然而也可能误伤无辜。
通过从美国、欧洲、日本、新加坡等多点的测试,发现行为并不仅相同,但大多表现为Kung Fu Wang迫不及待地代替SMTP服务器断开连接。
测试非常容易,最简单的验证方法是拿一个sohu.com(Inside of the FireWall)和gmail.com(Outside of the FireWall)的邮件互发邮件测试,一个其实没有意义但含有特殊词的邮件开始还能互相发送接受,几次后这些邮件就消失了,无论是用gmail发出,或是sohu mail发出,对方都不再能收到,而且没有错误,没有退信。
更技术化些的测试是拿telnet连接到一个墙对面的smtp服务器,我随便找了个jlonline的实验,下面是通讯过程:
220 ironport1.jsmail.com.cn ESMTP ehlo localhost 250-ironport1.jsmail.com.cn 250-8BITMIME 250 SIZE 10485760 mail from: 250 sender ok rcpt to: 250 recipient ok Connection to host lost.
有趣的现象是在两次250 ok后连接神秘地断开了。 当然这个测试的行为是个典型的spamer行为,到一个smtp上给冒充自己给自己发邮件。 但是为什么SMTP server说ok却突然连接断开?
当然偶抓了包来看看,可以看到最终连接断开是收到了来自server ip地址的RST报文:

不过来自server的正常报文的TTL值和RST报文的TTL值不同,说明这个RST报文是由网络上的神秘设备发出的:

上面正常的220报文的IP报头, TTL和其他整个通信中一致是 51.

上图是神秘的RST报文,只有这个神秘的RST报文TTL是52. 有趣的是RST报文是两个,一个TTL 51, 一个52。没有明白为何。
上述分析可能是有错误的,如果您发现了我的错误请您指出,我会迅速更正以免误导。
上面只是给出一个例子,实际上我看到了更综合的测试报告,虽然不能发现其行为规则,但是可以肯定存在不明设备中断SMTP的通信,而且不是每次都有错误码给出,可能导致信件的彻底丢失。
次日补充:
在用telnet直接连接到SMTP抓包实验的同时,采用了sohu webmail和gmail互发含有special词的subject和正文的email实验。
Sohu mail和gmail的通讯验证了神秘中间设备的存在
通过两个邮件互发这个实验并不能证实Kung Fu Wang的存在,因为sohu可能有自我判断系统,各个邮件系统可能有反垃圾邮件的体系,因此某些内容发送失败是可能的,但是做这个实验的目的是为了和telnet的抓包实验互相印证。
结论非常有趣,首先sohu和gmail之间出现了发送障碍,gmail和sohu mail都发出了无法投递和投递困难的通知:
这是在sohu的邮箱收到一个无法发送通知:
发件人:系统管理员保存到地址簿 拒收
收件人:xxxx@sohu.com, 时间:2009年1月12日 4:53:51
以下信息来自位于 websmtp.sohu.com 上的邮件系统:
非常抱歉,您的邮件不能被发送到某些或全部收件人。附件为邮件原文和错误报告。
请和管理员联系,以获得更多的帮助。
请将错误报告作为附件一并发给管理员. 您可以删除自己的信件.
搜狐邮件系统
: host gmail-smtp-in.l.google.com[209.85.xxx.xxx] said: 551
User not local; please try (in reply to RCPT TO command)
除上述通知还受到多个无法投递的通知,为报告连接意外断开。
这是GMail的通知:
This is an automatically generated Delivery Status Notification
THIS IS A WARNING MESSAGE ONLY.
YOU DO NOT NEED TO RESEND YOUR MESSAGE.
Delivery to the following recipient has been delayed:
mave99a@sohu.com
Message will be retried for 2 more day(s)
Technical details of temporary failure:
Unspecified Error (SENT_MESSAGE): Connection reset by peer
—– Message header follows —–
Received: by 10.90.100.20 with SMTP id x20mr9216098agb.12.1231778863388;
Mon, 12 Jan 2009 08:47:43 -0800 (PST)
Received: by 10.90.53.17 with HTTP; Mon, 12 Jan 2009 08:47:43 -0800 (PST)
Message-ID:b4ba3b590901120847p1d7d78d9l1dc2e45db6e9cd2d@mail.gmail.com
Date: Mon, 12 Jan 2009 16:47:43 +0000
这里的情况和SMTP抓包验证是一致的。 从网络上的反馈来看,Kung Fu Wang的这个行为应该从最早06, 07被发现后就没有停止过,只不过它现在似乎更加倾向于直接发送RST报文来断开连接,而不敢干更多欺骗行为导致被普通用户发现的概率降低了。
Kung Fu Wang的行为不稳定,拦截效果很差,但破坏效果很强
一个非常有趣的现象是,虽然Gmail没有发送成功email, 但是sohu这里却受到来自gmail的信!而且有趣的是不是一封而是几十封,由于sohu webmail上我不知道如何看mail header, 只能从时间来判断,应该是由于gmail的MTA在不断retry, 有部分通讯在收到Kung Fu Wang的RST之前,发送已经完成了,所以sohu已经收下email, 而gmail受到了RST认为发送失败又再次重发… 如此一来本来Kung Fu Wang妄图把这邮件通信掐断的,但反而导致其重复发送了多次 (虽然更多次的retry可能被掐断了)。
在telnet抓包实验中也可以发现这个现象,也就是Kung Fu Wang不是每次都能表现出类似的行为,以及其掐断连接的时机似乎是不确定的。
email是一种存储转发的体系,email server会在一定时间内按照一定的策略不断投递邮件,因此如果Kung Fu Wang不能100%以及足够快地响应,不但不能达到阴险目的,反而有时可能适得其反(比如上面的例子)。 然而其成事不足,败事是有余的,带来的恶果包括:浪费邮件服务器资源、浪费互联网资源,造成邮件重复、丢失或发送失败。
Kung Fu Wang造成邮件发送的几种有害行为分析

1. 发送失败,发送方收到失败通知
当Kung Fu Wang能及时发送RST到双方的时候,表现为SMTP的协议通讯无法正常完成,这时候发送服务器多次尝试失败后会警告和告知发送者。
一般邮件内容较大,或发送方网络带宽较弱比较容易出现这个现象。
2. 发送成功但重复投递
一种可能性是,A-B的SMTP会话已经完成,但连接尚未断开的时候,双方受到Kung Fu Wang的伪RST报文。 这时候A认为连接异常断开而发送失败。 B可能认为SMTP会话已经完成,忽略RST报文,而成功地保存此邮件。
一般邮件较小,并且双方服务器网络和处理性能很强的时候可能出现这种情况。这种情况应该是国外往国内发比较容易发生。
如前所述,这可能导致大量重发并且用户受到重复的邮件。
3. 发送失败,发送方以为发送成功,但邮件丢失
这时最有害的一种,但在目前的Kung Fu Wang机制下有可能发生:A-B SMTP会话已经完成,一般这时候双方的连接会正常断开。A或略了伪RST报文因为其认为连接已经正常断开,但B在正常断开前收到了RST报文而认为连接异常而放弃了本来已经接受的email.
这种情况比较容易发生在双方网络和处理性能不一致,并且很大程度上取决于B的服务器实现方式。 我认为处理能力和通讯带宽不难么强的企业邮件服务器出现这种状况可能较大。
2010/10/01 于 10:23:41
[...] [文章作者:叶歆昊 最后修改:2010-07-19 转载请注明原文链接:http://littz.com/kung-fu-wang-is-watching-over-you-e-mail.html] [...]