背景
此前網絡上出現了一些針對CobaltStrike的特征檢測手段,利用了CS服務器中的一個特征后門來檢測CS服務器,做網絡測繪,詳細文章可以看https://mp.weixin.qq.com/s/BLM8tM88x9oT4CjSiupE2A,網上也出現了一些規避手段,比如講Starge監聽stop掉,但是本人不喜歡這種方式,不夠靈活,而且CS的逆向修改也沒那么麻煩。另外我覺得描述這個問題也要嚴謹一些,我叫它特征后門,即通過這個特征能識別端口背后的服務,進而被威脅情報收錄。造成這個特征的核心問題是,CS在生成Stager類型的可執行文件時,需要通過監聽端口+URI去下載Payload,這個URI生成規則寫的真的能算是后門了,只能感嘆試用版終歸是試用版。我覺得以后真沒必要搶先用一些新版本的試用版,尤其是用於實戰,你可能並不知道被作者在里面放了些啥,老版本功能夠用就可以了。
這里的生成規則是隨機從大寫字母+小寫字母+數字中取指定長度的幾個字符,然后計算ASCII碼和模256,符合這個規則就OK了。
然后在Stager服務器的響應代碼中,也是同樣命中這個規則就會返回Payload代碼。
處理1
處理這個問題需要修改兩個地方的代碼,一個是生成URI的代碼,一個是Stager服務器響應代碼,需要兩個地方對應即可。這里給出修改位置:
生成代碼:
common.CommonUtils
public static String MSFURI(int paramInt) {...}
public static String MSFURI_X64() {...}
不建議直接修改Checksum8函數,可以通過新增一個自己編寫的函數來實現計算校驗和,因為其他地方還會調用common.CommonUtils中的checksum8函數
Stager響應代碼:
cloudstrike.Webserver
public static boolean isStager(String uri) {...}
public static boolean isStagerX64(String uri) {...}
public Response _serve(String uri, String method, Properties header, Properties param) {...}
修改后重新編譯打包即可,這里不再贅述。
處理2
實驗室同學說,通過nginx反代理配置了C2 Profile的端口,在nginx路由規則中即可限制也可。