Script Bash: comparați MAC-ul tuturor computerelor dintr-o rețea cu unul specific

Aici am sa va povestesc despre un script bash pe care l-am facut cu un scop foarte anume, si ma indoiesc ca altii vor avea aceasta situatie dar, din moment ce l-am programat... nu ma costa nimic sa-l impartasesc :)

Sus, despre ce este vorba?

Se întâmplă ca în orașul meu să existe o rețea destul de mare, mulți dintre noi ne conectăm prin cablu (un cablu de rețea la un comutator, legat de altul, și da multe switch-uri hehe), dar legăturile mari (care nu pot fi cablate) O fac cu echipamente Wi-Fi, în acest fel ai o rețea cu câteva mii de utilizatori și, deși nu există un serviciu de e-mail și cu atât mai puțin internet, joci WoW (printre altele), înveți, distribui informații etc.

Cert este că s-a întâmplat ca un anumit dispozitiv Wi-Fi să fie interzis sau exclus din rețea, fie pentru că proprietarul său încalcă regulile rețelei, fie din orice motiv. Deci, devine necesar să faceți o scanare la fiecare X perioadă de timp pentru a verifica dacă MAC-ul dispozitivului ejectat a fost reconectat de cineva și aici intervine acest script.

Mai simplu spus, ce face scenariul?

  1. Mai întâi scanează subrețeaua unde rulează și detectează gazdele live (IP-urile active)
  2. Apoi, verificați dacă oricare dintre acele IP-uri este un Ubiquiti (echipament folosit pentru legături). În realitate, detectează doar dacă portul 443 este deschis pe fiecare dintre IP-urile de mai sus.
  3. Extrage MAC-ul fiecărui dispozitiv live cu portul 443 deschis, comparând în același timp fiecare MAC extras cu cel căutat.
  4. Dacă găsește o potrivire, generează un raport.

Hai, la cod!

Valabil pentru a clarifica faptul că pentru funcționarea sa are nevoie de următoarele pachete instalate: nmap … nc … arping

Ei bine, cu nmap face maparea pentru a detecta IP-urile active, cu nc verifică apoi care are portul 443 deschis și, în final, cu arping extrage MAC-ul.

Da, știu că cu nmap poți face toate acestea, dar a durat câteva secunde (sau minute în plus), am preferat să folosesc mai multe instrumente în loc de doar unul pentru a face totul să funcționeze mai repede.

Acum da…. Codul!

#!/bin/bash # # Necesită instalarea pachetelor: # nmap , arping , nc # # Autor: KZKG^Gaara clear # Declararea variabilelor DATE=`date +'%Y-%m-%d_%H-%M '` INTERFACE='wlo1' WANTEDMAC='C8:CB:B8:B1:DA:E6' YOURIP=`ifconfig | grep "192.168" | awk '{print $2}'` YOURZONE=`echo $YOURIP | awk -F "." '{print $3}'` # Eliminarea gazdelor Alive din rețea (IP-ul lor) nmap -sn 192.168.$YOURZONE.0/24 | grep „raport pentru” | awk '{print $5}' > hosts-ip # Văzând care dintre acele gazde poate fi Nano, având portul 443 deschis rm hosts-nanos &> /dev/null pentru TMPVAR în `cat hosts-ip` do nc -zv - w 2 $TMPVAR 443 &> /dev/null dacă [ $? -ne 1 ]; apoi echo "$TMPVAR" >> hosts-nanos fi terminat # Eliminarea MAC din Nanos pe rețea rm hosts-mac &> /dev/null pentru TMPVAR în `cat hosts-nanos` do arping -I $INTERFACE -f $TMPVAR | grep „răspuns de la” | awk '{print $5}' | cut -d'[' -f2 | cut -d']' -f1 >> hosts-mac done # Compararea MAC-urilor extrase cu cea căutată după MAC în `cat hosts-mac` do if [ "$MAC" = "$WANTEDMAC" ]; apoi MACLINE=`cat hosts-mac | grep -n $MAC | cut -d':' -f1` IPMAC=`cat hosts-nanos | sed $MACLINE'q;d'` echo -e "\n\t ALERTĂ, MAC al dispozitivului furat detectat: $MAC ... Cu IP: $IPMAC" echo -e "\t ... Se generează raport... " echo -e "Raport generat de SpyMac\n" > final_report_$YOURZONE.info echo -e "Ora raportului: $DATE\n" >> final_report_$YOURZONE.info echo -e "Dispozitiv furat MAC detectat: $WANTEDMAC \n " >> final_report_$YOURZONE.info echo -e "IP utilizat în prezent de acel computer: $IPMAC\n" >> final_report_$YOURZONE.info echo -e "Raport generat de: $YOURIP\n" >> final_report_$ YOURZONE. info fi terminat ieșirea

Dacă se găsește o potrivire, aceasta ne va arăta MAC-ul găsit și, de asemenea, IP-ul folosit de acel dispozitiv.

Aceasta (încă) are lacune hehe

serverul

Știu că sunt lucruri de îmbunătățit, de exemplu MAC-urile pot fi falsificate, poți schimba MAC-ul dispozitivului și gata, încă mai caut cum să văd MAC-ul real și nu pe cel fals dacă este cazul .

De asemenea, adăugând o altă buclă for, pot compara mai multe MAC-uri în același timp și nu pot compara/căut doar unul anume, adică să caut MAC-urile care sunt într-o listă, 5, 10, oricare ar fi. Este ceva ce mai am de făcut.

Poate este un Nano dar are portul 443 blocat, stiu sa pot sti cu certitudine deplina daca este un dispozitiv Ubiquiti sau nu, adica cu curl (sau wget) pot obtine formularul de autentificare si il compar. cu unul dintre Ubiquiti, Aceasta este o metodă mai sigură decât cu portul 443. Este un alt detaliu de adăugat în versiunile viitoare.

De asemenea, aș dori (ceea ce îmi va fi dificil) să generez un mic script sau chiar un APK pentru a avea acest instrument pe Android-ul meu. Știu că nu o voi putea pune Joaca Store dar…. ei bine, nici eu nu vreau 😀

Ah, utilizatorii de iPhone... chiar dacă aș putea (datorită cunoștințelor și timpului) nu aș porta acest instrument pe iOS... JUAZ JUAZ JUAZ... uitați-vă în dvs. App Store Să vedem dacă întâmplător au ceva asemănător, ceea ce mă îndoiesc 😀

final

Ei bine, asta-i tot. Repet, cred că scriptul specific poate să nu fie util multora (este pentru o situație foarte specifică), dar poate că părți din cod sunt, sper că da 😀


13 comentarii, lasă-le pe ale tale

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   lame de înger el a spus

    Cu nmap puteți obține ADRESA MAC fără a fi nevoie să faceți acea mapare ips și acea verificare cu nc și acea utilizare a arpingului

    opțiunea este -PR

    ceva de genul
    sudo nmap -sn IpAddress/netmask -PR | grep MAC | awk '{printează $3}

    1.    eliotime3000 el a spus

      Sfat bun, deși necesită rădăcină.

  2.   Daryyo el a spus

    bash este de obicei destul de ilizibil, cu excepția cazului în care ați făcut singur scriptul. dar codurile tale sunt de înțeles xD

    Un alt lucru pe care îl puteți face este un simplu ping către diferitele IP-uri, apoi vă uitați la tabelele arp cu comanda arp -a (în unele cazuri trebuie să instalați instrumente net) și adresele mac care au fost trimise ping sunt salvate, cred că este cea mai rapida solutie.

  3.   Daryyo el a spus

    sau mai bine
    echo „test” > /dev/tcp/www.google.com/80
    Dacă dă o eroare, portul (80) este închis

  4.   Mario el a spus

    Bună ziua, ați putea implementa SNMP pentru a putea identifica probleme precum ce tip de echipament este, ce marcă este, ce capabilități are, un MAC schimbat sau virtual poate fi, de asemenea, răspunsul la caz; Puteți chiar să ajungeți la „gestionare” dacă conf. al serviciului snmp este slab. Doar o opinie, deschizând gama de posibilități pentru scenariul tău. Foarte bun blogul, ma bucur ca le-am gasit, le citesc des! îmbrăţişare.

  5.   Frank Alexander el a spus

    Acest script bash este extraordinar de inspirat.

  6.   ciocănit el a spus

    Scenariul este foarte ușor de înțeles și, de asemenea, foarte bun, mulțumesc, mi-a dat idei bune, Cu respect

  7.   pegasusonline el a spus

    Ar fi grozav dacă l-ați pune pe GITHUB, ca să putem colabora cu toții acolo.

    Vă mulțumim pentru distribuire!
    În ceea ce priveşte

  8.   Luciano Lagasa el a spus

    Bună ziua, scriptul tău bash este foarte bun, din partea mea recomand ca pentru a îmbunătăți securitatea să poți implementa o metodă de autentificare, precum wisp, pentru a preveni intrarea utilizatorilor neautorizați sau expulzați. Există o mulțime de software pe care le pot folosi.

  9.   dhunter el a spus

    La falsificarea unui mac, ceea ce se face este trimiterea mac-ului fals în pachete (layer 2 OSI), nu îl puteți descoperi pe cel real decât dacă placa de rețea a atacatorului este resetată.

  10.   alexander seijas el a spus

    Sunt interesat de scenariul tău... ei bine, am căutat unul puțin mai complex sau poate simplu...

    Chestia este că am o rețea mare de 250 de mașini și sunt puncte wifi dar cumpără același teren...

    Veți ști cum ați putea face un mac să compare cu un IP și că acesta ar trebui declarat în prealabil, așa că atunci când există un tip amuzant care schimbă IP-ul, veți avea o alertă că IP-ul și Mac-ul nu se potrivesc.

    sper ca m-am explicat...

    Chiar dacă am căutat peste tot, nu găsesc nimic despre asta...

  11.   Hotmail el a spus

    Mulțumesc pentru distribuirea scriptului, va trebui să fac câteva modificări, dar practic este ceea ce căutam, din nou apreciat. Salutari

  12.   Isidoro el a spus

    Exact ceea ce căutam, pentru că am nevoie ca zmeura mea să detecteze când telefonul meu se conectează la wifi pentru a rula un alt Bash.
    Mulţumesc mult