Skip to content
RSPET (Reverse Shell and Post Exploitation Tool) is a Python based reverse shell equipped with functionalities that assist in a post exploitation scenario.
Python
Branch: master
Clone or download
panagiks Merge pull request #44 from tunnelsnake/master
Created Rudimentary EXE Compiler
Latest commit de4356e Oct 14, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Client
Server
.gitignore
LICENSE
README.md
run_dev.py Redesigned REST endpoints, added commenting, minor fixes Jan 21, 2017
setup.py

README.md

RSPET

MIT Licence Python 2.7 v0.3.1 Maintained Twitter

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.

NOTE: 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.

Current Version: v0.3.1

Follow: @TheRSPET on Twitter for updates.

Documentation : rspet.readthedocs.io

Features

  • Remote Command Execution
  • Trafic masking (XORed instead of cleartext); for better results use port 443[1]
  • TLS Encryption of the Server-Client communication
  • Built-in File/Binary transfer (both ways) over the masked Encrypted traffic
  • Built-in UDP Flooding tool
  • Built-in UDP Spoofing tool[2]
  • 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)[3]
  • Full server side Plug-in support[4]
  • Plug-in management, including the ability to Install(Download) and Dynamically Load Plug-ins.
  • RESTful API for the Server Module

*[1]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

*[2]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

*[3]Again check primalsecurity.net's perfect blogpost about producing an .exe

*[4]Detailed documentation on creating Plug-ins available in Online Documentation!

Deployment:

  • rspet_server.py is situated at the attacker's machine and running to accept connections
  • rspet_client.py is situated in the infected machine(s) and will initiate the connection and wait for input.

Installation

Executing ./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.key & server.crt and place them inside the Server folder).

Execution:

  • Server:
python rspet_server.py [-c #clients, --ip ipToBind, -p portToBind]

max_connections defaults to 5 if left blank

  • RESTful API:

    python rspet_server_api.py [-c #clients, --ip ipToBind, -p portToBind]
  • Client:

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.

ASCIICAST

asciicast

Distros

A list of Distros that contain RSPET

As Featured in

Todo

  • 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 List_Hosts
  • 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

Styleguide

This project is following Google's Python Styleguide with a minor variation on the use of whitespaces to align ":" tokens.

Contribution Opportunities

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

panagiks

Co-Author

dzervas -- Code (Server OO-redesign, Server Plug-in system implementation, bug reports, bug fixes)

Contributors

  • 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)

License

MIT

Free Cake

                                   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 :)
You can’t perform that action at this time.