Un petit script permettant d'analyser les réactions face à l'envoie de plusieurs flags TCP
0x01. CONCEPT
Hping3 sera utilisé pour forger les paquets avec les différents flags.
Le principe est simple : envoyer un ensemble de flag, sur un ensemble de port... sur un ensemble d'adresses IP
Le synopsis :
_____ ___ ___ ___ _ ___ |_ _/ __| _ \___| __| |__ _ __ _ ___| __| _ ______ | || (__| _/___| _|| / _` / _` |___| _| || |_ /_ / |_| \___|_| |_| |_\__,_\__, | |_| \_,_/__/__| |___/ Usage: tcp-flag-fuzz <-i interface> <-t target> <-p dest-ports> <-f tcp-flags*> <-o report.csv> tcp flags : S F U P A R may be a combination of tcp flags, ex.: XMAS scan = FUP flags Ex.: tcp-flag-fuzz eth0 192.168.0.1 80 S F FUP A
La sortie se présente ainsi :
Target:Port: ->
0x02. DEMO

0x03. SCRIPT
#!/bin/bash APP="$(basename "$0")" ####################################################################################################################### # # Usage # ## if [ $# -eq 0 ]; then echo printf "\033[1;34m" echo ' _____ ___ ___ ___ _ ___' echo '|_ _/ __| _ \___| __| |__ _ __ _ ___| __| _ ______' echo ' | || (__| _/___| _|| / _` / _` |___| _| || |_ /_ /' echo ' |_| \___|_| |_| |_\__,_\__, | |_| \_,_/__/__|' echo ' |___/' printf "\033[0m" echo echo "Usage: $APP <-i interface> <-t target> <-p dest-ports> <-f tcp-flags*> <-o report.csv>" echo echo "tcp flags : S F U P A R" echo " may be a combination of tcp flags, ex.: XMAS scan = FUP flags" echo echo "Ex.: $APP eth0 192.168.0.1 80 S F FUP A" echo exit 0 fi ####################################################################################################################### # # Args # ## shift # -i <interface> ifce="$1" ; shift shift # -t <target1 [target2 [target3 [...]]]> while true ; do [ "$1" = "-p" ] && break [ $# -eq 0 ] && break targets=$targets"$1 " shift done shift # -p <port1 [port2 [port3 [...]]]> while true ; do [ "$1" = "-f" ] && break [ $# -eq 0 ] && break ports=$ports"$1 " shift done shift # -f <flags1 [flags2 [flags3 [...]]]> while true ; do [ "$1" = "-o" ] && break [ $# -eq 0 ] && break flags=$flags"$1 " shift done shift report=$1 rm -f "$report" src="$(ip a show dev "$ifce"|awk '/inet / { print $2 }'|cut -d'/' -f1)" ####################################################################################################################### # # Scan # ## echo for target in $targets ; do echo -e "\033[1;36mTarget: $target\033[0m" for dport in $ports ; do echo -e "\033[1;35mPort: $dport\033[0m" for flag in $flags ; do sport=$(( (RANDOM+1024)%65535 )) ans=$(hping3 -c 1 -$flag $target -s $sport -p $dport 2>/dev/null|awk -F'=' '/^len=.+flags=/ { print $7 }'|cut -d' ' -f1|grep . || echo '<none>') echo "$flag -> $ans" echo "$src;$sport;$flag;$target;$dport;$ans" >> $report done echo done echo done
=> Écrit par : Nicolas, le 12 décembre 2018