kbdintrat

command module
v0.0.0-...-389044c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2019 License: BSD-3-Clause Imports: 19 Imported by: 0

README

KbdIntRat

Silly little RAT which makes regular SSH connections to a C2 server, gets a shell script as the question in keyboard-interactive authentication, and sends output as the answer.

The same binary works both as a implant and server (with the -server flag).

For legal use only.

Configuration

Most configuration is done via command-line options. Please run the program with -h to see a listing of all available options. Defaults can be changed near the top of main() in kbdintrat.go, though it is not expected that this will be necessary very often.

Implant ID

The ID the implant uses is set via the -id flag. This is, of course, a bad idea to do at runtime as it'll show up in a process listing. To avoid this, the main.ImplantID variable can be set at compile time to bake in a implant ID, like

go build -ldflags "-X main.ImplantID=kittens"

This can be used to build per-target implants. The following shell function can be used to make this a bit easier:

function build {
        if [ -z "$1" ]; then
                echo "Usage: build name" >&2
                return 1
        fi
        o=kbdintrat.$1
        go build -v -i -ldflags "-X main.ImplantID=$1" -o $o
        sha256 $o
}

Only characters in [A-Za-z_-] can be used in implant IDs. If no ID is specified either with -id at runtime or by setting main.ImplantID at compile time, a random 64-bit unsigned integer expressed in base36 will be used.

Tasking

Each time an implant checks in to the server, a file in the tasking directory which has same name as the implant ID will be checked for tasking. If one exists and isn't empty, its contents will be sent to the implant for execution. In other words, to task the implant named kittens to send back a a process listing, assuming the tasking directory is named tasking, the following command may be used:

echo 'ps auwwwfux' >> tasking/kittens

The tasking directory may be changed with the -tasking command-line option.

Output

Tasking output is put in files with the same name as the implants' IDs in the output directory, by default -output and changeable with the -output command-line option. To get the ouptut from the previous example (tasking kittens to list processes), the following command may be used:

cat output/kittens

Output is appended to the end of pre-existing output files.

Output files are created when implants first connect and have their timestamps updated upon each connection. This can be used to get a good idea of what's been calling back with just ls -lart.

Server Key

The implant will check the server's key fingerprint against the one specified on the command line. There is an example key, id_rsa included with the source. Its fingerprint is the default used by the implant to authenicate the server. Please use your own.

The fingerprint is checked by the client. It is the same as the fingerprint printed with OpenSSH's VisualHostKey option. Fingerprint checking can be skipped with -fingerprint ignore.

Documentation

Overview

Program kbdintrat is a PoC rat which gets tasking using ssh keyboard-interactive authentication

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL