<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    CobaltStrike WebServer特征分析

    VSole2022-06-02 07:24:11

    WebServer特征

    本文簡單介紹了Cobalt Stike 4.4版本的一些特征以及緩解措施。

    webserver處理邏輯漏洞

    請求狀態碼異常

    正常的服務器對于uri的開頭不為/的情況,一般都會產生400的狀態。

    而teamserver在處理的時候,返回了404,

    在處理OPTIONS請求時候,更是uri都不看,直接返回200,并且在后面會加上Allow: OPTIONS,GET,HEAD,POST

    正常的網站感覺還是干不出來這種事情的。

    beacon&stager uri異常訪問

    對于更特殊的請求,類似的情況如下,更是直接暴露了profile的http配置以及beacon。

    profile的流量情況:

    beacon:

    uri匹配問題

    可以看到對于beacon.http-get、beacon.http-post的uri后面可以隨意增加的,profile很靈活導致了webserver沒辦法做精準的匹配。

    checksum8特征

    checksum8算法可以匹配多個值,如aaa9等,個人理解本意是在profile沒有設置uri的時候,具有一定的隨機性,多個uri都可以獲取beacon,但是問題在于profile中 set uri之后,該算法依然可用(可能為了兼容msf的請求),配合默認解密方法可以獲取完整的配置。

    WebServer流程、特征分析

    UA校驗

    我們對核心邏輯_serve進行簡單的分析。可以看到先經過了一個UA的黑白名單,可以在profile中進行配置。默認黑名單有curl* lynx* wget*。

    如果不符合UA檢測,則返回404,并在console中輸出。

    處理OPTIONS請求

    這塊發現teamserver是沒有對uri做校驗的,直接返回200,并添加了一個Allow的header。

    webserver核心邏輯

    Webserver封裝了一個名字叫hook的Map,里面push了多個WebService的實現,Map的key為uri,在監聽創建的時候,默認會push上述4個WebService進去。

    beacon.http-get
    stager
    stager64
    beacon.http-post
    

    其中beacon*類型為MalleableHOOK,負責處理beacon的通訊,如心跳,命令執行等,stager*類型為MalleableStager,負責推送beacon。

    當通過UA檢測后區分了7種情況:

    1.匹配響應一般的uri,用于host file,powershell script等一些情況 (beacon&stager uri異常訪問的原因)
    2.匹配響應用戶配置的beacon.post/get,stager/stagerx64的請求
    3.匹配響應目錄的uri,自動補全結尾的/,沒有找到場景
    4.匹配以http://開始的uri,沒有找到場景
    5.匹配stager64的uri,主要用于響應64位場景下checksum8算法生成的uri(uri長度有限制,checksum8特征的原因)
    6.匹配stager的uri,主要用于響應32位場景下checksum8算法生成的uri(uri長度有限制,checksum8特征的原因)
    7.所有條件輪空的處理
    

    當第匹配到uri為hooks的key時,就會返回對應的響應,也就產生了beacon&stager uri異常訪問的問題。

    當所有條件輪空時,也就是第7種情況,會再次通過checksum8算法匹配uri是否返回beacon的響應,與上文相比,去掉了uri長度的限制。此外,也會判斷是否stager關閉導致異常。如果i遍歷完成,返回404,由于對uri有特殊的情況,沒有判斷uri是否需要以/開頭。因此產生了一系列的特征。

    這里比較有趣的是,while的條件是startsWith與isFuzzy判斷,通過對WebService所有實現類進行分析。MalleableHook的isFuzzy為true。也就是說WebServer對于beacon的交互的uri在后面隨便加東西都可以匹配、響應profile配置。個人感覺這也算是teamserver的特征吧。

    特征修改

    主要處理了/的問題和checksum8的問題,其他問題暫時不處理了,頭大。

    webserver處理邏輯漏洞

    請求狀態碼異常、beacon&stager uri異常訪問都是由于沒有校驗/的問題導致的,由于我使用的是javaagent,對于大段的代碼修改比較麻煩,我選擇在WebServer中serve進行修改。增加了一個/的檢驗,不過http://開頭的請求可能會收到影響,目前還清楚是什么功能,還需要進一步測試一下。

    checksum8特征

    checksum8特征有很多緩解的方法。

    1.修改checkSum8的92L與93L為非默認的值(可破解)
    2.更換算法(成本較高)
    3.固定URI(容易形成新的特征)
    4.kill stager(依賴客戶端操作)
    5.設置host_stage(無法使用stager)
    

    我同樣在serve函數中進行了patch,廢掉了checksum的匹配,缺點是必須配置profile的,可能也會有其他的問題,待測試。


        set uri_x86 "xx";
        set uri_x64 "xx";
    

    javaagent實現

                 else if(className.equals("cloudstrike/WebServer")){
                        ClassPool classPool = ClassPool.getDefault();
                        CtClass cls = classPool.get(className.replace("/","."));
                        CtMethod readResource = cls.getDeclaredMethod("serve");
                        readResource.setBody(
                                "{"+
                                "   if(!$1.startsWith(\"/\")) {" +
                                "       return $0.processResponse($1, $2, $3, $4, false, null, new cloudstrike.Response(\"400 Bad Request\", \"text/plain\", \"\"));" +
                                "   }" +
                                "   if(isStager($1)||isStagerX64($1)){" +
                                "       return $0.processResponse($1, $2, $3, $4, false, null, new cloudstrike.Response(\"404 Not Found\", \"text/plain\", \"\"));" +
                                "   }" +
                                "   return handleRanges($2, $3, $0._serve($1, $2, $3, $4));" +
                                "}");
                        return cls.toBytecode();
                    }
    

    效果

    stager不會帶出了

    異常的404也順帶解決了

    aaa9已經無法請求

    其他特征

    本文主要分析了webserver的幾個特征,內存特征就不再這里提了,javaagent也是可以緩解的。4.5雖然對javaagent做了檢查,但是依然很好繞過。4.6貌似server和client分開了,可能就比較麻煩了。

    參考:

    https://cloud.tencent.com/developer/article/1967094?from=article.detail.1818330
    https://github.com/Like0x/0xagent/blob/main/PreMain.java
    http://cn-sec.com/archives/300922.html checksum8
    
    beaconuri
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    WebServer特征本文簡單介紹了Cobalt Stike 4.4版本的一些特征以及緩解措施。webser
    CS的流量行為特征
    2022-07-21 13:45:40
    雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。
    由于對破解版的廣泛使用,NVISO 的研究人員發現公網的 Cobalt Strike 服務器中有超過四分之一使用的加密密鑰對都是相同的,使用這些密鑰就可以對部分加密 Cobalt Strike 流量進行解密。
    Counter-Strike 1.6社區版發布,經過一段時間的實戰測試,還是比較舒服的,但是自己現在逐漸脫離實戰,開發的動力變小,所以放出來一個公開版本,大家提提建議,不定期更新一下修修BUG以及添加一些內部版本過時的功能到這上面,但也是比市面上的Evasion效果都好很多了,只有知識星球用戶可以獲取。
    需求配置vps一臺域名CDNCobalt Strike4.0?0x02. 服務器設置禁ping服務器禁ping從某種意義上來說,算是不存活的主機,但nmap是依然能夠掃描出來的。設置禁ping命令:vim /etc/sysctl.conf 打開后按i進入編輯模式,在任意位置新增以下內容。0x03. 修改Cobalt Strike默認端口號在服務端的teamserver文件末尾處修改修改之后再次啟動teamserver的時候即可看到端口已經更改。修改證書標準并應用> keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12
    在 I-IVV 的需求場景中,經常會遇到一些比較古老的環境,例如 windows xp、win server 2003系統,為了讓整體流程更流暢絲滑,對這類場景也需要找到合理的解決方法,且解決方案應盡量貼合現存使用習慣。
    NO.1 前言之前介紹了CobaltStrike4.3的License認證分析,今天介紹一下CobaltStrike4.3去除CheckSum8特征的方法,CheckSum8的特征和具體算法不在此細說,
    cobaltstrike4.5特征消除2修改了內置stage的配置,實現硬性特征消除修改部分payload,實現基本免殺修改checksum8 判等參數public static long checksum8 {. 修改隨機生成算法寫入方法,傳值 public static void main {. 修改傳值修改common/CommonUtils的public static String MSFURI {. string = "/" + pick + pick + pick + pick;
    這年頭打個紅隊都不容易,想普普通通上個線,除了ByPassAV以外,還要應付各種流量審計和設備和威脅情報,一不留神VPS就被扒光了。最近也是一直在倒騰,看了很多文章,但沒一個能完全滿足要求,或者是按著指示走著走著發現掉坑里了,嗯。
    CS 域前置+流量混淆
    2021-10-14 06:58:22
    域前置(Domain Fronting)被稱為域前端網絡攻擊技術,是一種隱藏連接真實端點來規避互聯網審查的技術。這種技術被安全人員多用來隱藏 Metasploit,Cobalt Strike 等團隊控制服務器流量, 以此來一定程度繞過檢查器或防火墻檢測的技術,國內外如:Amazon ,Google,Akamai 等大型廠商都會提供一些域前端技術服務。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类