<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/tips/730

            0x00 背景


            目前安全測試的軟件越來越多,也越來越強大,越來越多的人成為[黑客],今天在網上看到一個文章說攔截wvs的掃描,勾起了我寫這篇文章的欲望。

            因為公司的三大業務之一就有一個云waf,每天攔截的日志里面,有將近90%的請求是掃描器發出,waf接收到請求會解析數據包,然后過一遍規則,過完成百上千條規則必定對性能有一定的影響。如果能識別出來是人還是掃描器的請求,就可以在這方面節省很大的資源。

            下面的分析介紹只針對web安全掃描器。

            0x01 分析特征


            目前全能型的掃描器主要是wvs(Acunetix Web Vulnerability Scanner)、AppScan、WebInspect,國內的像aisec、bugscan等等…還有國內那些老安全廠商的掃描器就不說了,主要提一下像wvs這種使用率比較高的。另外還有目錄文件型的掃描器、注入工具(類似sqlmap、Havij)等等。

            掃描器識別主要從以下幾點來做:

            一、 掃描器指紋(head字段/請求參數值等) 
            二、 單IP+ cookie某時間段內觸發規則次數 
            三、 隱藏的鏈接標簽(<a>) 
            四、 Cookie植入 
            五、 驗證碼驗證 
            六、 單IP請求時間段內Webserver返回http狀態404比例 
            

            一、掃描器指紋(head字段/請求參數值等)

            目前最常見的手法就是收集掃描器的指紋特征來做識別,不同的掃描器都有自己的一些特征,比如發出的請求會加一些特定的head 字段,測試漏洞的請求參數的值會帶上自己掃描器的名稱等。

            下面通過抓網絡數據包來看常見掃描器的指紋特征:

            wvs(Acunetix Web Vulnerability Scanner):

            下面是我抓到的一個wvs的請求

            20131107114510_20989.jpg

            GET /help/website-performance-settings/x HTTP/1.1
            Pragma: no-cache
            Cache-Control: no-cache
            Referer: http://www.anquanbao.com/help
            Acunetix-Aspect: enabled
            Acunetix-Aspect-Password: 082119f75623eb7abd7bf357698ff66c
            Acunetix-Aspect-Queries: filelist;aspectalerts
            Cookie: xxxxxxxxxxxx
            Host: www.anquanbao.com
            Connection: Keep-alive
            Accept-Encoding: gzip,deflate
            User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.63 Safari/537.36
            Accept: */*
            

            請求頭里面有三個很明顯的標志:

            Acunetix-Aspect: enabled
            Acunetix-Aspect-Password: 082119f75623eb7abd7bf357698ff66c
            Acunetix-Aspect-Queries: filelist;aspectalerts
            

            另外在請求的參數值,比如URL跟POST數據中都有很明顯的acunetix_wvs_security_test特征,下圖是我從waf攔截中調取到的結果。

            20131107114759_54681.jpg

            根據以上抓取到的特征,我們可以把這個作為wvs的一個指紋,在waf中進行過濾。

            Appscan

            同樣的,appscan也有自己的一些特征,如下

            20131107114839_35125.jpg

            Bugscan

            關于Bugscan,我咨詢了一下作者,作者給了XSS模塊的掃描源碼我看了下,主要特征是:

            –>’”><H1>[email protected]</H1>
            

            另外還有一些特征就不一一列舉。

            20131107114919_40006.jpg

            注意:并不是所有的請求都會帶有掃描器的特征,比如下面的一個包也是wvs發出的,但是沒有帶上面我們說的特征,掃描器指紋特征只能抵擋住一部分的掃描,但是我們可以利用這些信息識別出掃描器然后干掉IP等。

            20131107114955_31758.jpg

            二、單IP+ cookie某時間段內觸發規則次數

            根據某個IP+ cookie某時間段內觸發waf攔截規則的次數大于設定的某個閥值,比如在20秒內,某個IP+cookie觸發waf攔截規則10次。

            數據證明如下圖:

            20131107115034_38569.jpg

            另外還可以根據IP+user angent等,或者更多維度。

            三、隱藏的鏈接標簽等(<a>)

            掃描器的爬蟲會把頁面里面的所有鏈接都抓出來去做漏洞探測,特別是現在基于webkit一類的掃描器,能夠渲染css跟js,可以爬出更多的鏈接測試。

            下面貼出一個百度百科關于webkit的介紹

            WebKit 是一個開源的瀏覽器引擎,與之相對應的引擎有Gecko(Mozilla Firefox 等使用)和Trident(也稱MSHTML,IE 使用)。同時WebKit 也是蘋果Mac OS X 系統引擎框架版本的名稱,主要用于Safari,Dashboard,Mail 和其他一些Mac OS X 程序。WebKit 前身是 KDE 小組的 KHTML,WebKit 所包含的 WebCore 排版引擎和 JSCore 引擎來自于 KDE 的 KHTML 和 KJS,當年蘋果比較了 Gecko 和 KHTML 后,仍然選擇了后者,就因為它擁有清晰的源碼結構、極快的渲染速度。Apple將 KHTML 發揚光大,推出了裝備 KHTML 改進型 WebKit 引擎的瀏覽器 Safari。
            

            隱藏的標簽鏈接是指人看不見的鏈接,如

            <a ></a>
            

            形式,人是點擊不到的,只有軟件能夠匹配出這個地址,我們新建一個網頁,抓掃描器數據包測試。

            #!html
            <html>
             <head>
              <title>test</title>
             </head>
             <body>
              <a href="http://localhost/1.php?id=1"></a>
             </body>
            </html>
            

            通過抓取wvs的數據包可以看到,掃描器很快的捕獲了http://localhost/1.php?id=1這個鏈接,并進行漏洞測試。

            20131107115118_39599.jpg

            當然如果在正常情況下也給所有用戶植入這種代碼是非常令人反感的,用戶體驗也會大打折扣,可以在前期先做一些條件限制,比如固定時間段內觸發waf攔截規則到達預定閥值,再給這個用戶單獨植入一個隱藏鏈接。

            四、Cookie植入

            Cookie植入的方式跟上面講的隱藏鏈接植入大同小異,實現原理是:當一個IP+user angent在固定時間段內觸發規則的次數到達一定閥值,給發起請求的這個人植入一個cookie,如果下次再請求沒有攜帶這個cookie,則說明是掃描器。 cookie植入有利有弊,優點是更直接,種下cookie馬上就能根據下一個請求判斷。缺點是這個方式在基于webkit的掃描器上面行不通。

            五、驗證碼驗證

            驗證碼驗證的方式跟上面的cookie植入也大同小異,不過是把cookie換成了驗證碼的方式,這種方法也被用于防CC攻擊。

            六、單IP請求時間段內Webserver返回http狀態404比例

            這種方法主要用來應對探測敏感目錄和文件的掃描器,這類的掃描器都是基于字典文件,通過對字典內的url進行請求獲得的返回信息來進行判斷目錄或者文件的是否存在。 如果某個IP在一段時間內請求頻率過快,這時候waf可以進行收集一段時間內webserver返回404狀態數目,到達一定閥值后進行封殺。

            20131107115147_87082.jpg

            0x02 思考


            看過上面幾種方法的介紹,應該大部分人都會想到兩個問題,

              1.  一大撥人使用同一個公網IP,怎么判斷誰是攻擊者?
              2.  一大撥人使用同一個公網IP,怎么才能保證不誤殺?
            

            第一,對于怎么判斷攻擊者,當然不能單純的從一個IP判斷,一般一個完整的http請求都會帶有user angent、cookie等信息,我們可以結合ip+user angent來判斷請求的人,或者再加一個cookie的維度,當然在給這個攻擊者植隱藏鏈接、cookie或者驗證碼之前,需要它觸發一些規則閥值,以免影響用戶體驗。

            第二,說到怎么保證不誤殺,也就是怎么去封殺的問題,關鍵在于怎么二次判斷攻擊者,目前最好的方法也是利用ip+user angent,在判斷是掃描器請求后,根據IP+user angent進行封殺,另外也是靠cookie封殺,關鍵在于是攜帶某個cookie鍵的封殺掉還是不帶的封殺掉。

            PS:如果誤殺太大,如果剛好哪個妹紙在線看小電影到激情片段,這是多傷人妹紙的心啊。

            出自:http://www.cnseay.com/3469/

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线