Adding SharkLib to the Payload Library.

Not sure if I should add this to "util" folder or create a "tools" folder. So util folder it is!
pull/16/head
Private-Locker, LLC 2020-01-22 13:54:00 -08:00 committed by GitHub
parent 59817daf53
commit db18cc628b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 325 additions and 0 deletions

View File

@ -0,0 +1,325 @@
#!/bin/bash
#
# Title: SharkLib
# Author: REDD of Private-Locker
# Version: 1.3
#
# This Script is to be ran on the Hak5 SharkJack itself. This Script
# makes switching between local stored payloads quick and simple.
#
VERS=1.3
LIB_DIR="/root/payload/sharklib"
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
START_DIR="$DIR"
INSTALL_DIR="/usr/sbin"
EXEC_FILE="sharklib"
PAYLOAD_DIR="/root/payload"
PAYLOAD_FILE="$PAYLOAD_DIR/payload.sh"
function install_sharklib() {
if [[ "$DIR" != $INSTALL_DIR ]]; then
if [ ! -f "$INSTALL_DIR/$EXEC_FILE" ]; then
printf " -> Installing SharkLib into System for Easy Access.\n"
sleep 1;
cp -rf $0 $INSTALL_DIR/$EXEC_FILE
printf " -> Fixing Permissions of $EXEC_FILE in $INSTALL_DIR.\n"
sleep 1;
chmod +x $INSTALL_DIR/$EXEC_FILE
fi
fi
}
function view_payload() {
printf "\n";
cat "$PAYLOAD_FILE";
printf "\n";
read -n 1 -s -r -p "Press any key to return to Menu..";
sharklib_menu;
}
function remove_sharklib() {
if [ -f "$INSTALL_DIR/$EXEC_FILE" ]; then
printf "\n"
printf "Removing SharkLib from local system.\n"
rm -rf "$INSTALL_DIR/$EXEC_FILE";
printf "Removing SharkLib Payload Library.\n"
rm -rf "$LIB_DIR";
printf "SharkLib has been fully removed.\n\n"
fi
}
function free_space() {
FREE_MEM="$(df -h $PWD | awk '/[0-9]%/{print $(NF-2)}')"
}
function header() {
free_space;
printf "\n"
printf "O========================================O\n"
printf "| SharkLib - SharkJack Quick Payload |\n"
printf "| Library |\n"
printf "O=O====================================O=O\n"
printf " | %-29s |\n" "$SHARKLIB_TITLE"
printf " O====================================O\n"
printf " | Free Space: %-6s Vers: %-3s | \n" "$FREE_MEM" "$VERS"
printf " O================================O \n"
printf " -Huge Thanks goes to Hak5! \n"
printf "\n"
}
function backup_payload() {
clear;
SHARKLIB_TITLE=" Backup Payloads"
header;
if [ -f "$PAYLOAD_FILE" ]; then
printf "\n"
printf " 1. Backup current payload to SharkLib\n"
printf "\n"
printf " 2. Return to Previous Menu.\n"
printf "\n"
printf " Select a Menu Item by # and press ENTER: "
read BACKUP_INPUT
printf "\n"
if [ "$BACKUP_INPUT" = "1" ]; then
printf " What would you want to call this Payload?: "
read BACKUP_INPUT_1
if [[ "$BACKUP_INPUT_1" != "" ]]; then
if [ ! -d "$LIB_DIR/$BACKUP_INPUT_1" ]; then
mkdir -p "$LIB_DIR/$BACKUP_INPUT_1"
cp -rf "$PAYLOAD_FILE" "$LIB_DIR/$BACKUP_INPUT_1/payload.sh"
printf " Created Payload directory named $BACKUP_INPUT_1\n"
sleep 2;
sharklib_menu;
else
printf " Removing Old Copy and using New Copy of $BACKUP_INPUT_1\n"
rm -rf "$LIB_DIR/$BACKUP_INPUT_1"
mkdir -p "$LIB_DIR/$BACKUP_INPUT_1"
cp -rf "$PAYLOAD_FILE" "$LIB_DIR/$BACKUP_INPUT_1/payload.sh"
sleep 2;
sharklib_menu;
fi
else
if [ ! -d "$LIB_DIR/Payload" ]; then
printf " Backing up Payload into Default Payload directory..\n"
mkdir -p "$LIB_DIR/Payload"
cp -rf "$PAYLOAD_FILE" "$LIB_DIR/Payload/payload.sh"
sleep 2;
sharklib_menu;
else
printf " Removing Old Copy and using New Copy of $LIB_DIR/Payload\n"
rm -rf "$LIB_DIR/Payload"
mkdir -p "$LIB_DIR/Payload"
cp -rf "$PAYLOAD_FILE" "$LIB_DIR/Payload/payload.sh"
sleep 2;
sharklib_menu;
fi
fi
elif [ "$BACKUP_INPUT" = "2" ]; then
sharklib_menu;
else
backup_payload;
fi
else
printf " No Payload in $PAYLOAD_DIR.\n"
fi
}
function delete_payload() {
DELETE_INPUT=NULL
clear;
SHARKLIB_TITLE=" Delete Payloads"
header;
cd "$LIB_DIR"
DIR_CNT="NULL"
DIR_CNT=$(ls "$LIB_DIR" | grep -v total | wc -l)
declare -a DIRS
i=1
for d in */; do
DIRS[i++]="${d%/}"
done
if [ "$DIR_CNT" -lt "1" ]; then
printf " There are no Payloads to Delete. \n\n"
printf " Returning to Previous Menu.\n"
sleep 2;
sharklib_menu;
fi
printf " There are ${#DIRS[@]} Payloads in SharkLib:\n"
for((i=1;i<=${#DIRS[@]};i++)); do
printf " %2d. %-20s\n" "$i" "${DIRS[i]}"
done
PAYLOAD_TOTAL=${#DIRS[@]}
PLUS_QUIT=$((PAYLOAD_TOTAL+1))
printf "\n"
printf " %2d. %-20s\n" "$PLUS_QUIT" "Return to Previous Menu."
printf "\n"
printf " Please choose a Payload by Number: "
read DELETE_INPUT
printf "\n"
if [[ "$DELETE_INPUT" == "$PLUS_QUIT" ]]; then
printf " Returning to Previous Menu.\n"
sleep 2;
sharklib_menu;
elif [[ "$DELETE_INPUT" == "" ]]; then
printf " Please Input a choice.\n"
sleep 2;
delete_payload;
elif ! [[ "$DELETE_INPUT" =~ ^[0-9]+$ ]]; then
printf " Please Input a choice.\n"
sleep 2;
delete_payload;
elif [[ "$DELETE_INPUT" == "0" ]]; then
printf " Please Input a choice.\n"
sleep 2;
delete_payload;
elif [[ "$DELETE_INPUT" -gt "$PLUS_QUIT" ]]; then
printf " Please Input a choice.\n"
sleep 2;
delete_payload;
elif [[ "$DELETE_INPUT" -le "$PLUS_QUIT" ]]; then
printf " Deleting payload ${DIRS[$DELETE_INPUT]} from SharkJack. \n"
rm -rf "$LIB_DIR/${DIRS[$DELETE_INPUT]}"
cd "$START_DIR"
sleep 2;
sharklib_menu;
else
printf " Wrong Choice, going back to Previous Menu.\n"
cd "$START_DIR"
sleep 2;
sharklib_menu;
fi
}
function restore_payload() {
LOAD_INPUT=NULL
clear;
SHARKLIB_TITLE=" Restore Payloads"
header;
cd "$LIB_DIR"
DIR_CNT=$(ls "$LIB_DIR" | grep -v total | wc -l)
declare -a DIRS
i=1
for d in */; do
DIRS[i++]="${d%/}"
done
if [ "$DIR_CNT" -lt "1" ]; then
printf " There are no Payloads to Restore. \n\n"
printf " Returning to Previous Menu.\n"
sleep 2;
sharklib_menu;
fi
printf " There are ${#DIRS[@]} Payloads in SharkLib:\n"
for((i=1;i<=${#DIRS[@]};i++)); do
printf " %2d. %-20s\n" "$i" "${DIRS[i]}"
done
PAYLOAD_TOTAL=${#DIRS[@]}
PLUS_QUIT=$((PAYLOAD_TOTAL+1))
printf "\n"
printf " %2d. %-20s\n" "$PLUS_QUIT" "Return to Previous Menu."
printf "\n"
printf " Please choose a Payload by Number: "
read LOAD_INPUT
printf "\n"
if [[ "$LOAD_INPUT" == "$PLUS_QUIT" ]]; then
printf " Returning to Previous Menu.\n"
sleep 2;
sharklib_menu;
elif [[ "$LOAD_INPUT" == "" ]]; then
printf " Please Input a choice.\n"
sleep 2;
restore_payload;
elif ! [[ "$LOAD_INPUT" =~ ^[0-9]+$ ]]; then
printf " Please Input a choice.\n"
sleep 2;
restore_payload;
elif [[ "$LOAD_INPUT" == "0" ]]; then
printf " Please Input a choice.\n"
sleep 2;
restore_payload;
elif [[ "$LOAD_INPUT" -gt "$PLUS_QUIT" ]]; then
printf " Please Input a choice.\n"
sleep 2;
restore_payload;
elif [[ "$LOAD_INPUT" -le "$PLUS_QUIT" ]]; then
printf " Loading payload ${DIRS[$LOAD_INPUT]} to SharkJack. \n"
cp -rf "$LIB_DIR/${DIRS[$LOAD_INPUT]}/payload.sh" "$PAYLOAD_FILE"
cd "$START_DIR"
sleep 2;
sharklib_menu;
else
printf " Wrong Choice, going back to Previous Menu.\n"
cd "$START_DIR"
sleep 2;
sharklib_menu;
fi
}
function cleanup_ctrl {
echo -en "\n -> Caught SIGINT! \n"
printf " -> Cleaning up and Exiting..\n\n"
sync
sleep 1;
exit $?
}
function exit_sharklib() {
printf " -> Cleaning up and Exiting..\n\n"
sync
sleep 1;
exit 0;
}
function sharklib_menu() {
clear;
trap cleanup_ctrl SIGINT
trap cleanup_ctrl SIGTERM
MENU_INPUT=NULL
if [ ! -d "$LIB_DIR" ]; then
printf " -> Creating SharkLib Payload Library directory.\n"
mkdir -p "$LIB_DIR"
fi
cd "$LIB_DIR"
SHARKLIB_TITLE=" By REDD"
header;
printf " 1. Backup Payload to SharkLib\n"
printf " 2. Restore Payload from SharkLib\n"
printf " 3. Delete Payload from SharkLib\n"
printf "\n"
printf " 4. View Current Payload on SharkJack\n"
printf "\n"
printf " 5. Exit\n"
printf "\n"
printf " Select a Menu Item by # and press ENTER: "
read MENU_INPUT
printf "\n"
if ! [[ "$MENU_INPUT" =~ ^[0-9]+$ ]]; then
sharklib_menu;
elif [[ "$MENU_INPUT" = "0" ]]; then
sharklib_menu;
elif [[ "$MENU_INPUT" = "1" ]]; then
backup_payload;
elif [[ "$MENU_INPUT" = "2" ]]; then
restore_payload;
elif [[ "$MENU_INPUT" = "3" ]]; then
delete_payload;
elif [[ "$MENU_INPUT" = "4" ]]; then
view_payload;
elif [[ "$MENU_INPUT" = "5" ]]; then
exit_sharklib;
elif [[ "$MENU_INPUT" -ge "6" ]]; then
sharklib_menu;
elif [[ "$MENU_INPUT" == "" ]]; then
sharklib_menu;
else
sharklib_menu;
fi
}
if [ "$1" == "--install" ]; then
install_sharklib;
exit 0;
elif [ "$1" == "--remove" ]; then
remove_sharklib;
else
install_sharklib;
sharklib_menu;
fi