林 楠
(中國電子科技集團(tuán)公司第四十七研究所,沈陽110032)
異常郵件流量檢測方法研究
林 楠
(中國電子科技集團(tuán)公司第四十七研究所,沈陽110032)
在網(wǎng)絡(luò)管理過程中,大量的垃圾郵件給網(wǎng)絡(luò)管理員帶來沉重的工作負(fù)擔(dān)。而處理垃圾郵件的重點(diǎn)在于對垃圾郵件的鑒別。提出一種新穎的異常郵件檢測方法。以擴(kuò)展的SMTP協(xié)議狀態(tài)機(jī)模型為基礎(chǔ),選取若干參數(shù)為測度,并通過大量的實(shí)驗(yàn)進(jìn)行驗(yàn)證分析。實(shí)驗(yàn)結(jié)果表明,此方法是有效的,管理人員可以用它來設(shè)計(jì)有效的規(guī)則和策略以減少異常郵件流量。
流量;檢測;流量特征
簡單郵件傳輸協(xié)議,也稱SMTP協(xié)議,誕生于1982年,雖然已經(jīng)有20多年的歷史,但目前仍然得到廣泛應(yīng)用。盡管多數(shù)人認(rèn)為郵件系統(tǒng)在正常、可靠的工作,但令人吃驚的是,目前幾乎沒有數(shù)據(jù)能支持上述論斷,原因是缺乏理論方法和難以處理異常流量數(shù)據(jù)。
目前,現(xiàn)有方法都不能準(zhǔn)確檢測到郵件流量的異常。在這種情況下,急需一種機(jī)制來發(fā)現(xiàn)異常郵件流量。
本文認(rèn)為針對郵件服務(wù)器的攻擊,采用特殊工具批量發(fā)送郵件或郵件服務(wù)器配置錯誤往往會產(chǎn)生與標(biāo)準(zhǔn)協(xié)議相背離的郵件流量。通過選擇合適的參數(shù)處理流量數(shù)據(jù),發(fā)現(xiàn)流量數(shù)據(jù)中的異常數(shù)值來識別異常郵件流量。
在SMTP協(xié)議狀態(tài)機(jī)中,龐大的郵件報(bào)文序列轉(zhuǎn)化為一系列規(guī)范的狀態(tài)、事件序列和狀態(tài)變量的集合,狀態(tài)轉(zhuǎn)移信息和相關(guān)屬性的統(tǒng)計(jì)值可以為流量參數(shù)選擇提供依據(jù)。
2.1 基于SMTP協(xié)議的EFSA模型
(1)狀態(tài)。如圖1所示,SMTP協(xié)議狀態(tài)機(jī)M包含如下6個狀態(tài):INIT,HELO,ENVELOPE,DATA,TEXT和DONE。其中:INIT為M的初始狀態(tài),代表郵件會話的開始;HELO,ENVELOPE,DATA和TEXT是M的中間狀態(tài),在事件驅(qū)動下可彼此轉(zhuǎn)化。DONE為M的停止?fàn)顟B(tài),代表郵件會話的結(jié)束。
(2)事件。根據(jù)操作的性質(zhì),M中的事件可以分為三類:
第一類由一簇_command(p,l)事件組成。這些事件對到來的IP報(bào)文進(jìn)行內(nèi)容解析,且每次處理一行數(shù)據(jù)。該簇事件有相同的參數(shù):參數(shù)p表示當(dāng)前IP報(bào)文的負(fù)載部分,負(fù)載長度用sizeof(p)表示。參數(shù)l表示p中待處理的數(shù)據(jù)行,事件名稱中的command指明喚醒該事件所需的命令。當(dāng)事件被喚醒后,M首先發(fā)生狀態(tài)轉(zhuǎn)移,l指向p中的下一行內(nèi)容,M不斷重復(fù)此過程直至p被處理完畢。
圖1 基于SMTP協(xié)議的EFSA模型
第二類為無效事件(invalid)。無效事件捕獲不遵守協(xié)議的異常流量行為。在擴(kuò)展?fàn)顟B(tài)機(jī)M中,如果當(dāng)前輸入出現(xiàn)在一個和SMTP協(xié)議定義不一致的上下文環(huán)境(特定的輸入和狀態(tài))中,則喚醒無效事件。
第三類為超時事件(timeout)。為防止網(wǎng)絡(luò)報(bào)文丟失和網(wǎng)絡(luò)攻擊影響狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移,引入超時事件來增強(qiáng)M的異常處理能力。
(3)狀態(tài)變量。在狀態(tài)機(jī)工作過程中,狀態(tài)變量記錄郵件流量的各種統(tǒng)計(jì)屬性值。關(guān)注的焦點(diǎn)是狀態(tài)轉(zhuǎn)移序列、事件發(fā)生序列以及與IP報(bào)文負(fù)載相關(guān)的各種屬性。擴(kuò)展?fàn)顟B(tài)機(jī)的狀態(tài)變量情況如表1所示。
表1 狀態(tài)變量
(4)定義。
·事件序列:si和sj為EFSA M的兩個狀態(tài),M可進(jìn)行si到sj的轉(zhuǎn)移。從si到sj的轉(zhuǎn)移表示為Se(si,sj)此過程中M接收的不同命令報(bào)文的數(shù)量為sizeof(Se(si,sj))。相似地,郵件m的事件序列表示為Se(m)且M接收的不同命令報(bào)文表示為sizeof(Se(m))。
·完整會話:狀態(tài)機(jī)中存在一條從狀態(tài)INIT到DONE的路徑,且路徑中無超時事件,則稱狀態(tài)機(jī)對應(yīng)一個完整會話,否則稱狀態(tài)機(jī)對應(yīng)一個不完整會話。
·完整郵件:M中存在一條從HELO到HELO的路徑,且Se(HELO,HELO)中至少包含4個不同的事件,則稱M包含一個完整郵件m,否則稱M包含一個不完整郵件。
(5)SA工作流程
發(fā)送方提出SMTP請求,系統(tǒng)首先為其創(chuàng)建一個狀態(tài)機(jī)實(shí)例,并將其加入系統(tǒng)的狀態(tài)機(jī)實(shí)例表中。該表以散列槽的形式存儲數(shù)據(jù),并以會話的IP地址、端口四元組信息作為實(shí)例的索引,用于后續(xù)的查詢、更新操作。首先,M處于INIT狀態(tài),隨著會話中數(shù)據(jù)交互,一系列的get_command(p,l)事件被喚醒。例如,當(dāng)前IP報(bào)文的負(fù)載部分為p,當(dāng)前狀態(tài)為si=“ENVELOPE”,當(dāng)前輸入為l=“DATA\r\n”,可喚醒事件ei=Get_Data(p,l),M狀態(tài)轉(zhuǎn)移為sj=“DATA”。狀態(tài)變量CommandSize.data=sizeof(p)。
如果當(dāng)前的輸入出現(xiàn)在一個與SMTP協(xié)議定義不一致的上下文環(huán)境中,就會喚醒無效事件。例如:當(dāng)前狀態(tài)為si=“DATA”,當(dāng)前輸入為l=”RSET\r\n”,喚醒事件invalid,M保持狀態(tài)sj=“DATA”不變。狀態(tài)變量Invalid.state=“DATA”,Invalid.command=“RSET”。
2.2 參數(shù)選擇
在SMTP狀態(tài)機(jī)模型中,系統(tǒng)為每個郵件會話創(chuàng)建一個狀態(tài)機(jī)。首先,在狀態(tài)機(jī)中,把龐大的郵件報(bào)文序列轉(zhuǎn)化為一系列狀態(tài)、事件序列組合,這兩者實(shí)際上是相關(guān)郵件流量行為的抽象表示。因此模型可將對原始網(wǎng)絡(luò)數(shù)據(jù)的統(tǒng)計(jì)轉(zhuǎn)化為對狀態(tài)機(jī)行為的統(tǒng)計(jì),這是一種有效的屬性約簡方法;其次,保存在狀態(tài)變量中的狀態(tài)轉(zhuǎn)移信息和負(fù)載相關(guān)的各種屬性統(tǒng)計(jì)值,可為流量參數(shù)選擇提供依據(jù)。例如,超時事件引發(fā)的狀態(tài)轉(zhuǎn)移可能代表網(wǎng)絡(luò)故障或者網(wǎng)絡(luò)攻擊發(fā)生。通常,狀態(tài)變量的屬性空間較大,這里重點(diǎn)關(guān)注那些能夠表征郵件流量的網(wǎng)絡(luò)協(xié)議特性。刻畫異常行為的參數(shù)包括以下兩部分:
(1)狀態(tài)轉(zhuǎn)移序列和事件序列出現(xiàn)頻率。例如無效事件、超時事件的出現(xiàn)頻率,完整會話與不完整會話的比率等。此類參數(shù)可用于了解協(xié)議的工作情況,發(fā)現(xiàn)濫用協(xié)議等異常情況。
(2)負(fù)載相關(guān)的各種屬性統(tǒng)計(jì)值。例如,一封郵件中命令長度分布、命令報(bào)文數(shù)量分布、完整會話中完整郵件數(shù)量分布以及各郵件間關(guān)系等。此類參數(shù)可用于分析郵件流量變化的規(guī)律。
為此,本文選取同一會話多封郵件等有代表性的郵件流量參數(shù),以其為測度不同網(wǎng)絡(luò)環(huán)境的郵件流量數(shù)據(jù)進(jìn)行處理,并對其中的異常郵件流量特征及成因進(jìn)行深入探討和分析。
2.3 郵件流量特征研究
2.3.1 實(shí)驗(yàn)數(shù)據(jù)
采集的數(shù)據(jù)分為兩部分,數(shù)據(jù)集D1是中國某大型商業(yè)ISP核心路由器一條鏈路上的郵件流量。因流量規(guī)模較大,對郵件流量做實(shí)時處理,并保留必要日志和統(tǒng)計(jì)信息供驗(yàn)證時使用。數(shù)據(jù)集D2是局域網(wǎng)郵件網(wǎng)關(guān)的郵件流量,總量約為8GB。數(shù)據(jù)均被保存成tcpdump文件。通過對比兩種不同時間、不同網(wǎng)絡(luò)環(huán)境、相互無干擾的數(shù)據(jù),研究分析郵件流量特點(diǎn)以及模型的適用范圍。
表2 實(shí)驗(yàn)數(shù)據(jù)
本實(shí)驗(yàn)主要由四個模塊組成,可支持對tcpdump數(shù)據(jù)和實(shí)時流量的操作。
(1)流量產(chǎn)生器
從tcpdump文件中讀取數(shù)據(jù),并使用libnet提供的接口函數(shù)庫發(fā)包,以模擬互聯(lián)網(wǎng)中的真實(shí)流量。通過調(diào)整參數(shù)設(shè)置,可以控制發(fā)包的速度,實(shí)驗(yàn)中的郵件流量產(chǎn)生速度為100Mb/s,原型系統(tǒng)可正常處理數(shù)據(jù)且無丟包現(xiàn)象發(fā)生。
(2)接口模塊
接口具有處理IP分片、TCP流重組、簡單的應(yīng)用層協(xié)議解析功能。接口將原始郵件數(shù)據(jù)轉(zhuǎn)發(fā)給檢測模塊,便于后者對流量進(jìn)行全面統(tǒng)計(jì)并提供各種異常處理機(jī)制,保證所有狀態(tài)機(jī)實(shí)例在平臺中正確運(yùn)行。
(3)EFSA模塊
EFSA模塊是平臺的核心部分,為每個郵件會話創(chuàng)建狀態(tài)機(jī)實(shí)例,負(fù)責(zé)管理和維護(hù)系統(tǒng)中的實(shí)例列表。
(4)檢測模塊
檢測模塊可訪問實(shí)例列表,提取狀態(tài)變量信息,同時結(jié)合原始郵件數(shù)據(jù)進(jìn)行全局統(tǒng)計(jì),并將最終分析結(jié)果寫入日志。
2.3.2 實(shí)驗(yàn)結(jié)果
針對郵件服務(wù)器的攻擊,如采用特殊工具批量發(fā)送郵件或郵件服務(wù)器配置錯誤,往往會產(chǎn)生與標(biāo)準(zhǔn)協(xié)議相背離的郵件流量??梢酝ㄟ^選擇合適的參數(shù)處理流量數(shù)據(jù),然后通過發(fā)現(xiàn)流量數(shù)據(jù)中的異常數(shù)值來識別異常郵件流量。
表3 電子郵件通訊事件序列
(1)<*RQ>
事件序列<*RQ>。無論是骨干網(wǎng)還是局域網(wǎng)網(wǎng)關(guān),郵件流量中都包含大量的RSET命令。使用回放方式對流量內(nèi)容進(jìn)行分析,產(chǎn)生Get_RSET事件的情形有兩種:①發(fā)送方取消當(dāng)前發(fā)送,通知接收方重置會話,這屬于RFC 2821中規(guī)定的行為。②接收方采用SMTP callback技術(shù),即郵件服務(wù)器在接收郵件前,先給發(fā)信者發(fā)送一封不含用戶數(shù)據(jù)的測試郵件。如果該發(fā)送者存在,則接收該郵件;否則將其標(biāo)注為垃圾郵件。由于上述測試在DATA狀態(tài)之前結(jié)束,因此,測試方通常發(fā)送RSET和QUIT命令提前中斷并退出會話。在數(shù)據(jù)集D1中,這種事件序列組合占RSET事件總數(shù)的4.8%。
(2)<*T>
事件序列<*T>(即超時事件)。如果狀態(tài)機(jī)在規(guī)定時間內(nèi)沒有收到任何數(shù)據(jù),將喚醒超時事件。通過記錄超時事件發(fā)生時狀態(tài)機(jī)所歷經(jīng)的狀態(tài)序列,D1中約有超時事件125萬個。一般地,主要有三種原因產(chǎn)生不完整會話(流量回放時將引發(fā)超時事件):①HELO攻擊或SMTP端口掃描行為。攻擊者發(fā)出大量HELO命令,用以消耗服務(wù)器或網(wǎng)絡(luò)帶寬資源,產(chǎn)生大量不完整會話,狀態(tài)機(jī)在停機(jī)前處于HELO狀態(tài)。②網(wǎng)絡(luò)擁塞、網(wǎng)絡(luò)故障或無效事件引發(fā)的會話中止。③在骨干網(wǎng)鏈路捕包過程中,發(fā)生郵件報(bào)文丟失現(xiàn)象。后兩種情況引發(fā)超時事件時狀態(tài)機(jī)在停機(jī)前可能處于任何非終止?fàn)顟B(tài),無法正常結(jié)束,直至系統(tǒng)喚醒超時事件將實(shí)例清除。
(3)無效事件
在擴(kuò)展?fàn)顟B(tài)機(jī)中,如果當(dāng)前的輸入出現(xiàn)在與RFC 2821定義不一致的上下文環(huán)境中,則喚醒無效事件。實(shí)驗(yàn)數(shù)據(jù)集中主要出現(xiàn)三類無效事件,如表3后三行所示。對于郵件服務(wù)器來說,異常的輸入會產(chǎn)生不可預(yù)期的結(jié)果。采用外部測試的方法,對主流郵件服務(wù)器例如Hotmail、Yahoo和Sina等進(jìn)行無效事件測試(因?yàn)樯鲜鲟]件服務(wù)器用戶較多,配置規(guī)范)。
2.3.3 總結(jié)
將郵件流量分為兩類,異常與正常。此方法的優(yōu)點(diǎn)在于能夠?qū)⒕性诹髁康淖蛹?,而不用關(guān)注所有流量。
通過實(shí)驗(yàn)證明,此方法是可實(shí)現(xiàn)的,現(xiàn)有算法(未經(jīng)優(yōu)化)處理1361386封郵件用時不超過600秒,使用內(nèi)存最大值為30MByte,此方法可以在大流量環(huán)境下較好地工作。
提出了一種新穎的方法來研究異常郵件的流量特征。通過對有代表性的互聯(lián)網(wǎng)郵件流量的調(diào)研,以擴(kuò)展的SMTP協(xié)議狀態(tài)機(jī)模型為基礎(chǔ),選取若干參數(shù)為測度,并以某局域網(wǎng)郵件網(wǎng)關(guān)和某大型ISP(Internet Service Provider)國際出入口路由器的郵件數(shù)據(jù)為例,對其中異常流量特征及成因進(jìn)行分析。實(shí)驗(yàn)結(jié)果表明,此方法是有效的,管理人員可以用它來設(shè)計(jì)有效的規(guī)則和策略以減少異常郵件流量。
[1] 劉波.IP組播通信機(jī)制及其實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2001(6):35-36.
[2] 張磊.安全群組通訊在流媒體傳輸方面的應(yīng)用[J].微機(jī)發(fā)展,2004,14(7):76-78.
[3] 秦剛.一種高效的群組通信數(shù)據(jù)安全機(jī)制[J].微電子學(xué)與計(jì)算機(jī),2005,22(6):84-90.
[4] 唐桂忠,張廣明,趙亞琴.基于無線通信的電力負(fù)荷監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2004,12(12):1178-1180.
Study on Method of Monitoring AbnormalMail-flow
LIN Nan
(The 47th Research Institute of China Electronics Technology Group Corporation,Shenyang 110032,China)
In the process of network management,there're a large number of junk e-mails which bring heavy workload to the network-administrator.However,the key point for dealing with junk email is to identify them.This paper presents a new method for dealingwith abnormalmails.Based on the model of expanded SMTP protocol,the number of parameters is selected to measure and verify through analysis of a large number of experiments.The experimental results show that thismethod is effective and the administrator can use it to design effective rules and strategies to reduce the flow of abnormalmails.
Flow;Testing;Characteristic of flow
10.3969/j.issn.1002-2279.2014.02.008
TP393.08
A
1002-2279(2014)02-0023-03
林楠(1982-),男,遼寧莊河市人,工程師,主研方向:微電子。
2013-09-25