主流webshell工具流量初探
蟻劍流量分析
一、首先服務器寫入一句話,密碼為pass,連接抓包。默認為明文:

眼花繚亂,捋一下,首先是對返回輸出結果進行加工的部分:
在結果前后各加些隨機字符進行擾亂 :

接著對當前路徑及當前系統進行判定,遍歷所有盤看有幾個磁盤,獲取當前用戶等:

再執行個命令看下:

結果中頭尾都加了相應的隨機字符串。這個也是waf規則之一,取值范圍都是固定的,關于修改:
- 可以通過在編碼器中,修改代碼來定義首尾的隨機數目及范圍,可以每次隨機產生不同位數
- 在設置中自定義,不過每次都是固定的


其中會傳遞三個參數:這里截取X位可以自定義設置:

這里截取X位可以自定義設置

去掉wU兩位,Y21k就是cmd的base64。可以說特征是比較明顯了:

二、關于編碼、解碼器:
編碼器:對發送的流量進行編碼,服務端進行解碼。
解碼器:服務端對返回的流量進行編碼,客戶端通過解碼器進行解碼還原。
蟻劍提供了base64、chr、chr16、rot13四種編碼方式,和base64、rot13兩種解碼方式:
1. 我們設置base64看抓包結果:


變量值進行了base64加密。邏輯是執行pass這條語句,也就是base64解密并執行上面這一大堆代碼。套娃??和菜刀的源碼差不多。
2. 設置rot13編碼看一下:
進行url解碼看到發送的rot13函數:

進行在線解密看到是和之前一樣數據包:

3. 關于rsa編碼:
蟻劍可以自定義rsa編碼,原理是先用生成的私鑰對發送數據進行加密,服務端再用腳本里的對應公鑰進行解密。
使用前提:目標php要開啟openssl(開啟openssl方法:在配置php.ini中
搜索extension=php_openssl.dll,取消前面分號,重啟web服務)

連接shell、抓下流量:

發送內容進行了加密,不過返回包還是明文。這個后續就需要我們對結果進行加密返回,再配合解碼器進行解碼。
冰蝎2流量分析
先看下webshell對數據都做了哪些操作:

特征是連接會get方式向服務端請求密匙。
附一張經典圖及過程(來自網絡):
- 首先客戶端以Get形式發起帶密碼的請求。
- 服務端產生隨機密鑰,將密鑰寫入Session并將密鑰返回客戶端。
- 客戶端獲取密鑰后,將payload用AES算法加密,用POST形式發送請求。
- 服務端收到請求,用Session中的密鑰解密請求的Body部分,之后執行Payload,將直接結果返回到客戶端。

16位長度字符特征,每次新連接都是get獲取兩次、之后正常通信。為什么是兩次呢?
(參考:http://t.zoukankan.com/0daybug-p-12749547.html)



后續發送的數據包是通過密匙進行加密的,所以我們反向用到的密匙進行aes解密,發現是base64編碼,再base64解一次即可看到傳輸的內容:

整理下結果,從發送的內容看,是對返回的json字符串進行aes128加密:

以下為返回包解碼后內容:

其他特征:
- 不論是get還是post請求,Content-Type字段總是application/x-www-form-urlencoded。常理來說,Get請求一般沒有這個字段值。
- Accept字段與正常請求有差異,比較奇怪,這是源碼默認值導致的。

冰蝎3流量分析
webshell相比2代取消了密匙的交互,改為直接寫到webshell里:

執行過程是客戶端post傳輸數據,webshell通過用key進行aes加密的流量。
以執行whoami命令為例,aes解密后關鍵代碼如下:
進入路徑通過一系列函數執行我們的命令,最終將結果以aes128加密的json格式返回,這點和2代一樣。

對返回結果解碼可得:

流量全程通過aes加密,下面是天眼流量告警展示:


看其他師傅說還有些強特征如content-type為application/octet-stream:

可惜我這里沒有抓到,可能是新版本修改了吧。
哥斯拉流量分析
先看下生成的種類,php異或加密:

第一個就是最簡單的一句話。我們選第二個復雜一些的看看。秒了,暫且加白:

特征是連接時會發3個數據包,第一個數據包巨大,并且返回內容為空:

后續請求都是較少的流量。統一開頭都是明文pass,也就是我們設置的密碼:

從webshell里可以看到,將post的數據進行base64解碼,再通過加密函數與key值進行異或運算:

那我們提取函數解密看下發送了什么內容吧:
第一次發送的包進行解碼,代碼中集成了很多函數及功能:

第二個包內容:

第三個包內容:

第二個包是測試用的,除了首次包集成了很多功能,后續執行發送很小的流量,返回包也嚴格做了加密。

前后各16位key和pass MD5后生產的固定字符串。

天眼設備流量告警展示:
