2005年黑客聚焦:追踪垃圾邮件(图)

相信大家和我一样,在日常生活中收垃圾邮件也算是一份固定的工作了吧?收到垃圾信件后,如何追踪垃圾邮件发送者呢?很多朋友会毫不犹豫的说,当然是查出寄信人的IP了。其实,在对付垃圾邮件方面,主要有两种形式:防御与追踪。防御主要是强调对垃圾邮件的过滤或者是阻止垃圾邮件的产生,而追踪则强调主动地追查垃圾邮件来源,并对其进行警告或者采取其它措施。本文将主要介绍对邮件的追踪方面的技术,通过针对邮件头进行分析,并查询到最接近源头的地址,以揭开垃圾邮件发送者的“庐山真面目”。
邮件头及传输过程

首先,我们通过一次反垃圾邮件的测试来看看什么是邮件头。因为大多数情况下,服务器都会把寄信人的相关信息附在邮件的文件头。比如,利用Tom.com的免费邮箱,给spamemail@china.com.cn发一个邮件,然后进入http://mail.china.com.cn/邮箱,收到后打开看看(如图1所示):

javascript:resizepic(this) border=0>

图1

点击信箱上面的“邮件头信息”,可看到这样的信息:

Return-Path: <pwbpub@tom.com>
Delivered-To: spamemail@china.com.cn
Received: from 210.72.21.22 (HELO eqmanager2.china.org.cn) (envelope-from pwbpub@tom.com)
by mx.china.com.cn (quarkmail-1.2.1) with SMTP id S918541AbULBMFs
for spamemail@china.com.cn; Thu, 2 Dec 2004 20:05:48 +0800
X-scanvirus: By Sophos Scan Engine
X-scanresult: CLEAN
X-Received:unknown,202.108.255.195,20041202195628
Received: from unknown (HELO tom.com) (202.108.255.195)
by localhost with SMTP; 2 Dec 2004 11:56:28 -0000
MIME-Version: 1.0
Message-ID: <41AF02AE.000113.05427@bjapp25>
Date: Thu, 2 Dec 2004 19:55:26 +0800 (CST)
From: "=?gb2312?B?cHdicHVi?=" <pwbpub@tom.com>
To: spamemail@china.com.cn
Subject: =?gb2312?B?wKy7+NPKvP6y4srU?=
X-Priority: 3
X-Originating-IP: [211.99.190.5]
X-Mailer: 163net
Content-Type: Multipart/Alternative; boundary="Boundary-=_yvxueODEqwFokhipGevKzuojgYQF"

对方是从不同的邮件服务器上发来的,中间自然有转信过程,每转一次都会在文件头顶部加信息。下表列出了一部分表头的相关含义,对我们分析垃圾邮件具有事半功倍的效果。

From: 邮件从哪里发送的。很容易被伪造,在分析中,非常不可信任。

From 不同于From:域,这行并不通常是邮件头的一部分,但是邮件转发程序经常插入这一行,表明邮件什么时候被接收的。这一行总是邮件头的第一行,也可以被伪造,但并不一定。

Reply-To: 回复时发送的地址。很容易被伪造,但常常提供线索,比如有些垃圾邮件经常用该域指向一个合法的邮件地址,以便spammer能够接收到回复的邮件。

Return-Path: 与Reply-To:相同

Sender: 消息发送者。这通常都是伪造的

Message-ID: 邮件系统在创建邮件时的唯一标记。也是最容易被伪造的地方。正常情况下,“Message-ID:”能确定发送者所登录的系统,而不仅仅是创建邮件的系统。Message-ID 的结构同邮件服务器程序有直接关系,不同的邮件服务器产生的ID 也不一样,有时,相同邮件服务器的不同处理也会产生不一样的ID。多数邮件服务器会包含日期、时间、DNS等,有的甚至包含邮件用户信息。如0040409085748.91B1.SAN@test.com,就是由日期、时间、标识、邮件用户和DNS构成。

