Tutoriel Detecter ARP_Poising shell

♛ỡяğзρẫ£ẫďịй♛

Ancien Staff
Ancien Staff
26/3/15
398
567
3028
#1
Bonjour

Lors qu'une attaque ARP sur votre reseau au niveau de votre gw, gwctl affichera un message sur toutes les consoles, et emmetera des beeps aléatoires.

le script:
Code:
#!/bin/bash
#Gestion des dépendance et installation des dépendances :

declare -a DEPENDENCIES=("beep screen");
declare -a MANAGERS=("dnf" "apt-get");

for DEPENDENCY in ${DEPENDENCIES[@]};
do
    echo -n "Verification des dépendances : $DEPENDENCY "
    if hash $DEPENDENCY 2>/dev/null
    then
        echo "- OK"
    else
        echo "- ERREUR"
        for MANAGER in ${MANAGERS[@]}
        do
            if hash $MANAGER 2>/dev/null
            then
                echo -n "$DEPENDENCY manquante, Voullez-vous l'installer via $MANAGER ? [Y/N] (default is Y): "
                read ANSWER
                if [[ "$ANSWER" == "Y" || "$ANSWER" == "y" || "$ANSWER" == "" ]];
                then
                    $MANAGER" install "$DEPENDENCY
                else
                    echo "Terminating"
                    exit -1
                fi
                unset ANSWER
            fi
        done
    fi
done
##################################################################

# Déclaration des variables
ficmac="/etc/gwctl.conf"
out="/dev/null"
nbbeep=3
ipgwsalle=$(ip r | grep default | cut -d " " -f 3)
enablelog=0
log=./macgw.log

# L'adresse MAC est stockée dans un fichier au premier lancement du script

if [[ -f $ficmac ]]
        then
                source $ficmac
                macgwinit=$MAC

        else
                echo -e "Erreur de chargement du fichier $ficmac"
                read -p "Voullez qu'il soit rempli automatiquement ? [Y:n]" ANSWER
                if [[ "$ANSWER" == "Y" || "$ANSWER" == "y" || "$ANSWER" == "" ]];
                then
                        ping -c 1 $ipgwsalle >$out 2>$out
                        ip n | sed -n '/10.25.255.254/ s/.*addr \([^\s]*\) .*$/MAC=\1/p' > $ficmac
                        source $ficmac
                        macgwinit=$MAC
                else
                    echo "Yolo"
                    exit -1
                fi
                unset ANSWER
fi

#MAC DE DEBUG : rend un faux positif
#macgwinit="00:23:47:c5:23:c1"
#################

affichtop ()
{
clear
echo "--------------------------------------"
echo "| IP Passerelle : $ipgwsalle      |"
echo "| MAC Passerelle : $macgwinit |"
echo "--------------------------------------"
echo ""
}

affichmaj ()
{
        echo ""
                echo ""
                echo '    /!\  /!\  /!\  /!\  /!\  /!\  /!\  /!\  /!\  /!\  /!\'
                echo "  _ "
                echo " / \   Changement de l'adresse MAC de $ipgwsalle"
                echo "/ ! \  MAC : $macgw"
                echo "----- "
                echo '    /!\  /!\  /!\  /!\  /!\  /!\  /!\  /!\  /!\  /!\  /!\'
                echo ""
                echo "     [  Relevé initial : $horodadeb -> $macdeb  ]"
                echo ""
}

# Debut du script
while :
        do
        ping -c1 $ipgwsalle >$out
        macgw=$(ip n | grep $ipgwsalle | cut -d " " -f 5)
        if [[ $macgw != $macgwinit ]]
        then
                # On conserve l'horodatage du constat du premier changement
                if [[ -z $horodadeb ]]
                then
                        horodadeb=$(date +"%F  %R")
                        macdeb=$macgw
                        [[ $enablelog = 1 ]] && echo "$horodadeb [suivigw] - " >>$log

                fi
                affichtop
                affichmaj
                lsmod | grep "^pcspkr "
                if [[ $? -ne 0 ]]
                       then
                               snd=off
                               modprobe pcspkr 2>$out
                fi
                        echo ""
                        echo ""
                        echo ""
                        echo "---------------------------------------------"
                        echo "Controle en cours ; <CTRL> + <C> pour Quitter"
                        echo "---------------------------------------------"
                        beep -l ${RANDOM%%??} -f ${RANDOM%%??}
                        beep -l ${RANDOM%%??} -f ${RANDOM%%??}
                        beep -l ${RANDOM%%??} -f ${RANDOM%%??}
                        affichmaj > /dev/console
        fi
        sleep 1
        affichtop
        echo "-------------------------------------------------------"
        echo "Controle en cours ; <CTRL> + <c> pour Quitter----------"
        echo "Controle en cours ; <CTRL> + <a> puis <d>pour détacher-"
        echo "-------------------------------------------------------"
done
Dependences:

beeps
screen

Installation:

nommer le script gwctl.sh

Code:
mv gwctl.sh gwctl
cp gwctl /etc/init.d
update-rc.d gwctl defaults
Commande:

Code:
service gwctl start
                démmare le service
service gwctl stop
                arete le service
service gwctl control
                prend le controle de la session screen attacher au service
                        pour sortir de la session screen : "ctrl-a d"
Aller salut ;)


credit: linuxtrack.net