基于蜜罐的邮件捕获系统1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于蜜罐网络的邮件捕获系统

摘要:

关键词

1 介绍

网络钓鱼是伴随着网络技术的发展而产生的,根据中国反网络钓鱼联盟的2011年4月报告,4月份联盟处理钓鱼网站数量达2635,

2 相关工作

2.1 蜜罐系统

蜜罐系统就是一种用于捕捉探测,攻击和漏洞扫描行为的安全工具,其本身是一个包含漏洞的系统,其工作的条件在于认定每一个试图主动与其连接的行为都是可疑的,甚至是恶意的。蜜罐技术的创始人Lance Spitzner对蜜罐进行了如下定义:蜜罐是一种资源,其价值在于被攻击。

传统的安全工具入侵检测同样也可以通过分析数据来侦测入侵行为,但蜜罐可以捕获到实质的数据,并对数据进行分析。基于蜜罐系统与攻击者之间的信息资源的交互程度,可以将蜜罐分为高交互式与低交互式两种。

高交互式的蜜罐系统中,攻击者会与真实的操作系统,服务和程序进行通信。当此类蜜罐被攻击者攻击后,就会获得攻击者的行为特征,攻击所使用的工具信息等资源。配置高交互式的蜜罐时,其安全性要格外注意,因为如果被攻击者发现的话,就可能借此系统来攻击其他的网络。此类蜜罐主要作用如下:学习攻击者的攻击行为,了解攻击工具的具体使用和攻击所利用的系统漏洞。

低交互式的蜜罐系统只能提供一些简单的服务,系统中安装的工具都只是用于模拟操作系统与服务的,所以当攻击者与蜜罐进行实质性通信时会断开连接,所以相对来说其安全性更高,但捕获的信息有限。此类蜜罐主要作用如下:识别端口扫描,攻击特征提取,攻击趋势分析与恶意程序收集。

本文将使用低交互式的蜜罐系统来模拟smtp服务来获取邮件。

2.2 垃圾邮件所使用漏洞

在大多数国家里,制造、传播垃圾邮件的行为都是不合法的,所以很多垃圾邮件制造商都会想着隐藏自己的行为。图一给出了垃圾邮件制造商隐藏自己踪迹的常用方法。

中继转发

Smtp协议就是简单邮件传输协议,与25端口和tcp协议联系在一起,主要用于可靠的并有效的进行邮件传输。

在smtp协议中具有中继转发服务,即通过别人的邮件服务器将邮件递送到目的地址,一般来说,中继转发服务针对的对象都是有选择的并通过认证了的用户。然而一些具有安全漏洞的smtp服务器都会无限制的开放中继转发服务,这种服务器就有可能被垃圾邮件制造商发现并进行滥用。

开放代理

代理服务器是介于客户端与服务器之间的另一台服务器,其用于获取某种特定的服务,允许多于一台的主机共用一个IP地址连接互联网,代理就像是一个中间人,与其他客户端进行连接。

而一个有安全漏洞的代理服务器允许任意一个IP地址连接任意一个IP地址或端口,这种代理服务器称之为开放代理。垃圾邮件制造商会持续的扫描开放的代理,一旦定位了就会使这些代理服务器与垃圾邮件服务器连接,然后使用代理与其他正常的邮件服务器连接,通

过发送特定的smtp指令就可以发送垃圾邮件了。

3 蜜罐系统

Honeyd是一款强大的开源虚拟蜜罐软件,属于一种低交互式的蜜罐系统,可运行在UNIX和windows系统中。可以在虚拟的网络环境中模拟多个地址,虚拟蜜罐主机可以根据具体的配置文件模拟多种网络服务,外部的主机可以对虚拟蜜罐主机进行常规的ping、tracert 等操作,回应数据包时,honeyd的个性化引擎使回应包与被配置的操作系统特征相适应,同样honeyd也可以为真实的主机提供代理。

3.1 honeyd体系结构

Honeyd软件结构由配置数据库,中央包分配器,协议处理器,个性化引擎和自选路由组件组成。具体架构如图二所示:

图二

系统接收到的数据会由中央包分发器处理,中央包分发器首先会检查IP长度和校验和。然后根据配置数据库的数据查找到符合目标位置的蜜罐主机配置。确定具体的配置后,数据包就会交付给协议处理器进行相应处理。