In-Reply-To: 在回复的时候可能存在,通常指向原邮件的Messgae-ID。

Received: 最可信赖的头。一般会有几条,形成站点列表,这些信息表明达到目的地过程中邮件所经过的服务器,该域都是邮件服务器自动插入的,spammer可以伪造,但是在被伪造的那个点之后的是无法伪造的。这个列表从下往上表明了服务器路径,最上面的一条Received:是最终目的的系统或邮件服务器。

通常的邮件传递主要步骤由下面过程完成:

Sender →MUA →MTA → (routing) → MTA →MDA →{filtering}→ MUA →receiver

脚本小子:MUA(Mail User Agent)表示邮件客户端程序,比如Foxmail、Outlook、Mutt等;MTA(Mail Transport Agent or Message Transfer Agent)表示消息传输代理,这部分程序负责存储和转发、发送E-mail,它从MUA或者其他的MTA 接收到邮件后,就存在于本地,并分析收件人或者转发到其他的MTA,在处理过程中,它通常会编辑、添加邮件头内容,比如Sendmail、Exchange等;MDA(Mail Delivery Agent)表示邮件发送代理,这个程序负责将邮件发送给用户,通常处理某种特定发送操作。

了解了这些环节,我们就可以顺藤摸瓜,探测垃圾发送者的老巢了。

垃圾邮件追踪实例

SMTP协议对我们来说,应该是再熟悉不过的了,但是,这个协议在创建的时候并没有考虑到未来的邮件会成为垃圾,因此安全性很差,邮件头可以任意创建、伪造和修改,而邮件服务器一般不检查发送者的内容,而只关心接收者。这就给了垃圾邮件发送者可乘之机,比如,通过Outlook就可以伪造邮件头。为了对付ISP监控垃圾邮件,这些垃圾邮件发送者通常用一些邮件程序将邮件转发到其他的邮件服务器,并且修改和伪造邮件头,避免被追踪。所以,我们现在的关键任务是识别伪造内容并获得真实信息,根据真实信息进行查询。

1.邮件头追踪

一般来说,邮件内容、Reply-to、最终邮件服务器的Received的内容都有助于我们追踪垃圾邮件的来源。对于“Received:”域来说,我们可以从时区出错、时间误差、IP地址错误这几个方面来追查。试想,一个邮件经过了几天甚至更长时间来传递,正常吗?下面就是一个修改了邮件地址和IP地址的邮件头:

