mirror of
https://github.com/DeNNiiInc/UltyScan.git
synced 2026-04-17 18:26:00 +00:00
UltyScan Documentation Overhaul
This commit is contained in:
693
sniper
Normal file
693
sniper
Normal file
@@ -0,0 +1,693 @@
|
||||
#!/bin/bash
|
||||
# + -- --=[Sn1per Community Edition by @xer0dayz
|
||||
# + -- --=[https://sn1persecurity.com
|
||||
#
|
||||
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo "This script must be run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VER="9.2"
|
||||
INSTALL_DIR="/usr/share/sniper"
|
||||
LOOT_DIR="$INSTALL_DIR/loot/$TARGET"
|
||||
SNIPER_PRO=$INSTALL_DIR/pro.sh
|
||||
|
||||
# INIT POSTGRESQL
|
||||
service postgresql start 2> /dev/null
|
||||
|
||||
# LOAD DEFAULT SNIPER CONFIGURATION FILE
|
||||
dos2unix $INSTALL_DIR/sniper.conf 2> /dev/null > /dev/null
|
||||
source $INSTALL_DIR/sniper.conf
|
||||
echo -e "$OKBLUE[*]$RESET Loaded configuration file from $INSTALL_DIR/sniper.conf $OKBLUE[$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET"
|
||||
|
||||
if [[ -f /root/.sniper.conf ]]; then
|
||||
# LOAD USER SN1PER CONFIGURATION FILE
|
||||
dos2unix /root/.sniper.conf 2> /dev/null > /dev/null
|
||||
source /root/.sniper.conf
|
||||
echo -e "$OKBLUE[*]$RESET Loaded configuration file from /root/.sniper.conf $OKBLUE[$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET"
|
||||
|
||||
if [[ -f /root/.sniper_api_keys.conf ]]; then
|
||||
# LOAD USER API KEYS (PERSISTENT CONFIG)
|
||||
dos2unix /root/.sniper_api_keys.conf 2> /dev/null > /dev/null
|
||||
source /root/.sniper_api_keys.conf
|
||||
echo -e "$OKBLUE[*]$RESET Loaded API keys from /root/.sniper_api_keys.conf $OKBLUE[$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET"
|
||||
fi
|
||||
|
||||
else
|
||||
# IF NO USER CONFIG PRESENT, CREATE IT FROM THE DEFAULT TEMPLATE
|
||||
cp $INSTALL_DIR/sniper.conf /root/.sniper.conf 2> /dev/null
|
||||
dos2unix /root/.sniper.conf 2> /dev/null > /dev/null
|
||||
source /root/.sniper.conf
|
||||
echo -e "$OKBLUE[*]$RESET Loaded configuration file from /root/.sniper.conf $OKBLUE[$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET"
|
||||
fi
|
||||
|
||||
DISTRO=$(cat /etc/*-release | grep DISTRIB_ID= | cut -d'=' -f2)
|
||||
|
||||
function help {
|
||||
logo
|
||||
local star
|
||||
printf -v star "$OKBLUE[*]$RESET"
|
||||
cat <<EOHELP
|
||||
|
||||
$star NORMAL MODE
|
||||
sniper -t <TARGET>
|
||||
|
||||
$star SPECIFY CUSTOM CONFIG FILE
|
||||
sniper -c /full/path/to/sniper.conf -t <TARGET> -m <MODE> -w <WORKSPACE>
|
||||
|
||||
$star NORMAL MODE + OSINT + RECON
|
||||
sniper -t <TARGET> -o -re
|
||||
|
||||
$star STEALTH MODE + OSINT + RECON
|
||||
sniper -t <TARGET> -m stealth -o -re
|
||||
|
||||
$star DISCOVER MODE
|
||||
sniper -t <CIDR> -m discover -w <WORSPACE_ALIAS>
|
||||
|
||||
$star SCAN ONLY SPECIFIC PORT
|
||||
sniper -t <TARGET> -m port -p <portnum>
|
||||
|
||||
$star FULLPORTONLY SCAN MODE
|
||||
sniper -t <TARGET> -fp
|
||||
|
||||
$star WEB MODE - PORT 80 + 443 ONLY!
|
||||
sniper -t <TARGET> -m web
|
||||
|
||||
$star HTTP WEB PORT MODE
|
||||
sniper -t <TARGET> -m webporthttp -p <port>
|
||||
|
||||
$star HTTPS WEB PORT MODE
|
||||
sniper -t <TARGET> -m webporthttps -p <port>
|
||||
|
||||
$star HTTP WEBSCAN MODE
|
||||
sniper -t <TARGET> -m webscan
|
||||
|
||||
$star ENABLE BRUTEFORCE
|
||||
sniper -t <TARGET> -b
|
||||
|
||||
$star AIRSTRIKE MODE
|
||||
sniper -f targets.txt -m airstrike
|
||||
|
||||
$star NUKE MODE WITH TARGET LIST, BRUTEFORCE ENABLED, FULLPORTSCAN ENABLED, OSINT ENABLED, RECON ENABLED, WORKSPACE & LOOT ENABLED
|
||||
sniper -f targets.txt -m nuke -w <WORKSPACE_ALIAS>
|
||||
|
||||
$star MASS PORT SCAN MODE
|
||||
sniper -f targets.txt -m massportscan -w <WORKSPACE_ALIAS>
|
||||
|
||||
$star MASS WEB SCAN MODE
|
||||
sniper -f targets.txt -m massweb -w <WORKSPACE_ALIAS>
|
||||
|
||||
$star MASS WEBSCAN SCAN MODE
|
||||
sniper -f targets.txt -m masswebscan -w <WORKSPACE_ALIAS>
|
||||
|
||||
$star MASS VULN SCAN MODE
|
||||
sniper -f targets.txt -m massvulnscan -w <WORKSPACE_ALIAS>
|
||||
|
||||
$star PORT SCAN MODE
|
||||
sniper -t <TARGET> -m port -p <PORT_NUM>
|
||||
|
||||
$star LIST WORKSPACES
|
||||
sniper --list
|
||||
|
||||
$star DELETE WORKSPACE
|
||||
sniper -w <WORKSPACE_ALIAS> -d
|
||||
|
||||
$star DELETE HOST FROM WORKSPACE
|
||||
sniper -w <WORKSPACE_ALIAS> -t <TARGET> -dh
|
||||
|
||||
$star DELETE TASKS FROM WORKSPACE
|
||||
sniper -w <WORKSPACE_ALIAS> -t <TARGET> -dt
|
||||
|
||||
$star GET SNIPER SCAN STATUS
|
||||
sniper --status
|
||||
|
||||
$star LOOT REIMPORT FUNCTION
|
||||
sniper -w <WORKSPACE_ALIAS> --reimport
|
||||
|
||||
$star LOOT REIMPORTALL FUNCTION
|
||||
sniper -w <WORKSPACE_ALIAS> --reimportall
|
||||
|
||||
$star LOOT REIMPORT FUNCTION
|
||||
sniper -w <WORKSPACE_ALIAS> --reload
|
||||
|
||||
$star LOOT EXPORT FUNCTION
|
||||
sniper -w <WORKSPACE_ALIAS> --export
|
||||
|
||||
$star SCHEDULED SCANS
|
||||
sniper -w <WORKSPACE_ALIAS> -s daily|weekly|monthly
|
||||
|
||||
$star USE A CUSTOM CONFIG
|
||||
sniper -c /path/to/sniper.conf -t <TARGET> -w <WORKSPACE_ALIAS>
|
||||
|
||||
$star UPDATE SNIPER
|
||||
sniper -u|--update
|
||||
|
||||
|
||||
EOHELP
|
||||
exit
|
||||
}
|
||||
|
||||
function logo {
|
||||
echo -e "$OKRED ____ $RESET"
|
||||
echo -e "$OKRED _________ / _/___ ___ _____$RESET"
|
||||
echo -e "$OKRED / ___/ __ \ / // __ \/ _ \/ ___/$RESET"
|
||||
echo -e "$OKRED (__ ) / / // // /_/ / __/ / $RESET"
|
||||
echo -e "$OKRED /____/_/ /_/___/ .___/\___/_/ $RESET"
|
||||
echo -e "$OKRED /_/ $RESET"
|
||||
echo ""
|
||||
echo -e "$OKORANGE + -- --=[ https://sn1persecurity.com$RESET"
|
||||
echo -e "$OKORANGE + -- --=[ Sn1per v$VER by @xer0dayz$RESET"
|
||||
echo ""
|
||||
}
|
||||
|
||||
function sniper_status {
|
||||
watch -n 1 -c 'ps -ef | egrep "sniper|slurp|hydra|ruby|python|dirsearch|amass|nmap|metasploit|curl|wget|nikto" && echo "NETWORK CONNECTIONS..." && netstat -an | egrep "TIME_WAIT|EST"'
|
||||
}
|
||||
|
||||
# CHECK FOR UPDATES
|
||||
function check_update {
|
||||
if [[ "$ENABLE_AUTO_UPDATES" == "1" ]] && [[ "$ONLINE" == "1" ]]; then
|
||||
LATEST_VER=$(curl --connect-timeout 5 -s https://api.github.com/repos/1N3/Sn1per/tags | grep -Po '"name":.*?[^\\]",'| head -1 | cut -c11-13)
|
||||
if [[ "$LATEST_VER" != "$VER" ]]; then
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE] sniper v$LATEST_VER is available to download... To update, type$OKRED \"sniper -u\" $RESET"
|
||||
fi
|
||||
fi
|
||||
touch /tmp/update-check.txt 2> /dev/null
|
||||
}
|
||||
|
||||
# APPLY UPDATES
|
||||
function update {
|
||||
logo
|
||||
echo -e "$OKBLUE[*]$RESET Checking for updates...$OKBLUE[$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET"
|
||||
if [[ "$ONLINE" == "0" ]]; then
|
||||
echo "You will need to download the latest release manually at https://github.com/1N3/Sn1per/"
|
||||
else
|
||||
LATEST_VER=$(curl --connect-timeout 5 -s https://api.github.com/repos/1N3/Sn1per/tags | grep -Po '"name":.*?[^\\]",'| head -1 | cut -c11-13)
|
||||
if [[ "$LATEST_VER" != "$VER" ]]; then
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE] Sn1per $LATEST_VER is available to download...Do you want to update? (y or n)$RESET"
|
||||
read ans
|
||||
if [[ "$ans" = "y" ]]; then
|
||||
rm -Rf /tmp/Sn1per/ 2>/dev/null
|
||||
git clone https://github.com/1N3/Sn1per /tmp/Sn1per/
|
||||
cd /tmp/Sn1per/
|
||||
chmod +rx install.sh
|
||||
bash install.sh
|
||||
rm -Rf /tmp/Sn1per/ 2>/dev/null
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "$UPDATE" = "1" ]]; then
|
||||
update
|
||||
exit
|
||||
fi
|
||||
|
||||
# CHECK IF ONLINE
|
||||
function check_online {
|
||||
ONLINE=$(curl --connect-timeout 3 --insecure -s "https://sn1persecurity.com/community/updates.txt?$VER&mid=$(cat /etc/machine-id)" 2> /dev/null)
|
||||
if [[ -z "$ONLINE" ]]; then
|
||||
ONLINE=$(curl --connect-timeout 3 -s https://api.github.com/repos/1N3/Sn1per/tags | grep -Po '"name":.*?[^\\]",'| head -1 | cut -c11-13)
|
||||
if [[ -z "$ONLINE" ]]; then
|
||||
ONLINE="0"
|
||||
echo -e "$OKBLUE[*]$RESET Checking for active internet connection $OKBLUE[$RESET${OKRED}FAIL${RESET}$OKBLUE]"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET sniper is running in offline mode.$RESET"
|
||||
else
|
||||
ONLINE="1"
|
||||
echo -e "$OKBLUE[*]$RESET Checking for active internet connection $OKBLUE[$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET"
|
||||
fi
|
||||
else
|
||||
ONLINE="1"
|
||||
echo -e "$OKBLUE[*]$RESET Checking for active internet connection $OKBLUE[$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET"
|
||||
fi
|
||||
}
|
||||
|
||||
# COMMAND LINE SWITCHES
|
||||
POSITIONAL=()
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
key="$1"
|
||||
|
||||
case $key in
|
||||
-h|--help)
|
||||
help
|
||||
shift # past argument
|
||||
;;
|
||||
-c|--config)
|
||||
CONFIG="$2"
|
||||
echo -e "$OKBLUE[*]$RESET Creating backup of existing config to /root/.sniper.conf.bak...$OKBLUE[$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET"
|
||||
cp -f /root/.sniper.conf /root/.sniper.conf.bak
|
||||
echo -e "$OKBLUE[*]$RESET Copying $CONFIG to /root/.sniper.conf...$OKBLUE[$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET"
|
||||
cp -f $CONFIG /root/.sniper.conf 2> /dev/null
|
||||
dos2unix /root/.sniper.conf 2> /dev/null > /dev/null
|
||||
source /root/.sniper.conf
|
||||
sleep 1
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
-t)
|
||||
TARGET="$2"
|
||||
shift # past argument
|
||||
shift # past argument
|
||||
;;
|
||||
-b)
|
||||
AUTO_BRUTE="1"
|
||||
shift # past argument
|
||||
;;
|
||||
-fp|--fullportscan)
|
||||
FULLNMAPSCAN="1"
|
||||
shift # past argument
|
||||
;;
|
||||
-o|--osint)
|
||||
OSINT="1"
|
||||
shift # past argument
|
||||
;;
|
||||
-re|--recon)
|
||||
RECON="1"
|
||||
shift # past argument
|
||||
;;
|
||||
-m)
|
||||
MODE="$2"
|
||||
shift # past argument
|
||||
shift # past argument
|
||||
;;
|
||||
-p)
|
||||
PORT="$2"
|
||||
shift # past argument
|
||||
shift # past argument
|
||||
;;
|
||||
-f|--file)
|
||||
FILE="$(realpath $2)"
|
||||
shift # past argument
|
||||
shift # past argument
|
||||
;;
|
||||
-ri|--reimport)
|
||||
REIMPORT="1"
|
||||
shift # past argument
|
||||
;;
|
||||
-ria|--reimportall)
|
||||
REIMPORT_ALL="1"
|
||||
shift # past argument
|
||||
;;
|
||||
-rl|--reload)
|
||||
RELOAD="1"
|
||||
shift # past argument
|
||||
;;
|
||||
-n|--noreport)
|
||||
REPORT="0"
|
||||
shift # past argument
|
||||
;;
|
||||
-nl|--noloot)
|
||||
LOOT="0"
|
||||
NOLOOT="1"
|
||||
shift # past argument
|
||||
;;
|
||||
-w)
|
||||
WORKSPACE="$(echo $2 | tr / -)"
|
||||
WORKSPACE_DIR="$INSTALL_DIR/loot/workspace/$WORKSPACE"
|
||||
shift # past argument
|
||||
shift # past argument
|
||||
;;
|
||||
-s|--schedule)
|
||||
if [[ -z "$WORKSPACE" ]]; then
|
||||
echo "You need to set a workspace via the -w switch to schedule a scan task."
|
||||
exit
|
||||
fi
|
||||
SCHEDULE_ARG="$2"
|
||||
if [[ "$SCHEDULE_ARG" = "daily" ]] || [[ "$SCHEDULE_ARG" = "weekly" ]] || [[ "$SCHEDULE_ARG" = "monthly" ]]; then
|
||||
SCHEDULE_TASK="$WORKSPACE_DIR/scans/scheduled/$SCHEDULE_ARG.sh"
|
||||
vim $SCHEDULE_TASK
|
||||
cat $WORKSPACE_DIR/scans/scheduled/*.sh 2> /dev/null
|
||||
exit
|
||||
else
|
||||
echo "You need to specify either daily, weekly or monthly for the scheduled scan argument."
|
||||
exit
|
||||
fi
|
||||
shift # past argument
|
||||
shift # past argument
|
||||
;;
|
||||
-d|--delete)
|
||||
logo
|
||||
echo "Are you sure you want to remove the following workspace? (Hit Ctrl+C to exit): /usr/share/sniper/loot/workspace/$WORKSPACE/"
|
||||
read ANS
|
||||
rm -Rf /usr/share/sniper/loot/workspace/$WORKSPACE/
|
||||
echo "Workspace /usr/share/sniper/loot/workspace/$WORKSPACE/ was removed."
|
||||
sniper -w default --reimport
|
||||
exit
|
||||
shift # past argument
|
||||
;;
|
||||
-dh|--delete-host)
|
||||
echo "Removing $TARGET from $WORKSPACE"
|
||||
sed -i "/$TARGET/d" $WORKSPACE_DIR/domains/* $WORKSPACE_DIR/reports/host-table-report.csv
|
||||
egrep -R "$TARGET" $WORKSPACE_DIR/domains/* $WORKSPACE_DIR/reports/host-table-report.csv
|
||||
rm -f $WORKSPACE_DIR/screenshots/$TARGET*.jpg 2> /dev/null
|
||||
rm -f $WORKSPACE_DIR/nmap/dns-$TARGET.txt 2> /dev/null
|
||||
rm -f $WORKSPACE_DIR/nmap/ports-$TARGET.txt 2> /dev/null
|
||||
rm -f $WORKSPACE_DIR/web/title-*-$TARGET.txt 2> /dev/null
|
||||
rm -f $WORKSPACE_DIR/web/headers-*-$TARGET.txt 2> /dev/null
|
||||
rm -f $WORKSPACE_DIR/vulnerabilities/sc0pe-$TARGET-*.txt 2> /dev/null
|
||||
rm -f $WORKSPACE_DIR/vulnerabilities/vulnerability-report-$TARGET.txt 2> /dev/null
|
||||
rm -f $WORKSPACE_DIR/vulnerabilities/vulnerability-risk-$TARGET.txt 2> /dev/null
|
||||
#sniper --reimportall -w $WORKSPACE
|
||||
exit
|
||||
shift # past argument
|
||||
;;
|
||||
-dt|--delete-task)
|
||||
echo "Removing all running $TARGET tasks from $WORKSPACE"
|
||||
rm -vf $WORKSPACE_DIR/scans/running_$TARGET_*.txt
|
||||
ls -lh $LOOT_DIR/scans/running_*.txt 2> /dev/null | wc -l 2> /dev/null > $WORKSPACE_DIR/scans/tasks-running.txt 2> /dev/null
|
||||
ps -ef | egrep "$TARGET|sniper"
|
||||
ps -ef | egrep "sniper" | awk '{print $2}' | xargs -i sudo kill -9 {}
|
||||
exit
|
||||
shift # past argument
|
||||
;;
|
||||
--list)
|
||||
logo
|
||||
ls -l $INSTALL_DIR/loot/workspace/
|
||||
echo ""
|
||||
echo "cd /usr/share/sniper/loot/workspace/"
|
||||
WORKSPACE_REPORT=$LOOT_DIR/sniper-report.html
|
||||
if [[ -f $WORKSPACE_REPORT ]]; then
|
||||
echo -e "$OKORANGE + -- --=[ Loading Sn1per Professional...$RESET"
|
||||
$BROWSER $INSTALL_DIR/loot/workspace/sniper-report.html 2> /dev/null > /dev/null &
|
||||
else
|
||||
echo -e "$OKORANGE + -- --=[ Loading workspaces...$RESET"
|
||||
$BROWSER $INSTALL_DIR/loot/workspace/ 2> /dev/null > /dev/null &
|
||||
fi
|
||||
exit
|
||||
shift
|
||||
;;
|
||||
--export)
|
||||
if [[ -z "$WORKSPACE" ]]; then
|
||||
echo "You need to set a workspace via the -w switch to export a workspace."
|
||||
exit
|
||||
fi
|
||||
echo "Archiving $WORKSPACE to $INSTALL_DIR/loot/$WORKSPACE.tar"
|
||||
cd $INSTALL_DIR/loot/workspace/ && tar -cvf ../$WORKSPACE.tar $WORKSPACE
|
||||
cp -Rf $WORKSPACE ${WORKSPACE}_`date +"%Y-%m-%d"`
|
||||
echo "Done!"
|
||||
exit
|
||||
shift
|
||||
;;
|
||||
-s|--status)
|
||||
sniper_status
|
||||
exit
|
||||
shift
|
||||
;;
|
||||
-u|--update)
|
||||
UPDATE="1"
|
||||
update
|
||||
exit
|
||||
shift # past argument
|
||||
;;
|
||||
*) # unknown option
|
||||
POSITIONAL+=("$1") # save it in an array for later
|
||||
echo "Unknown scan option $POSITIONAL...refer to the help menu for usage details."
|
||||
exit
|
||||
shift # past argument
|
||||
;;
|
||||
esac
|
||||
done
|
||||
set -- "${POSITIONAL[@]}" # restore positional parameters
|
||||
|
||||
if [[ ! -z "$TARGET" ]] && [[ -z "$WORKSPACE" ]]; then
|
||||
WORKSPACE=$(echo "$TARGET")
|
||||
fi
|
||||
|
||||
if [[ -z "$TARGET" ]] && [[ -z "$WORKSPACE" ]]; then
|
||||
logo
|
||||
echo "You need to specify a target or workspace to use. Type sniper --help for command usage."
|
||||
exit
|
||||
fi
|
||||
|
||||
cd $INSTALL_DIR
|
||||
|
||||
function init {
|
||||
if [[ ! -z $WORKSPACE_DIR ]]; then
|
||||
LOOT_DIR=$WORKSPACE_DIR
|
||||
fi
|
||||
echo -e "$OKBLUE[*]$RESET Saving loot to $LOOT_DIR $OKBLUE[$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET"
|
||||
mkdir -p $LOOT_DIR 2> /dev/nul
|
||||
mkdir $LOOT_DIR/domains 2> /dev/null
|
||||
mkdir $LOOT_DIR/ips 2> /dev/null
|
||||
mkdir $LOOT_DIR/screenshots 2> /dev/null
|
||||
mkdir $LOOT_DIR/nmap 2> /dev/null
|
||||
mkdir $LOOT_DIR/reports 2> /dev/null
|
||||
mkdir $LOOT_DIR/output 2> /dev/null
|
||||
mkdir $LOOT_DIR/osint 2> /dev/null
|
||||
mkdir $LOOT_DIR/credentials 2> /dev/null
|
||||
mkdir $LOOT_DIR/web 2> /dev/null
|
||||
mkdir $LOOT_DIR/vulnerabilities 2> /dev/null
|
||||
mkdir $LOOT_DIR/notes 2> /dev/null
|
||||
mkdir -p $LOOT_DIR/scans/scheduled/ 2> /dev/null
|
||||
touch $LOOT_DIR/scans/scheduled/daily.sh 2> /dev/null
|
||||
touch $LOOT_DIR/scans/scheduled/weekly.sh 2> /dev/null
|
||||
touch $LOOT_DIR/scans/scheduled/monthly.sh 2> /dev/null
|
||||
touch $LOOT_DIR/scans/notifications.txt 2> /dev/null
|
||||
touch $LOOT_DIR/scans/notifications_new.txt 2> /dev/null
|
||||
chmod 777 -Rf $INSTALL_DIR 2> /dev/null
|
||||
chown root $INSTALL_DIR/sniper 2> /dev/null
|
||||
chmod 4777 $INSTALL_DIR/sniper 2> /dev/null
|
||||
TARGET="$(echo $TARGET | sed 's/https:\/\///g' | sed 's/http:\/\///g')"
|
||||
rm -f /tmp/out_of_scope 2> /dev/null
|
||||
for key in "${OUT_OF_SCOPE[@]}"; do echo $TARGET | egrep ${key} >> /tmp/out_of_scope 2> /dev/null; done;
|
||||
OUT_OF_SCOPE_NUM=$(wc -l /tmp/out_of_scope 2> /dev/null | awk '{print $1}' 2> /dev/null)
|
||||
if [[ $OUT_OF_SCOPE_NUM > 0 ]]; then
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE] $TARGET is out of scope. Skipping! $RESET"
|
||||
exit
|
||||
else
|
||||
echo -e "$OKBLUE[*]$RESET Scanning $TARGET $OKBLUE[$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET"
|
||||
echo "$TARGET" >> $LOOT_DIR/domains/targets.txt 2> /dev/null
|
||||
fi
|
||||
service postgresql start 2> /dev/null > /dev/null
|
||||
msfdb start 2> /dev/null > /dev/null
|
||||
chown root /run/user/1000/gdm/Xauthority 2> /dev/null
|
||||
LAST_USER=$(last | head -n 1 | awk '{print $1}')
|
||||
sudo cp -a /home/$LAST_USER/.Xauthority /root/.Xauthority 2> /dev/null
|
||||
sudo cp -a /root/.Xauthority /root/.Xauthority.bak 2> /dev/null
|
||||
sudo cp -a /home/$USER/.Xauthority /root/.Xauthority 2> /dev/null
|
||||
sudo cp -a /home/kali/.Xauthority /root/.Xauthority 2> /dev/null
|
||||
sudo chown root: /root/.Xauthority 2> /dev/null
|
||||
XAUTHORITY=/root/.Xauthority
|
||||
UPDATED_TARGETS=$LOOT_DIR/scans/updated.txt
|
||||
if [[ "$AUTO_BRUTE" == "1" ]]; then
|
||||
echo "$TARGET AUTO_BRUTE `date +"%Y-%m-%d %H:%M"`" 2> /dev/null >> $LOOT_DIR/scans/tasks.txt
|
||||
touch $LOOT_DIR/scans/$TARGET-AUTO_BRUTE.txt 2> /dev/null
|
||||
fi
|
||||
if [[ "$FULLNMAPSCAN" == "1" ]]; then
|
||||
echo "$TARGET fullnmapscan `date +"%Y-%m-%d %H:%M"`" 2> /dev/null >> $LOOT_DIR/scans/tasks.txt
|
||||
touch $LOOT_DIR/scans/$TARGET-fullnmapscan.txt 2> /dev/null
|
||||
fi
|
||||
if [[ "$OSINT" == "1" ]]; then
|
||||
echo "$TARGET osint `date +"%Y-%m-%d %H:%M"`" 2> /dev/null >> $LOOT_DIR/scans/tasks.txt
|
||||
touch $LOOT_DIR/scans/$TARGET-osint.txt 2> /dev/null
|
||||
fi
|
||||
if [[ "$RECON" == "1" ]]; then
|
||||
echo "$TARGET recon `date +"%Y-%m-%d %H:%M"`" 2> /dev/null >> $LOOT_DIR/scans/tasks.txt
|
||||
touch $LOOT_DIR/scans/$TARGET-recon.txt 2> /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
function loot {
|
||||
if [[ ! $LOOT == "0" ]]; then
|
||||
echo -e "$OKRED ____ $RESET"
|
||||
echo -e "$OKRED _________ / _/___ ___ _____$RESET"
|
||||
echo -e "$OKRED / ___/ __ \ / // __ \/ _ \/ ___/$RESET"
|
||||
echo -e "$OKRED (__ ) / / // // /_/ / __/ / $RESET"
|
||||
echo -e "$OKRED /____/_/ /_/___/ .___/\___/_/ $RESET"
|
||||
echo -e "$OKRED /_/ $RESET"
|
||||
echo ""
|
||||
if [[ ! -z $WORKSPACE_DIR ]]; then
|
||||
LOOT_DIR=$WORKSPACE_DIR
|
||||
fi
|
||||
rm -f $INSTALL_DIR/stash.sqlite 2> /dev/null
|
||||
rm -f $INSTALL_DIR/hydra.restore 2> /dev/null
|
||||
rm -f /tmp/update-check.txt 2> /dev/null
|
||||
ls -lh $LOOT_DIR/scans/running_*.txt 2> /dev/null | wc -l 2> /dev/null > $LOOT_DIR/scans/tasks-running.txt 2> /dev/null
|
||||
echo -e "$OKBLUE[*]$RESET Opening loot directory $LOOT_DIR $OKBLUE[$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET"
|
||||
cd $LOOT_DIR
|
||||
if [[ "$METASPLOIT_IMPORT" == "1" ]]; then
|
||||
echo -e "$OKORANGE + -- --=[ Starting Metasploit service...$RESET"
|
||||
/etc/init.d/metasploit start 2> /dev/null > /dev/null
|
||||
msfdb start
|
||||
echo -e "$OKORANGE + -- --=[ Importing NMap XML files into Metasploit...$RESET"
|
||||
msfconsole -x "workspace -a $WORKSPACE; workspace $WORKSPACE; db_import $LOOT_DIR/nmap/nmap*.xml; hosts; services; exit;" | tee $LOOT_DIR/notes/msf-$WORKSPACE.txt
|
||||
fi
|
||||
echo -e "$OKORANGE + -- --=[ Generating reports...$RESET"
|
||||
cd $LOOT_DIR/output 2> /dev/null
|
||||
echo -en "$OKGREEN[$OKBLUE"
|
||||
for a in `ls sniper-*.txt 2>/dev/null`;
|
||||
do
|
||||
echo "$a" 2> /dev/null | aha 2> /dev/null > $LOOT_DIR/reports/$a.html 2> /dev/null
|
||||
cat "$a" 2> /dev/null | aha 2> /dev/null >> $LOOT_DIR/reports/$a.html 2> /dev/null
|
||||
echo -n '|'
|
||||
done
|
||||
echo -en "$OKGREEN]$RESET"
|
||||
echo ""
|
||||
cd ..
|
||||
chmod 777 -Rf $LOOT_DIR
|
||||
echo -e "$OKORANGE + -- --=[ Sorting all files...$RESET"
|
||||
cat $LOOT_DIR/scans/notifications_new.txt 2> /dev/null >> $LOOT_DIR/scans/notifications.txt 2> /dev/null
|
||||
sort -u $LOOT_DIR/domains/*-full.txt 2> /dev/null > $LOOT_DIR/domains/domains-all-presorted.txt 2> /dev/null
|
||||
sed -E "s/^\.//g" $LOOT_DIR/domains/domains-all-presorted.txt 2> /dev/null | sed -E "s/^\*\.//g" | tr '[:upper:]' '[:lower:]' | sort -u > $LOOT_DIR/domains/domains-all-presorted2.txt 2> /dev/null
|
||||
sort -u $LOOT_DIR/domains/targets.txt 2> /dev/null > $LOOT_DIR/domains/targets-all-presorted.txt 2> /dev/null
|
||||
sed -E "s/^\.//g" $LOOT_DIR/domains/targets-all-presorted.txt 2> /dev/null | sed -E "s/^\*\.//g" | tr '[:upper:]' '[:lower:]' | sort -u > $LOOT_DIR/domains/targets-all-sorted.txt 2> /dev/null
|
||||
sort -u $LOOT_DIR/ips/ips-all-unsorted.txt 2> /dev/null > $LOOT_DIR/ips/ips-all-sorted.txt 2> /dev/null
|
||||
sed -i -E 's/address//g' $LOOT_DIR/ips/ips-all-sorted.txt 2> /dev/null
|
||||
sort -u $LOOT_DIR/domains/domains-all-presorted2.txt $LOOT_DIR/domains/targets-all-sorted.txt 2> /dev/null > $LOOT_DIR/domains/domains-all-sorted.txt 2> /dev/null
|
||||
diff $LOOT_DIR/domains/targets-all-sorted.txt $LOOT_DIR/domains/domains-all-sorted.txt 2> /dev/null | grep \> | awk '{print $2}' > $LOOT_DIR/domains/targets-all-unscanned.txt
|
||||
rm -f $LOOT_DIR/domains/targets-all-presorted.txt $LOOT_DIR/domains/targets-all-presorted2.txt 2> /dev/null
|
||||
rm -f $LOOT_DIR/domains/domains-all-presorted.txt $LOOT_DIR/domains/domains-all-presorted2.txt 2> /dev/null
|
||||
sort -u $LOOT_DIR/nmap/openports-unsorted.txt 2> /dev/null > $LOOT_DIR/nmap/openports-sorted.txt 2> /dev/null
|
||||
sort -u $LOOT_DIR/nmap/livehosts-unsorted.txt 2> /dev/null > $LOOT_DIR/nmap/livehosts-sorted.txt 2> /dev/null
|
||||
find $LOOT_DIR/web/ -type f -size -1c -exec rm -f {} \;
|
||||
cd $LOOT_DIR/web/ && rm -f webhosts-all-sorted-* 2> /dev/null
|
||||
cd $LOOT_DIR/domains/ && rm -f domains-all-sorted-* 2> /dev/null
|
||||
cd $LOOT_DIR/nmap/ && rm -f openports-all-sorted-* 2> /dev/null
|
||||
cd $LOOT_DIR/nmap/ && rm -f livehosts-all-sorted-* 2> /dev/null
|
||||
cd $LOOT_DIR/web/ 2> /dev/null
|
||||
egrep -Hi 'HTTP/1.' headers-* 2> /dev/null | cut -d':' -f1 | sed "s/headers\-http\(\|s\)\-//g" | sed "s/\.txt//g" | cut -d \- -f1 | sort -u 2> /dev/null > $LOOT_DIR/web/webhosts-sorted.txt 2> /dev/null
|
||||
split -d -l $MAX_HOSTS -e $LOOT_DIR/web/webhosts-sorted.txt webhosts-all-sorted- 2> /dev/null
|
||||
cd $LOOT_DIR/domains/ 2> /dev/null
|
||||
split -d -l $MAX_HOSTS -e $LOOT_DIR/domains/domains-all-sorted.txt domains-all-sorted- 2> /dev/null
|
||||
cd $LOOT_DIR/nmap/ 2> /dev/null
|
||||
split -d -l $MAX_HOSTS -e $LOOT_DIR/nmap/openports-sorted.txt openports-all-sorted- 2> /dev/null
|
||||
split -d -l $MAX_HOSTS -e $LOOT_DIR/nmap/livehosts-sorted.txt livehosts-all-sorted- 2> /dev/null
|
||||
echo -e "$OKORANGE + -- --=[ Removing blank screenshots and files...$RESET"
|
||||
chmod 777 -Rf $LOOT_DIR 2> /dev/null
|
||||
cd $LOOT_DIR/screenshots/
|
||||
find $LOOT_DIR/screenshots/ -type f -size -9000c -exec rm -f {} \;
|
||||
find $LOOT_DIR/nmap/ -type f -size -1c -exec rm -f {} \;
|
||||
find $LOOT_DIR/ips/ -type f -size -1c -exec rm -f {} \;
|
||||
find $LOOT_DIR/osint/ -type f -size -1c -exec rm -f {} \;
|
||||
find $LOOT_DIR/vulnerabilities/ -type f -size -1c -exec rm -f {} \;
|
||||
cd $LOOT_DIR
|
||||
if [[ -f $SNIPER_PRO ]]; then
|
||||
wc -l $LOOT_DIR/scans/notifications.txt 2> /dev/null | awk '{print $1}' > $LOOT_DIR/scans/notifications_total.txt 2> /dev/null
|
||||
wc -l $LOOT_DIR/scans/notifications_new.txt 2> /dev/null | awk '{print $1}' > $LOOT_DIR/scans/notifications_new_total.txt 2> /dev/null
|
||||
cat $LOOT_DIR/scans/tasks-running.txt 2> /dev/null > $LOOT_DIR/scans/tasks-running_total.txt 2> /dev/null
|
||||
wc -l $LOOT_DIR/scans/tasks.txt 2> /dev/null | awk '{print $1}' 2> /dev/null > $LOOT_DIR/scans/tasks_total.txt 2> /dev/null
|
||||
wc -l $LOOT_DIR/scans/scheduled/*.sh 2> /dev/null | awk '{print $1}' 2> /dev/null > $LOOT_DIR/scans/scheduled_tasks_total.txt 2> /dev/null
|
||||
grep "Host\ status" $LOOT_DIR/scans/notifications.txt 2> /dev/null | wc -l | awk '{print $1}' 2> /dev/null > $LOOT_DIR/scans/host_status_changes_total.txt 2> /dev/null
|
||||
grep "Port\ change" $LOOT_DIR/scans/notifications.txt 2> /dev/null | wc -l | awk '{print $1}' 2> /dev/null > $LOOT_DIR/scans/port_changes_total.txt 2> /dev/null
|
||||
wc -l $LOOT_DIR/domains/domains_new-*.txt 2> /dev/null | awk '{print $1}' 2> /dev/null > $LOOT_DIR/scans/domain_changes_total.txt 2> /dev/null
|
||||
cat $LOOT_DIR/web/dirsearch-new-*.txt $LOOT_DIR/web/spider-new-*.txt 2> /dev/null | wc -l | awk '{print $1}' 2> /dev/null > $LOOT_DIR/scans/url_changes_total.txt 2> /dev/null
|
||||
if [[ -f "$LOOT_DIR/notes/notepad.html" ]]; then
|
||||
echo -n "" 2>/dev/null
|
||||
else
|
||||
cp "$INSTALL_DIR/pro/notepad.html" "$LOOT_DIR/notes/notepad.html" 2>/dev/null
|
||||
PRE_NAME=$(echo $WORKSPACE | sed "s/\./-/g")
|
||||
sed -i "s/notepad/notepad-$PRE_NAME/g" "$LOOT_DIR/notes/notepad.html" 2> /dev/null
|
||||
fi
|
||||
if [[ "$SN1PER_AUTOLOAD" = "1" ]] && [[ ! -f "$INSTALL_DIR/pro/settings.php" ]]; then
|
||||
echo -e "$OKORANGE + -- --=[ Loading Sn1per Professional...$RESET"
|
||||
source $INSTALL_DIR/pro.sh
|
||||
sudo $LAST_USER -c $BROWSER $LOOT_DIR/sniper-report.html 2> /dev/null > /dev/null &
|
||||
else
|
||||
echo -e "$OKORANGE + -- --=[ Generating Sn1per Professional reports...$RESET"
|
||||
source $INSTALL_DIR/pro.sh
|
||||
fi
|
||||
else
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET ⚡ Upgrade to Sn1per Professional and unlock a world of powerful benefits! 🚀 $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET 💡 Don't miss out on important updates by using the Community version. $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET 🔝 The latest Professional version ( ${OKRED}10.8 ${RESET}) offers unparalleled features, including: $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET 💻 Sleek Web UI $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET 🛠️ Extensive add-ons $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET 🔄 Seamless integrations $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET 🤝 Experience priority support, continuous updates, and enhanced capabilities tailored for professionals like you. $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET 💰 Maximize your investment and achieve exceptional results with Sn1per Professional. $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET 🔍 Learn more about the differences between the versions at: ${OKBLUE}https://sn1persecurity.com/wordpress/sn1per-community-vs-professional-whats-the-difference/ $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET $RESET"
|
||||
echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE]$RESET 🛒 Purchase your Sn1per Professional license now at: ${OKBLUE}https://sn1persecurity.com/ $RESET"
|
||||
sudo $LAST_USER -c $BROWSER https://sn1persecurity.com 2> /dev/null > /dev/null &
|
||||
fi
|
||||
rm -f $UPDATED_TARGETS 2> /dev/null
|
||||
touch $UPDATED_TARGETS 2> /dev/null
|
||||
echo -e "$OKORANGE + -- --=[ Done!$RESET"
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ "$REIMPORT" = "1" ]]; then
|
||||
if [[ ! -z "$WORKSPACE_DIR" ]]; then
|
||||
LOOT="1"
|
||||
loot
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$REIMPORT_ALL" = "1" ]]; then
|
||||
if [[ ! -z "$WORKSPACE_DIR" ]]; then
|
||||
touch $WORKSPACE_DIR/domains/targets.txt $WORKSPACE_DIR/domains/targets-all-sorted.txt $WORKSPACE_DIR/domains/domains-all-sorted.txt
|
||||
cat $WORKSPACE_DIR/domains/targets.txt $WORKSPACE_DIR/domains/targets-all-sorted.txt $WORKSPACE_DIR/domains/domains-all-sorted.txt | sort -u > $WORKSPACE_DIR/scans/updated.txt
|
||||
rm -f $WORKSPACE_DIR/nmap/openports-unsorted.txt 2> /dev/null
|
||||
rm -f $WORKSPACE_DIR/nmap/openports-sorted.txt 2> /dev/null
|
||||
rm -f $WORKSPACE_DIR/reports/host-table-report.csv 2> /dev/null
|
||||
LOOT="1"
|
||||
loot
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$RELOAD" = "1" ]]; then
|
||||
if [[ ! -z "$WORKSPACE_DIR" ]]; then
|
||||
$BROWSER $WORKSPACE_DIR/sniper-report.html 2> /dev/null > /dev/null &
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ${TARGET:0:1} =~ $REGEX ]];
|
||||
then
|
||||
SCAN_TYPE="IP"
|
||||
else
|
||||
SCAN_TYPE="DOMAIN"
|
||||
fi
|
||||
|
||||
# INITILIZE
|
||||
init
|
||||
|
||||
if [[ ! -f /tmp/update-check.txt ]]; then
|
||||
# CHECK CONNECTION STATUS
|
||||
check_online
|
||||
fi
|
||||
|
||||
if [[ ! -f /tmp/update-check.txt ]]; then
|
||||
# CHECK FOR UPDATES
|
||||
check_update
|
||||
fi
|
||||
|
||||
# CHECK FOR BLACKARCH LINUX
|
||||
if grep -q BlackArch /etc/issue; then
|
||||
DISTRO='blackarch'
|
||||
echo "Detected BlackArch GNU/Linux"
|
||||
INSTALL_DIR=$(pwd)
|
||||
echo "Setting current path to $INSTALL_DIR"
|
||||
fi
|
||||
|
||||
source modes/discover.sh
|
||||
source modes/flyover.sh
|
||||
source modes/vulnscan.sh
|
||||
source modes/fullportonly.sh
|
||||
source modes/web.sh
|
||||
source modes/webporthttp.sh
|
||||
source modes/webporthttps.sh
|
||||
source modes/webscan.sh
|
||||
source modes/massweb.sh
|
||||
source modes/masswebscan.sh
|
||||
source modes/massvulnscan.sh
|
||||
source modes/massportscan.sh
|
||||
source modes/stealth.sh
|
||||
source modes/airstrike.sh
|
||||
source modes/nuke.sh
|
||||
source modes/normal.sh
|
||||
|
||||
rm -f /tmp/update-check.txt 2> /dev/null
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user