識別網路爬蟲的策略分析

龍騰AI技術發表於2022-09-14

識別網路爬蟲的策略分析

一、網路爬蟲

爬蟲(crawler)也可以被稱為spider和robot,通常是指對目標網站進行自動化瀏覽的指令碼或者程式,包括使用requests庫編寫指令碼等。隨著網際網路的不斷髮展,網路爬蟲愈發常見,並佔用了大量的網路資源。由爬蟲產生的網路流量佔總流量的37.2%,其中由惡意爬蟲產生的流量約佔65%[1]。如何在網路流量中識別爬蟲,是判斷爬蟲行為意圖的前提,常見的使用爬蟲的場景包括:搜尋引擎等使用爬蟲爬取網站上的資訊,研究機構使用爬蟲蒐集資料,以及攻擊者使用爬蟲蒐集使用者資訊、識別軟體後門等。

針對網路爬蟲,目前常用的方法包括在伺服器上的robots.txt檔案中進行適當的配置,將使用者代理列入白名單等,這些操作可以檢測和阻止一些低階別的惡意爬蟲。然而,高階和複雜的網路爬蟲仍然難以檢測,因為它們通常會偽裝成合法的爬蟲或正常使用者。此外,運營部門需要投入較多的時間和資源來收集和分析網路流量記錄報告,以發現隱藏的網路爬蟲的痕跡。網路爬蟲通常會觸發大量告警,給安全運營人員帶來了較大的資料處理壓力。此外,部分惡意攻擊者也會使用爬蟲來收集資訊,因此從海量的告警中,識別出網路爬蟲,並判斷其行為意圖十分重要。在安全運營場景中,如何根據安全裝置產生的告警資料,設計出識別爬蟲,並判斷其行為意圖的方案,目前仍需要不斷地探索以及深入的思考。

在往期內容中,筆者已經介紹了Aristaeus平臺使用瀏覽器指紋、TLS指紋和IP行為分析等方式識別爬蟲的行為意圖的工作[2],由於Aristaeus平臺使用的域名在實驗前均未註冊使用過,因此這一工作中採集到的流量均為爬蟲,並在此基礎上對良性/惡意的爬蟲進行了區分。本文對基於web日誌資訊識別爬蟲以及判斷其行為意圖的研究進行總結分析[3],包括常見的判斷爬蟲的方法,以及機器學習、深度學習等方法識別爬蟲,以及各種識別爬蟲行為意圖的方法。

二、識別網路爬蟲的常見方法

常用的判定爬蟲的方法包括檢查其HTTP協議頭的User-agent欄位,這一欄位包含使用者訪問時所使用的作業系統及版本、瀏覽器型別及版本等標識資訊。如果該欄位中表明為瀏覽器等使用的爬蟲,使用DNS正向和反向查詢的方法可以確定發起請求的IP地址是否與其宣告的一致,則可以將其進行判別。一個IP地址可能使用不同的使用者代理或者不同的自動化工具生成HTTP請求頭,這一現象可能是良性爬蟲使用NAT或者代理造成的,但也可能是惡意爬蟲在進行欺騙行為,包括在User-agent欄位中更改作業系統、瀏覽器版本等[4],例如筆者在日常告警資料中觀察到User-Agent欄位存在

“User-Agent: Mozilla/5.0+(compatible;+Baiduspider/2.0;++) Mozilla/5.0+(compatible;+Googlebot/2.1;++)”

這類情況。目前也有許多開源的專案使用上述方法檢測網路爬蟲,例如CrawlerDetect 就是github上的一個開源專案[5],透過User-Agent和 http_from 欄位檢測爬蟲,目前能夠檢測到 1,000 種網路爬蟲。

