您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關常見WebShell客戶端的流量特征及檢測思路有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
開始之前先明確什么是webshell客戶端?先問個問題,什么是客戶端,什么是服務端?
很簡單,提供服務的就是服務端,要求被服務的就是客戶端。那么回到我們的場景中,如果已經種了后門,用于連接后門的程序是要求被服務的,比如執行個ps,目的是為了得到后門所在主機的進程列表,是“被服務“的,所以稱之為客戶端。本文將在后續介紹一系列有關webshell客戶端的流量監測手法。
WebShell客戶端是一種用于服務器上WebShell后門與攻擊客戶端之間進行通信的程序,我們通常可以根據WebShell客戶端的流量來判斷服務器上是否存在WebShell后門。
如今國內外常用的WebShell客戶端有如下幾種:
中國菜刀(使用量最大,適用范圍最廣的WebShell客戶端);
蟻劍(一種常用的WebShell客戶端);
冰蝎(流量加密客戶端);
Cknife(C刀,使用Java語言編寫)
Weevely(kali中的中國菜刀)。
接下來分別介紹其流量特征。
中國菜刀自誕生以來已經歷了多個版本的更新,其功能、隱秘性也隨著更新得到很大提升。菜刀現在主流有三個版本在使用,分別為2011版、2014版、2016版,這三個版本中從2011版本到2014版本是功能性上進行了增強,從2014版本到2016版本是在隱秘性上進行了增強,2016版本的菜刀流量加入了混淆,使其鏈接流量更具有混淆性。
中國菜刀基本支持PHP、JSP、ASP這三種WebShell的連接,這三種語言所對應的流量各有差異,各個版本也有不用。下面將按照不同版本不同語言組合進行分析。其中2011版和2014版菜刀流量特征基本一致,所以放在一起分析。
中國菜刀2011版本及2014版本各語言WebShell鏈接流量特征
(1)PHP類WebShell鏈接流量
其中特征主要在body中,將body中流量進行url解碼后如下:
其中特征點有如下三部分,
第一:“eval”,eval函數用于執行傳遞的攻擊payload,這是必不可少的;
第二:(base64_decode($_POST[z0])),(base64_decode($_POST[z0]))將攻擊payload進行Base64解碼,因為菜刀默認是將攻擊載荷使用Base64編碼,以避免被檢測;
第三:&z0=QGluaV9zZXQ...,該部分是傳遞攻擊payload,此參數z0對應$_POST[z0]接收到的數據,該參數值是使用Base64編碼的,所以可以利用base64解碼可以看到攻擊明文。
注:
1.有少數時候eval方法會被assert方法替代。
2.$_POST也會被$_GET、$_REQUEST替代。
3.z0是菜刀默認的參數,這個地方也有可能被修改為其他參數名。
(2)JSP類WebShell鏈接流量:
該流量是WebShell鏈接流量的第一段鏈接流量,其中特征主要在i=A&z0=GB2312,菜刀鏈接JSP木馬時,第一個參數定義操作,其中參數值為A-Q,如i=A,第二個參數指定編碼,其參數值為編碼,如z0=GB2312,有時候z0后面還會接著又z1=參數用來加入攻擊載荷。
注:其中參數名i、z0、z1這種參數名是會變的,但是其參數值以及這種形式是不會變得,最主要就是第一個參數值在A-Q,這種是不變的。
(3)ASP類WebShell鏈接流量:
其中body流量進行URL解碼后
其中特征點有如下三部分,
第一:“Execute”,Execute函數用于執行傳遞的攻擊payload,這是必不可少的,這個等同于php類中eval函數;
第二:OnError ResumeNext,這部分是大部分ASP客戶端中必有的流量,能保證不管前面出任何錯,繼續執行以下代碼。
第三:Response.Write和Response.End是必有的,是來完善整個操作的。
這種流量主要識別這幾部分特征,在正常流量中基本沒有。
注:OnError Resume Next這個特征在大部分流量中存在,極少數情況沒有。
中國菜刀2016版本各語言WebShell鏈接流量特征
PHP類WebShell鏈接流量
其中特征主要在body中,將body中部分如下:
這個版本中流量最大的改變就是將特征進行打斷混淆,這也給我們識別特征提供一種思路。
其中特征點有如下三部分,
第一:“"Ba"."SE6"."4_dEc"."OdE”,這部分是將base64解碼打斷使用.來連接。
第二:@ev"."al,這部分也是將@eval這部分進行打斷連接,可以識別這段代碼即可。
第三:QGluaV9zZXQoImRpc3BsYXlf...,該部分是傳遞攻擊payload,payload依舊使用Base64編碼的,所以可以利用base64解碼可以看到攻擊明文來識別。
注:1.有少數時候eval方法會被assert方法替代。
JSP類WebShell鏈接流量:
該版本JSPwebshell流量與之前版本一樣,
所以分析如上:該流量是WebShell鏈接流量的第一段鏈接流量,其中特征主要在i=A&z0=GB2312,菜刀鏈接JSP木馬時,第一個參數定義操作,其中參數值為A-Q,如i=A,第二個參數指定編碼,其參數值為編碼,如z0=GB2312,有時候z0后面還會接著又z1=、z2=參數用來加入攻擊載荷。
注:其中參數名i、z0、z1這種參數名是會變的,但是其參數值以及這種形式是不會變得,最主要就是第一個參數值在A-Q,這種是不變的。
ASP類WebShell鏈接流量:
其中body流量為:
2016版本流量這鏈接流量最大的變化在于body中部分字符被unicode編碼替換混淆,所以這種特征需要提取出一種形式來,匹配這個混淆特征,比如“字符+%u0000+字符+%u0000”這種形式來判斷該流量。
或者直接將這部分代碼直接進行unicode解碼,可以獲取到如2011或2014版本的asp所示的流量。可以根據上一段特征來進行判斷。
這種流量主要識別這幾部分特征,在正常流量中基本沒有。
蟻劍的很多代碼源于中國菜刀,所以他的鏈接流量與中國菜刀很相似,但是蟻劍可以擴充性很好,可以對進行加密、混淆等繞過處理。蟻劍默認支持ASP以及PHP的webshell鏈接。
蟻劍PHP類WebShell鏈接流量
其中body流量進行URL解碼后為:
其中流量最中明顯的特征為@ini_set("display_errors","0");這段代碼基本是所有WebShell客戶端鏈接PHP類WebShell都有的一種代碼,但是有的客戶端會將這段編碼或者加密,而蟻劍是明文,所以較好發現。
蟻劍ASP類WebShell鏈接流量
其中body流量進行URL解碼后為:
我們可以看出蟻劍針對ASP類的WebShell流量與菜刀的流量很像,其中特征也是相同,如OnError ResumeNext、Response.End、Response.Write,其中execute在蟻劍中被打斷混淆了,變成了拼接形式Ex"&cHr(101)&"cute,同時該流量中也使用了eval參數,可以被認為明顯特征。
蟻劍繞過特征流量
由于蟻劍中包含了很多加密、繞過插件,所以導致很多流量被加密后無法識別,但是蟻劍混淆加密后還有一個比較明顯的特征,即為參數名大多以“_0x......=”這種形式(下劃線可替換為其他),如下圖:
所以,以_0x開頭的參數名,后面為加密數據的數據包也可識別為蟻劍的流量特征。
其中冰蝎是近幾年出現的一種WebShell客戶端,該鏈接器最大的特點就是流量進行加密,且加密秘鑰是由使用者來設定,但是該攔截器對WebShell的需求比較高,無法連接一句話木馬,綜上,該客戶端的流量無法檢測。
Cknife流量的特征就是在body部分的參數值均為base64編碼,將該部分進行base64解碼后,其流量特征同中國菜刀一致,所以不再另行展開分析
Weevely是kail中自帶的一款功能強大的WebShell客戶端,該鏈接器首先自己生成webshell,在將該webshell上傳至目的服務器后,通過Weevely進行鏈接,該鏈接流量屬于加密流量,但是在該流量中還可以發現特征,進行區分。
該流量中的攻擊載荷存在于Referer中,其中Referer中的路徑中php的查詢參數有以下參數名或值,即sa=、source=web、cd=數字、url=、ei=,即可確定該流量為客戶端流量。
關于“常見WebShell客戶端的流量特征及檢測思路有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。