由于不同的主机处理方式也各不相同,这就导致了发送的数据也就具有的不同的特点,由于攻击者会通过一些扫描工具来利用这些特点收集系统的信息,对于honeyd来说,最为重要的就是在扫描时自己的蜜罐身份不能被暴露出来,所以个性引擎组件的工作内容就是模拟不同系统的不同特征。具体来说,honeyd利用Nmap的指纹库来作为TCP和UDP连接的个性化参考,利用Xprobe指纹库来作为ICMP连接的个性化参考。

3.2利用honeyd构建虚拟网络:

对于在整个系统运行前,honeyd需要正确的配置,honeyd通过使用一个基于文本的配置文件,指定虚拟蜜罐的IP地址,每一个蜜罐主机可用的服务等。具体的几类指令有:create,set,add,bind,delete。其中create用于创建每一个主机所要使用的模板;set和add用于改变模板的设置,set命令从Nmap指纹文件中选取一个特征赋给一个模板,例如指令set linux personality “linux 2.6.6”,即设定一个模板名为linux的模拟运行linux 2.6.6版本操作系统,而add命令是模板应用的核心,其指定可远程访问的服务以及每一个端口上运行的应用程序,命令格式,如指令add linux proto tcp port 25 “./script/spam.py”,即当一个远程主机与带有linux模板主机的25端口建立tcp连接时,honeyd启动一个新的进程执行服务脚本./script/spam.py;bind命令就是给一个IP地址分配模板,例如bind windows ;而delete 可以用来重新配置运行中的蜜罐。

在本文中honeyd主要用于模拟两种服务:具有开放中继转发漏洞的邮件服务器和具有开放代理漏洞的代理服务器。图三给出了系统的具体架构。

3.3 核心模板分析

其中两个模板是整个系统的核心---SMTP模拟器和开放代理模拟器。

对于SMTP模拟器,honeyd接受来自25端口、TCP协议的数据包,并且以一个SMTP 服务的角色进行回应,每接受一份信息,其表现的都像一个开放中继转发的邮件服务器进行转发,其实际上信息不会被发送出去而是存储在当地服务器里面。下面给出了SMTP模拟器的局部配置。

if command in ["HELO", "EHLO"]:

whom = data[5:].strip()

self.hello = whom

self.push("250 Hello %s, pleased to meet you.\r\n" % whom)

elif command == 'MAIL':

whom = data[10:].strip()

self.mailfrom = whom

self.push("250 %s... Sender ok\r\n" % whom)

elif command == 'RCPT':

whom = data[8:].strip()

self.rcptto.append(whom)

self.push("250 %s... Recipient ok\r\n" % whom)

elif command == "DA TA":

self.set_terminator('\r\n.\r\n')

self.found_terminator = self.data_found_terminator

self.push('354 Enter mail, end with "." on a line by itself\r\n')

elif command == "QUIT":

self.push("221 %s closing connection\r\n" % self.host)

self.close_when_done()

elif command == "RSET":

self.reset()

self.push('250 Reset state\r\n')

else:

self.push("500 Command unrecognized\r\n")

对于开放代理模拟器,具体分为两种:Http代理模拟器和SOCKS代理模拟器。

Http代理模拟器其正常接收多个TCP端口的数据并提供代理服务,当垃圾邮件商连接该模块时,垃圾邮件商就会要求代理服务器连接到受害者的邮件服务器上,代理服务器收到该请求后,不会直接响应该请求,其会连接到自己的邮件服务器上,并发送给垃圾邮件商一个回应包,使之以为连接成功了。垃圾邮件商就会认为其已经成功连接到了目标SMTP服务器,从而发送垃圾邮件。

SOCKS代理模拟器其接受多个TCP端口的数据并提供SOCKS代理服务,该模拟行为表现的想一个不需要认证的代理,允许来自任意IP地址的连接。在成功连接到该模拟器后,垃圾邮件商就要求连接到外部的一个TCP端口和地址。如果要求连接的tcp端口号不是25的话,就回应一个错误信息;如果tcp端口号为25端口的话,随后的行为与Http代理模拟器类似。

4 部署中存在的问题及解决方案

4.1 honeyd接收数据的方式

相关文档
最新文档