Script Bash: compare o MAC de todos os computadores em uma rede com um específico

Aqui vou falar de um script bash que fiz para um propósito muito específico, que duvido que outros tenham essa situação, mas, desde que eu programei ... não me custa nada compartilhá-lo

Lá em cima, do que se trata?

Acontece que na minha cidade existe uma rede bastante grande, muitos de nós conectamos de forma cabeada (um cabo de rede em um switch, ligado a outro, e muitos switches hehe), mas links grandes (que não podem ser por cabo) Eles fazer com equipamento wi-fi, desta forma você tem uma rede com vários milhares de usuários, que embora não exista serviço de mail e muito menos internet, você joga WoW (entre outros), aprende, compartilha informações, etc.

O fato é que tem sido o caso de certos equipamentos wi-fi serem banidos ou expulsos da rede, seja porque seu dono viola as regras da rede, seja o que for. Então, é necessário fazer um scan a cada X vezes para verificar se alguém reconectou o MAC do computador ejetado, e é aí que entra esse script.

Simplificando, o que o script faz?

  1. Primeiro, ele faz uma varredura na sub-rede onde está sendo executado e detecta os hosts ativos (os IPs ativos)
  2. Depois, verifique se algum desses IPs é da Ubiquiti (equipamento usado para links). Na verdade, ele detecta apenas se a porta 443 está aberta em cada um dos IPs acima.
  3. Ele remove o MAC de cada dispositivo ativo e com a porta 443 aberta, ao mesmo tempo em que compara cada MAC extraído com o que está sendo pesquisado.
  4. Caso encontre uma correspondência, gera um relatório.

Vamos, para o código!

Válido para esclarecer que para o seu funcionamento necessita dos seguintes pacotes instalados: nmap… nc… arping

Bem, com o nmap ele faz o mapeamento para detectar IPs ativos, com o nc então ele verifica qual está com a porta 443 aberta, e finalmente com o arping ele extrai o MAC.

Sim, eu sei que com o nmap você pode fazer tudo isso, mas demorou vários segundos (ou minutos mais), eu preferia usar várias ferramentas em vez de apenas uma para fazer tudo funcionar mais rápido.

Agora sim…. o código!

#! / bin / bash # # Requer ter os pacotes instalados: # nmap, arping, nc # # Autor: KZKG ^ Gaara clear # Declarando variáveis ​​DATE = `data + '% 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}' `` # Removendo hosts ativos na rede (seu IP) nmap -sn 192.168. $ YOURZONE.0 / 24 | grep "relatório para" | awk '{print $ 5}'> hosts-ip # Ver qual desses hosts pode ser um Nano com a porta 443 aberta rm hosts-nanos &> / dev / null para TMPVAR em `cat hosts-ip` do nc -zv -w 2 $ TMPVAR 443 &> / dev / null if [$? -ne 1]; então echo "$ TMPVAR" >> hosts-nanos fi done # Removendo MAC de Nanos na rede rm hosts-mac &> / dev / null para TMPVAR em `cat hosts-nanos` do arping -I $ INTERFACE -f $ TMPVAR | grep "responder de" | awk '{print $ 5}' | cut -d '[' -f2 | cut -d ']' -f1 >> hosts-mac done # Comparando MACs extraídos com o MAC pesquisado em `cat hosts-mac` do if [" $ MAC "=" $ WANTEDMAC "]; então MACLINE = `cat hosts-mac | grep -n $ MAC | cut -d ':' -f1` IPMAC = `cat hosts-nanos | sed $ MACLINE'q; d'` echo -e "\ n \ t ALERTA, MAC de dispositivo roubado detectado: $ MAC ... Com IP: $ IPMAC" echo -e "\ t ... Gerando relatório ... "echo -e" Relatório gerado por SpyMac \ n "> final_report_ $ YOURZONE.info echo -e" Momento do relatório: $ DATE \ n ">> final_report_ $ YOURZONE.info echo -e" MAC do dispositivo roubado detectado: $ WANTEDMAC \ n ">> final_report_ $ YOURZONE.info echo -e" IP atualmente usado por este computador: $ IPMAC \ n ">> final_report_ $ YOURZONE.info echo -e" Relatório gerado por: $ YOURIP \ n ">> final_report_ $ YOURZONE .info fi terminado saída

Caso uma correspondência seja encontrada, ele nos mostrará o MAC encontrado e também o IP utilizado por aquele equipamento.

Isso (ainda) tem lacunas hehe

servidor

Sei que tem que melhorar, por exemplo os MACs podem ser falsificados, o MAC pode ser mudado para o computador e pronto, ainda estou procurando como ver o MAC real e não o falso se for o caso.