由於上述方法只能判斷一部分網路爬蟲,在安全運營場景中,對於其餘無法識別的爬蟲,可以基於HTTP請求的速率、訪問量、請求方法、請求檔案大小等行為特徵,設計演算法進行識別。由合法機構執行的網路爬蟲,包括搜尋引擎和研究機構等,通常不會造成網路的阻塞。惡意的網路爬蟲主要是在機器上執行的指令碼程式設計,通常具有較高的 HTTP 請求率,且對URL訪問量很大。基於網路爬蟲的這一特點,可以提取各個IP地址發出HTTP請求的速率、以及其URL的訪問量作為特徵。由於爬蟲的主要目的是從網站下載資訊,所以較多地使用GET方法,而不是使用POST方法進行上傳操作。此外,爬蟲通常需要在嘗試爬取檔案之前確定檔案的型別,所以與正常瀏覽相比,可能會使用更多的HEAD方法[4]。透過統計分析各個IP地址的HTTP請求中各類方法所佔比例,可以提取出HTTP請求方法的分佈特徵。

通常網路爬蟲對特定檔案型別的請求更多,例如較多地請求 .html檔案,而對 .jpeg等檔案型別的請求較少。爬蟲通常會進行策略最佳化,以實現在最短的時間內將爬取效率最大化,往往會跳過大檔案而去尋找較小的檔案,所以HTTP的 GET方法可能會返回更多的小檔案。如果某些被爬取的URL需要進一步驗證,爬蟲的請求將被定向到這些驗證頁面,因此會產生3XX 或 4XX 的 HTTP 請求返回碼[4]。透過統計分析各個IP地址請求的檔案型別、大小的分佈,以及響應碼的分佈,可以提取出描述請求檔案和響應特徵,對應於告警資訊中的URI,content_length,q_body和r-body等欄位。

Lagopoulos等人提出了一種用於網路機器人檢測的語義方法[6],這一方法主要是基於以人為主體的網路使用者通常對特定主題感興趣,而爬蟲則是隨機地在網路上爬行的假設,設計出了一套檢測方法。這一工作從會話中提取的典型特徵包括:

請求總數:請求的數量。

會話持續時間:第一個請求和最後一個請求之間經過的總時間

平均時間:兩個連續請求之間的平均時間。

標準偏差時間:兩個連續請求之間時間的標準偏差。

重複請求:使用與以前相同的HTTP方法請求已經訪問過的頁面。

HTTP請求:四個特性,每個特性包含與以下HTTP響應程式碼之一相關聯的請求的百分比:成功(2xx)、重定向(3xx)、客戶機錯誤(4xx)和伺服器錯誤(5xx)。

特定型別請求:特定型別的請求佔所有請求數的百分比,這一特徵在不同的應用程式中表現不同。

除了上述特徵外,這一工作從會話中提取到了一部分語義特徵:包括主題總數、獨特主題、頁面相似度、頁面的語義差異等,並使用了四種不同的模型,包括使用RBF的SVM,梯度增強模型,多層感知器和極端梯度增強來測試檢測結果。從不同特徵集上的實驗結果可以看出,RBF在語義特徵上取得了最好的效能,GB在簡單典型特徵上取得了最好的效能,GB在典型特徵和語義特徵的結合上也取得了最好的效能。

此外,Wan等人在2019年提出了一種名為PathMarker的反爬蟲技術,可以透過檢測網頁或請求之間的關係來檢測分散式爬蟲[7]。在這一方法中,透過向URL新增標記來跟蹤訪問該URL之前的頁面,並識別訪問該URL的使用者。根據URL訪問路徑和訪問時間的不同模式,使用支援向量機模型來區分惡意網路爬蟲和普通使用者。實驗結果表明,該系統能夠成功識別96.74%的爬蟲長會話和96.43%的普通使用者長會話。PathMarker的體系結構如圖1所示,最後使用自動化的公共圖靈測試(CAPTCHA)實時地識別爬蟲和普通使用者。

 

1 PathMarker的體系架構

上述兩個工作均引入了語義內容作為檢測爬蟲的特徵之一,其核心思想在於普通使用者和爬蟲請求網頁的主題不同。基於這一結果,可以使用doc2vec 和 word2vec替換LDA,以更好地表示會話中訪問內容的語義[6]。

三、識別爬蟲的行為意圖

