999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

WAF規則的自動探測與發現技術研究

2018-01-15 10:00:34張琦翟健宏
智能計算機與應用 2017年6期
關鍵詞:規則檢測

張琦+翟健宏

摘要: 關鍵詞: 中圖分類號: 文獻標志碼: A文章編號: 2095-2163(2017)06-0103-06

Abstract: This paper designs a tool, that is able to autodetect WAF (Web Application Firewall) rules. The tool could get the WAF rules after the user offers the website and the target parameter. The tool is divided into three modules: WAF Discovery Module, Payloads Sending Module, Rules Retrieval Module. The tool adds regular expression matching function. And it uses shortest element detected first strategy and dichotomy to improve the performance. This paper uses multithreading and alleviates the network delay problem. Meanwhile, the paper also designes the good payload databases. It could make the detection more effective and accurate. The payload databases could always be inserted with new items.

0引言

隨著IT技術的不斷發展和進步,互聯網已經走進了千家萬戶,成為人們生活中必不可少的一部分。截至2015年12月底,國內網站數量已達426.7萬個[1]。在網站數量不斷增長的同時,網絡安全態勢也逐漸變得十分嚴峻。根據360互聯網安全中心與2017年2月12日發布的《2016年中國互聯網安全報告》,國內掃描出的存在漏洞的網站已達91.7萬個,占網站數量的21.4%,其中存在高危漏洞的網站有14.0萬個,占網站數量的3.3%。保護網站應用的安全,是每一家互聯網企業和其他網站建設機構不可推卸的首要任務與基礎職責。

一般的網絡防火墻能夠對服務器進行一定的防護,但是卻并不擅長應用層面的安全防護。由此,網站應用防火墻(WAF,Web Application Firewall),則應運而生。WAF的主要功能是保護Web應用不受到惡意攻擊,并通過對網站的請求和響應開展高效的分析和統計,能夠對網站攻擊事件提供及時的報警、甚至停止響應,以保護網站服務器的安全。

大部分的WAF通過對請求或者響應內容進行特征匹配[2],如果在請求中匹配到惡意字符串或者在響應中匹配到敏感信息,則視此次請求為非法請求,可以停止響應,實現服務器的保護功能。優秀的WAF產品能夠設計出良好的特征庫,檢測出大部分的惡意攻擊;同時也能夠擁有較低的誤報率,保證網站的正常功能需求。

因此,本文研究設計了一款WAF規則自動發現的腳本應用,能夠探測出網站配置的WAF規則以及沒有配置的規則,從而可以有針對性地優化網站WAF的配置,提升自我安全防護。

1WAF規則的自動探測設計

1.1WAF的表現形式

既然要探測WAF規則配置,就需要知道WAF的一般響應形式。研究中人工收集了54個網站的WAF響應,大致可分為4類,對其內容闡釋如下:

1)HTTP響應碼不是200(19/54)。正常的HTTP請求響應碼是200[3],通常引發了WAF禁止的請求響應碼就會變成403 Forbidden、302跳轉、501服務器錯誤、404 Not Found等等異常響應碼,實例之一即如圖1所示。這在本次樣本中共占19個。

2)明顯的WAF提示(16/54)。 除了一些異常響應碼,還會有很多網站會展現與正常響應截然不同的響應內容,是比較明顯的WAF提示,示意則如圖2所示。這在本次樣本中共占16個。

3)停止響應(14/54)。很多網站在認為遭遇了攻擊時就會直接停止攻擊者的響應,以保護自身網站的安全,具體可如圖3所示。這樣的網站在本次樣本中共占14個。

4)自定義響應(5/54)。還有少數網站也會給出一定的提示,或者給出一定的響應特征表示此請求已被WAF禁止,但是響應特征不明顯,因而很難提取。這樣的網站在本次樣本中共占5個。

綜合以上研究論述后,可得分析結論如下:

1)網站和網站之間的WAF響應相對獨立,沒有確定的WAF特征等,所以需要對每一個網站單獨處理。

2)前3種WAF響應通過相似度匹配可以較好地分離出來,準確率較高,且在本次WAF樣本中占據了很大比例。

3)對于自定義WAF響應,表現形式并不突出,分離難度較高,這樣的響應需要通過人工輸入正則匹配特征的方式來處理。

1.2整體架構

本文設計的WAF規則自動探測工具并不僅僅局限于狹義的WAF產品,也可以是代碼層級的網站防護。通過輸入一個url和目標參數,利用工具將可自動探測目標網址WAF的規則配置。

