An open API service indexing awesome lists of open source software.

https://github.com/fsdevcom2000/reverse-shell-client

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.
https://github.com/fsdevcom2000/reverse-shell-client

cmd nim nim-language remote-control reverse-shell windows

Last synced: about 2 months ago
JSON representation

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.

Awesome Lists containing this project

README

          

# πŸ‡¬πŸ‡§ Reverse Shell Client

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.

## Features

- 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

## Requirements

- Nim 2.2.6 or higher

- Nim compiler

- Windows operating system (cmd.exe commands supported)

## Installation

1. Install Nim: [https://nim-lang.org/install.html](https://nim-lang.org/install.html)

2. Clone the repository or download the source code

3. Build the project:

```shell
nim c -d:ssl --app:gui -d:release ShellClient.nim
```

Compilation 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
```
## Configuration

Before compilation, configure connection parameters in the source code:

```nim
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 delay
```
## Usage

### Starting the Client

After compilation, run the executable:

`ShellClient.exe`

### Client Behavior

1. **Initial Delay**: Program waits a random time (45-75 seconds) before starting

2. **Connection**: Client attempts to connect to the specified server

3. **Operation**: After connection, client waits for commands from the server

4. **Reconnection**: On connection loss, client automatically reconnects

### Available Commands

- `exit` or `quit` - end the session

- Any Windows command line commands

## Security

### Warnings

⚠️ **IMPORTANT**: This tool is intended for legal use only:

- Testing security of your own systems

- Administration with explicit permission

- Educational purposes

### Precautions

1. Do not use for unauthorized access

2. Restrict use to trusted networks

3. Regularly update code to fix vulnerabilities

4. Use traffic encryption when working in unsecured networks

## Architecture

### Main Components

1. **Connection Module**: Manages network connections and reconnections

2. **Command Handler**: Executes received commands

3. **Reconnection Manager**: Exponential backoff for errors

4. **Logging**: Timestamped event recording

### Workflow Algorithm

Initial Delay β†’ Connection β†’ Loop:
1. Receive command
2. Execute command
3. Send result
4. On error β†’ Reconnect
### Building for Testing

For debugging, build with debug information:

```
nim c -d:debug ShellClient.nim
```
## Troubleshooting

### Common Issues

1. **Cannot Connect**:

- Check server availability

- Ensure port is open in firewall

- Verify IP address and port are correct

2. **Commands Not Executing**:

- Check permissions

- Ensure cmd.exe is available

- Check logs for errors

3. **High CPU Usage**:

- Increase delays between connection attempts

- Add sleep in main loops

### Logging

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 Client

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ прСдставляСт собой ΠΊΠ»ΠΈΠ΅Π½Ρ‚ (reverse shell), написанный Π½Π° языкС Nim. ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ сСрвСру, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ выполняСт ΠΈΡ… Π½Π° локальной машинС.

## ВозмоТности

- АвтоматичСскоС ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ соСдинСния

- Π­ΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

- Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку Windows (`cmd.exe`)

- ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ (`exit`, `quit`)

- Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ зависаний с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠ²

- Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ

## ВрСбования

- Nim 2.2.6 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅

- ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Nim

- ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма Windows (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cmd.exe)

## Установка

1. УстановитС Nim: [https://nim-lang.org/install.html](https://nim-lang.org/install.html)

2. ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ»ΠΈ скачайтС исходный ΠΊΠΎΠ΄

3. Π‘ΠΎΠ±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚:

```shell
nim c -d:ssl --app:gui -d:release ShellClient.nim
```

ΠžΠΏΡ†ΠΈΠΈ компиляции:

- `-d:ssl`: Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ SSL (Ссли трСбуСтся)
- `--app:gui`: Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ GUI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π±Π΅Π· консоли)
- `-d:release`: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для Ρ€Π΅Π»ΠΈΠ·Π½ΠΎΠΉ вСрсии

ΠΈΠ»ΠΈ
```shell
nim c -r ShellClient.nim
```

## ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

ΠŸΠ΅Ρ€Π΅Π΄ компиляциСй настройтС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² исходном ΠΊΠΎΠ΄Π΅:

```nim
let
host = "10.10.10.1" # IP-адрСс сСрвСра
port = Port(443) # ΠŸΠΎΡ€Ρ‚ сСрвСра
baseRetryDelay = 30.seconds # Базовая Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
maxRetryDelay = 300.seconds # Максимальная Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
```

## ИспользованиС

### Запуск ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

ПослС компиляции запуститС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ»:

`ShellClient.exe`

### ПовСдСниС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

1. **ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°**: ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΆΠ΄Π΅Ρ‚ случайноС врСмя (45-75 сСкунд) ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹

2. **ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅**: ΠšΠ»ΠΈΠ΅Π½Ρ‚ пытаСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ сСрвСру

3. **Π Π°Π±ΠΎΡ‚Π°**: ПослС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ сСрвСра

4. **ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅**: ΠŸΡ€ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ соСдинСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚ автоматичСски ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ

### ДоступныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

- `exit` ΠΈΠ»ΠΈ `quit` - Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ сСанса

- Π›ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Windows

## Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ

### ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ

⚠️ **Π’ΠΠ–ΠΠž**: Π­Ρ‚ΠΎΡ‚ инструмСнт ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для лСгального использования:

- ВСстированиС бСзопасности собствСнных систСм

- АдминистрированиС с явного Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

- ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ

### ΠœΠ΅Ρ€Ρ‹ прСдостороТности

1. НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ для нСсанкционированного доступа

2. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΡŒΡ‚Π΅ использованиС Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ сСтями

3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Π½Π΅Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… сСтях

## АрхитСктура

### ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

1. **ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ**: Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСтСвыми соСдинСниями ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ

2. **ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄**: Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄

3. **ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ**: Π­ΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…

4. **Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅**: Π—Π°ΠΏΠΈΡΡŒ событий с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ

### Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° β†’ ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ β†’ Π¦ΠΈΠΊΠ»:
1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ
2. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ
3. ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
4. ΠŸΡ€ΠΈ ошибкС β†’ ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

### Π‘Π±ΠΎΡ€ΠΊΠ° для тСстирования

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ собСритС с ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ:

`nim c -d:debug ShellClient.nim`

## УстранСниС нСисправностСй

### ЧастыС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

1. **НС удаСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ**:

- ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ сСрвСра

- Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ€Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π² Ρ„Π°Π΅Ρ€Π²ΠΎΠ»Π΅

- ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ IP-адрСса ΠΈ ΠΏΠΎΡ€Ρ‚Π°

2. **ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ**:

- ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° доступа

- Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ cmd.exe доступСн

- ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π»ΠΎΠ³ΠΈ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибок

3. **ВысокоС использованиС 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...
```

---

**ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅**: ВсСгда ΠΏΠΎΠ»ΡƒΡ‡Π°ΠΉΡ‚Π΅ явноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ тСстированиСм Π»ΡŽΠ±Ρ‹Ρ… систСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚.