A reverse shell client written in Nim programming language. The client connects to a remote server, receives commands, and executes them on the local machine.
-
Automatic reconnection on connection loss
-
Exponential backoff for reconnection attempts
-
Command execution via Windows command line (
cmd.exe) -
Special command handling (
exit,quit) -
Timeout protection against hangs
-
Timestamped logging for all operations
-
Nim 2.2.6 or higher
-
Nim compiler
-
Windows operating system (cmd.exe commands supported)
-
Install Nim: https://nim-lang.org/install.html
-
Clone the repository or download the source code
-
Build the project:
nim c -d:ssl --app:gui -d:release ShellClient.nimCompilation options:
-
-d:ssl: Enables SSL support (if needed) -
--app:gui: Creates a GUI application (no console) -
-d:release: Optimizes code for release version
Or
nim c -r ShellClient.nim
Before compilation, configure connection parameters in the source code:
let
host = "10.10.10.1" # Server IP address
port = Port(443) # Server port
baseRetryDelay = 30.seconds # Base reconnection delay
maxRetryDelay = 300.seconds # Maximum reconnection delayAfter compilation, run the executable:
ShellClient.exe
-
Initial Delay: Program waits a random time (45-75 seconds) before starting
-
Connection: Client attempts to connect to the specified server
-
Operation: After connection, client waits for commands from the server
-
Reconnection: On connection loss, client automatically reconnects
-
exitorquit- end the session -
Any Windows command line commands
-
Testing security of your own systems
-
Administration with explicit permission
-
Educational purposes
-
Do not use for unauthorized access
-
Restrict use to trusted networks
-
Regularly update code to fix vulnerabilities
-
Use traffic encryption when working in unsecured networks
-
Connection Module: Manages network connections and reconnections
-
Command Handler: Executes received commands
-
Reconnection Manager: Exponential backoff for errors
-
Logging: Timestamped event recording
Initial Delay → Connection → Loop:
- Receive command
- Execute command
- Send result
- On error → Reconnect
For debugging, build with debug information:
nim c -d:debug ShellClient.nim
-
Cannot Connect:
-
Check server availability
-
Ensure port is open in firewall
-
Verify IP address and port are correct
-
-
Commands Not Executing:
-
Check permissions
-
Ensure cmd.exe is available
-
Check logs for errors
-
-
High CPU Usage:
-
Increase delays between connection attempts
-
Add sleep in main loops
-
All events are logged with timestamps. Example output:
[2024-01-15T10:30:00] Attempting to connect to 10.10.10.1:443...
[2024-01-15T10:30:05] Connected successfully
[2024-01-15T10:31:00] Executing command: dir
[2024-01-15T10:32:00] Connection lost. Reconnecting in 30 seconds...
Note: Always obtain explicit permission before testing any systems you do not own.
Проект представляет собой клиент (reverse shell), написанный на языке Nim. Клиент подключается к удаленному серверу, получает команды и выполняет их на локальной машине.
-
Автоматическое переподключение при потере соединения
-
Экспоненциальная задержка при повторных попытках подключения
-
Выполнение команд через командную строку Windows (
cmd.exe) -
Обработка специальных команд (
exit,quit) -
Защита от зависаний с помощью таймаутов
-
Логирование всех операций с временными метками
-
Nim 2.2.6 или выше
-
Компилятор Nim
-
Операционная система Windows (поддерживаются команды cmd.exe)
-
Установите Nim: https://nim-lang.org/install.html
-
Клонируйте репозиторий или скачайте исходный код
-
Соберите проект:
nim c -d:ssl --app:gui -d:release ShellClient.nimОпции компиляции:
-d:ssl: Включает поддержку SSL (если требуется)--app:gui: Создает GUI приложение (без консоли)-d:release: Оптимизирует код для релизной версии
или
nim c -r ShellClient.nimПеред компиляцией настройте параметры подключения в исходном коде:
let
host = "10.10.10.1" # IP-адрес сервера
port = Port(443) # Порт сервера
baseRetryDelay = 30.seconds # Базовая задержка переподключения
maxRetryDelay = 300.seconds # Максимальная задержка переподключенияПосле компиляции запустите полученный исполняемый файл:
ShellClient.exe
-
Начальная задержка: Программа ждет случайное время (45-75 секунд) перед началом работы
-
Подключение: Клиент пытается подключиться к указанному серверу
-
Работа: После подключения клиент ожидает команды от сервера
-
Переподключение: При потере соединения клиент автоматически переподключается
-
exitилиquit- завершение сеанса -
Любые команды командной строки Windows
-
Тестирование безопасности собственных систем
-
Администрирование с явного разрешения
-
Образовательные цели
-
Не используйте для несанкционированного доступа
-
Ограничьте использование доверенными сетями
-
Используйте шифрование трафика при работе в незащищенных сетях
-
Модуль подключения: Управление сетевыми соединениями и переподключениями
-
Обработчик команд: Выполнение полученных команд
-
Менеджер переподключений: Экспоненциальная задержка при ошибках
-
Логирование: Запись событий с временными метками
Начальная задержка → Подключение → Цикл:
- Получить команду
- Выполнить команду
- Отправить результат
- При ошибке → Переподключение
Для отладки соберите с отладочной информацией:
nim c -d:debug ShellClient.nim
-
Не удается подключиться:
-
Проверьте доступность сервера
-
Убедитесь, что порт открыт в фаерволе
-
Проверьте правильность IP-адреса и порта
-
-
Команды не выполняются:
-
Проверьте права доступа
-
Убедитесь, что cmd.exe доступен
-
Проверьте логи на наличие ошибок
-
-
Высокое использование CPU:
-
Увеличьте задержки между попытками подключения
-
Добавьте sleep в основные циклы
-
Все события логируются с временными метками. Пример вывода:
[2024-01-15T10:30:00] Attempting to connect to 10.10.10.1:443...
[2024-01-15T10:30:05] Connected successfully
[2024-01-15T10:31:00] Executing command: dir
[2024-01-15T10:32:00] Connection lost. Reconnecting in 30 seconds...
Примечание: Всегда получайте явное разрешение перед тестированием любых систем, которые вам не принадлежат.