由圖4可知,輸入URL參數以及PARAM參數即可運行工具,同時也有一些其他的輸入。其中,-h參數顯示幫助信息;-d參數表示使用POST方法進行探測;-cookie參數可以定制發送的cookie;-header參數可以定制請求頭;-test參數涉及的是測試使用;-t參數可以配置程序使用的線程數;-r參數可以配置響應結果的正則匹配。endprint

整個工具分為3個模塊:網站過濾檢測模塊、攻擊向量生成模塊、過濾規則生成模塊。程序運行流程則如圖5所示。

參照圖5,可得程序運行的步驟推演論述如下:

1)解析用戶輸入。

2)發送兩次原始請求,以確定平均響應時間以及相同請求的響應相似度,作為最高相似度。

3)按照幾種不同類型的參數發送請求,得到響應結果,并對響應結果計算相似度,根據相似度對響應結果進行分類。

4)若僅有一個類別,則未探測到WAF的存在,程序退出;若有多種類別,則繼續進行下一步。

5)對不同種類的惡意參數進行大量的嘗試,并把響應結果歸類。

6)根據歸類情況整理得到WAF禁止的字符串列表。

7)輸出WAF禁止的字符串列表,即為WAF規則,程序結束。

在程序運行過程中,第1步屬于前期準備階段;第2~4步屬于網站過濾檢測模塊;第5步屬于攻擊向量生成模塊;第6~7步屬于過濾規則生成模塊。下面將詳細介紹研究中各重點模塊的設計方法。

由圖6可見,響應相似度的計算流程可對應表述為:

響應的相似度首先根據是否有響應來計算,如果兩個響應均沒有響應或停止響應,則相似度為1;如果兩個響應中一個有正常響應、另一個沒有,則相似度為0;如果兩個響應中均有正常響應,則繼續查看兩個響應的響應碼,如果兩個響應的響應碼均不為200且相同,則相似度為1;如果兩個響應的響應碼不同,則相似度為0;如果兩個響應的響應碼均為200,則計算響應內容的字符串相似度,作為響應的相似度。

計算字符串相似度的時候調用的是python的difflib庫,當字符串較長時,計算時間也趨于可觀,比如30 k數據的內容在研究選用的PC機上需要計算3 min左右。另外,部分網站的響應特征不明顯,雖然相似度較高,卻并非同一類型,比如圖7、圖8的網站。

可以看出,整個網頁觸發WAF規則的響應結果與正常響應結果僅僅是一句話的差別,因而在分類這兩種請求的時候帶來的困難也越發突顯。

為了解決上述兩個問題,工具增加了正則匹配的功能。在輸入中輸入-r參數,輸入一個正則表達式,在計算字符串相似度的時候,首先會對字符串調用正則匹配,將匹配出來的結果再計算字符串相似度。如此,臻至完美地解決了上述問題。對其研究釋義可得內容為:

首先,當響應結果內容數據量較大時,通過人工選擇關鍵部分進行正則匹配,可以優勢提升計算效率,不再被無效的字符串相似度計算時間而困擾;另外也可以通過人工選擇關鍵部分,將有效部分篩選出來,方便機器計算相似度并歸類,不再為海量數據中找不到關鍵點而困擾。

得到相似度之后,通過相似度大小的比較,得到兩個請求是否為同一類。工具設置了全局變量ACCEPTABLE_DIFF_RATIO,為0.05,如果兩個響應的相似度差別小于0.05,則視為同類請求;否則不為一類。研究可得,相似度差別的數學公式為:相似度差別=STANDARD_RATIO – SIMILARITY[i][j],(1)其中,STANDARD_RATIO是在發送原始請求時確定的最高相似度,SIMILARITY[i][j]為第i個請求與第j個請求的相似度值。

將五種請求歸類后,同一類別的請求只留一個響應結果保存在RESPONSES全局變量中。最后RESPONSES中保留了基礎類別響應的標準。如果只有一種類別,說明該網站沒有探測到不同類型的響應,即沒有探測到WAF響應,輸出“Didnt find WAF Product”,程序停止。如果有多種類別,再繼續運行程序進入下一個模塊—攻擊向量生成模塊。

1.4攻擊向量生成模塊

