Rust-based linux reverse shell listener.
TODO: fix this installation guide, but this kinda works:
mkdir /opt/catch/
cd /opt/catch/
git clone https://github.com/jazzpizazz/catch.git
cargo build -r
Wihtout any arguments catch
will start listening on 0.0.0.0:8443
, you can however specify the IP and port you want to listen on:
$ target/release/catch -h
Rust-based linux reverse shell listener.
Usage: catch [OPTIONS]
Options:
-i, --ip <IP> [default: 0.0.0.0]
-p, --port <PORT> [default: 8443]
-h, --help Print help
-V, --version Print version
catch
does not work with sessions, if you want to get multiple shells, just start multiple listeners.
When running catch
it will start listening for an incoming shell. Once a connection is made, catch
will attempt to upgrade to a fully interactive shell using either python3
, python3
or script
. After that it will unset the histfile, set the terminal to raw mode and drop into a fully interactive shell:
$ target/release/catch
[i] Listening on 0.0.0.0:8443...
[+] Connected by 127.0.0.1:35262
[i] Attempting TTY upgrade...
[+] Binary 'python3' is installed, upgrading shell...
[i] Unsetting histfile...
┌──(kali㉿kali)-[~]
└─$
Note: Situations where the tty upgrade fails are not yet handled correctly
When in a shell you can press the magic ctrl+y key combination to open up a special menu:
In here you can search for a "shortcut" either by arrow keys or by typing (notice the search query in the bottom left) after which you hit enter to directly send the associated command to the shell!
Currently all shortcuts are stored in /opt/catch/shortcuts.json
. It is created on first startup and you can add your own commands in it. In a future version catch
will come with sane defaults shortcuts that are usefull for everyone, while still supporting extension through a JSON file, allowing you to add your own shortcuts with ease.
To exit a connected reverse shell hit ctr+_ this will kill the shell and attempt to revert your terminal to its default settings.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please keep in mind that catch
is still in development.