#!/bin/bash # + -- --=[Sn1per by 1N3@CrowdShield # + -- --=[http://xerosecurity.com # VER="5.5" BROWSER="firefox" # SET DEFAULT BROWSER INSTALL_DIR="/usr/share/sniper" PLUGINS_DIR="$INSTALL_DIR/plugins" WEB_BRUTE_QUICK="$INSTALL_DIR/wordlists/toplist-quick-sorted.txt" WEB_BRUTE_TOPLIST="$INSTALL_DIR/wordlists/toplist-sorted.txt" WEB_BRUTE_FULL="$INSTALL_DIR/wordlists/toplist-full-sorted.txt" WEB_BRUTE_INSANE="$INSTALL_DIR/wordlists/toplist-insane-sorted.txt" DOMAINS_DEFAULT="$INSTALL_DIR/wordlists/domains-all.txt" DOMAINS_FULL="$INSTALL_DIR/wordlists/domains-insane.txt" CMSMAP="/usr/share/sniper/plugins/CMSmap/cmsmap.py" SAMRDUMP="$INSTALL_DIR/bin/samrdump.py" DNSDICT6="$INSTALL_DIR/bin/dnsdict6" INURLBR="$INSTALL_DIR/bin/inurlbr.php" USER_FILE="$PLUGIN_DIR/brutex/wordlists/simple-users.txt" PASS_FILE="$PLUGIN_DIR/wordlists/password.lst" DNS_FILE="$PLUGIN_DIR/brutex/wordlists/namelist.txt" QUICK_PORTS="21,22,23,25,53,80,110,137,138,139,161,162,443,445,512,513,514,1433,3306,4444,5555,5432,5555,5900,5901,6667,7001,8080,8888,8000,10000" DEFAULT_PORTS="1,7,9,13,19,21-23,25,37,42,49,53,67,68,69,79-81,85,88,105,109-111,113,123,135,137-139,143,161,162,179,222,264,384,389,402,407,443-446,465,500,502,512-515,523-524,540,548,554,587,617,623,631,655,689,705,771,783,831,873,888,902,910,912,921,993,995,998-1000,1024,1030,1035,1090,1098-1103,1128-1129,1158,1199,1211,1220,1234,1241,1300,1311,1352,1433-1435,1440,1471,1494,1521,1530,1533,1581-1582,1604,1720,1723,1755,1811,1900,2000-2001,2049,2067,2100,2103,2121,2199,2207,2222,2323,2362,2380-2381,2525,2533,2598,2638,2809,2947,2967,3000,3037,3050,3057,3128,3200,3217,3273,3299,3306,3310,3333,3389,3460,3465,3500,3628,3632,3690,3780,3790,3817,3900,4000,4322,4433,4444-4445,4659,4672,4679,4800,4848,5000,5009,5038,5040,5051,5060-5061,5093,5168,5227,5247,5250,5351,5353,5355,5400,5405,5432-5433,5466,5498,5520-5521,5554-5555,5560,5580,5631-5632,5666,5800,5814,5900-5910,5920,5984-5986,5999-6000,6050,6060,6070,6080,6082,6101,6106,6112,6161,6262,6379,6405,6502-6504,6542,6660-6661,6667,6789,6905,6988,6996,7000-7001,7021,7071,7080,7144,7181,7210,7272,7414,7426,7443,7510,7547,7579-7580,7700,7770,7777-7778,7787,7800-7801,7878-7879,7890,7902,8000-8001,8008,8014,8020,8023,8028,8030,8050-8051,8080-8082,8085-8088,8090-8091,8095,8101,8161,8180,8205,8222,8300,8303,8333,8400,8443-8445,8503,8642,8686,8701,8787,8800,8812,8834,8880,8888-8890,8899,8901-8903,8980,8999-9005,9010,9050,9080-9081,9084,9090,9099-9100,9111,9152,9200,9256,9300,9390-9391,9495,9500,9711,9788,9809-9815,9855,9875,9910,9991,9999-10001,10008,10050-10051,10080,10098-10099,10162,10202-10203,10443,10616,10628,11000-11001,11099,11211,11234,11333,11460,12000,12174,12203,12221,12345,12397,12401,13013,13364,13500,13838,14000,14330,15000-15001,15200,16000,16102,16992,17185,17200,18881,18980,19300,19810,20000,20010,20031,20034,20101,20111,20171,20222,22222,23423,23472,23791,23943,25000,25025,26000,26122,26256,27000,27015,27017,27888,27960,28222,28784,30000,30718,31001,31099,32022,32764,32913,33000,34205,34443,37718,37777,38080,38292,40007,41025,41080,41523-41524,44334,44818,45230,46823-46824,47001-47002,48080,48899,49152,50000-50004,50013,50050,50500-50504,52302,52869,53413,55553,57772,62078,62514,65535,U:53,U:67,U:68,U:69,U:88,U:161,U:162,U:137,U:138,U:139,U:389,U:520,U:2049" DEFAULT_TCP_PORTS="1,7,9,13,19,21-23,25,37,42,49,53,69,79-81,85,88,105,109-111,113,123,135,137-139,143,161,162,179,222,264,384,389,402,407,443-446,465,500,502,512-515,523-524,540,548,554,587,617,623,631,655,689,705,771,783,831,873,888,902,910,912,921,993,995,998-1000,1024,1030,1035,1090,1098-1103,1128-1129,1158,1199,1211,1220,1234,1241,1300,1311,1352,1433-1435,1440,1471,1494,1521,1530,1533,1581-1582,1604,1720,1723,1755,1811,1900,2000-2001,2049,2067,2100,2103,2121,2199,2207,2222,2323,2362,2380-2381,2525,2533,2598,2638,2809,2947,2967,3000,3037,3050,3057,3128,3200,3217,3273,3299,3306,3310,3333,3389,3460,3465,3500,3628,3632,3690,3780,3790,3817,3900,4000,4322,4433,4444-4445,4659,4672,4679,4800,4848,5000,5009,5038,5040,5051,5060-5061,5093,5168,5227,5247,5250,5351,5353,5355,5400,5405,5432-5433,5466,5498,5520-5521,5554-5555,5560,5580,5631-5632,5666,5800,5814,5900-5910,5920,5984-5986,5999-6000,6050,6060,6070,6080,6082,6101,6106,6112,6161,6262,6379,6405,6502-6504,6542,6660-6661,6667,6789,6905,6988,6996,7000-7001,7021,7071,7080,7144,7181,7210,7272,7414,7426,7443,7510,7547,7579-7580,7700,7770,7777-7778,7787,7800-7801,7878-7879,7890,7902,8000-8001,8008,8014,8020,8023,8028,8030,8050-8051,8080-8082,8085-8088,8090-8091,8095,8101,8161,8180,8205,8222,8300,8303,8333,8400,8443-8445,8503,8642,8686,8701,8787,8800,8812,8834,8880,8888-8890,8899,8901-8903,8980,8999-9005,9010,9050,9080-9081,9084,9090,9099-9100,9111,9152,9200,9256,9300,9390-9391,9495,9500,9711,9788,9809-9815,9855,9875,9910,9991,9999-10001,10008,10050-10051,10080,10098-10099,10162,10202-10203,10443,10616,10628,11000-11001,11099,11211,11234,11333,11460,12000,12174,12203,12221,12345,12397,12401,13013,13364,13500,13838,14000,14330,15000-15001,15200,16000,16102,16992,17185,17200,18881,18980,19300,19810,20000,20010,20031,20034,20101,20111,20171,20222,22222,23423,23472,23791,23943,25000,25025,26000,26122,26256,27000,27015,27017,27888,27960,28222,28784,30000,30718,31001,31099,32022,32764,32913,33000,34205,34443,37718,37777,38080,38292,40007,41025,41080,41523-41524,44334,44818,45230,46823-46824,47001-47002,48080,48899,49152,50000-50004,50013,50050,50500-50504,52302,52869,53413,55553,57772,62078,62514,65535" DEFAULT_UDP_PORTS="53,67,68,69,88,123,161,162,137,138,139,389,520,2049" THREADS="30" OKBLUE='\033[94m' OKRED='\033[91m' OKGREEN='\033[92m' OKORANGE='\033[93m' RESET='\e[0m' REGEX='^[0-9]+$' # DEFAULT SETTINGS AUTOBRUTE="0" FULLNMAPSCAN="0" OSINT="0" ENABLE_AUTO_UPDATES="1" REPORT="1" LOOT="1" # PLUGINS SUBLIST3R="1" AMASS="1" SUBFINDER="1" DNSCAN="0" CRTSH="1" SUBOVER="1" CLOUDHUNTER="0" SSL="1" PASSIVE_SPIDER="1" BLACKWIDOW="1" METASPLOIT_IMPORT="0" DISTRO=$(cat /etc/*-release | grep DISTRIB_ID= | cut -d'=' -f2) # REMOVE HOST FROM WORKSPACE sed -i "/www.test.com/d" domains/targets-all-sorted.txt domains/domains-all-sorted.txt domains/targets.txt function help { 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 + -- --=[http://xerosecurity.com$RESET" echo -e "$OKORANGE + -- --=[sniper v$VER by 1N3$RESET" echo "" echo ' [*] NORMAL MODE' echo ' sniper -t|--target ' echo "" echo ' [*] NORMAL MODE + OSINT + RECON' echo ' sniper -t|--target -o|--osint -re|--recon' echo "" echo ' [*] STEALTH MODE + OSINT + RECON' echo ' sniper -t|--target -m|--mode stealth -o|--osint -re|--recon' echo "" echo ' [*] DISCOVER MODE' echo ' sniper -t|--target -m|--mode discover -w|--workspace ' echo "" echo ' [*] SCAN ONLY SPECIFIC PORT' echo ' sniper -t|--target -m port -p|--port ' echo "" echo ' [*] FULLPORTONLY SCAN MODE' echo ' sniper -t|--target -fp|--fullportonly' echo "" echo ' [*] PORT SCAN MODE' echo ' sniper -t|--target -m|--mode port -p|--port ' echo "" echo ' [*] WEB MODE - PORT 80 + 443 ONLY!' echo ' sniper -t|--target -m|--mode web' echo "" echo ' [*] HTTP WEB PORT MODE' echo ' sniper -t|--target -m|--mode webporthttp -p|--port ' echo "" echo ' [*] HTTPS WEB PORT MODE' echo ' sniper -t|--target -m|--mode webporthttps -p|--port ' echo "" echo ' [*] ENABLE BRUTEFORCE' echo ' sniper -t|--target -b|--bruteforce' echo "" echo ' [*] AIRSTRIKE MODE' echo ' sniper -f|--file /full/path/to/targets.txt -m|--mode airstrike' echo "" echo ' [*] NUKE MODE WITH TARGET LIST, BRUTEFORCE ENABLED, FULLPORTSCAN ENABLED, OSINT ENABLED, RECON ENABLED, WORKSPACE & LOOT ENABLED' echo ' sniper -f--file /full/path/to/targets.txt -m|--mode nuke -w|--workspace ' echo "" echo ' [*] LIST WORKSPACES' echo ' sniper --list' echo "" echo ' [*] GET SNIPER SCAN STATUS' echo ' sniper --status' echo "" echo ' [*] LOOT REIMPORT FUNCTION' echo ' sniper -w --reimport' echo "" echo ' [*] LOOT REIMPORT FUNCTION' echo ' sniper -w --reload' echo "" echo ' [*] UPDATE SNIPER' echo ' sniper -u|--update' echo "" echo "" 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 + -- --=[http://xerosecurity.com$RESET" echo -e "$OKORANGE + -- --=[sniper v$VER by 1N3$RESET" echo "" } function sniper_status { watch -n 1 -c 'ps -ef | egrep "hydra|ruby|python|dirsearch|amass|nmap|metasploit|curl|wget" && echo "NETWORK CONNECTIONS..." && netstat -an | egrep "TIME_WAIT|EST"' } function check_online { 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[*] Checking for active internet connection [$RESET${OKRED}FAIL${RESET}$OKBLUE]" echo -e "$OKBLUE[$RESET${OKRED}i${RESET}$OKBLUE] sniper is running in offline mode.$RESET" else ONLINE="1" echo -e "$OKBLUE[*] Checking for active internet connection [$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET" fi fi } function check_update { if [ "$ENABLE_AUTO_UPDATES" == "1" ] && [ "$ONLINE" == "1" ]; then LATEST_VER=$(curl --connect-timeout 3 -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 update\" $RESET" fi fi } function update { logo echo -e "$OKBLUE[*] Checking for updates...[$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 3 -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 # COMMAND LINE SWITCHES POSITIONAL=() while [[ $# -gt 0 ]] do key="$1" case $key in -h|--help) help shift # past argument ;; -t|--target) TARGET="$2" shift # past argument shift # past argument ;; -b|--bruteforce) AUTOBRUTE="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) MODE="$2" shift # past argument shift # past argument ;; -p|--port) 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 ;; -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) WORKSPACE="$2" WORKSPACE_DIR="$INSTALL_DIR/loot/workspace/$WORKSPACE" shift # past argument shift # past argument ;; --list) logo ls -l $INSTALL_DIR/loot/workspace/ echo "" echo "cd /usr/share/sniper/loot/workspace/" 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 logo echo "You need to specify a target or workspace to use. Type sniper --help for command usage." exit fi LOOT_DIR="/usr/share/sniper/loot/$TARGET" cd $INSTALL_DIR function init { if [ ! -z $WORKSPACE_DIR ]; then LOOT_DIR=$WORKSPACE_DIR fi echo -e "$OKBLUE[*] Saving loot to $LOOT_DIR [$RESET${OKGREEN}OK${RESET}$OKBLUE]$RESET" mkdir -p $LOOT_DIR 2> /dev/null mkdir $LOOT_DIR/domains 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/web 2> /dev/null mkdir $LOOT_DIR/notes 2> /dev/null mkdir $LOOT_DIR/scans 2> /dev/null TARGET="$(echo $TARGET | sed 's/https:\/\///g' | sed 's/http:\/\///g')" /etc/init.d/metasploit start 2> /dev/null > /dev/null 2>&1 & msfdb start 2> /dev/null > /dev/null } function loot { 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 echo -e "$OKBLUE[*] Opening loot directory $LOOT_DIR [$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 + -- --=[Current reports...$RESET" ls -lh $LOOT_DIR/output/*.txt 2> /dev/null > /dev/null echo -e "$OKORANGE + -- --=[Generating reports...$RESET" cd ./output for a in `ls sniper-*.txt 2>/dev/null`; do # HTML OUTPUT cat "$a" | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" > $LOOT_DIR/reports/$a.txt echo "$a" | aha > $LOOT_DIR/reports/$a.html 2> /dev/null cat "$a" | aha >> $LOOT_DIR/reports/$a.html 2> /dev/null #$INSTALL_DIR/bin/pyText2pdf.py -o $LOOT_DIR/reports/$a.pdf $LOOT_DIR/reports/$a.txt 2> /dev/null > /dev/null done cd .. echo -e "$OKORANGE + -- --=[Sorting all domains...$RESET" touch $LOOT_DIR/domains/domains-all-sorted.txt 2> /dev/null sort -u $LOOT_DIR/domains/*-full.txt > $LOOT_DIR/domains/domains-all-sorted.txt 2> /dev/null sort -u $LOOT_DIR/domains/targets.txt > $LOOT_DIR/domains/targets-all-sorted.txt 2> /dev/null diff $LOOT_DIR/domains/targets-all-sorted.txt $LOOT_DIR/domains/domains-all-sorted.txt | grep \> | awk '{print $2}' > $LOOT_DIR/domains/targets-all-unscanned.txt SNIPER_PRO=$INSTALL_DIR/pro.sh if [ -f $SNIPER_PRO ]; then echo -e "$OKORANGE + -- --=[Loading Sn1per Professional...$RESET" source $INSTALL_DIR/pro.sh echo -e "$OKORANGE + -- --=[Opening workspace directory...$RESET" $BROWSER $LOOT_DIR/sniper-report.html 2> /dev/null > /dev/null & else echo -e "$OKRED + -- --=[Sn1per Professional is not installed. To download Sn1per Professional, go to https://xerosecurity.com. $RESET" $BROWSER https://xerosecurity.com 2> /dev/null > /dev/null & fi echo -e "$OKORANGE + -- --=[Done!$RESET" } if [ "$REIMPORT" = "1" ]; then if [ ! -z "$WORKSPACE_DIR" ]; then 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 # CHECK CONNECTION STATUS check_online # CHECK FOR UPDATES check_update # 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/web.sh source modes/webporthttp.sh source modes/webporthttps.sh source modes/stealth.sh source modes/airstrike.sh source modes/nuke.sh source modes/normal.sh exit 0