1. 程式人生 > 實用技巧 >冰蠍3.0 流量特徵分析 附特徵

冰蠍3.0 流量特徵分析 附特徵

簡介

hw前夜,冰蠍釋出3.0版本,主要做了一下改動

  1. 取消動態金鑰獲取,目前很多waf等裝置都做了冰蠍2.0的流量特徵分析。所以3.0取消了動態金鑰獲取
  2. 介面由swt改為javafx,這個沒啥說,介面美觀大方

下面主要分析一下冰蠍3.0變化

金鑰生成

根據readme,aes金鑰變為md5("pass")[0:16]。全程不再互動金鑰生成

shell.jsp 中程式碼如下

    if (request.getMethod().equals("POST")) {
        String k = "e45e329feb5d925b";
        session.putValue("u", k);
        Cipher c = Cipher.getInstance("AES");
        c.init(2, new SecretKeySpec(k.getBytes(), "AES"));

客戶端的程式碼如下

我們可以看出,新增了無動態金鑰互動。只有在無動態金鑰互動失敗後,才會進入常規的金鑰互動階段。

金鑰生成可以看出,使用密碼的md5結果的前16位

特徵分析

下面我們隨便擷取一個冰蠍3.0請求包

雖然沒有特徵可言,但是還是可以找到些許強特徵

1. content-type

在冰蠍3.0 的服務端,是通過如下程式碼讀取post請求

request.getReader().readLine()

程式碼的意思是,直接讀取post請求中body的內容。所以請求的http中,content-type一定為application/octet-stream。否則就會出現非預期http編碼的情況。

下面我們檢視一下冰蠍3.0的客戶端中關於發包的程式碼

可以看出,該請求頭是冰蠍3.0中寫死的部分,除非反編譯,不然很難修改

下面我們來看一下application/octet-stream的解釋

  1. 只能提交二進位制,而且只能提交一個二進位制,如果提交檔案的話,只能提交一個檔案,後臺接收引數只能有一個,而且只能是流(或者位元組陣列)
  2. 屬於HTTP規範中Content-Type的一種
  3. 很少使用

根據上面的結論,Content-Type: application/octet-stream屬於強特徵

2. user-Agent

該特徵屬於弱特徵。普通使用者很容易就可以修改。但是我們也分析一下。

冰蠍3.0 每次請求都會隨機選擇一個user-Agent。但是如果使用者預設不提供ua頭,則從系統中隨機選擇一個ua頭。我們來看一下冰蠍3.0預設的ua頭都有什麼

冰蠍3.0內建的預設16個userAgent都比較老,屬於N年前的瀏覽器產品。現實生活中很少有人使用。所以這個也可以作為waf規則特徵。附內建的16個ua

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0 
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50
Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; Tablet PC 2.0; .NET4.0E)
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.0)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Mozilla/5.0 (Windows; U; Windows NT 6.1; ) AppleWebKit/534.12 (KHTML, like Gecko) Maxthon/3.0 Safari/534.12
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.33 Safari/534.3 SE 2.X MetaSr 1.0
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1 QQBrowser/6.9.11079.201
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E) QQBrowser/6.9.11079.201
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
    

3. Accept&Cache-Control

這幾個http 請求頭,屬於java預設的設定。下面我們來分析一下程式碼

冰蠍3.0 通過sun.net.www.protocol.http.HttpURLConnection 實現與伺服器的互動。下面我們來分析一下sun.net.www.protocol.http.HttpURLConnection中關於請求的部分
sun.net.www.protocol.http.HttpURLConnection#writeRequests

可以看出,如果請求沒有設定accept,Cache-Control,Pragma,User-Agent。則會設定預設為

  • Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
  • Cache-Control: no-cache
  • Pragma: no-cache
  • User-Agent: java/1.8

當然,在冰蠍3.0中,預設只會設定ua請求頭,而其他三種一般不會設定。而且正常使用者訪問,也不會設定的如此簡單。尤其是accept頭

4. 請求中content-length

冰蠍3.0雖然對請求的內容加密,但是被加密的內容中,並沒有隨機填充的部分。下面我們以無金鑰互動為例子,分析一下冰蠍的流程

在冰蠍中,任何請求,最終都會呼叫Utils.getData函式,對請求的引數加密。對於上傳檔案,命令執行來講,加密的引數不定長。但是對於金鑰互動,獲取基本資訊來講,payload都為定長,且無隨機padding。

缺點:這個不一定準,需要自行判斷

結論

屬於冰蠍3.0的強特徵

  1. content-type
  2. Accept&Cache-Control
  3. 內建16個ua頭
  4. content-length 請求長度

藍隊可以根據業務方的需要,自行判斷需要封禁什麼請求,以求誤報與漏報之間的平衡

歡迎關注 寬位元組安全 公眾號