Script Bash: Comparar MAC de tots els equips d'una xarxa amb una específica

Aquí els parlaré d'un script en bash que vaig fer per a una finalitat molt específica, que dubto que altres tinguin aquesta situació però, ja que el vaig programar ... no em costa res compartir-🙂

A dalt, ¿de què va això?

Passa que a la meva ciutat hi ha una xarxa bastant gran, molts ens connectem de manera cablejada (un cable de xarxa a un switch, enllaçat a un altre, ia si molts switches jeje), però els enllaços grans (que no poden ser per cable) es fan amb equips wifi, d'aquesta manera es té una xarxa amb diversos milers d'usuaris, que si bé no hi ha servei de correu ni moltíssim menys internet, si es juga WoW (entre d'altres), s'aprèn, comparteix informació, etc.

El cas és que s'ha donat el cas que es banea o expulsa de la xarxa a determinat equip wifi, bé perquè el seu amo incompleix normes de la xarxa, o pel que sigui. Llavors, es fa necessari fer un scan cada X temps per revisar si la MAC de l'equip expulsat algú ho ha tornat a connectar, i aquí és on entra aquest script.

De manera simple, què fa l'script?

  1. Primer fa un scan a la xarxa que executi i detecta els hosts vius (les IPs actives)
  2. Després, revisa si alguna d'aquestes IPs és un Ubiquiti (equips que s'usen per als enllaços). En realitat només detecta si el port 443 està obert en cadascuna de les IPs anteriors.
  3. Treu la MAC de cada equip viu i amb el port 443 obert, mentre que a el mateix temps va comparant cada MAC extreta amb la qual es busca.
  4. En cas que trobi una coincidència, genera un informe.

Va, a l'code!

Vàlid aclarir que per al seu funcionament necessita els següents paquets instal·lats: nmap ... nc ... arping

Doncs amb nmap fa el mapeig per detectar IPs actives, amb nc després comprova quin té el port 443 obert, i finalment amb arping extreu la MAC.

Sí, sé que amb nmap es pot fer tot això, però demorava diversos segons (o minuts més), vaig preferir usar diverses eines en comptes de solament una perquè funcioni tot més ràpid.

Ara sí .... el code!

#! / Bin / bash # # Requereix tenir instal·lats els paquets: # nmap, arping, nc # # Autor: KZKG ^ Gaara clear # Declarant variables DATE = `date + '% I-% m-% d_% H-% M ' `INTERFÍCIE =' wlo1 'WANTEDMAC =' C8: CB: B8: B1: DA: E6 'YOURIP =` ifconfig | grep "192.168" | awk '{print $ 2}' `YOURZONE =` echo $ YOURIP | awk -F "." '{Print $ 3}' `# Traient els Hosts Alive a la xarxa (la seva IP) nmap -sn 192.168. $ YOURZONE.0 / 24 | grep "report for" | awk '{print $ 5}'> hosts-ip # Veient quins d'eixos Hosts poden ser un Nano a l'tenir el port 443 obert rm hosts-nanos &> / dev / null for TMPVAR in `cat hosts-ip` do nc -zv -w 2 $ TMPVAR 443 &> / dev / null if [$? -ne 1]; then echo "$ TMPVAR" >> hosts-nanos fi done # Traient MAC de Nanos a la xarxa rm hosts-mac &> / dev / null for TMPVAR in `cat hosts-nanos` do arping -I $ INTERFÍCIE -f $ TMPVAR | grep "reply from" | awk '{print $ 5}' | cut -d '[' -F2 | cut -d ']' -f1 >> hosts-mac done # Comparant MACs extretes amb la buscada for MAC in `cat hosts-mac` do if [" $ MAC "=" $ WANTEDMAC "]; then MACLINE = `cat hosts-mac | grep -n $ MAC | cut -d ':' -f1` IPMAC = `cat hosts-nanos | set $ MACLINE'q; d' `echo -e" \ n \ t ALERTA, MAC d'equip robat detectada: $ MAC ... Amb IP: $ IPMAC "echo -e" \ t ... Generant Informe ... "echo -e" informe generat per SpyMac \ n "> final_report_ $ YOURZONE.info echo -e" Moment de l'informe: $ DATE \ n ">> final_report_ $ YOURZONE.info echo -e" MAC d'equip robat detectada: $ WANTEDMAC \ n ">> final_report_ $ YOURZONE.info echo -e" IP que utilitza actualment aquest equip: $ IPMAC \ n ">> final_report_ $ YOURZONE.info echo -e" Informe generat per: $ YOURIP \ n ">> final_report_ $ YOURZONE.info fi done exit

En cas que es trobi una coincidència, ens mostrarà la MAC trobada ia més, la IP que usa aquest equip.

Això (encara) té llacunes jeje

servidor

Sé que hi ha coses a millorar, per exemple les MACs es poden falsejar, se li pot canviar la MAC a l'equip i llest, encara estic buscant com veure la MAC real i no la falsa si es dóna el cas.

També, agregant un altre cicle for puc fer que es comparin diverses MACs a el mateix temps i no comparar / buscar només una a específic, és a dir, que es busquin les MACs que estiguin en un llistat, 5, 10, les que siguin. És una cosa que tinc per fer encara.

Potser és un Nano però té el port 443 bloquejat, sé com poder amb total seguretat saber si és un equip Ubiquiti o no, o sigui amb curl (o wget) puc treure el formulari de login i comparar-lo amb un d'un Ubiquiti, aquest és un mètode més segur que amb el port 443. és un altre detall a afegir en futures versions.

També m'agradaria (cosa que ja sí que em resultarà difícil) generar un petit script o inclusivament un APK per tenir aquesta eina en el meu Android. Sé que no podré posar-la en el Play Store però .... bueh, tampoc és que vulgui 😀

Ah, els usuaris d'iPhone ... ni encara que pugui (per coneixements i temps) portaria aquesta eina a iOS ... JUAZ JUAZ JUAZ ... busquin en la seva App Store a veure si de casualitat tenen alguna cosa semblant, cosa que dubto 😀

Final

Bé és tot. Repeteixo, crec que l'script en específic potser no els sigui d'utilitat a molts (és per a una situació bastant específica), però potser parts de l'code si, tant de bo i sigui així 😀


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   angelblade va dir

    Amb nmap pots obtenir les MAC ADDRESS sense requerir fer aquest mapeig de ips i aquesta verificació amb nc i aquest ús de arping

    l'opció és -PR

    alguna cosa així
    suo nmap -sn IpAddress / netmask -PR | grep MAC | awk '{print $ 3}

    1.    eliotime3000 va dir

      Bon tip, encara que requereix de root obligatòriament.

  2.   donaro va dir

    en general bash és bastant il·legible llevat que sigui un mateix el que va fer l'script. però els teus codis si són comprensibles xD

    una altra cosa que pots fer és un simple ping a les diferents ip després mires les taules arp amb la comanda arp -a (en alguns casos cal instal·lar net tools) i queda guardada les adreces mac a les que se'ls va fer ping crec que és la solucio mes rapida.

  3.   donaro va dir

    o millor encara
    trobo «test»> /dev/tcp/www.google.com/80
    si dóna error al port (80) aquesta tancat

  4.   Mario va dir

    Hola, podries implementar SNMP per poder identificar temes com quin tipus d'equip és, que marca, que capacitats posseeix, també pot ser la resposta a el cas una MAC canviada o virtual; fins i tot pots arribar a «administrar» si la conf. de l'servei snmp és fluixa. Només una opinió, obrint el ventall de possibilitats del teu script. Molt bo el Bloc, m'alegro d'haver-los trobat, els llegeixo seguit! abraçada.

  5.   Frank Alexander va dir

    Aquest script bash és tremendament inspirador.

  6.   firecold va dir

    Molt comprensible l'script i molt bo a més, gràcies em va donar bones idees, Salutacions

  7.   Pegasusonline va dir

    estaria boníssim si ho posessis en GitHub, així tots col·laboraríem ahi.

    Gràcies per compartir!
    Salutacions

  8.   Luciano Lagassa va dir

    hola, molt bo el teu script bash, per la meva part et recomano que per millorar la seguretat podrien implementar un mètode de autenficación, com els WISP, per així poder evitar que ingressin usuaris no autoritzats o expulsats. hi ha molt softeware que poden utilitzar.

  9.   caçador va dir

    A l'falsejar 2 mac el que es fa és enviar la mac falsa en els paquets (layer XNUMX OSI), no pots descobrir la real llevat que se li torna a arrencar la targeta de xarxa a l'atacant.

  10.   alexander Seijas va dir

    m'interessa el teu script ... bé he estat buscant un una mica més complex o potser senzill ..

    la coses és que tinc una xarxa gran de 250 màquines i hi ha punts wifi però compraten la mateixa trama ...

    sabras com podria fer que una mac es compari amb una ip i que prèviament hauria d'estar declarada, així quan hi ha un graciós que es canvia la ip tenir una alerti que no coincideixen la ip i la mac ..

    espere haver-me explicat ....

    tot i que he buscat per tot arreu no trobo res sobre això ....

  11.   Hotmail va dir

    Gràcies per compartir l'script, hauré de fer-li algunes modificacions però bàsicament és el que estava buscant, novament s'agraeix. Salutacions

  12.   Isidor va dir

    Just el que buscava, perquè necessito que el meu raspberry detecti quan el meu telèfon es connecta a l'wifi per executar un altre Bash.
    Moltes gràcies