攻擊向量生成模塊是本工具的關鍵模塊,需要設計出良好的攻擊向量,對目標網站進行大量的惡意請求嘗試,才能夠比較完整地觸發WAF響應,從而得到WAF規則。研究攻擊向量的時候可以通過兩種角度去設計實現[4],即攻擊者的角度和防御者的角度。所謂從攻擊者的角度是指在滲透測試的過程中可能會用到部分的惡意字符串以及攻擊向量[3],包括一些關鍵的滲透步驟探測;從防御者的角度是指無論攻擊者使用什么手段,一些關鍵的系統功能函數以及關鍵字是禁止使用的。這兩種角度雖然立足于不同方向,但是卻有共同的部分,那就是滲透測試的手段。

為此,根據如上原則,設計了兩個攻擊向量集合,分別各自保存在special.xml和payload.xml文件中,之所以保存在xml文件中是為了程序能夠方便讀取,同時還可以不斷地擴充攻擊向量集合,使集合更加完備。其中,special.xml中是惡意單個字符集合,使用url編碼過的集合,在使用時需要先對其進行url解碼再使用。而payload.xml是其他攻擊手段惡意關鍵字集合,包含的攻擊類型有COMMON、SQL、XSS、LFI和PHP。每一種攻擊類型包含不同的攻擊句子,句子中拆分出單個關鍵字,在一個攻擊句子中關鍵字類型相近且可以相互組合,比如SQL注入攻擊中語句為:

-- or union select if as between from where group by having limit into outfile procedure

對應內容中,關鍵字拆分為--、or、union、select、if、as、between、from、where、group、by、having、limit、into、outfile、procedure,針對這個攻擊level設計指數bound等于3,意思是在這個句子中最高的關鍵字組合數為3,表示可能由三個關鍵字才能觸發WAF響應,比如select from where就是很多WAF規則中的組合。優化合理地設計bound指數,可以對WAF規則進行高效探測,bound設計得過高,雖然檢測結果將更加精準,但是也會導致請求數目劇增,影響檢測效率;bound設計得過低,則檢測結果不準確,無法找到真正觸發WAF的關鍵字組合。endprint

在攻擊向量的設計過程后,就可以通過最小元素優先檢測法對目標網址的WAF規則進行探測了。遍歷每個攻擊類型的所有level,針對每個level首先發送整個句子作為參數,如果得到的響應結果類型與原始請求并不相同,則視為其中存在WAF規則禁止的字符串;再組合關鍵字進行探測。因為一個level的句子中可能存在不同的WAF規則組合,比如上述SQL注入攻擊語句可能同時存在select from以及union select兩種組合,因此要盡可能地對每一種關鍵字組合都加以嘗試才能夠確定每一種WAF規則;但是如果全排列所有關鍵字請求,數量又太大,因此要按照bound參數進行組合。從一個關鍵字組合到兩個關鍵字組合,一直到bound數目的關鍵字組合停止,這個順序稱之為最小元素優先檢測法。因為如果先進行少數關鍵字組合且檢測成功,可以將這部分關鍵字剪枝,從而減少請求數。比如檢測到select關鍵字被WAF禁止,則將無需再檢測select from以及union select組合。

然而探測出的關鍵字未必是最精確的WAF規則配置,比如ord()、floor()關鍵字,可能其中真正有效部分是or。但是在一個最小元素關鍵字中,可以基本認為其中只包含一個WAF規則,因為在設計關鍵字的時候就是根據經驗按照一個WAF規則來操作處理的,故而仍然需要對關鍵字進行更為精確的檢測,在這里研究使用了二分法[5]。

二分法中,研究給定一個字符串A,并找出其中的WAF規則,且WAF規則可能不是連續的字符串,所以需要逐個探測字符串中的有效字符。算法不斷地確定有效字符中最右字符來運行,如圖9所示,先對目標字符串A二分為A1、A2,檢測A1是否會被WAF禁止:如果成功,則證明最右字符在A1中;如果失敗,則證明最右字符在A2中;對相應部分字符串再次二分,在新產生的左部要與其左面的字符串A中的其他部分結合進行探測,比如A2分為A21和A22,A21需要結合A1為A1A21進行探測:如果成功,則最右字符在A21中;如果失敗,則最右字符在A22中;以此類推,直至精確到一個字符。然后將這個字符加入到結果集中,再遞歸探測其左面部分中的最右字符,請求時將結果集中的字符銜接到最右面即可。

該算法的復雜度為nlogn,n為關鍵字長度。同時還有另一種可能需要用到二分法,當句子遭到了WAF禁止后,說明句子中有部分字符串是在WAF規則中,然而若關鍵字設計不當或者bound值過低,可能發生所有關鍵字組合都不會被WAF禁止的情況,這時就可以使用二分法直接探測句子中的有效部分,在其中精確地找到一種WAF規則即可。

