专利名称:一种异常邮件检测系统及方法
技术领域:
本发明涉及电子邮件通信领域,尤其涉及一种异常邮件检测方法及系统。
背景技术:
异常流量通常是指在网络上承载的非运营商或者用户所期望的各种流 量。对于提供互联网服务的运营商,对网络性能和功能造成影响和冲击的流
量都可以被认为是异常流量,其中包括滥用带宽资源的网络应用(例如p2p 应用和群发垃圾邮件)、DoS (Denial of Service,拒绝服务)/DDoS (Distributed Denial of Service,分布式拒绝服务)攻击流量、不遵守互 联网协议规范的无意义流量以及重大社会事件所引起的突发流量等。
近期,在各种异常流量中滥用SMTP (Simple Mail Transfer Protocol, 简单邮件传输协议)的流量(即含异常邮件的流量)所占比例显著上升,危 害越来越大。SMTP协议本身是一个简化的邮件递交协议,易用、开放和基于 信任的设计理念使其成为当今最重要的通信方式,但是也为不法分子制造垃 圾邮件、蠕虫病毒、网络攻击等异常流量提供了方便。因而,针对互联网宏 观网络安全的要求,需要设计一种异常邮件检测方法,能够在骨干网或局域 网层面实时发现邮件流量中的异常邮件,在大规模安全事件爆发时进行快速 有效的防御。
在通常情况下有如下四种原因导致邮件流量中含有异常邮件 原因1,垃圾邮件。垃圾邮件发送者为保证自身的经济利益使用专门的 工具操作垃圾邮件。此类工具通常不会严格遵守SMTP协议而集成某些特殊的 功能(如自动生成大量随机邮件地址、伪造发送者所属网域信息、内建SMTP 引擎和使用原始套结字进行网络通信),并将特殊的值写入应用层协议的字 段。
原因2,邮件蠕虫。邮件蠕虫在爆发时,局域网内失败的DNS(域名解析) 査询流量和失败的SMTP连接数目急剧增加,此类现象与网络正常运行时形成显著区别。
原因3,恶意攻击。例如,扫描网域内邮件服务器,收集邮件服务器上
的用户邮件地址列表,产生字典攻击;攻击者主动建立大量空SMTP会话,对 邮件服务器形成DD0S攻击;使用虚假用户地址冒充受害邮件网域向大量邮件 服务器发送邮件等。
原因4,逃避手段。 一些发送者使用数据分片,数据分包策略逃避过滤 系统检测;为了对抗延迟技术,提高吞吐率,发送者将所有命令甚至邮件正 文都放在一个IP包中发送,因此一次邮件会话中IP包的数目,每个IP包的 长度同正常IP包有明显区别。
目前,研究者提出了一些异常邮件检测技术,较为常见的如特征识别法 和历史行为分析法。
特征识别技术通过建立"异常邮件特征库"的方法来阻止异常邮件,通 过对邮件的负载部分进行对比检测,从而发现蠕虫病毒的特征码和邮件攻击, 进而对异常邮件进行过滤。
历史行为分析法通过统计发送邮件服务器的历史发送情况,可以预测以
后其发送异常邮件的概率,并得到如下模型
其中i为发送服务器的IP地址,&。。rf, A^,为服务器i发送的异常邮件和所
有邮件的数目,二者的比值A为其发送合法邮件的概率。定义一个门限值r,
如果A〉r则说明该服务器发送合法邮件的可能性较大,反之则说明该服务器
发送异常邮件的比率较高。
现有异常邮件检测技术主要用于局域网环境,且主要是对邮件服务器上 的静态邮件文本或日志信息进行离线统计和分析,仅能检测完整的邮件会话, 实时性能差。此外,这些技术忽略了数据的网络属性和协议自身的特点,检 测参数由管理人员制定,不适合于骨干网络中异常邮件的检测。
发明内容
为解决上述问题,本发明提供一种基于命令报文的异常邮件检测系统及方法,其目的在于,实现在骨干网或局域网上实时检测出异常邮件。 本发明公开了一种异常邮件检测系统,包括
状态机生成模块,用于依据邮件协议设置邮件通信过程的状态机,所述 状态机包括邮件通信过程中所处的状态,驱动所述状态切换的事件及用于记 录属性的信息的状态变量;为邮件会话创建对应状态机实例,并使用所述状
态机实例对应的状态变量实时记录所述邮件会话的属性信息;
属性检测模块,用于设置所述属性对应的检测标准,判断所述状态机实 例对应的状态变量中的属性信息是否符合对应的检测标准,如果符合,则所 述属性信息对应的邮件为异常邮件。
所述系统还包括过滤模块和监控模块,所述检测标准包括严重检测标准 和/或普通检测标准,
所述属性检测模块,还用于在确定所述属性信息对应的邮件为异常邮件 时,检査被符合的所述检测标准是否包含严重检测标准,如果包含,则所述
异常邮件为严重异常邮件,否则,所述异常邮件为普通异常邮件;
所述过滤模块,用于阻断所述严重异常邮件所在邮件会话的发送邮件服 务器和接收邮件服务器间的连接;
所述监控模块,用于记录所述普通异常邮件的信息,以进行监控操作。 所述属性进一步包括网络属性和协议属性,所述属性检测模块进一步包 括网络属性检测模块和协议属性检测模块,
所述网络属性检测模块,用于设置所述网络属性对应的检测标准,判断 所述状态机实例对应的状态变量中的网络属性信息是否符合对应的检测标 准,如果符合,则所述网络属性信息对应的邮件为异常邮件;在确定所述网 络属性信息对应的邮件为异常邮件时,检査被符合的所述检测标准是否包含 严重检测标准,如果包含,则所述异常邮件为严重异常邮件,否则,所述异 常邮件为普通异常邮件;
所述协议属性检测模块,用于设置所述协议属性对应的检测标准,判断 所述状态机实例对应的状态变量中的协议属性信息是否符合对应的检测标 准,如果符合,则所述协议属性信息对应的邮件为异常邮件;在确定所述协 议属性信息对应的邮件为异常邮件时,检查被符合的所述检测标准是否包含 严重检测标准,如果包含,则所述异常邮件为严重异常邮件,否则,所述异常邮件为普通异常邮件。
所述邮件协议为简单邮件传输协议或扩展简单邮件传输协议。所述网络 属性包括命令负载长度,所述命令包括发件人命令、数据命令、复位命令 和退出命令;
所述命令负载长度属性对应的严重检测标准包括
所述发件人命令的长度小于正常范围的最小值,并且所述发件人命令中 发件人地址不为所述邮件协议规定的错误通告邮件中的发件人地址形式,所 述正常范围为[max("-25,/)," + 25],其中/、"和<5分别为所述发件人命令长度 的最小值、期望值和标准差值;
所述数据命令、复位命令和退出命令的长度小于正常值6个字节;
所述数据命令长度大于所述正常值;
所述命令负载长度属性对应的普通检测标准包括
所述发件人命令的长度大于所述正常范围;
所述复位命令和退出命令的长度大于所述正常值。
所述系统还包括参数配置模块,
所述参数配置模块,用于设置所述发件人命令长度的最小值、期望值和 标准差值。
所述网络属性包括发件人地址;
所述发件人地址属性对应的严重检测标准为同一邮件会话中至少存在两 封邮件的发件人地址不属于同一网域。
所述协议属性包括事件,所述事件包括由于接收报文所触发的命令事件 和由于未接收数据时长超过设置时长而触发的超时事件;
所述状态机包括信封状态,所述信封状态表示已接收到发件人和收件人
<会自. i 口必;
所述事件属性对应的严重检测标准包括,在所述信封状态下接收到发件 人命令;
所述事件属性对应的普通检测标准包括 产生超时事件;
所述命令事件产生时所处的状态不符合所述邮件协议的规定,并且未在 所述信封状态下接收到发件人命令。本发明还公开了一种异常邮件检测方法,包括
步骤1,依据邮件协议设置邮件通信过程的状态机,所述状态机包括邮 件通信过程中所处的状态,驱动所述状态切换的事件及用于记录属性的信息 的状态变量,设置所述属性对应的检测标准;
步骤2,为邮件会话创建对应状态机实例,并使用所述状态机实例对应 的状态变量实时记录所述邮件会话的属性信息;
步骤3,判断所述状态机实例对应的状态变量中的属性信息是否符合对 应的检测标准,如果符合,则所述属性信息对应的邮件为异常邮件。
所述检测标准包括严重检测标准和/或普通检测标准,
所述步骤3还包括,在确定所述属性信息对应的邮件为异常邮件时,检 査被符合的所述检测标准是否包含严重检测标准,如果包含,则所述异常邮 件为严重异常邮件,否则,所述异常邮件为普通异常邮件;
步骤101,阻断所述严重异常邮件所在邮件会话的发送邮件服务器和接 收邮件服务器间的连接;
步骤102,记录所述普通异常邮件的信息,以进行监控操作。
所述邮件协议为简单邮件传输协议或扩展简单邮件传输协议。
所述属性包括命令负载长度,所述命令包括发件人命令、数据命令、 复位命令和退出命令;
所述命令负载长度属性对应的严重检测标准包括
所述发件人命令的长度小于正常范围的最小值,并且所述发件人命令中 发件人地址不为所述邮件协议规定的错误通告邮件中的发件人地址形式;, 所述正常范围为[max("-25,/)," + 2S],其中/、"和5分别为所述发件人命令长 度的最小值、期望值和标准差值;
所述数据命令、复位命令和退出命令的长度小于正常值6个字节;
所述数据命令长度大于所述正常值;
所述命令负载长度属性对应的普通检测标准包括
所述发件人命令的长度大于所述正常范围;
所述复位命令和退出命令的长度大于所述正常值。
所述步骤1还包括
步骤131,设置所述发件人命令长度的最小值、期望值和标准差值。所述属性包括发件人地址;
所述发件人地址属性对应的严重检测标准为同一邮件会话中至少存在两 封邮件的发件人地址不属于同一网域。
所述属性包括事件,所述事件包括由于接收报文所触发的命令事件和由
于未接收数据时长超过设置时长而触发的超时事件;
所述状态机包括信封状态,所述信封状态表示已接收到发件人和收件人 ,自.
所述事件属性对应的严重检测标准包括,在所述信封状态下接收到发件 人命令;
所述事件属性对应的普通检测标准包括 产生超时事件;
所述命令事件产生时所处的状态不符合所述邮件协议的规定,并且未在 所述信封状态下接收到发件人命令。
本发明的有益效果在于,能够应用邮件的网络属性和协议属性实时地检 测出局域网和骨干网中的异常邮件,且不侵犯用户隐私,并对异常邮件进行 分类,阻断严重异常的邮件会话,监控普通异常的邮件,从而通过减少异常 邮件提高邮件服务器的性能,并在大规模安全事件爆发时进行快速有效的防 御。
图l是本发明系统的结构图2是本发明状态机的示意图3是本发明方法的流程图。
具体实施例方式
下面结合附图,对本发明做进一步的详细描述。
本发明的系统结构如图1所示,包括状态机生成模块101、属性检测模 块102、过滤模块103和监控模块104,参数配置模块105,属性检测模块102 进一步包括网络属性检测模块121和协议属性检测模块122。状态机生成模块101,用于依据邮件协议设置邮件通信过程的状态机, 所述状态机包括邮件通信过程中所处的状态,驱动所述状态切换的事件及用 于记录属性的信息的状态变量;为邮件会话创建对应状态机实例,并使用所
述状态机实例对应的状态变量实时记录所述邮件会话的属性信息。
状态机同邮件协议相对应,包括状态、事件和状态变量,用来模拟处理 协议报文的过程。
状态,表示在整个邮件通信过程中所处的不同阶段;
事件,为使状态机发生状态转移的操作,由邮件通信过程中的接收报文 触发的事件为命令事件,由于未接收到报文的时长超过设置时长而触发的事 件为超时事件;
状态变量,用于记录属性的信息和操作应用项目的信息,属性为用于进 行异常判断的项目,操作应用项目为在过滤或监控操作中的应用信息,包括 发送邮件服务器和接收邮件服务器的IP地址和端口。属性进一步包括网络属 性和协议属性,网络属性包括收件人地址属性、发件人地址属性、命令长度 属性,协议属性包括事件属性,事件包括超时事件和命令事件。
网络属性,是同邮件命令有关的属性,该属性只在网络中可见,终端无 法获得该属性,所述邮件命令是邮件通信时在接收邮件服务器和发送邮件服 务器间交互的命令,包括,招呼命令(HEL0)、发件人命令(MAIL FROM)、 收件人命令(RCPTT0)、数据命令(DATA)、复位命令(RSET)和退出命令 (QUIT);
协议属性,是同SMTP或扩展SMTP协议相关的属性。
每个邮件会话对应于属性和操作应用项目具有自己的属性信息和操作应 用信息,使用邮件会话对应的状态变量进行记录。状态机生成模块101生成 的状态机如图2所示。
本实施例的邮件协议为SMTP协议或扩展SMTP协议。状态机包含如下6 个状态初始状态(INIT)、建立状态(HEL0)、信封状态(ENVELOPE)、 数据状态(DATA)、文本状态(TEXT)和完成状态(DONE)。
初始状态,表示邮件会话开始,在初始状态接收报文,触发命令事件, 如果接收到招呼命令,状态转移到建立状态;
建立状态,表示接收邮件服务器收到发送邮件服务器发送的招呼命令,准备接收新邮件,在建立状态接收报文,触发命令事件,如果接收到发件人 命令和收件人命令,状态转移到信封状态;
信封状态,表示已经接收到发件人和收件人信息,在信封状态接收报文, 触发命令事件,如果接收到数据命令,状态转移到数据状态,如果接收到复 位命令,状态转移到建立状态;
数据状态,表示接收邮件服务器成功接收数据命令,准备接收信头内容, 信头内容在数据命令后正文前发送并且终端可见,在数据状态接收报文,触
发命令事件,如果接收到边界命令(Border),状态转移到文本状态;
文本状态,表示接收邮件服务器准备接收邮件正文,在文本状态接收报 文,触发命令事件,接收到邮件正文直到接收到发送邮件服务器发送的结束 命令(DOT),接收邮件正文完成,状态转移到建立状态,表示当前邮件处理 结束;
完成状态,表示邮件会话结束,由于在设置的时长内没有接收到数据而 触发超时事件时,状态机由当前所处的状态转移到完成状态,在建立状态或 信封状态接收报文,触发命令事件,在接收到退出命令后,状态转移到完成 状态。
对报文解析过程为,接收报文,触发命令事件,对报文负载部分逐行解 析,获得报文中命令。
状态机的状态变量包括信封变量、地址变量、命令长度变量、命令事 件变量和超时事件变量。
信封变量,对应于当前邮件的收件人地址属性和发件地址属性,如果邮 件会话中包含多封邮件,此变量还应包含第一封邮件的收件人地址属性和发 件人地址属性,使用链表存储方式,用于记录第一封邮件和当前邮件的收件 人和发件人的地址信息,在建立状态转换到信封状态时添加属性信息;
地址变量,对应于地址操作应用项目,用于记录发送邮件服务器和接收 邮件服务器的IP地址和端口 ,在初始状态转换到建立状态时记录;
命令长度变量,对应于命令长度属性,包括4个数值变量分别记录发件 人命令、数据命令、复位命令和退出命令的负载长度,在接收发件人命令、 数据命令、复位命令或退出命令时更新对应数值变量的记录;
命令事件变量,对应于命令事件属性,用于记录命令事件产生的状态和接收的命令,在接收报文触发命令事件时更新记录;
超时事件变量,对应于超时事件属性,用于记录超时事件产生的状态, 在超时事件产生时更新记录。
状态机生成模块101在初始确定状态机,为每个邮件会话生成一个状态 机实例,并将状态机实例对应的状态变量加入到会话描述信息表中,用散列 表形式存储,其中邮件会话的接收邮件服务器和发送邮件服务器的IP地址和 端口所组成的四元组信息作为状态机实例的索引。状态机实例对应的状态变 量用于实时记录邮件会话过程中的属性信息和操作应用信息。
状态机实例初始时,处于初始状态,在事件产生时进行状态转移。例如, 在信封状态时,接收到数据命令,则状态转移到数据状态,并更新命令长度 变量和命令事件变量,将命令长度变量中的数据命令负载长度更新为该数据 命令的负载长度,将命令事件变量中事件产生的状态更新为信封状态,接收 的命令更新为数据命令。
当状态机实例在信封状态,接收到复位命令,转移到建立状态时,丢弃 状态变量的所有历史信息;当状态机实例转移到完成状态时,将状态变量信 息写入日志,从描述信息列表中清除相应的状态变量,并释放所有相关资源。
在状态机生成模块101接收报文,进行完报文解析并完成状态变量更新 后,通知属性检测模块102被更新的状态变量。
属性检测模块102包括网络属性检测模块121和协议属性检测模块122。
网络属性检测模块121,用于设置网络属性对应的检测标准,检测标准 包括严重检测标准和普通检测标准,判断状态变量中的网络属性信息是否符 合所述检测标准,如果都不符合,则当前网络属性信息对应的邮件为正常邮 件,否则,为异常邮件,并判断符合的检测标准中是否包括严重检测标准, 如果包括,则邮件为严重异常邮件,如果只包含普通检测标准,则为普通异 常邮件。
网络属性包括命令负载长度和发件人地址,在初始时,设置网络属性的 检测标准。
命令负载长度属性的严重检测标准为,
标准l,发件人命令的长度小于正常范围[max("-25,/)," + 25],其中/、" 和S分别为所述发件人命令长度的最小值、期望值和标准差值,该正常范围
14中参数值与系统实施时所处的网络环境相关, 一般通过大样本数据的统计获 得,可由参数配置模块105动态设置,网络属性检测模块121在检测发件人 命令长度之前重新读取所述参数,并且所述发件人命令中发件人地址不为邮 件协议规定的错误通告邮件中的发件人地址形式,发件人为
postmast@domain或administrator@domain的由IM牛为错误通告由[H牛; 标准2,数据命令、复位命令和退出命令的长度小于6个字节; 标准3,数据命令长度大于6个字节;
标准1中,如果发件人地址形如abgsh@,则此邮件为地址不规范邮件; 如果发件人地址不是形如abgsM,则此邮件为报文拆分发送邮件,该两种情 况被划为严重异常。
在标准2中,数据命令、复位命令和退出命令的长度小于正常值6个字 节,则此邮件为报文拆分发送邮件,该种情况被划为严重异常。
在标准3中,数据命令长度大于正常值6个字节,则此邮件为不遵守邮 件协议的邮件,该种情况被划为严重异常。
普通检测标准为,
标准4,发件人命令的长度大于所述正常范围[max("-25,/)," + 25];
标准5,复位命令和退出命令的长度大于正常值6个字节。
读取发件人地址变量和命令长度变量中被更新的数值变量,判断被更新 的数值变量的数值和发件人地址变量是否符合对应的命令负载长度属性的检 测标准,如果符合其中任何一项,则当前进行通信的邮件为异常邮件,如果 都不符合,贝lj当前进行通信的邮件为正常邮件。如果当前进行通信的邮件为 异常邮件,则判断符合的检测标准中是否包含严重检测标准,如果包含,则 对应的邮件为严重异常邮件,通知过滤模块103进行过滤处理,而不再进行 发件人地址属性对应的更新的状态变量同对应的检测标准的比较,如果不包 含,则为普通异常邮件,进行发件人地址属性对应的更新的状态变量同对应 的检测标准的比较。
发件人地址属性的检测标准为同一所述邮件会话中至少有两封邮件的发 件人地址不属于同一网域,并且该检测标准为严重检测标准。如果邮件会话 中含有多封邮件,当前邮件非第一封邮件。
读取被更新的当前邮件信封变量,获取当前邮件的发件地址,比较信封中当前邮件的发件人地址和第一封邮件的发件人地址,是否符合该检测标准, 如果符合,则邮件会话中的所有邮件为异常邮件,并且由于该检测标准为严 重检测标准,所以此异常邮件为严重异常邮件,通知过滤模块103进行过滤 处理,协议属性检测模块122不进行检测;如果不符合,则将检测结果通知
协议属性检测模块122,并且通知协议属性检测模块122开始进行检测。
协议属性检测模块122,用于设置所述协议属性对应的检测标准,该检 测标准包括严重检测标准和普通检测标准,判断所述状态变量中的协议属性 信息是否符合所述检测标准,如果都不符合,则当前协议属性信息对应的邮 件为正常邮件,否则,当前协议属性信息对应的邮件为异常邮件,并判断符 合的检测标准中是否包括严重检测标准,如果包括,则邮件为严重异常邮件。 协议属性包括事件属性,事件包括超时事件和命令事件。 超时事件,由于未接收到报文的时长超过设置时长而触发的事件为超时 事件,产生超时事件原因可能为,攻击者发出大量招呼命令(HEL0),进行 HELO攻击或SMTP端口扫描行为,用以消耗服务器或网络带宽资源,产生大 量不完整会话,此种原因下,状态机在结束前处于HELO状态;网络拥塞、网 络故障或无效事件引发的会话中止;在骨干网链路捕包过程中,发生邮件报 文丢失现象。后两种原因引发超时事件时状态机在结束前可能处于除完成状 态外的任何状态。
命令事件,由于邮件通信过程中接收报文而触发的事件为命令事件,如 果命令产生在同SMTP协议规定不一致的上下文环境中,则触发的命令事件为 无效事件。例如,在信封状态接收到发件人命令,在数据状态接收到复位或 退出命令,在文本状态接收到复位或退出命令。在发生无效事件时,邮件服 务器不能正确解析接收的命令。尽管产生无效事件不会对接收服务器造成影 响,但不符合邮件协议的网络数据是无意义流量,造成网络带宽资源浪费, 所以将产生无效事件的邮件定为异常邮件。
在初始时,设置协议属性的检测标准,包括严重检测标准和普通检测标准。
严重检测标准为,在信封状态下接收到发件人命令。在信封状态下接收 到发件人命令,则此邮件为配置错误服务器发出的邮件,所以该种情况被划 为严重异常。普通检测标准为 产生超时事件;
命令事件产生的状态不符合邮件协议规定,并且不属于上述严重检测标 准,即未在信封状态下接收到发件人命令。
读取更新的协议属性对应状态变量,同检测标准进行比较,以判定当前 进行通信的邮件是否为异常邮件,如果进行通信的邮件为异常邮件,则判断 是否符合所述严重检测标准,如果符合,则为严重异常,通过过滤模块103 进行过滤,否则,依据网络属性检测模块121和协议属性检测模块122的检
査结果,确定是否为普通异常邮件,如果是,则通过监控模块104进行监控。
检査被更新的状态变量是否包含超时事件变量,如果超时事件变量被更
新,则当前进行通信的邮件为异常邮件;读取被更新的命令事件变量,检査
命令事件变量中记录的命令发生状态是否符合邮件协议规定,如果不符合,
则进行通信的邮件为异常邮件;检查命令事件变量中记录的命令发生状态是 否为在信封状态下接收到发件人命令,如果是,则符合严重检测标准,为严 重异常邮件,否则,为普通异常邮件。
上述实施例中的网络属性检测模块和协议属性检测模块的启动顺序可以 调换。先启动协议属性检测模块进行检测,如果通过检测确定邮件为严重异 常邮件,则通知过滤模块进行过滤处理,网络属性检测模块不进行检测;否 则,将检测结果通知网络属性检测模块,并且通知网络属性检测模块开始进 行检测。
过滤模块103,用于阻断所述严重异常邮件所在邮件会话的发送端和接收 端间的连接。
获得属性检测模块102的通知后,读取地址变量中记录的发送邮件服务 器和接收邮件服务器的IP地址和端口分别向发送邮件服务器和接收邮件服 务器发送伪造的IP报文,提前中止该邮件的传输。
对于处于发件人命令发送阶段的邮件,向发送邮件服务器发送含5xx命 令的IP报文(根据SMTP协议,551命令表明接收邮件服务器上无此用户), 对接收邮件服务器发送复位报文,切断此次连接。
对于处于邮件用户数据发送阶段的邮件,同时向发送邮件服务器和接收 邮件服务器发送复位报文,切断此次连接。通常,为保证较高的吞吐率,垃圾邮件发送者或攻击者对发送失败的邮 件不会进行重传尝试,因此采用上述方法可有效减少垃圾邮件。
监控模块104,用于记录所述普通异常邮件的信息,以进行监控操作。
获得属性检测模块102的通知后,监控模块104开始对该邮件迸行监控。 例如,记录邮件的历史信息,通过超时事件变量发现在建立状态上发生的超 时事件超过预设数值,则认为网络中存在HELO攻击。
参数配置模块105,用于动态设置属性检测模块102中使用的系统参数。
参数配置模块105建立并维护一张系统参数表,由管理人员通过对流量 数据进行统计,发现网络属性检测模块121中使用的/、"和S的值,其中/、 "和S分别为发件人命令长度的最小值、期望值和标准差值。发生变化时,通 过参数配置模块105可实时更新上述参数,网络属性检测模块121在检测发 件人命令长度之前都会重新读取所述参数。
本发明方法如图3所示,包括
步骤S301,依据邮件协议设置邮件通信过程的状态机,状态机包括状态、 事件和状态变量,本实施例的状态机如图2所示,并设置状态变量记录的属 性对应的检测标准,检测标准包括严重检测标准和普通检测标准。
状态变量包括信封变量、地址变量、命令长度变量、命令事件变量和 超时事件变量。
信封变量,对应于当前邮件的收件人地址属性和发件地址属性,如果邮 件会话中包含多封邮件,此变量还应包含第一封邮件的收件人地址属性和发 件人地址属性,使用链表存储方式,用于记录收件人和发件人的地址信息, 在建立状态转换到信封状态时添加属性信息;
地址变量,对应于地址操作应用项目,用于记录发送邮件服务器和接收 邮件服务器的IP地址和端口,在初始状态转换到建立状态时记录;
命令长度变量,对应于命令长度属性,包括4个数值变量分别记录发件 人命令、数据命令、复位命令和退出命令的负载长度,在接收发件人命令、 数据命令、复位命令或退出命令时更新对应数值变量的记录;
命令事件变量,对应于命令事件属性,用于记录命令事件产生的状态和 接收的命令,在接收报文触发命令事件时更新记录;
超时事件变量,对应于超时事件属性,用于记录超时事件产生的状态,在超时事件产生时更新记录。
命令负载长度属性的严重检测标准为,
标准l,发件人命令的长度小于正常范围[max("-25,/),M + 25],其中/、" 和S分别为所述发件人命令长度的最小值、期望值和标准差值,所述正常范 围的参数与系统实施时所处的网络环境相关, 一般通过大样本数据的统计获 得,可动态设置,系统在检测发件人命令长度之前都会重新读取这些参数。 并且所述发件人命令中发件人地址不为邮件协议规定的错误通告邮件中的发 件人地址形式,发件人为postmast@domain或administrator@domain的由P件 为错误通告邮件;
标准2,数据命令、复位命令和退出命令的长度小于6个字节;
标准3,数据命令长度大于6个字节;
标准1中,如果发件人地址形如abgsh@,则此邮件为地址不规范邮件; 如果发件人地址不是形如abgsh@,则此邮件为报文拆分发送邮件,该两种情 况被划为严重异常。
在标准2中,数据命令、复位命令和退出命令的长度小于正常值6个字 节,则此邮件为报文拆分发送邮件,该种情况被划为严重异常。
在标准3中,数据命令长度大于正常值6个字节,则此邮件为不遵守邮 件协议的邮件,该种情况被划为严重异常。
命令负载长度属性的普通检测标准为,
标准4,发件人命令的长度大于所述正常范围[max(" - 25,/)," + 25];
标准5,复位命令和退出命令的长度大于正常值6个字节。
发件人地址属性的检测标准为同一所述邮件会话中至少两封邮件的发件 人地址不属于同一网域,并且该检测标准为严重检测标准。
事件属性的严重检测标准为,在信封状态下接收到发件人命令。在信封 状态下接收到发件人命令,则此邮件为配置错误服务器发出的邮件,所以该 种情况被划为严重异常。
事件属性的普通检测标准为
产生超时事件;
命令事件产生的状态不符合邮件协议规定,并且未在信封状态下接收到 发件人命令。步骤S302,为邮件会话创建对应状态机实例,状态机实例处于初始状态。 步骤S303,接收到报文触发命令事件或由于在设置的时间内未接收到报
文产生超时事件,更新对应状态变量记录的属性信息。
步骤S304,判断当前会话是否结束,如果结束,则执行歩骤S310;否则
执行步骤S305。
步骤S305,判断当前邮件是否结束,如果结束,则等待处理下一封邮件, 执行步骤S303;否则执行步骤S306。
步骤S306,逐条读取更新的状态变量,判断更新状态变量中记录的属性 信息是否符合对应检测标准,如果存在符合检测标准的属性信息,则所述属 性信息对应的邮件为异常邮件,执行步骤S307,如果更新状态变量中的属性 信息对检测标准都不符合,则执行步骤S303。
步骤S307,判断被符合的检测标准中是否包括严重检测标准,如果包含, 则执行步骤S308,否则执行步骤S309。
步骤S308,阻断所述严重异常邮件所在邮件会话的发送邮件服务器和接 收邮件服务器间的连接,以进行过滤。
应用地址变量中记录的发送邮件服务器和接收邮件服务器的IP地址和 端口分别向发送邮件服务器和接收邮件服务器发送伪造的IP报文,提前中止 该邮件的传输。
对于处于发件人命令发送阶段的邮件,向发送邮件服务器发送含5xx命 令的IP报文(根据SMTP协议,551命令表明接收邮件服务器上无此用户), 对接收邮件服务器发送复位报文,切断此次连接。
对于处于邮件用户数据发送阶段的邮件,同时向发送邮件服务器和接收 邮件服务器发送复位报文,切断此次连接。
步骤S309,记录所述普通异常邮件的信息,以进行监控操作。
例如,记录邮件的历史信息,通过超时事件变量发现在建立状态上发生 的超时事件超过预设数值,则认为网络中存在HELO攻击。
步骤S310,结束,释放系统所占用资源。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条 件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限 于以上的说明,而是由权利要求书的范围来确定的。
权利要求
1.一种异常邮件检测系统,其特征在于,包括状态机生成模块,用于依据邮件协议设置邮件通信过程的状态机,所述状态机包括邮件通信过程中所处的状态,驱动所述状态切换的事件及用于记录属性的信息的状态变量;为邮件会话创建对应状态机实例,并使用所述状态机实例对应的状态变量实时记录所述邮件会话的属性信息;属性检测模块,用于设置所述属性对应的检测标准,判断所述状态机实例对应的状态变量中的属性信息是否符合对应的检测标准,如果符合,则所述属性信息对应的邮件为异常邮件。
2. 如权利要求1所述的异常邮件检测系统,其特征在于,所述系统还包 括过滤模块和监控模块,所述检测标准包括严重检测标准和/或普通检测标 准,所述属性检测模块,还用于在确定所述属性信息对应的邮件为异常邮件 时,检査被符合的所述检测标准是否包含严重检测标准,如果包含,则所述 异常邮件为严重异常邮件,否则,所述异常邮件为普通异常邮件;所述过滤模块,用于阻断所述严重异常邮件所在邮件会话的发送邮件服 务器和接收邮件服务器间的连接;所述监控模块,用于记录所述普通异常邮件的信息,以进行监控操作。
3. 如权利要求2所述的异常邮件检测系统,其特征在于,所述属性进一 步包括网络属性和协议属性,所述属性检测模块进一步包括网络属性检测模 块和协议属性检测模块,所述网络属性检测模块,用于设置所述网络属性对应的检测标准,判断 所述状态机实例对应的状态变量中的网络属性信息是否符合对应的检测标 准,如果符合,则所述网络属性信息对应的邮件为异常邮件;在确定所述网 络属性信息对应的邮件为异常邮件时,检査被符合的所述检测标准是否包含 严重检测标准,如果包含,则所述异常邮件为严重异常邮件,否则,所述异 常邮件为普通异常邮件;所述协议属性检测模块,用于设置所述协议属性对应的检测标准,判断 所述状态机实例对应的状态变量中的协议属性信息是否符合对应的检测标准,如果符合,则所述协议属性信息对应的邮件为异常邮件;在确定所述协议属性信息对应的邮件为异常邮件时,检查被符合的所述检测标准是否包含 严重检测标准,如果包含,则所述异常邮件为严重异常邮件,否则,所述异 常邮件为普通异常邮件。
4. 如权利要求3所述的异常邮件检测系统,其特征在于,所述邮件协议 为简单邮件传输协议或扩展简单邮件传输协议。
5. 如权利要求4所述的异常邮件检测系统,其特征在于, 所述网络属性包括命令负载长度,所述命令包括发件人命令、数据命令、复位命令和退出命令;所述命令负载长度属性对应的严重检测标准包括所述发件人命令的长度小于正常范围的最小值,并且所述发件人命令中 发件人地址不为所述邮件协议规定的错误通告邮件中的发件人地址形式,所述正常范围为[max("-25,/)," + 25],其中/、"和5分别为所述发件人命令长度 的最小值、期望值和标准差值;所述数据命令、复位命令和退出命令的长度小于正常值6个字节;所述数据命令长度大于所述正常值;所述命令负载长度属性对应的普通检测标准包括所述发件人命令的长度大于所述正常范围;所述复位命令和退出命令的长度大于所述正常值。
6. 如权利要求5所述的异常邮件检测系统,其特征在于,所述系统还包 括参数配置模块,所述参数配置模块,用于设置所述发件人命令长度的最小值、期望值和 标准差值。
7. 如权利要求4所述的异常邮件检测系统,其特征在于, 所述网络属性包括发件人地址;所述发件人地址属性对应的严重检测标准为同一邮件会话中至少存在两 封邮件的发件人地址不属于同一网域。
8. 如权利要求4所述的异常邮件检测系统,其特征在于, 所述协议属性包括事件,所述事件包括由于接收报文所触发的命令事件和由于未接收数据时长超过设置时长而触发的超时事件;所述状态机包括信封状态,所述信封状态表示已接收到发件人和收件人样自.I Ft 'K、;所述事件属性对应的严重检测标准包括,在所述信封状态下接收到发件 人命令;所述事件属性对应的普通检测标准包括 产生超时事件;所述命令事件产生时所处的状态不符合所述邮件协议的规定,并且未在 所述信封状态下接收到发件人命令。
9. 一种异常邮件检测方法,其特征在于,包括步骤1,依据邮件协议设置邮件通信过程的状态机,所述状态机包括邮 件通信过程中所处的状态,驱动所述状态切换的事件及用于记录属性的信息 的状态变量,设置所述属性对应的检测标准;步骤2,为邮件会话创建对应状态机实例,并使用所述状态机实例对应 的状态变量实时记录所述邮件会话的属性信息;步骤3,判断所述状态机实例对应的状态变量中的属性信息是否符合对 应的检测标准,如果符合,则所述属性信息对应的邮件为异常邮件。
10. 如权利要求9所述的异常邮件检测方法,其特征在于,所述检测标 准包括严重检测标准和/或普通检测标准,所述步骤3还包括,在确定所述属性信息对应的邮件为异常邮件时,检 査被符合的所述检测标准是否包含严重检测标准,如果包含,则所述异常邮 件为严重异常邮件,否则,所述异常邮件为普通异常邮件;步骤101,阻断所述严重异常邮件所在邮件会话的发送邮件服务器和接 收邮件服务器间的连接;步骤102,记录所述普通异常邮件的信息,以进行监控操作。
11. 如权利要求10所述的异常邮件检测方法,其特征在于,所述邮件协 议为简单邮件传输协议或扩展简单邮件传输协议。
12. 如权利要求11所述的异常邮件检测方法,其特征在于, 所述属性包括命令负载长度,所述命令包括发件人命令、数据命令、复位命令和退出命令;所述命令负载长度属性对应的严重检测标准包括所述发件人命令的长度小于正常范围的最小值,并且所述发件人命令中 发件人地址不为所述邮件协议规定的错误通告邮件中的发件人地址形式;, 所述正常范围为[max("-25,/)," + 25],其中/、"和《5分别为所述发件人命令长 度的最小值、期望值和标准差值;所述数据命令、复位命令和退出命令的长度小于正常值6个字节;所述数据命令长度大于所述正常值;所述命令负载长度属性对应的普通检测标准包括所述发件人命令的长度大于所述正常范围;所述复位命令和退出命令的长度大于所述正常值。
13. 如权利要求12所述的异常邮件检测方法,其特征在于,所述步骤1 还包括步骤131,设置所述发件人命令长度的最小值、期望值和标准差值。
14. 如权利要求11所述的异常邮件检测方法,其特征在于, 所述属性包括发件人地址;所述发件人地址属性对应的严重检测标准为同一邮件会话中至少存在两 封邮件的发件人地址不属于同 一 网域。
15. 如权利要求11所述的异常邮件检测方法,其特征在于, 所述属性包括事件,所述事件包括由于接收报文所触发的命令事件和由于未接收数据时长超过设置时长而触发的超时事件;所述状态机包括信封状态,所述信封状态表示已接收到发件人和收件人 信息;所述事件属性对应的严重检测标准包括,在所述信封状态下接收到发件 人命令;所述事件属性对应的普通检测标准包括 产生超时事件;所述命令事件产生时所处的状态不符合所述邮件协议的规定,并且未在 所述信封状态下接收到发件人命令。
全文摘要
本发明涉及一种异常邮件检测系统及方法,所述系统包括状态机生成模块,用于依据邮件协议设置邮件通信过程的状态机,所述状态机包括邮件通信过程中所处的状态,驱动所述状态切换的事件及用于记录属性的信息的状态变量;为邮件会话创建对应状态机实例,并使用所述状态机实例对应的状态变量实时记录所述邮件会话的属性信息;属性检测模块,用于设置所述属性对应的检测标准,判断所述状态机实例对应的状态变量中的属性信息是否符合对应的检测标准,如果符合,则所述属性信息对应的邮件为异常邮件。从而,实现在骨干网或局域网上实时检测出异常邮件,以协助防御大规模安全事件爆发。
文档编号H04L9/36GK101316172SQ200810106339
公开日2008年12月3日 申请日期2008年5月12日 优先权日2008年5月12日
发明者吴树兴, 尼 张, 范 张, 张智江, 方滨兴 申请人:中国联合通信有限公司