Script Bash: comparez le MAC de tous les ordinateurs d'un réseau avec un ordinateur spécifique

Ici je vais parler d'un script bash que j'ai fait dans un but très précis, dont je doute que d'autres aient cette situation mais, puisque je l'ai programmé ... ça ne me coûte rien de le partager 🙂

A l'étage, de quoi s'agit-il?

Il arrive que dans ma ville il y ait un réseau assez grand, beaucoup d'entre nous se connectent de manière filaire (un câble réseau à un commutateur, relié à un autre, et de nombreux commutateurs hehe), mais de gros liens (qui ne peuvent pas être par câble) Ils le font avec des équipements Wi-Fi, de cette manière vous avez un réseau avec plusieurs milliers d'utilisateurs, que bien qu'il n'y ait pas de service de messagerie et beaucoup moins d'Internet, vous jouez à WoW (entre autres), vous apprenez, partagez des informations, etc.

Le fait est que certains équipements Wi-Fi sont interdits ou expulsés du réseau, soit parce que leur propriétaire enfreint les règles du réseau, soit quoi que ce soit. Il est donc nécessaire de faire une analyse à chaque fois X pour vérifier si quelqu'un a reconnecté le MAC de l'ordinateur éjecté, et c'est là que ce script entre en jeu.

En termes simples, que fait le script?

  1. Il effectue d'abord une analyse dans le sous-réseau où il s'exécute et détecte les hôtes en direct (les adresses IP actives)
  2. Ensuite, vérifiez si l'une de ces adresses IP est un Ubiquiti (équipement utilisé pour les liens). Il ne détecte en fait que si le port 443 est ouvert sur chacune des adresses IP ci-dessus.
  3. Il supprime le MAC de chaque périphérique en direct et avec le port 443 ouvert, tout en comparant en même temps chaque MAC extrait avec celui recherché.
  4. Au cas où il trouve une correspondance, il génère un rapport.

Allez, au code!

Valide pour préciser que pour son fonctionnement, il a besoin des packages suivants installés: nmap… nc… arping

Eh bien, avec nmap, il fait le mappage pour détecter les adresses IP actives, avec nc puis il vérifie laquelle a le port 443 ouvert, et enfin avec arping, il extrait le MAC.

Oui, je sais qu'avec nmap vous pouvez faire tout cela, mais cela a pris plusieurs secondes (ou minutes de plus), j'ai préféré utiliser plusieurs outils au lieu d'un seul pour que tout fonctionne plus vite.

Maintenant oui…. le code!

#! / bin / bash # # Nécessite l'installation des packages: # nmap, arping, nc # # Auteur: KZKG ^ Gaara clear # Déclaration des variables DATE = `date + '% Y-% m-% d_% H-% M '`INTERFACE =' wlo1 'WANTEDMAC =' C8: CB: B8: B1: DA: E6 'VOTREIP =` ifconfig | grep "192.168" | awk '{print $ 2}' `` VOTREZONE = `echo $ YOURIP | awk -F "." '{print $ 3}' `` # Pulling Alive Hosts sur le réseau (votre IP) nmap -sn 192.168. $ YOURZONE.0 / 24 | grep "rapport pour" | awk '{print $ 5}'> hosts-ip # Voir lequel de ces hôtes peut être un Nano en ayant le port 443 ouvert rm hosts-nanos &> / dev / null pour TMPVAR dans `cat hosts-ip` do nc -zv -w 2 $ TMPVAR 443 &> / dev / null si [$? -ne 1]; then echo "$ TMPVAR" >> hosts-nanos fi done # Suppression de MAC de Nanos sur le réseau rm hosts-mac &> / dev / null pour TMPVAR dans `cat hosts-nanos` do arping -I $ INTERFACE -f $ TMPVAR | grep "réponse de" | awk '{imprimer $ 5}' | couper -d '[' -f2 | cut -d ']' -f1 >> hosts-mac done # Comparaison des MAC extraits avec le MAC recherché dans `cat hosts-mac` do if [" $ MAC "=" $ WANTEDMAC "]; alors MACLINE = `chat hôtes-mac | grep -n $ MAC | cut -d ':' -f1` IPMAC = `chat hôtes-nanos | sed $ MACLINE'q; d'` echo -e "\ n \ t ALERT, MAC du périphérique volé détecté: $ MAC ... Avec IP: $ IPMAC" echo -e "\ t ... Génération du rapport ... "echo -e" Rapport généré par SpyMac \ n "> rapport_final_ $ YOURZONE.info echo -e" Moment du rapport: $ DATE \ n ">> rapport_final_ $ YOURZONE.info echo -e" MAC du périphérique volé détecté: $ WANTEDMAC \ n ">> rapport_final_ $ YOURZONE.info echo -e" IP actuellement utilisée par cet ordinateur: $ IPMAC \ n ">> rapport_final_ $ YOURZONE.info echo -e" Rapport généré par: $ YOURIP \ n ">> rapport_final_ $ YOURZONE .info fi terminé quitter

Dans le cas où une correspondance est trouvée, il nous montrera le MAC trouvé ainsi que l'adresse IP utilisée par cet équipement.

Cela (encore) a des lacunes hehe

serveur

