Rust-based linux reverse shell listener.

Overview

Catch

Rust-based linux reverse shell listener.

Installation

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

Usage

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.

Usage

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

Shortcuts

When in a shell you can press the magic ctrl+y key combination to open up a special menu: shortcuts
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!

Adding your own shortcuts

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.

Exiting

To exit a connected reverse shell hit ctr+_ this will kill the shell and attempt to revert your terminal to its default settings.

Contributing

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.

You might also like...
A Rust no-std (de)compressor based on PAQ

MASHI まし A 100% no-std compatible Rust implementation of a PAQ style arithmetic coding, context mixing compressor. Its intended use case is compressin

A stack based, virtual machine language written in Rust

Stackyy A stack based, virtual machine language written in Rust Description: Stackyy is a stack based, virtual machine language inspired by Forth and

Tools to feature more lenient Polonius-based borrow-checker patterns in stable Rust
Tools to feature more lenient Polonius-based borrow-checker patterns in stable Rust

Though this be madness, yet there is method in 't. More context Hamlet: For yourself, sir, shall grow old as I am – if, like a crab, you could go back

Rust crate implementing short & stable ids based on timestamps

Lexicoid Short & stable IDs based on timestamps. Heavily inspired by Short, friendly base32 slugs from timestamps by @brandur. Install Install with ca

A rust-based benchmark for BlueField SmartNICs.

Smartbench Smart-bench is a rust-based benchmarking tool for BlueField-series SmartNICs. The purpose is to enable easy testing of BlueField-series Sma

Rust based magic-string with source map chains support

enhanced-magic-string Rust implementation of https://www.npmjs.com/package/magic-string with original sourcemap chain support. license. This project i

Rust-based toolset and library for Halo: Combat Evolved

Ringhopper Ringhopper is a pure-Rust library used for creating and manipulating tag data for Halo: Combat Evolved. It also contains the Invader toolse

The non-opinionated Rust-based commit message linter.
The non-opinionated Rust-based commit message linter.

Documentation | Website git-sumi The non-opinionated Rust-based commit message linter Transform your commit practices with flexible linting for consis

Rust implementations of finite-field arithmetic based on big integers with configurable limb sizes

multiprecision TODO: rewrite readme implement CIOS for 16-bit limbs All operations are in little-endian form (where the digit in memory at the smalles

Comments
  • Set correct terminal config

    Set correct terminal config

    Before we switch to raw mode we want to make the remote host aware of our terminal config. We should basically just do this it seems like we can use the size function from crossterm to construct the stty command that we need to send to the remote host.

    opened by jazzpizazz 0
Owner
Jazz
Jazz
Reverse-engineered Rust client for Instagram's Threads app.

Instagram Threads API Unofficial, Reverse-Engineered Rust client for Instagram's Threads. Usage use threads_api::Threads; let client = Threads::new()

Miguel Piedrafita 66 Jul 12, 2023
Simple and minimalist forward auth service intended for use with reverse proxies (Traefik, Caddy, nginx, etc)

nforwardauth nforwardauth is an extremely lightweight, blazing fast forward auth service that lets you use a single authentication middleware for all

Tony Duco 22 Apr 7, 2023
API for the creation character based games in Linux.

Console Game Engine for Linux. API for the creation of character based games in Linux. The inspiration came from the olcConsoleGameEngine. This is my

Arjob Mukherjee 4 Sep 27, 2022
A tiny Rust std-lib for Linux x86_64 and aarch64

Tiny std Like a bad, probably buggy, tiny standard library for Linux. When it's appropriate If you are actually trying to do something solid, checkout

null 4 Dec 17, 2022
Blazing fast, memory safe & modern Linux package manager written in Rust.

paket Blazing fast, memory safe & modern Linux package manager written in Rust. Roadmap Version: 0.1 Paket.toml file parsing. (#1, #2) CLI handling (p

null 4 Oct 19, 2023
qfetch is a tool that fetches info about your linux install.

qfetch qfetch is a tool that fetches info about your linux install. Status Dependencies /proc/meminfo with the following fields: MemTotal in the 1st l

Demir Yerli 2 Nov 16, 2022
Streaming I/O for Linux built on DMA Buffers

dmastorage High-performance I/O for Linux based on DMA Buffers ALPHA QUALITY SOFTWARE Warning DmaStorage is still just a concept and shouldn't be used

Ignacy Koper 2 Nov 22, 2022
An ownership model that is used to replace the Ring in Linux.

std-ownership An ownership model that is used to replace the Ring in Linux. It's 10x faster than Ring in Syscall. Overview The ownership system allows

Rhodes 4 Feb 13, 2023
Linux daemon to bind keys and macros to your controller's buttons

makima Makima is a daemon for Linux to bind your controller's buttons to key sequences and macros. Features: Configure your keybindings through a simp

null 48 Jun 14, 2023
Open source bible study program on Linux!

Open Witness Library Open Witness Library is a program to read articles that carries God's true name. Warning This branch is outdated, please refer to

Wellington Júnior 5 Jun 29, 2023