Além disso, ao adicionar outro loop for, posso fazer vários MACs serem comparados ao mesmo tempo e não comparar / pesquisar apenas um específico, ou seja, pesquisar os MACs que estão em uma lista, 5, 10, sejam eles quais forem . É algo que ainda tenho que fazer.

Pode ser um Nano mas está com a porta 443 bloqueada, sei como posso saber com segurança se é um dispositivo Ubiquiti ou não, ou seja, com curl (ou wget) consigo pegar o formulário de login e compará-lo com um de um Ubiquiti, este é um método mais seguro do que com a porta 443. É mais um detalhe a adicionar em versões futuras.

Gostaria também (o que será difícil para mim) de gerar um pequeno script ou mesmo um APK para ter essa ferramenta no meu Android. Eu sei que não vou conseguir colocar Play Store mas…. bueh, não é que eu queira 😀

Ah, usuários do iPhone ... nem mesmo se eu pudesse (por conhecimento e tempo) eu portaria esta ferramenta para iOS ... JUAZ JUAZ JUAZ ... olhe em seu app Store Vamos ver se eles têm algo semelhante, o que eu duvido 😀

final

Bom é tudo. Repito, acho que o script específico pode não ser útil para muitos (é para uma situação bastante específica), mas talvez partes do código sim, espero e assim também


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   lâmina de anjo dito

    Com o nmap você pode obter o ENDEREÇO ​​MAC sem a necessidade de fazer o mapeamento de ips e a verificação com o nc e o uso de arping

    a opção é -PR

    algo assim
    sudo nmap -sn IPAddress / netmask -PR | grep MAC | awk '{imprimir $ 3}

    1.    eliotime3000 dito

      Boa dica, embora exija necessariamente raiz.

  2.   dario dito

    bash geralmente é bastante ilegível, a menos que você mesmo tenha feito o script. mas seus códigos são compreensíveis xD

    Outra coisa que você pode fazer é um ping simples para os diferentes IPs, então você olha para as tabelas arp com o comando arp -a (em alguns casos você tem que instalar ferramentas de rede) e os endereços mac que foram pingados eu acho que é o mais rápido solução.

  3.   dario dito

    ou melhor ainda
    echo "test"> /dev/tcp/www.google.com/80
    se der um erro a porta (80) está fechada

  4.   Mario dito

    Olá, você poderia implementar SNMP para ser capaz de identificar questões como que tipo de equipamento é, qual marca, quais capacidades ele possui, um MAC alterado ou virtual também pode ser a resposta para o caso; você pode até mesmo "gerenciar" se o conf. O serviço SNMP está fraco. Apenas uma opinião, abrindo o leque de possibilidades do seu roteiro. Muito bom blog, fico feliz por tê-los encontrado, leio com frequência! abraço.

  5.   Frank alexander dito

    Esse script bash é tremendamente inspirador.

  6.   fogo de fogo dito

    O roteiro é muito compreensível e muito bom, obrigado, me deu boas ideias, Saudações

  7.   pegasusonline dito

    Seria ótimo se você colocasse no GITHUB, então todos nós colaboraríamos lá.

    Obrigado por compartilhar!
    lembranças

  8.   Luciano Lagassa dito

    Olá, seu script bash é muito bom, de minha parte recomendo que para melhorar a segurança você poderia implementar um método de autenticação, como o wisps, para impedir a entrada de usuários não autorizados ou expulsos. há muitos softwares que eles podem usar.

  9.   caçador dito

    Ao falsificar um mac, o que você faz é enviar o mac falso em pacotes (camada 2 OSI), você não pode descobrir o verdadeiro a menos que a placa de rede do invasor seja reiniciada.

  10.   Alexandre Seijas dito

    Estou interessado no seu roteiro ... bem, estou procurando um um pouco mais complexo ou talvez simples.

    o que acontece é que tenho uma grande rede de 250 máquinas e há pontos de wi-fi mas compram o mesmo terreno ...

    Você saberá como eu poderia fazer um mac comparar com um ip e que ele deveria ser declarado previamente, então quando houver uma pessoa engraçada que mude o ip, tenha um alerta que o ip e o mac não combinam.

    Espero ter me explicado….

    Embora eu tenha procurado em todos os lugares, não consigo encontrar nada sobre isso….

  11.   Hotmail dito

    Obrigado por compartilhar o script, terei que fazer algumas modificações nele, mas é basicamente o que eu estava procurando, novamente apreciado. Felicidades

  12.   Isidoro dito

    Exatamente o que eu estava procurando, porque preciso do meu framboesa para detectar quando meu telefone se conecta ao wi-fi para executar outra festa.
    muito obrigado