本發(fā)明涉及網(wǎng)絡(luò)安全領(lǐng)域,具體而言,涉及用于檢測網(wǎng)站攻擊的方法和設(shè)備。
背景技術(shù):
:當(dāng)前信息安全領(lǐng)域,正在面臨多種挑戰(zhàn)。一方面,企業(yè)安全架構(gòu)日趨復(fù)雜,各種類型的安全設(shè)備、安全數(shù)據(jù)越來越多,傳統(tǒng)的分析能力明顯力不從心;另一方面,以APT(高級可持續(xù)性威脅)為代表的新型威脅的興起,內(nèi)控與合規(guī)的深入,越來越需要儲存與分析更多的安全信息,并且更加快速的做出判定和響應(yīng)。在以往,了解難以察覺的安全威脅會耗費(fèi)數(shù)天甚至數(shù)月的時(shí)間,因?yàn)榇罅康幕ゲ幌喔傻臄?shù)據(jù)流難以形成簡明、有條理的事件“拼圖”。所采集和分析的數(shù)據(jù)量越大,看起來越混亂,重構(gòu)事件所需的時(shí)間也越長。如果攻擊快速且兇猛(例如拒絕服務(wù)攻擊或快速傳播的蠕蟲),花數(shù)天或數(shù)月診斷問題會帶來巨大的合規(guī)和財(cái)務(wù)影響。因此,存在改善這種狀況的需求。技術(shù)實(shí)現(xiàn)要素:根據(jù)本發(fā)明的一方面,提供了一種檢測網(wǎng)站攻擊的方法,包括:從該網(wǎng)站的歷史訪問記錄中選擇多個(gè)統(tǒng)一資源定位符(URL);對該多個(gè)統(tǒng)一資源定位符進(jìn)行聚類;以及根據(jù)聚類的結(jié)果,從該多個(gè)統(tǒng)一資源定位符中生成白名單。根據(jù)本發(fā)明的另一方面,提供了一種用于檢測網(wǎng)站攻擊的設(shè)備,包括選擇裝置,用于從該網(wǎng)站的歷史訪問記錄中選擇多個(gè)統(tǒng)一資源定位符;聚類裝置,用于對該多個(gè)統(tǒng)一資源定位符進(jìn)行聚類;以及生成裝置,用于根據(jù)聚類的結(jié)果,從該多個(gè)統(tǒng)一資源定位符中生成白名單。本發(fā)明的實(shí)施方式可能包括下列一個(gè)或多個(gè)特征。該多個(gè)統(tǒng)一資源定位符對應(yīng)的HTTP響應(yīng)狀態(tài)可能是請求已成功。至少部分該多個(gè)統(tǒng)一資源定位符對應(yīng)的用戶可能屬于將網(wǎng)站用戶聚類后得到的最大的類。對該多個(gè)統(tǒng)一資源定位符進(jìn)行聚類可以包括:分解該多個(gè)統(tǒng)一資源定位符的每一個(gè)中的URL串、URL串中的目錄和URL請求參數(shù),生成URL串子集、URL串中的目錄子集和URL請求參數(shù)子集。對該多個(gè)統(tǒng)一資源定位符按照URL串子集進(jìn)行聚類。識別出URL串中的數(shù)字、 全局唯一標(biāo)識符或BASE64編碼的子字符串,用于確定URL串聚類的距離。對該多個(gè)統(tǒng)一資源定位符按照URL串中的目錄子集進(jìn)行聚類。通過將兩個(gè)URL串中的目錄拼接得到的目錄數(shù)減去所述兩個(gè)目錄中重復(fù)的目錄數(shù),確定目錄聚類的距離。對該多個(gè)統(tǒng)一資源定位符按照URL請求參數(shù)子集進(jìn)行聚類。對于所述多個(gè)統(tǒng)一資源定位符的每一個(gè)中唯一的參數(shù)名,對對應(yīng)于該唯一的參數(shù)名的所有出現(xiàn)過的參數(shù)值進(jìn)行聚類。或者,對該多個(gè)統(tǒng)一資源定位符中出現(xiàn)過的所有參數(shù)名單獨(dú)進(jìn)行一次聚類。在對該多個(gè)統(tǒng)一資源定位符按照URL串子集、URL串中的目錄子集和URL請求參數(shù)子集分別進(jìn)行聚類的情況下,確定每一個(gè)URL串、URL串中的目錄和URL請求參數(shù)在相應(yīng)子集中所屬類的百分位作為異常值。將URL串、URL串中的目錄和URL請求參數(shù)的異常值相加確定相應(yīng)的統(tǒng)一資源定位符的總異常值。將總異常值低于閾值的統(tǒng)一資源定位符列入白名單。本發(fā)明的某些實(shí)施方式可能具有下列一個(gè)或多個(gè)有益效果:可以實(shí)現(xiàn)無監(jiān)督學(xué)習(xí),不需要冷啟動(dòng);產(chǎn)生的結(jié)果是黑/白名單,并且用戶可以修改;可以檢查URL級別的常見OWASP攻擊。本發(fā)明的其他方面、特征和有益效果將在具體實(shí)施方式、附圖及權(quán)利要求中得到進(jìn)一步明確。附圖說明下面結(jié)合附圖對本發(fā)明做進(jìn)一步說明。圖1是根據(jù)本發(fā)明的檢測網(wǎng)站攻擊的方法的流程圖;圖2是根據(jù)一種實(shí)施方式的過濾URL歷史訪問記錄的流程圖;圖3是根據(jù)一種實(shí)施方式的發(fā)掘網(wǎng)站結(jié)構(gòu)的流程圖;圖4是根據(jù)本發(fā)明的生成URL各個(gè)子集的示例圖;圖5是根據(jù)一種實(shí)施方式的生成白名單的流程圖;圖6是根據(jù)另一種實(shí)施方式的過濾URL歷史訪問記錄的流程圖;圖7是根據(jù)另一種實(shí)施方式的發(fā)掘網(wǎng)站結(jié)構(gòu)的流程圖;圖8是根據(jù)再一種實(shí)施方式的發(fā)掘網(wǎng)站結(jié)構(gòu)的流程圖;以及圖9是根據(jù)本發(fā)明的檢測網(wǎng)站攻擊的設(shè)備的功能框圖。具體實(shí)施方式參看圖1,在步驟S110中對網(wǎng)站的URL歷史訪問記錄進(jìn)行過濾。URL歷史訪問記錄中通?;旌嫌姓5腢RL和惡意的URL,經(jīng)過濾從中選擇出多個(gè)正常的URL或者多個(gè)至少絕大部分正常的URL。參看圖2,圖2對圖1中的步驟S110進(jìn)一步說明,其中對URL歷史訪問記錄進(jìn)行HTTP200過濾。其中,HTTP狀態(tài)碼由RFC(RequestforComments)2616規(guī)范定義,用于表示網(wǎng)頁服務(wù)器HTTP的響應(yīng)狀態(tài)。作為其中一個(gè)HTTP狀態(tài)碼,HTTP200表示請求已成功、請求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回。進(jìn)行HTTP200過濾時(shí),可選定某一歷史時(shí)間段,從這一歷史時(shí)間段的HTTP訪問記錄中篩選出響應(yīng)狀態(tài)為200的URL訪問記錄,步驟S210。統(tǒng)計(jì)每一個(gè)URL的訪問次數(shù)(訪問量),并按次數(shù)從大到小的順序進(jìn)行排列,步驟S212。表1是一個(gè)示例性的統(tǒng)計(jì)結(jié)果。URL訪問量http://www.example.com/a.html100http://www.example.com/b.html80http://www.example.com/c.html40……h(huán)ttp://www.example.com/y.html1http://www.example.com/z.html1表1根據(jù)統(tǒng)計(jì)結(jié)果,保留訪問量達(dá)到某一閾值(例如為前90%)的URL,步驟S214。例如,假設(shè)表1中總訪問量為300,則只保留訪問量超過30的URL。以表1為例,“…/a.html”、“…/b.html”和“…/c.html”這三個(gè)URL將被保留,而“…/y.html”和“…/z.html”這兩個(gè)URL將被排除。這里,閾值90%也可根據(jù)不同網(wǎng)站而設(shè)置成其他值。返回圖1,在步驟S112中,根據(jù)經(jīng)過過濾得到的多個(gè)URL,發(fā)掘網(wǎng)站結(jié)構(gòu)。大中型企業(yè)的、尤其是應(yīng)用高級WEB框架開發(fā)的網(wǎng)站的結(jié)構(gòu)通常相對具有條理。例如,域名是正常的中文拼音縮寫組合、或是正常的英文單詞縮寫組合、或遵從類似的命名規(guī)范;URL結(jié)構(gòu)樹結(jié)構(gòu)安排合理,相同內(nèi)容位于同樣的URL目錄下;對于允許帶請求參數(shù)的URL,參數(shù)同樣有類似的命名規(guī)范。根據(jù)RFC1738規(guī)范定義,URL的格式是:scheme://[user:password@]domain:port/path?query_string#fragment_id。其中,query_string包含用符號“&”分割開的多個(gè)key=value格式,其中key是參數(shù),value是參數(shù)值。例如:field1=value1&field2=value2&field3=value3中有三個(gè)參數(shù):field1、field2和field3;以及三個(gè)相應(yīng)的參數(shù)值value1、value2和value3。表2是一個(gè)關(guān)于網(wǎng)站結(jié)構(gòu)的示例。表2從表2的示例中可見,每個(gè)目錄代表一類功能,并且在參數(shù)(例如ref、node、nodeID、pf_rd_t)中只出現(xiàn)小寫字母、數(shù)字和下劃線“_”。參考圖3和4,其中圖3用于說明分解URL結(jié)構(gòu)并進(jìn)行聚類的一種實(shí)施方式。在步驟S310中,將每一個(gè)URL分解為下列結(jié)構(gòu):URL串、URL串中的目錄以及URL請求參數(shù)。其中,URL串不包含參數(shù),URL請求參數(shù)包括該URL中每一對參數(shù)名和參數(shù)值的組合。圖4通過3個(gè)示例性的URL來說明分解URL結(jié)構(gòu)并生成相應(yīng)子集的過程。如步驟S410所示,其中一個(gè)URL“www.example.com/dir0/a.html?param1=v1”相應(yīng)地分解為example.com/dir0/a.html(URL串)、dir0(URL串中的目錄)以及param1=v1(URL請求參數(shù))。通過分解其中每一個(gè)URL的上述結(jié)構(gòu),由經(jīng)過過濾得到的多個(gè)URL生成三個(gè)子集,即:URL串子集、URL串中的目錄子集和URL請求參數(shù)子集,步驟S312。步驟S412中示出了生成的三個(gè)子集。在步驟S314中,對URL串中的目錄子集進(jìn)行聚類。作為數(shù)據(jù)分析技術(shù)中的一個(gè)重要概念,聚類指的是一個(gè)將物理或抽象對象的集合分成由類似的對象組成的多個(gè)類的過程。由聚類所生成的類是一組數(shù)據(jù)對象的集合,這些對象與同一個(gè)類中的對象彼此相似,與其他類中的對象相異。對URL串中的目錄子集進(jìn)行聚類可采用任何支持編輯距離的聚類算法,例如OPTICS、DBSCAN。其中,OPTICS(OrderingPointsToIdentifytheClusteringStructure)是一種在空間數(shù)據(jù)中尋找基于密度的簇(或類)的算法。OPTICS的基本思路與DBSCAN(Density-BasedSpatialClusteringofApplicationswithNoise)類似,但克服了DBSCAN的一個(gè)弱點(diǎn),即:在密度變化的數(shù)據(jù)中確定有意義的簇。為此,數(shù)據(jù)庫中的點(diǎn)被(線性)排序使得空間上最近的那些點(diǎn)在排序過程中成為鄰居。此外,為了使兩個(gè)點(diǎn)屬于同一個(gè)簇而為每一個(gè)點(diǎn)存儲一個(gè)特定的距離,這個(gè)距離代表成為一個(gè)簇而需要被接受的密度。OPTICS算法主要有兩個(gè)參數(shù)eps和MinPts,其中,eps是指算法需要考慮的最大距離(半徑),MinPts是指要形成簇所需的點(diǎn)的數(shù)量。需要指出的是,OPTICS算法本身對參數(shù)并不敏感,不同的eps和MinPts也可能得到類似的結(jié)果。OPTICS算法的標(biāo)準(zhǔn)偽碼如下:其中,getNeighbors(p,eps)代表離特定點(diǎn)p距離在eps以內(nèi)的所有點(diǎn)。core-distance(p,eps,Minpts)代表離p距離eps以內(nèi)的點(diǎn)數(shù)量是否超過Minpts,如果沒超過,返回UNDEFINED,如果超過,則把距離從小到大排序,返回第Minpts短的距離。OPTICS(DB,eps,MinPts)如上所述,DBSCAN算法的思路與OPTICS相似,其標(biāo)準(zhǔn)偽碼如下:DBSCAN(DB,eps,MinPts)為簡便起見,本發(fā)明下述實(shí)施例中的聚類算法都以標(biāo)準(zhǔn)OPTICS為例。在步驟S314中,將URL串中的目錄確定為聚類特征;通過將兩個(gè)URL串中的目錄拼接得到的目錄數(shù)減去這兩個(gè)目錄中重復(fù)的目錄數(shù)確定聚類距離。表3為確定目錄聚類距離的一個(gè)示例。URL串中的目錄聚類距離dir1/dir2,dir1Dist(dir1/dir2,dir1)=dir1/dir2–dir1=2-1dir1/dir2,dir0Dist(dir1/dir2,dir0)=dir1/dir2dir0–[]=3-0dir1/dir2,dir2/dir3Dist(dir1/dir2,dir2/dir3)=dir1/dir2/dir3–dir2=3–1表3下面返回圖1,在步驟S114中,根據(jù)聚類的結(jié)果,從經(jīng)過過濾得到的多個(gè)URL中生成URL白名單。URL串中的目錄子集在步驟S314中被分成若干個(gè)類。子集中的每個(gè)URL串中的目錄屬于其中一類。通過確定所屬類的百分位,可得出每個(gè)URL串中的目錄的聚類異常值,步驟S510。根據(jù)聚類異常值,可進(jìn)一步確定相應(yīng)URL的總異常值,步驟S512,其中,在只對URL串中的目錄子集進(jìn)行聚類時(shí),總異常值等于相應(yīng)的聚類異常值。將總異常值低于某一閾值的URL列入白名單,步驟S514。這里,某一個(gè)類的百分位,是指比該類大的所有類中的對象數(shù)占總對象數(shù)的百分比。例如,假設(shè)經(jīng)過聚類后,URL串中的目錄子集被分為7個(gè)類,大小依次為:100、80、60、14、7、3、1,那么其中最小的類的百分位是1-1/(100+80+60+14+7+3+1)=99.6%,而第二小的類的百分位是1-(1+3)/(100+80+60+14+7+3+1)=98.5%,依次類推。相應(yīng)地,在最小的類中,每個(gè)URL串中的目錄的聚類異常值為99.6%。在只對URL串中的目錄子集進(jìn)行聚類時(shí),URL的總異常值也是99.6%。類似地,可將高異常值的URL報(bào)告成攻擊,列入黑名單。所生成的黑名單或白名單也可由用戶手動(dòng)修改。異常值的閾值可以由用戶手動(dòng)設(shè)置,缺省可設(shè)為99。在生成URL白名單的情況下,如果實(shí)時(shí)URL訪問日志中的URL不在白名單之列,則該URL將被視為惡意URL訪問。其他的實(shí)施方式也是可行的。例如,可通過對發(fā)起HTTP請求的用戶聚類來過濾網(wǎng)站的URL歷史訪問記錄。參看圖6,在步驟S610中,聚類的特征可設(shè)為用戶的URL訪問序列,例如,a.html→b.html→c.html→d.html。聚類的距離函數(shù)相應(yīng)地設(shè)為URL訪問序列距離(編輯距離)。例如,序列a.html→b.html→c.html→d.html和序列a.html→c.html→d.html之間的距離是1(1次刪除);序列a.html→b.html→c.html→d.html和序列a.html→c.html→b.html→d.html的距離也是1(1次c、b對調(diào))。以其他特征和距離函數(shù)進(jìn)行 聚類運(yùn)算也是可行的。例如,只考慮用戶訪問過的唯一的URL。如前所述,聚類運(yùn)算可以選用任何支持編輯距離的聚類算法,例如,標(biāo)準(zhǔn)OPTICS或DBSCAN算法。對發(fā)起HTTP請求的用戶聚類和HTTP200過濾兩者可以并用,分別作為混合過濾方法中的一個(gè)規(guī)則,用于過濾URL歷史訪問記錄,進(jìn)而發(fā)掘網(wǎng)站結(jié)構(gòu)。此外,混合過濾方法中還可以包括其他規(guī)則。根據(jù)圖7和8的實(shí)施方式,在生成URL串子集、URL串中的目錄子集以及URL請求參數(shù)子集后,也可分別對URL串子集和URL請求參數(shù)子集進(jìn)行聚類。在步驟S714中,聚類的特征是URL串,聚類的距離函數(shù)是URL串加權(quán)編輯距離。和通用編輯距離相比,加權(quán)編輯距離的差別在于其從URL串中識別出數(shù)字、全局唯一識別符(GUID)和BASE64編碼的子字符串,將其作為一個(gè)特殊字符;否則一個(gè)字符就是一個(gè)符號(聚類時(shí)URL串的單位元素)。例如,123455.html和1.html的距離是1;7ca657b5-1110-43e7-bc5c-1ee25560e40f.html和7227db62-49aa-4c36-9a87-b0d737ab0ed7.html的距離也是1(識別成GUID);而abc.html和a.html的距離是2(既不是數(shù)字也不是GUID)。如前所述,可以選用任何支持編輯距離的聚類算法,例如,標(biāo)準(zhǔn)OPTICS或DBSCAN算法。URL串子集在步驟S714中被分成若干個(gè)類。相應(yīng)地,子集中的每個(gè)URL串屬于其中一類。與對URL串中的目錄子集進(jìn)行聚類類似,通過確定所屬類的百分位,可得出每個(gè)URL串的聚類異常值。根據(jù)該聚類異常值,可進(jìn)一步確定相應(yīng)URL的總異常值,其中,在只對URL串子集進(jìn)行聚類時(shí),總異常值等于相應(yīng)的聚類異常值。將總異常值低于某一閾值的URL列入白名單。在步驟S814中,對每個(gè)唯一URL下的唯一的參數(shù)名,所有出現(xiàn)過的參數(shù)值進(jìn)行聚類。例如,對于URL“http://abc.com/dir1/dir2/a.html?param1=v1¶m2=v2”和“http://abc.com/dir1/dir2/b.html?param1=v1¶m2=v2”,需要做4種聚類:abc.com/dir1/dir2/a.html?param1、abc.com/dir1/dir2/a.html?param2、abc.com/dir1/dir2/b.html?param1和abc.com/dir1/dir2/b.html?param2,其中聚類距離函數(shù)是參數(shù)值的加權(quán)編輯距離(類似于URL串)。作為替代的,對所有URL下出現(xiàn)過的所有參數(shù)名單獨(dú)做一次聚類。比如param1、param2。如前所述,可使用標(biāo)準(zhǔn)OPTICS或DBSCAN算法進(jìn)行聚類。URL請求參數(shù)子集在步驟S814中被分成若干個(gè)類。相應(yīng)地,子集中的每個(gè)URL請求參數(shù)屬于其中一類。與對URL串中的目錄子集進(jìn)行聚類類似,通過確定所屬類的百分位,可得出每個(gè)URL請求參數(shù)的聚類異常值。根據(jù)該聚類異常值,可進(jìn)一步確定相應(yīng)URL的總異常值,其中,在只對URL請求參數(shù)子集進(jìn)行聚類時(shí),總異常值等于相應(yīng)的聚類異常值。將總異常值低于某一閾值的URL列入白名單。另外,在生成URL串子集、URL串中的目錄子集以及URL請求參數(shù)子集后,還可對這三個(gè)子集中的任意兩個(gè)或全部進(jìn)行聚類。以對三個(gè)子集分別進(jìn)行聚類為例,參看圖3、7和8,分別確定每個(gè)URL中的URL串、URL串中的目錄和URL請求參數(shù)的聚類異常值,該URL的總異常值等于三個(gè)聚類異常值的和。將總異常值低于某一閾值的URL列入白名單。作為替代,可以將總異常值高的URL直接報(bào)告成攻擊,列入黑名單。此外,在列入黑名單之前,可將總異常值高的URL先經(jīng)過正常用戶聚類過濾。在此假設(shè)最大的類里的用戶訪問到的都應(yīng)是正常的URL,因此屬于這類的URL即便總異常值高也不被列入黑名單。圖9所示的根據(jù)本發(fā)明的用于檢測網(wǎng)站攻擊的設(shè)備900包括選擇裝置910、聚類裝置912和生成裝置914。選擇裝置910用于從網(wǎng)站的歷史訪問記錄中選擇多個(gè)統(tǒng)一資源定位符,聚類裝置910用于對所述多個(gè)統(tǒng)一資源定位符進(jìn)行聚類,以及生成裝置914用于根據(jù)聚類的結(jié)果,從該多個(gè)統(tǒng)一資源定位符中生成白名單。設(shè)備900的功能模塊910、912、914可以通過硬件、軟件或硬件與軟件的結(jié)合實(shí)現(xiàn),從而執(zhí)行上述根據(jù)本發(fā)明的方法步驟。此外,選擇裝置910、聚類裝置912和生成裝置914可以組合或者進(jìn)一步分解成子模塊,從而執(zhí)行上述根據(jù)本發(fā)明的方法步驟。因此,上述功能模塊的任何可能的組合、分解或進(jìn)一步的定義都落入權(quán)利要求所保護(hù)的范圍之內(nèi)。本發(fā)明不限于上述具體描述,本領(lǐng)域技術(shù)人員在上述描述基礎(chǔ)上容易想到的任何改變,都在本發(fā)明的范圍內(nèi)。當(dāng)前第1頁1 2 3