一般情況下,工具需要發送幾千個請求。平均來說,網站的響應時間大約在1~2 s左右,然而也可能會存在響應較慢的網站,響應時間在4 s以上;這樣計算,平均運行一次程序需要1 h,如果響應在4 s以上,更會使運行時間達到數小時之久,效率極低。因此,這里采用了多線程技術,極具實效地提升檢測效率[6]。

由于按照流程,需要先檢測句子,若句子被WAF禁止再組合關鍵字去請求,若組合關鍵字被WAF禁止再用二分法精確查找WAF規則,所以不同網站的請求內容并不完全相同,需要根據情況智能判斷。因此本工具在組合關鍵字處加入了多線程處理,每次得到一個組合關鍵字列表后,由各個線程分別到列表中逐個提取關鍵字進行查詢,所有線程共享一個偏移變量tmp_share_offset,每次根據變量值取關鍵字查詢并將偏移增加1,運行了一個關鍵字查詢后將調用偏移變量再次讀取,直至偏移大于列表長度線程退出。

多線程很容易發生的就是競爭問題,如果線程A和線程B同時讀取tmp_share_offset,或者線程A讀取之后還未將tmp_share_offset增加便被線程B讀取了,導致大量線程讀取相同的關鍵字,還有可能造成關鍵字的遺漏,所以研究中即引用了互斥鎖技術[7]。每當讀取或修改共享變量的時候就將變量鎖住,禁止其他線程讀取使用,其他線程若需要使用共享變量只能選擇等待,直到共享變量使用完畢、且互斥鎖釋放后才可以使用,如此,便真正地解決了競爭問題。

綜上論述可知,攻擊向量生成模塊即是本次研究的目標關鍵模塊,其中用到了滲透技術、最小元素優先檢測法、二分法、多線程、互斥鎖等多種核心技術思想。

1.5過濾規則生成模塊

攻擊向量檢測完畢后,會將結果匯總至動態列表ALL_BANNED_EFFECTIVE_VECTOR中,再將列表中的所有WAF規則輸出到文件中。研究至此,程序的主體便全面結束。

1.6SQLMAP的使用

目前針對WAF的研究并未充分展開,工具也較有限。本文在項目確立之前即研究發現了著名的滲透測試軟件SQLMAP也有WAF探測模塊[8],而且也是WAF研究中可堪稱效果優良的一款工具。然而,SQLMAP是要找出WAF所對應的產品名稱,找到的方法是根據WAF響應特征和預備WAF產品知識庫進行匹配得知,不過,由于不能夠探測出代碼級的WAF或是自定義WAF,卻只能找出生產WAF的廠商,因而相對而言其探測能力仍有所欠缺。

本文并沒有深入辨識及確認WAF廠商,注重的是對WAF規則的探測發現研究。但是關于同一廠商的WAF產品規則是否會大致相同的問題討論,本工具則是將SQLMAP的WAF探測功能整合到最后一部分,得到WAF產品名稱后輸出到結果文件中,這樣就可以在探測大量網站之后得到同一廠商WAF產品規則配置概況,同時也豐富了本次研究針對WAF工具的實際應用功能。

2測試結果

研究中使用本工具對10家網站進行了WAF規則探測,平均響應時間為1.2 s;平均檢測網站規則數23個,最高檢測規則68個;平均請求數1 455個,最大請求數3 370個;平均運行時間6 min 50 s,最長運行時間20 min 36 s。詳細數據如表1所示。endprint

由表1可知,部分網站的WAF規則探測效果較好,比如www.esri.com探測出68條WAF規則,但是部分網站的探測效果一般,例如,iask.sina.com.cn的最少,僅僅探測出九條WAF規則。從運行時間角度來說,通常請求數越大運行時間越長,但均沒有超過0.5 h,大部分規則較少的在5 min之內就能夠結束運行。

能夠看出其網站WAF規則涉及到多種攻擊手法,關鍵字包括SQL注入函數、SQL注入數據庫表名、XSS函數、XSS標簽、PHP注入關鍵字、PHP注入函數等等。

3結束語

本文設計的WAF規則自動探測工具可以較好地黑盒探測出任意網站的WAF規則,在其中做了較多的優化和提升。使用正則匹配解決了難以從相似結果中提取不同種類響應的問題,使用最小元素優先檢測法和二分法提升了探測效率,使用多線程使探測速度更為可觀,也從多種攻擊手段設計了攻擊向量,同時工具仍支持繼續增加攻擊向量庫,使探測更加精準高效。然而工具也存在部分不足,比如有時探測出的WAF規則較少,攻擊向量庫仍有待進一步的拓展改進。今后將繼續完善攻擊向量庫,同時增加攻擊向量的變種探測能力,使探測出的規則更加完整,貼近設計。

