arp-scan - Envie solicitações ARP para hosts de destino e exiba respostas
arp-scan [options] [hosts...]
Target hosts must be specified on the command line unless the --file or --localnet option is used.
Targets can be IPv4 addresses or hostnames. You can also use CIDR notation (10.0.0.0/24) (network and broadcast included), ranges (10.0.0.1-10.0.0.10), and network:mask (10.0.0.0:255.255.255.0).
arp-scan envia pacotes de solicitação ARP para os hosts especificados e exibe todas as respostas recebidas. A interface de rede pode ser especificada com a opção --interface. Se nenhuma interface for especificada, arp-scan selecionará a interface configurada de menor número (excluindo loopback).
arp-scan usa soquetes brutos, o que requer privilégios em alguns sistemas:
arp-scan reconhece recursos. Requer CAP_NET_RAW no conjunto permitido e apenas habilita esse recurso para as funções necessárias. use setcap cap_net_raw+p /path/to/arp-scan para adicionar CAP_NET_RAW ao conjunto permitido do executável arp-scan. O suporte a recursos também torna o root SUID muito mais seguro porque o arp-scan eliminará todos os recursos, exceto CAP_NET_RAW, e não será executado com privilégios de root completos.
Você precisa de acesso de leitura/gravação para /dev/bpf*
A execução como root ou root SUID funcionará em qualquer sistema operacional, mas outros métodos são preferíveis sempre que possível.
O ARP opera apenas na rede local e não pode ser roteado. Embora o protocolo ARP use endereços IPv4, ele não é um protocolo IP e arp-scan pode ser usado em interfaces sem um endereço IPv4.
Uma solicitação ARP é enviada para cada destino. Se um host não responder, a solicitação será reenviada mais uma vez. O número de novas tentativas pode ser alterado com a opção --retry. Reduzir o número de novas tentativas reduzirá o tempo de varredura com o risco de perder alguns resultados devido à perda de pacotes.
Você pode especificar a largura de banda que arp-scan usará com a opção --bandwidth. O padrão é 256.000 bits por segundo. Aumentar a largura de banda reduzirá o tempo de varredura, mas definir uma largura de banda muito alta pode causar uma alta taxa de pacote de transmissão. Outra forma de especificar a taxa de pacotes é com a opção --interval.
O tempo para uma varredura de passagem única (ou seja, com --retry=1) é:
tempo=n vezes i + t + o
Onde n é o número de hosts, i é o intervalo (dado com --interval ou calculado a partir de --bandwidth), t é o tempo limite (especificado com --timeout) e o é o tempo de sobrecarga necessário para carregar a lista de destino e ler os arquivos de mapeamento MAC/Fornecedor. A sobrecarga é normalmente insignificante (normalmente em torno de 100ms), mas pode ser reduzida ainda mais pela opção --quiet. Para listas pequenas de hosts, o valor do tempo limite dominará, mas para listas grandes, o intervalo do pacote é o valor mais importante.
Qualquer parte da solicitação ARP pode ser modificada por meio do uso das opções --arpXXX conforme mostrado na tabela abaixo:
MESA
A opção mais comum é --arpspa, que define o endereço IPv4 de origem na solicitação ARP, permitindo que a solicitação ARP use um endereço de origem diferente do endereço da interface. Isso permite o uso de arp-scan em interfaces sem endereço IPv4. Nota: Definir ar$spa para o endereço IP do destino faz com que alguns sistemas operacionais relatem um conflito de endereço quando recebem uma solicitação ARP para seu próprio endereço.
Você também pode alterar os valores no cabeçalho do quadro Ethernet conforme mostrado abaixo:
MESA
A opção --destaddr que define o endereço Ethernet de destino é a única comumente usada.
Por padrão, as respostas ARP são exibidas no seguinte formato:
| <IPv4 Address> | <MAC Address> | <Vendor Details> |
Onde Endereço IPv4 é o endereço IP do destino de resposta, Endereço MAC é seu endereço de camada de link e Detalhes do fornecedor são os detalhes do fornecedor decodificados o endereço de hardware. Os campos de saída são separados por um único caractere de tabulação. Você pode alterar o formato de saída com a opção --format.
As respostas são exibidas na ordem em que são recebidas, que pode ser diferente da ordem em que as solicitações foram enviadas porque alguns hosts podem responder mais rapidamente do que outros.
A decodificação do fornecedor usa os arquivos ieee-oui.txt e mac-vendor.txt. ieee-oui.txt é gerado a partir do IEEE MA-L (OUI), MA-M, MA-S (OUI36) e registros IAB. mac-vendor.txt contém MAC adicional para mapeamentos de fornecedores e pode ser usado para adicionar mapeamentos personalizados. get-oui pode ser usado para atualizar ieee-oui.txt com os dados mais recentes dos registros IEEE.
Todos os hosts IPv4 devem responder a pacotes de solicitação ARP, incluindo hosts com filtragem de pacotes, como firewalls. Isso torna o arp-scan uma ferramenta útil para descobrir todos os hosts IPv4 ativos na rede local.
Quando uma opção assume um valor, esse valor é especificado como uma letra entre colchetes angulares. A letra indica o tipo de dado que se espera:
Cadeia de caracteres.
Inteiro decimal ou hexadecimal se precedido por 0x, por exemplo 2048 ou 0x800.
Número decimal de ponto flutuante.
endereço MAC, por exemplo 01:23:45:67:89:ab ou 01-23-45-67-89-ab (não diferencia maiúsculas de minúsculas)
endereço IPv4, por exemplo 10.0.0.1
Dados binários codificados em hexadecimal. Sem 0x inicial. (sem distinção entre maiúsculas e minúsculas).
Outra coisa - veja a descrição da opção.
Exiba esta mensagem de uso e saia.
Exibir mensagens de progresso detalhadas. Pode ser usado mais de uma vez para aumentar a verbosidade. Máx=3.
Exibe a versão do programa e sai. Exibe a versão, detalhes da licença, versão da libpcap e se o suporte ao recurso POSIX.1e está incluído.
Use a interface de rede <s>. Se esta opção não for especificada, o arp-scan procurará na lista de interfaces do sistema a interface configurada de número mais baixo (excluindo loopback).
Lê nomes de host ou endereços do arquivo especificado. Um padrão de nome ou endereço por linha. Use "-" para stdin.
Gera endereços a partir da configuração da interface. Gera lista de endereço de interface e máscara de rede (rede e transmissão incluídas). Você não pode usar a opção --file ou fornecer alvos na linha de comando. Use --interface para especificar a interface.
Use o arquivo de mapeamento do fornecedor de registro IEEE <s>. O padrão é ieee-oui.txt no diretório atual. Se não for encontrado /usr/share/arp-scan/ieee-oui.txt é usado.
Use o arquivo de mapeamento de fornecedor personalizado <s>. O padrão é mac-vendor.txt no diretório atual. Se não for encontrado /etc/arp-scan/mac-vendor.txt é usado.
Exiba a saída mínima para cada host de resposta. Somente o endereço IP e o endereço MAC são exibidos. Reduz o uso de memória em cerca de 5 MB porque os arquivos de mapeamento do fornecedor não são usados. Apenas os campos $ {ip} e $ {mac} estão disponíveis para a opção --format se - -quiet é especificado.
Suprima o texto do cabeçalho e do rodapé. Exibir apenas os detalhes do host de resposta. Útil se a saída for analisada por um script.
Não exiba pacotes duplicados. Por padrão, os pacotes duplicados são sinalizados com (DUP: n) onde n é o número de vezes que este host respondeu.
Calcule e exiba o tempo de ida e volta do pacote. O tempo é exibido em milissegundos e microssegundos fracionários. Disponibiliza o campo $ {rtt} para --format.
Especifique a string do formato de saída. O formato é uma string que será enviada para cada host que responder. Os detalhes do host podem ser incluídos inserindo referências aos campos usando a sintaxe "$ {field[;width]}". Os campos são exibidos alinhados à direita, a menos que a largura seja negativa, caso em que o alinhamento à esquerda será usado. Os seguintes nomes de campo que não diferenciam maiúsculas de minúsculas são reconhecidos:
| IP | Host IPv4 address in dotted quad format |
| Name | Host name if --resolve option given |
| MAC | Host MAC address xx:xx:xx:xx:xx:xx |
| HdrMAC | Ethernet source addr if different |
| Vendor | Vendor details string |
| Padding | Padding after ARP packet in hex if nonzero |
| Framing | Framing type if not Ethernet_II |
| VLAN | 802.1Q VLAN ID if present |
| Proto | ARP protocol if not 0x0800 |
| DUP | Packet number for duplicate packets (>1) |
| RTT | Round trip time if --rtt option given |
Somente os campos $ {ip} e $ {mac} estarão disponíveis se a opção --quiet for especificada.
Quaisquer caracteres que não sejam campos são gerados textualmente. "\" introduz escapes:
| \n | newline |
| \r | carriage return |
| \t | tab |
| \ | suppress special meaning for following character |
Você deve colocar o argumento --format entre 'aspas simples' para proteger os caracteres especiais do shell.
Exemplo: --format='$ {ip}\t$ {mac}\t$ {vendor}'
Randomize a lista de hosts de destino.
Semeie o gerador de números pseudo-aleatórios. Útil se você deseja uma ordem --random reproduzível.
Defina o número total de tentativas por host como <i>, padrão=2.
Defina o fator de espera como <f>, padrão=1,50. Multiplica o tempo limite por <f> para cada passagem.
Defina o tempo limite inicial por host para <i> ms, padrão=500. Esse tempo limite é para o primeiro pacote enviado a cada host. os tempos limites subseqüentes são multiplicados pelo fator de espera que é definido com --backoff.
Defina o intervalo mínimo do pacote como <x>. Isso controla o uso da largura de banda de saída, limitando a taxa de pacotes. Se você quiser usar até uma determinada largura de banda, é mais fácil usar a opção --bandwidth. O intervalo é em milissegundos ou microssegundos se "u" for acrescentado.
Defina a largura de banda de saída como <x>, padrão=256000. O valor é em bits por segundo. Acrescente K para kilobits ou M para megabits (múltiplos decimais). Você não pode especificar --interval e --bandwidth.
Os destinos devem ser endereços IP, não nomes de host. Pode reduzir o tempo de inicialização para grandes listas de destino.
Resolva endereços de resposta para nomes de host. O formato de saída padrão exibirá o nome do host em vez do endereço IPv4. Esta opção torna o campo $ {name} disponível para a opção --format.
Defina o endereço Ethernet de origem ARP. Define o campo ar$sha de 48 bits, mas não altera o endereço de hardware no cabeçalho do quadro, consulte --srcaddr para saber como alterar esse endereço. O padrão é o endereço Ethernet da interface de saída.
Defina o endereço Ethernet de destino ARP. Define o campo ar$tha de 48 bits. O padrão é zero, porque este campo não é usado para pacotes de solicitação ARP.
Defina o tipo de hardware ARP, padrão=1. Define o campo ar$hrd de 16 bits. O padrão é 1 (ARPHRD_ETHER). Muitos sistemas operacionais também respondem a 6 (ARPHRD_IEEE802).
Defina o tipo de protocolo ARP, padrão=0x0800. Define o campo ar$pro de 16 bits. A maioria dos sistemas operacionais responde apenas a 0x0800 (IPv4).
Defina o comprimento do endereço de hardware, padrão=6. Define o campo ar$hln de 8 bits. Os comprimentos dos campos ar$sha e ar$tha não são alterados por esta opção; apenas altera o campo ar$hln.
Defina o comprimento do endereço de protocolo, padrão=4. Define o campo ar$pln de 8 bits. Os comprimentos dos campos ar$spa e ar$tpa não são alterados por esta opção; apenas altera o campo ar$pln.
Especifique a operação ARP, default=1. Define o campo ar$op de 16 bits. A maioria dos sistemas operacionais responde apenas ao valor 1 (ARPOP_REQUEST).
Defina o endereço IPv4 de origem. O endereço deve estar no formato quad com pontos ou a string "dest" que define o endereço de origem para o endereço do host de destino. O padrão é o endereço da interface de saída. Define o campo ar$spa de 32 bits. Alguns sistemas operacionais só respondem se o endereço de origem estiver dentro da rede da interface de recebimento. Definir ar$spa para o endereço IP de destino pode fazer com que alguns sistemas operacionais relatem um conflito de endereço.
Defina o endereço MAC Ethernet de origem. O padrão é o endereço MAC da interface. Isso define o endereço no cabeçalho Ethernet. Ele não altera o endereço no pacote ARP: use --arpsha para alterar esse endereço.
Defina o endereço MAC de destino. Define o endereço de destino no cabeçalho Ethernet. O padrão é ff:ff:ff:ff:ff:ff (broadcast) Os hosts também respondem se a solicitação for enviada para seu endereço unicast ou para um endereço multicast no qual eles estão escutando.
Define o tipo de protocolo Ethernet, default=0x0806. Isso define o campo do tipo de protocolo no cabeçalho Ethernet.
Use o encapsulamento RFC 1042 LLC/SNAP para redes 802.2. O arp-scan decodificará e exibirá as respostas ARP nos formatos Ethernet-II e IEEE 802.2, independentemente desta opção.
Use a marcação 802.1Q com ID de VLAN <i>. O id deve estar no intervalo de 0 a 4095. arp-scan decodificará e exibirá as respostas ARP no formato 802.1Q independentemente desta opção.
Sair depois que o número especificado de hosts tiver respondido. arp-scan sairá com o status 1 se o número de hosts respondentes for menor que o limite. Pode ser usado em scripts para verificar se menos hosts respondem sem precisar analisar a saída.
Grava os pacotes recebidos no pcap savefile <s>. As respostas ARP serão gravadas no arquivo especificado, bem como decodificadas e exibidas.
Defina o comprimento do snap pcap como <i>. Padrão=64. Especifica o comprimento da captura do quadro, incluindo o cabeçalho Ethernet. O padrão é normalmente suficiente.
Defina o número de tentativas de envio, padrão=20.
Defina o intervalo entre as tentativas de envio. O intervalo é em milissegundos ou microssegundos se "u" for acrescentado. padrão=5.
Especifique o preenchimento após os dados do pacote. Defina o preenchimento após a solicitação ARP para o valor hexadecimal
arp-scan sairá com 0 na conclusão bem-sucedida ou >0 se um erro for encontrado.
Se a opção --limit for especificada, arp-scan também sairá com um código de saída diferente de zero se o número de hosts de resposta for menor que o limite especificado.
Lista de IEEE OUI (Organisationally Unique Identifier) para mapeamentos de fornecedores.
Lista de outros MAC Ethernet para mapeamentos de fornecedores, incluindo adições locais.
Examine a rede padrão usando a configuração IPv4 da interface para gerar a lista de hosts a serem verificados.
$ arp-scan --localnet
Interface: eth0, type: EN10MB, MAC: 50:65:f3:f0:6d:7c, IPv4: 10.0.0.106
Starting arp-scan 1.9.9 with 256 hosts (https://github.com/royhills/arp-scan)
10.0.0.14 a4:1f:72:7f:25:bb Dell Inc.
10.0.0.22 10:60:4b:73:43:de Hewlett Packard
10.0.0.74 00:0c:29:90:07:e9 VMware, Inc.
10.0.0.75 00:0c:29:66:9e:c2 VMware, Inc.
10.0.0.76 00:0c:29:d0:e1:ea VMware, Inc.
10.0.0.82 9c:b6:54:bb:f3:ec Hewlett Packard
10.0.0.84 00:21:9b:fd:b9:b3 Dell Inc.
10.0.0.85 00:02:b3:eb:5a:f8 Intel Corporation
10.0.0.91 00:9c:02:a5:7b:29 Hewlett Packard
10.0.0.92 d4:ae:52:d0:07:6f Dell Inc.
10.0.0.93 d4:ae:52:d0:04:9b Dell Inc.
10.0.0.96 9c:b6:54:bb:f5:35 Hewlett Packard
10.0.0.97 00:0c:29:0e:95:20 VMware, Inc.
10.0.0.104 50:65:f3:f0:70:a4 Hewlett Packard
15 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.9: 256 hosts scanned in 1.532 seconds (167.10 hosts/sec). 14 respondedVerifique todos os hosts em 10.0.0.0/24 usando a interface eth0. Calcule o tempo de ida e volta e exiba em colunas alinhadas usando um formato personalizado.
$ arp-scan -I eth0 --rtt --format='|${ip;-15}|${mac}|${rtt;8}|' 10.0.0.0/24
Interface: eth0, type: EN10MB, MAC: 50:65:f3:f0:6d:7c, IPv4: 10.0.0.106
Starting arp-scan 1.9.9 with 256 hosts (https://github.com/royhills/arp-scan)
|10.0.0.14 |a4:1f:72:7f:25:bb| 0.280|
|10.0.0.22 |10:60:4b:73:43:de| 0.293|
|10.0.0.74 |00:0c:29:90:07:e9| 0.380|
|10.0.0.75 |00:0c:29:66:9e:c2| 0.311|
|10.0.0.76 |00:0c:29:d0:e1:ea| 0.326|
|10.0.0.82 |9c:b6:54:bb:f3:ec| 0.216|
|10.0.0.84 |00:21:9b:fd:b9:b3| 0.244|
|10.0.0.85 |00:02:b3:eb:5a:f8| 0.244|
|10.0.0.91 |00:9c:02:a5:7b:29| 0.209|
|10.0.0.92 |d4:ae:52:d0:07:6f| 0.289|
|10.0.0.93 |d4:ae:52:d0:04:9b| 0.278|
|10.0.0.96 |9c:b6:54:bb:f5:35| 0.255|
|10.0.0.97 |00:0c:29:0e:95:20| 0.288|
|10.0.0.104 |50:65:f3:f0:70:a4| 0.263|
14 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.9: 256 hosts scanned in 2.032 seconds (125.98 hosts/sec). 14 responded--plain remove a saída estranha.
$ arp-scan -I eth0 --plain --format='${ip},${mac},"${vendor}"' 10.0.0.0/24
10.0.0.14,a4:1f:72:7f:25:bb,"Dell Inc."
10.0.0.22,10:60:4b:73:43:de,"Hewlett Packard"
10.0.0.74,00:0c:29:90:07:e9,"VMware, Inc."
10.0.0.75,00:0c:29:66:9e:c2,"VMware, Inc."
10.0.0.76,00:0c:29:d0:e1:ea,"VMware, Inc."
10.0.0.82,9c:b6:54:bb:f3:ec,"Hewlett Packard"
10.0.0.84,00:21:9b:fd:b9:b3,"Dell Inc."
10.0.0.85,00:02:b3:eb:5a:f8,"Intel Corporation"
10.0.0.91,00:9c:02:a5:7b:29,"Hewlett Packard"
10.0.0.92,d4:ae:52:d0:07:6f,"Dell Inc."
10.0.0.93,d4:ae:52:d0:04:9b,"Dell Inc."
10.0.0.96,9c:b6:54:bb:f5:35,"Hewlett Packard"
10.0.0.97,00:0c:29:0e:95:20,"VMware, Inc."
10.0.0.104,50:65:f3:f0:70:a4,"Hewlett Packard"get-oui(1)
arp-fingerprint(1)
http://www.royhills.co.uk/wiki/ The arp-scan wiki page.
https://github.com/royhills/arp-scan The arp-scan homepage.