Code Monkey home page Code Monkey logo

lawndoc / mediator Goto Github PK

View Code? Open in Web Editor NEW
95.0 95.0 15.0 351 KB

An extensible, end-to-end encrypted reverse shell that works across networks without port forwarding.

License: GNU Affero General Public License v3.0

Dockerfile 2.81% Python 94.86% Makefile 2.33%
end-to-end-encryption handlers incident-response incident-response-tooling live-response pentesting pentesting-tools plugin-system plugins python python-3 python-script python3 red-team red-teaming reverse-shell reverse-shells security-tools socket-programming

mediator's Introduction

Hi, I'm C.J.

I work in InfoSec, but I have broad interests encompassing many areas of IT. Most of my interests are driven by my curiosity and love for programming and automation. Whenever I think of something cool or have an idea to make my life easier, it becomes a project on my GitHub. If you find one of my projects useful, please consider becoming a sponsor so I can dedicate more time to my open source work.

Here's some information on my projects and contributions:


✨ My top repos: ✨

Readme Card Readme Card Readme Card Readme Card Readme Card Readme Card


Connect with me on social media:

lawndoc cj-may cj__may


PGP Public Key 🔒
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEYSW4bhYJKwYBBAHaRw8BAQdAxx1qfknJzb90TohHw4D1oZyYDqdr9RuhB7fk
bhW9lUy0IUMuSi4gTWF5IDxsYXduZG9jQHByb3Rvbm1haWwuY29tPoiQBBMWCAA4
FiEEvM/6iPYJs2e3nVnMqXi0d7MPtjAFAmElu90CGwMFCwkIBwIGFQoJCAsCBBYC
AwECHgECF4AACgkQqXi0d7MPtjBUwQEA4TFbyy03+ucXTrczPTYl8UuWaETLPr27
KePBSxUzXLYA/24Xsn1eXxBtaURIm3ZrekyZBSq+DNLe1SgnKOMKVZAKtB9DLkou
IE1heSA8ZG9jdG9ybWF5NkBnbWFpbC5jb20+iJAEExYIADgWIQS8z/qI9gmzZ7ed
WcypeLR3sw+2MAUCYSW8jQIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCp
eLR3sw+2MCq1AP4ujDZqycGp9HF5CXUmeuicm6XsDffKWBDjfAhQyLv6/QD/ehy0
FtHje08z0MMRYo02L9F77cnBmK0Z19wt1TO34Qy4OARhJbhuEgorBgEEAZdVAQUB
AQdApBRpPz0nLw1WEyd+3iF+NExWrOqP6hmxPK/iNfFFI2EDAQgHiHgEGBYIAAkF
AmEluG4CGwwAIQkQqXi0d7MPtjAWIQS8z/qI9gmzZ7edWcypeLR3sw+2ME81AQDN
kq9Ljq+DbD9GV+BxkzcGVMktThgOo9kwNneBoHsHvAD+KH2usfyre0uTB7hqsec4
tbgRM9FHsdrI4kUi3D2m+As=
=Nw/H
-----END PGP PUBLIC KEY BLOCK-----

mediator's People

Contributors

lawndoc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

mediator's Issues

Automate new releases

New versions should automatically create a release and build the clients to publish with the release.

add pyinstaller spec files and makefiles

The goal is to create a simple way for users to package up the clients with their dependencies and make them more portable. Especially for the reverse shell, this is very important for standalone usability.

Create streamed tty

Right now the reverse shell is limited and can't do things like tmux, vim, or even tab completion. I want to figure out a way to get an SSH-like session with colors and full TTY.

Create actual authentication between the clients and server

Currently, the server knows a connection is from a permitted client based on a port-specific "knock" phrase sent upon connection. Adding an actual authentication method to ensure only permitted clients can connect would be more secure.

make client-to-client connection modular

I want to functionally separate the initial connection that happens between the two clients including the key exchange up until the point where any reverse-shell specific data would be sent. The ability to bridge two client connections through a server and encrypt them end-to-end is independently useful and should be broken out into its own classes and potentially its own repository.

This will require a MAJOR refactor to the codebase. Off the top of my head, the following would be needed at a minimum:

At the connection level, the clients' roles will have to switch from the "operator-target" model to a single client type solely relying on being joined through connection key matching. This will require the key exchange to happen differently -- currently, the operator holds the private key and the target generates the asymmetric key. In reality, this can happen in the opposite direction. The first connection with a specific key can assume the role of the "operator" and the matching connection can assume the role of the "target" for the purposes of the key exchange. The clients' roles will have to be specified by the mediator server. Additionally, due to this change only a single port will be used.

edit: typo

prompt getting cut off after executing a plugin

After a plugin runs, the first half or so of the following prompt is cutting cut off. This appears to be an issue on the handler side because the target is sending the full prompt over the network. I think it might have something to do with the mutex that blocks output while a plugin is running.

Add ability to push and pull files

It would be really useful to have a custom command that allows you to push a file to the target host or pull a file from it. This should be reasonably simple to implement.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.