Je sais qu'il y a des choses à améliorer, par exemple les MAC peuvent être falsifiés, le MAC peut être changé en ordinateur et c'est tout, je cherche toujours comment voir le vrai MAC et pas le faux si c'est le cas.

De plus, en ajoutant une autre boucle for, je peux faire comparer plusieurs MAC en même temps et ne pas comparer / rechercher uniquement un MAC spécifique, c'est-à-dire rechercher les MAC qui sont dans une liste, 5, 10, quels qu'ils soient . C'est quelque chose que je n'ai pas encore fait.

C'est peut-être un Nano mais il a le port 443 bloqué, je sais comment savoir en toute sécurité s'il s'agit d'un appareil Ubiquiti ou non, c'est-à-dire qu'avec curl (ou wget) je peux obtenir le formulaire de connexion et le comparer avec l'un d'un Ubiquiti, c'est une méthode plus sécurisée qu'avec le port 443. C'est un autre détail à ajouter dans les futures versions.

J'aimerais aussi (ce qui est déjà difficile pour moi) générer un petit script voire un APK pour avoir cet outil sur mon Android. Je sais que je ne pourrai pas le mettre Play Store mais…. bueh, ce n'est pas que je veux 😀

Ah, les utilisateurs d'iPhone ... même si je peux (pour la connaissance et le temps) je porterais cet outil sur iOS ... JUAZ JUAZ JUAZ ... regardez dans votre App Store Voyons si par hasard ils ont quelque chose de similaire, ce dont je doute 😀

fin

Le bien est tout. Je le répète, je pense que le script spécifique peut ne pas être utile à beaucoup (c'est pour une situation assez spécifique), mais peut-être que certaines parties du code le seront, espérons-le et ainsi de suite »


13 commentaires, laissez le vôtre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   lame d'ange dit

    Avec nmap, vous pouvez obtenir l'adresse MAC sans avoir besoin de faire ce mappage ips et cette vérification avec nc et cette utilisation d'arping

    l'option est -PR

    quelque chose comme ça
    sudo nmap -sn IpAddress / masque de réseau -PR | grep MAC | awk '{print $ 3}

    1.    éliotime3000 dit

      Bonne astuce, même si elle nécessite forcément la racine.

  2.   Daryo dit

    bash est généralement illisible à moins que vous n'ayez fait le script vous-même. mais vos codes sont compréhensibles xD

    Une autre chose que vous pouvez faire est un simple ping aux différentes adresses IP, puis vous regardez les tables arp avec la commande arp -a (dans certains cas, vous devez installer des outils net) et les adresses mac qui ont été pingées, je pense que c'est la solution la plus rapide.

  3.   Daryo dit

    ou mieux encore
    echo "test"> /dev/tcp/www.google.com/80
    s'il donne une erreur le port (80) est fermé

  4.   Mario dit

    Bonjour, pourriez-vous implémenter SNMP pour être en mesure d'identifier des problèmes tels que le type d'équipement dont il s'agit, la marque, les capacités dont il dispose, cela peut également être la réponse au cas d'un MAC modifié ou virtuel; vous pouvez même arriver à "gérer" si le fichier conf. Le service snmp est faible. Juste un avis, ouvrant le champ des possibilités de votre script. Très bon blog, je suis content de les avoir trouvés, je les lis souvent! étreinte.

  5.   Frank Alexander dit

    Ce script bash est extrêmement inspirant.

  6.   pétard dit

    Le script est très compréhensible et très bon, merci, il m'a donné de bonnes idées, Salutations

  7.   pegasusonline dit

    Ce serait génial si vous le mettiez sur GITHUB, donc nous collaborerions tous là-bas.

    Merci pour le partager!
    salutations

  8.   Luciano Lagassa dit

    Bonjour, votre script bash est très bon, pour ma part je recommande que pour améliorer la sécurité, vous puissiez implémenter une méthode d'authentification, comme des wisps, afin d'empêcher les utilisateurs non autorisés ou expulsés d'entrer. ils peuvent utiliser de nombreux logiciels.

  9.   chasseur dit

    Lors de l'usurpation d'un mac, ce que vous faites est d'envoyer le faux mac par paquets (couche 2 OSI), vous ne pouvez pas découvrir le vrai à moins que la carte réseau de l'attaquant ne soit réinitialisée.

  10.   Alexander Seijas dit

    Je suis intéressé par votre scénario ... eh bien, j'en cherchais un un peu plus complexe ou peut-être simple ...

    le truc, c'est que j'ai un grand réseau de 250 machines et il y a des points Wi-Fi mais ils achètent la même parcelle ...

    Vous saurez comment je pourrais faire comparer un mac avec une ip et qu'il devrait être préalablement déclaré, alors quand il y a une personne drôle qui change l'ip, ayez une alerte que l'ip et le mac ne correspondent pas.

    J'espère que je me suis expliqué….

    Même si j'ai cherché partout, je ne trouve rien à ce sujet….

  11.   Hotmail dit

    Merci d'avoir partagé le script, je vais devoir y apporter quelques modifications mais en gros c'est ce que je cherchais, encore une fois apprécié. À votre santé

  12.   Isidoro dit

    Exactement ce que je cherchais, car j'ai besoin que ma framboise détecte quand mon téléphone se connecte au wifi pour exécuter un autre bash.
    Merci beaucoup