Return-Path: <spamemail@test.com.cn>
Delivered-To: pwbpub@test.com
Received: from mail.test.com.cn (unknown [211.167.xxx.xxx])
by test.com (Postfix) with ESMTP id 590F2160A9 for<pwbpub@test.com>; Thu, 8 Aug 2004 16:48:46 +0800 (CST)
Received: from mail.test.com.cn ([127.0.0.1]) by localhost (mail[127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30543-01 for<pwbpub@test.com>; Thu, 8 Aug 2004 16:47:14 +0800 (CST)
Received: from risker.debian.org (unknown [218.18.xxx.xxx]) bymail.test.com.cn (Postfix) with ESMTP id 32E0817DC17 for<pwbpub@test.com>; Thu, 8 Aug 2004 16:47:06 +0800 (CST)
Date: Wed, 5 May 2004 14:36:13 +0800
From: wlj <spamemail@test.com.cn>
To: pwbpub@test.com
Subject:
Message-Id: <20040505143613.25dd214b.spamemail@test.com.cn>
Mime-Version: 1.0
Content-Type: multipart/mixed;
X-Virus-Scanned: by amavisd-new at test.com.cn

上面的邮件头,明显经过了篡改,包括在MUA 发送邮件时添加的头内容和经过MTA过程中添加的内容。现在,关键的任务就是要检查“Received:”的传递过程了。

第一步:找到如下内容:

Received: from risker.debian.org (unknown [218.18.xxx.xxx]) by mail.test.com.cn (Postfix) with ESMTP id 32E0817DC17 for <pwbpub@test.com>; Thu, 8 Aug 2004 16:47:06 +0800 (CST)

仔细分析,我们可以看到,这是第一个MTA 从MUA 接收邮件时插入的头内容。MUA 的机器名是Risker.debian.org(这不是MUA 的DNS,而只是机器名),(unknown[218.18.xxx.xxx])表示该机器的IP地址,但是查询的DNS是unknown的。该邮件被mai.test.com.cn接收,邮件服务器采用Postfix,而且采用的是ESMTP(扩展的SMTP),分配的ESMTP id是32E0817DC17,传递目标是pwbpub@test.com,接收时间为Thu,6 May 2004 16:47:06,时区是+0800 (CST)。

第二步:查找第二个Received:内容。具体如下:

Received: from mail.test.com.cn ([127.0.0.1]) by localhost (mail[127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30543-01 for <pwbpub@test.com>; Thu, 8 Aug 2004 16:47:14 +0800 (CST)

这是邮件服务器内部程序进行的一个处理过程,因此IP 地址为127.0.0.1,并且是Localhost处理,(amavisd-new, port 10024)表明这个处理程序是使用的Amavisd-new,amavisd-new是一个用于邮件服务器的杀毒、过滤等的接口。

第三步:查找第三个Received:内容。具体如下:

Received: from mail.test.com.cn (unknown [211.167.xxx.xxx]) by test.com (Postfix) with ESMTP id 590F2160A9 for <pwbpub@test.com>; Thu, 8 Aug 2004 16:48:46 +0800 (CST)

该过程表示邮件从服务器名为Mail.test.com.cn 传递出去,IP 地址为211.167.xxx.xxx,接收邮件的服务器是Test.com,采用Postfix服务程序,也通常使用的ESMTP,传递的目标是pwbpub@test.com,日期为Thu,8 Aug 2004 16:48:46,时区是+0800(CST)。

从这个例子可以看出,邮件的传递过程是:

risker.debian.org(MUA)→mail.test.com.cn(MTA)→localhost(MTA中的amavisd-new)→test.com(MTA)

整个过程经历了将近两分钟,不过,在追踪垃圾邮件过程中,这个传递过程中的Received:存在被篡改的可能,也就是说,发送者可能使用了“障眼法”,因此,要炼就一双火眼金睛,判断哪些信息是伪造的,哪些是真实的。对于Received:来说,最后的站点是接收者自己的邮件服务器,因此最后的Received是真实可靠的,除非自己的服务器已经不安全了。

2.垃圾广告邮件追踪

现在,垃圾广告邮件尤其猖獗。对于这类邮件来说,内容中有联系人、联系电话、联系Email、邮编等,追查就很直接。一个典型的此类邮件头内容如下:

Return-Path: <fault@spamemail.com>
Delivered-To: pwbpub@test.com
Received: from spamemail.com (unknown [221.232.11.40])
by test.com (Postfix) with ESMTP id 399521C124
for <pwbpub@test.com>; Mon, 24 May 2004 11:07:41 +0800 (CST)
From: "bbcss" <fault@spamemail.com>
Subject: =?GB2312?B?0KGxvrS0tPPStcrmtvmxptXQycw=?=
To: pwbpub@test.com
Content-Type: multipart/mixed;
boundary="=_NextPart_2rfkindysadvnqw3nerasdf";charset="GB2312"
MIME-Version: 1.0
Reply-To: reply@yahoo.com.cn
Date: Mon, 24 May 2004 11:07:45 +0800
X-Priority: 3
Message-Id: <20040524030745.399521C124@test.com>

现在来对该邮件进行简单的分析。首先找到这一段:

Received: from spamemail.com (unknown [221.232.11.40])by test.com (Postfix) with ESMTP id 399521C124 for <pwbpub@test.com>; Mon, 24 May 2004 11:07:41 +0800 (CST)

本例中,测试用的邮件服务器Test.com是可信的,因此这一条Received信息也是可靠的,但其中的一些内容可能并不是真实可靠的。邮件来自一个机器名为spamemail.com的,IP 地址为221.232.11.40,邮件接收时间是Mon, 24 May 2004 11:07:41 +0800 (CST)。简单检查Spamemail.com,可以得出IP地址为Spamemail.com [203.207.*.*],很容易可以知道这个spamemail.com只是一个名字而已。该邮件的发送者是From: "bbcss" <fault@spamemail.com>,而回复地址是:Reply-To:reply@yahoo.com.cn。实际上,我们就可以推测:fault@spamemail.com就是伪造的了,但是回复地址却可能是真实的;另外,他们肯定使用了一些垃圾邮件发送工具,能够伪造发送者地址、机器名,并且可以直接传递邮件。

3.追捕

经过上述分析测试,我们就可以得到一些有用的数据了。通过对邮件的分析,我们一般能够找到可能接近源头的某个邮件地址或者一个IP地址(这个IP地址可能是一个受害者),用这些信息来追查,依然存在很多难度,毕竟有些事情不是某个人可以完成的,但是却在某些特殊应用方面能够提供不小的帮助。现在,假如我们看到的信来自163.net服务器(bjmx4.163.net),再追下去是从263.net服务器发来的(smtp.x263.net),再下去是来自IVAN (unknown [218.70.*.*]),是谁呢?毫无疑问应该是寄信人了,他的IP就是218.70.*.*,用一个查地理地址最好用的软件“追捕”查查看(如图2所示):

javascript:resizepic(this) border=0>

图2

那就是来自重庆。通过很多优秀的工具,我们就可以来揭开对手的庐山真面目了。如果对方在聊天室或论坛上,我们怎样查到他的IP呢?其实也简单,下载一个孤独剑客的作品Iphunter,软件下载地址为http://www4.skycn.com/soft/1122.html,运行它后,就会把连接到你电脑的IP捕获下来,而让对方来连接你的电脑,当然要让他不知不觉的来连接,而最好的方法就是在聊天室或论坛上放一幅图片,图片的网址必须是你的IP,如 [img] /pic/8/2005-11-15-1615l.jpg [/img],只要对方看到这个(要吸引他的眼球),他的电脑就会自动来打开这个图,当然就会找到你的电脑上来,呵呵,正好中计,Iphunter就可以把他的IP捕获了!剩下的,就是要考虑一下怎么教训他了!

(0)

相关推荐

  • 2005年黑客聚焦:追踪垃圾邮件(图)

    相信大家和我一样,在日常生活中收垃圾邮件也算是一份固定的工作了吧?收到垃圾信件后,如何追踪垃圾邮件发送者呢?很多朋友会毫不犹豫的说,当然是查出寄信人的IP了.其实,在对付垃圾邮件方面,主要有两种形式:防御与追踪.防御主要是强调对垃圾邮件的过滤或者是阻止垃圾邮件的产生,而追踪则强调主动地追查垃圾邮件来源,并对其进行警告或者采取其它措施.本文将主要介绍对邮件的追踪方面的技术,通过针对邮件头进行分析,并查询到最接近源头的地址,以揭开垃圾邮件发送者的"庐山真面目".邮件头及传输过程 首先,我们

  • Linux中防御垃圾邮件的方法

    一.环境说明 单位的服务器使用RedHat Linux 9.0,邮件服务器使用Sendmail 8.12.8;这台服务器放在内网,通过一台Win2000的服务器作网关,连到Internet;网关软件使用的是WinRoute Pro 4.2.5. 二.主要修改措施 1.关闭Sendmail的Relay功能 所谓Relay就是指别人能用这台SMTP邮件服务器,给任何人发信,这样别有用心的垃圾发送者可以使用笔者单位的这台邮件服务器大量发送垃圾邮件,而最后别人投诉的不是垃圾发送者,而是单位的服务器.所以

  • Python利用机器学习算法实现垃圾邮件的识别

    开发工具 **Python版本:**3.6.4 相关模块: scikit-learn模块: jieba模块: numpy模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 逐步实现 (1)划分数据集 网上用于垃圾邮件识别的数据集大多是英文邮件,所以为了表示诚意,我花了点时间找了一份中文邮件的数据集.数据集划分如下: 训练数据集: 7063封正常邮件(data/normal文件夹下): 7775封垃圾邮件(data/spam文件夹下

  • Python垃圾邮件的逻辑回归分类示例详解

     加载垃圾邮件数据集spambase.csv(数据集基本信息:样本数: 4601,特征数量: 57, 类别: 1 为垃圾邮件,0 为非垃圾邮件),阅读并理解数据. 按以下要求处理数据集 (1)分离出仅含特征列的部分作为 X 和仅含目标列的部分作为 Y. (2)将数据集拆分成训练集和测试集(70%和 30%). 建立逻辑回归模型 分别用 LogisticRegression 建模. 结果比对 (1)输出测试集前 5 个样本的预测结果. (2)计算模型在测试集上的分类准确率(=正确分类样本数/测试集

  • 用JS输入email的代码,以防垃圾邮件

    我们经常遇到在网页中放置Email的时候,如果写上真实的邮箱就会引来垃圾邮箱搜索引擎的骚扰,那么可以用这个JS来实现不被搜索到,与直接输入一样的展示方法! ' a+='lto:' b+='@' e='' d='联系站长' b+='e165.com' document.write(a+b+c+d+e) } aiawfni1fe1() //--> [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  • 垃圾邮件收到的信息提供比较经典的

    ●父子二人看到一辆十分豪华的进口轿车.儿子不屑地对他的父亲说:"坐这种车的人,肚子里一定没有学问!"父亲则轻描淡写地回答:"说这种话的人,口袋里一定没有钱!" --你对事情的看法,是不是也反映出你内心真正的态度? ●晚饭后,母亲和女儿一块儿洗碗盘,父亲和儿子在客厅看电视.突然,厨房里传来打破盘子的响声,然后一片沉寂.儿子望着他父亲,说道:"一定是妈妈打破的.""你怎么知道?""她没有骂人." --我们习惯以

  • php 编写安全的代码时容易犯的错误小结

    1.不转意html entities 一个基本的常识:所有不可信任的输入(特别是用户从form中提交的数据) ,输出之前都要转意. echo $_GET['usename'] ; 这个例子有可能输出: <script>/*更改admin密码的脚本或设置cookie的脚本*/</script> 这是一个明显的安全隐患,除非你保证你的用户都正确的输入. 如何修复 : 我们需要将"< ",">","and" 等转换成

  • PHP程序员编程注意事项

    1.不转意html entities   一个基本的常识:所有不可信任的输入(特别是用户从form中提交的数据) ,输出之前都要转意. echo $_GET['usename'] ; 这个例子有可能输出: <script>/*更改admin密码的脚本或设置cookie的脚本*/</script> 这是一个明显的安全隐患,除非你保证你的用户都正确的输入. 如何修复 : 我们需要将"< ",">","and" 等转

  • 实例讲解PHP表单处理

    PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据(form-data). PHP - 一个简单的 HTML 表单 下面的例子显示了一个简单的 HTML 表单,它包含两个输入字段和一个提交按钮: 实例 <html> <body> <form action="welcome.php" method="post"> Name: <input type="text" name="nam

  • “灰鸽子”网页木马从原理、制作到防范(图)

    事物都有两面性.本文介绍的网页木马制作技巧,意在加强大家的防范意识,而不是想"荼毒生灵".希望能给大家带来一些帮助,营造一个安全的上网环境. 如果你访问××网站(国内某门户网站),你就会中灰鸽子木马.这是我一黑客朋友给我说的一句说.打开该网站的首页,经检查,我确实中了灰鸽子.怎么实现的呢?他说,他侵入了该网站的服务器并在网站主页上挂了网页木马:一些安全专家常说,不要打开陌生人发来的网址,为什么?因为该网址很有可能就是一些不怀好意者精心制作的网页木马. 以上只是网页木马的两种形式,实际上

随机推荐