參考文獻:

[1] 國家網信辦. 《中國互聯網站發展狀況及其安全報告(2015)》發布[J]. 保密科學技術,2015(3):73.

[2] PRANDL S, LAZARESCU M, PHAM D S. A study of Web application firewall solutions[C]//International Conference on Information Systems Security. Switzerland:Springer International Publishing, 2015: 501-510.

[3] FIELDING R, GETTYS J, MOGUL J, et al. Hypertext transfer protocol-HTTP/1.1[R]. California:HTTP Working Group,1999.

[4] RELAN K, SINGHAL V. Pentest Ninja: XSS and SQLi takeover tool[C]//Proceedings of the Second International Conference on Information and Communication Technology for Competitive Strategies. Udaipur, India: ACM, 2016: 1-2.

[5] 王海濤, 朱洪. 改進的二分法查找[J]. 計算機工程, 2006, 32(10): 60-62,118.

[6] 駱斌, 費翔林. 多線程技術的研究與應用[J]. 計算機研究與發展, 2000, 37(4): 407-412.

[7] KLEIMAN S, SHAH D, SMAALDERS B. Programming with threads[M]. Calif :Sun Soft Press, 1996.

[8] Damele B, Stampar M. Sqlmap[EB/OL].[2012].http: //sqlmap. Org.endprint

猜你喜歡
規則檢測
撐竿跳規則的制定
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
數獨的規則和演變
“幾何圖形”檢測題
“角”檢測題
規則的正確打開方式
幸福(2018年33期)2018-12-05 05:22:42
讓規則不規則
Coco薇(2017年11期)2018-01-03 20:59:57
TPP反腐敗規則對我國的啟示
主站蜘蛛池模板: 无遮挡国产高潮视频免费观看| 国产高清毛片| 国内精品自在自线视频香蕉| 九色91在线视频| 亚洲国产系列| 看国产毛片| 孕妇高潮太爽了在线观看免费| 最新国语自产精品视频在| 国产精品一区二区不卡的视频| 亚洲国产精品日韩av专区| 国产大片黄在线观看| 亚洲精品无码在线播放网站| 中文字幕 日韩 欧美| 亚洲最猛黑人xxxx黑人猛交 | av午夜福利一片免费看| 亚洲欧洲一区二区三区| 午夜成人在线视频| 亚洲an第二区国产精品| 91精品国产丝袜| 国产精品手机视频| 久久网综合| 超清人妻系列无码专区| 国产欧美精品一区aⅴ影院| 国产乱人伦AV在线A| 国产h视频免费观看| 91福利一区二区三区| 国产福利在线观看精品| 一区二区三区四区日韩| 欧美精品H在线播放| 2022精品国偷自产免费观看| 九色视频线上播放| 色噜噜在线观看| 五月天久久婷婷| 国产精品视频3p| 欧美在线三级| 国内精品小视频在线| 亚洲黄色视频在线观看一区| 天堂在线视频精品| 亚洲精品国偷自产在线91正片| 国产在线第二页| 亚洲欧洲日本在线| 制服丝袜国产精品| 一级毛片在线播放| 夜夜操国产| 91偷拍一区| 亚洲日韩精品欧美中文字幕| 91香蕉视频下载网站| 久久婷婷综合色一区二区| 午夜国产在线观看| 拍国产真实乱人偷精品| 人人看人人鲁狠狠高清| 日本午夜三级| 久久99国产综合精品1| 久久无码高潮喷水| 中文字幕免费在线视频| 乱系列中文字幕在线视频| 五月婷婷丁香综合| 一本色道久久88| 精品第一国产综合精品Aⅴ| 青青久久91| 日韩无码真实干出血视频| 国产一区三区二区中文在线| 天天综合色网| 天天干天天色综合网| 成人中文字幕在线| аⅴ资源中文在线天堂| 99ri精品视频在线观看播放| 香蕉eeww99国产精选播放| 国模粉嫩小泬视频在线观看| 久久人搡人人玩人妻精品一| 亚洲第一中文字幕| 四虎综合网| 久操中文在线| 二级毛片免费观看全程| 久久成人18免费| 国产91丝袜在线观看| 久久久久亚洲Av片无码观看| 国产AV无码专区亚洲精品网站| 综合人妻久久一区二区精品| 欧美中出一区二区| 99激情网| 五月综合色婷婷|