匹配黑名單是常用的識別惡意爬蟲的方式,然而在目前觀測到的攻擊中,大多數惡意IP都是被感染的個人裝置,且爬蟲經常會切換新的IP地址,多數IP的生存週期都不超過一天,這些操作都可以避免被黑名單過濾。例如,在Aristaeus平臺監測到的發出惡意請求的IP地址中,只有13%出現在當前流行的惡意IP黑名單中,這表明黑名單對惡意爬蟲的IP地址覆蓋率較低[2]。此外,還可以根據訪問行為是否符合robots協議來判斷是否為惡意爬蟲。通常每個網站都會設定robots.txt,內容包含不要訪問某些資料夾或檔案,或限制爬蟲訪問網站的頻率。通常我們認為惡意爬蟲不會遵守robots協議,並且會使用robots.txt來識別他們可能忽略的站點,這一行為模式可以用於識別惡意爬蟲。然而,在Aristaeus平臺的研究中,並未發現爬蟲發出的請求違背robots協議的現象[2],這表明爬蟲採取的策略中已明確避免出現上述行為,所以這類方式在實際應用中可能難以有效地識別爬蟲。

基於這一實際情況,採用更加細粒度的方式描述爬蟲行為,並提取相應的行為特徵是後續識別爬蟲行為意圖的解決方向。例如,良性的爬蟲不會傳送未經請求的POST或利用漏洞進行攻擊,與之相反,惡意爬蟲則會向身份驗證端點傳送未經請求的POST或無效的請求,可以視為偵察行為。爬蟲請求中是否存在欺騙的行為也可以用於判斷其意圖,例如構建wget、curl、Chrome等工具的TLS指紋庫,透過將請求中宣告的使用者代理與其TLS指紋進行匹配[2],可以檢測出進行身份欺瞞的爬蟲,並在後續的分析中進一步分析其行為特徵。

四、結論

透過使用User-Agent欄位及DNS正方向查詢可以初步識別常見搜尋引擎的爬蟲,基於IP地址發出HTTP請求的行為特徵,並引入對請求行為的語義特徵描述等,可以在剩餘告警資訊中檢測出使用指令碼得到的爬蟲。隨著爬蟲策略的最佳化更新,使用靜態黑名單過濾或判斷爬蟲是否遵守robots協議,通常很難達到較好的效果。如果需要進一步辨別爬蟲的行為意圖,可以透過建立構建爬蟲程式的指紋庫,判斷爬蟲的真實身份是否與其宣告一致。針對IP的請求內容,構建描述是否對web應用程式進行指紋識別、是否在掃描可能存在的敏感檔案等指紋庫,可以更加精確地檢測惡意爬蟲。在後續的研究工作中,筆者希望透過將上述檢測方法付諸實踐,基於告警資訊對爬蟲進行檢測,並深入分析爬蟲的行為意圖,進而輔助安全運營人員研判。

參考文獻

[1] Imperva, “Bad bot report 2020: Bad bots strike back.” [Online]. Available:

[2] Li X, Azad B A, Rahmati A, et al. Good bot, bad bot: Characterizing automated browsing activity. 2021 IEEE symposium on security and privacy (sp). IEEE, 2021: 1589-1605.

[3] H. Chen, H. He and A. Starr, "An Overview of Web Robots Detection Techniques," 2020 International Conference on Cyber Security and Protection of Digital Services (Cyber Security), 2020, pp. 1-6.

[4] https://www.hillstonenet.com/blog/a-hybrid-approach-to-detect-malicious-web-crawlers/

[5]

[6] A. Lagopoulos, G. Tsoumakas, and G. Papadopoulos, “Web robot detection: A semantic approach,” Proc. - Int. Conf. Tools with Artif. Intell. ICTAI, Volos, Greece, 5-7 Nov. 2018 pp. 968–974. DOI: 10.1109/ICTAI.2018.00150.

[7] S. Wan, Y. Li, and K. Sun, “PathMarker: protecting web contents against inside crawlers,” Cybersecurity, vol. 2, no. 1, pp. 1–17, 2019.

宣告:本文來自綠盟科技研究通訊,版權歸作者所有。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70021344/viewspace-2914531/,如需轉載,請註明出處,否則將追究法律責任。

相關文章