arp-scan - Отправлять запросы ARP на целевые хосты и отображать ответы
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 отправляет пакеты запросов ARP на указанные хосты и отображает все полученные ответы. Сетевой интерфейс можно указать с помощью параметра --interface. Если интерфейс не указан, arp-scan выберет настроенный интерфейс с наименьшим номером (исключая петлю).
arp-scan использует необработанные сокеты, что требует привилегий в некоторых системах:
arp-scan учитывает возможности. Он требует CAP_NET_RAW в разрешенном наборе и включает эту возможность только для требуемых функций. используйте setcap cap_net_raw+p /path/to/arp-scan, чтобы добавить CAP_NET_RAW в разрешенный набор исполняемого файла arp-scan. Поддержка возможностей также делает SUID root намного более безопасным, поскольку arp-scan отбрасывает все возможности, кроме CAP_NET_RAW, и не будет работать с полными привилегиями root.
Вам необходим доступ для чтения/записи к /dev/bpf*
Запуск от имени root или SUID root будет работать в любой ОС, но другие методы предпочтительнее, если это возможно.
ARP работает только в локальной сети и не может маршрутизироваться. Хотя протокол ARP использует адреса IPv4, он не является протоколом IP, и arp-scan можно использовать на интерфейсах без адреса IPv4.
Для каждой цели отправляется один запрос ARP. Если хост не отвечает, запрос будет отправлен повторно. Количество попыток можно изменить с помощью параметра --retry. Уменьшение количества повторных попыток сократит время сканирования с риском пропуска некоторых результатов из-за потери пакетов.
Вы можете указать пропускную способность, которую будет использовать arp-scan, с помощью параметра --bandwidth. По умолчанию 256000 бит в секунду. Увеличение полосы пропускания сократит время сканирования, но установка слишком высокой полосы пропускания может привести к увеличению скорости передачи широковещательных пакетов. Другой способ указать скорость передачи пакетов — использовать параметр --interval.
Время однопроходного сканирования (т. е. с --retry=1) составляет:
время=n раз я + т + о
Где n — количество хостов, i — интервал (задается с помощью --interval или рассчитывается на основе --bandwidth ). ), t — время ожидания (указывается с помощью --timeout), а o — время, необходимое для загрузки целевого списка и чтения файлы сопоставления MAC/Vendor. Накладные расходы обычно незначительны (обычно около 100 мс), но их можно уменьшить с помощью параметра --quiet. Для небольших списков хостов значение тайм-аута будет доминировать, но для больших списков наиболее важным значением является интервал между пакетами.
Любая часть запроса ARP может быть изменена с помощью параметров --arpXXX, как показано в таблице ниже:
СТОЛ
Самый распространенный параметр — --arpspa, который устанавливает IPv4-адрес источника в ARP-запросе, позволяя ARP-запросу использовать исходный адрес, отличный от адреса интерфейса. Это позволяет использовать arp-scan на интерфейсах без адреса IPv4. Примечание. Установка ar$spa для IP-адреса цели приводит к тому, что некоторые операционные системы сообщают о конфликте адресов, когда они получают запрос ARP для своего собственного адреса.
Вы также можете изменить значения в заголовке кадра Ethernet, как показано ниже:
СТОЛ
Опция --destaddr, которая устанавливает Ethernet-адрес назначения, является единственной, которая обычно используется.
По умолчанию ответы ARP отображаются в следующем формате:
<IPv4 Address> | <MAC Address> | <Vendor Details> |
Где IPv4-адрес — это IP-адрес отвечающей цели, MAC-адрес — это адрес канального уровня, а Сведения о поставщике — это сведения о поставщике, декодированные из аппаратный адрес. Поля вывода разделены одним символом табуляции. Вы можете изменить формат вывода с помощью параметра --format.
Ответы отображаются в порядке их получения, который может отличаться от порядка отправки запросов, поскольку некоторые хосты могут отвечать быстрее, чем другие.
Для декодирования поставщика используются файлы ieee-oui.txt и mac-vendor.txt. ieee-oui.txt создается из IEEE MA-L (OUI), MA-M, MA-S (OUI36) и IAB. mac-vendor.txt содержит дополнительные сопоставления MAC-адресов с поставщиками и может использоваться для добавления пользовательских сопоставлений. get-oui можно использовать для обновления файла ieee-oui.txt последними данными из реестров IEEE.
Все хосты IPv4 должны отвечать на пакеты запросов ARP, включая хосты с фильтрацией пакетов, такие как брандмауэры. Это делает arp-scan полезным инструментом для обнаружения всех активных хостов IPv4 в локальной сети.
Если параметр принимает значение, это значение указывается в виде буквы в угловых скобках. Буква указывает на тип ожидаемых данных:
Строка символов.
Десятичное целое или шестнадцатеричное число, если ему предшествует 0x, например. 2048 или 0x800.
Десятичное число с плавающей запятой.
MAC-адрес, например. 01:23:45:67:89:ab или 01-23-45-67-89-ab (без учета регистра)
IPv4-адрес, например. 10.0.0.1
Двоичные данные в шестнадцатеричном коде. Нет ведущего 0x. (без учета регистра).
Что-то еще - см. описание варианта.
Отобразите это сообщение об использовании и выйдите.
Отображение подробных сообщений о ходе выполнения. Может использоваться более одного раза для увеличения детализации. Макс=3.
Показать версию программы и выйти. Отображает версию, сведения о лицензии, версию libpcap и включена ли поддержка возможностей POSIX.1e.
Используйте сетевой интерфейс <s>. Если этот параметр не указан, arp-scan будет искать в списке системных интерфейсов настроенный интерфейс с наименьшим номером (исключая петлю).
Чтение имен хостов или адресов из указанного файла. Одно имя или шаблон адреса в строке. Используйте «-» для стандартного ввода.
Сгенерируйте адреса из конфигурации интерфейса. Генерирует список из адреса интерфейса и сетевой маски (включая сеть и широковещательную рассылку). Вы не можете использовать параметр --file или задавать цели в командной строке. Используйте --interface, чтобы указать интерфейс.
Используйте файл сопоставления поставщиков реестра IEEE <s>. По умолчанию это ieee-oui.txt в текущем каталоге. Если он не найден, используется /usr/share/arp-scan/ieee-oui.txt.
Используйте пользовательский файл сопоставления поставщиков <s>. По умолчанию используется файл mac-vendor.txt в текущем каталоге. Если он не найден, используется /etc/arp-scan/mac-vendor.txt.
Отображение минимального вывода для каждого отвечающего хоста. Отображаются только IP-адрес и MAC-адрес. Уменьшает использование памяти примерно на 5 МБ, поскольку файлы сопоставления поставщиков не используются. Только поля $ {ip} и $ {mac} доступны для параметра --format, если - -quiet указано.
Подавить текст заголовка и нижнего колонтитула. Отображать только сведения об отвечающем хосте. Полезно, если вывод будет анализироваться сценарием.
Не отображать повторяющиеся пакеты. По умолчанию дубликаты пакетов помечаются с помощью (DUP: n), где n — количество ответов этого узла.
Рассчитайте и отобразите время прохождения пакета туда и обратно. Время отображается в миллисекундах и долях микросекунд. Делает поле $ {rtt} доступным для --format.
Укажите строку выходного формата. Формат представляет собой строку, которая будет выводиться для каждого отвечающего хоста. Сведения о хосте можно включить, вставив ссылки на поля с использованием синтаксиса "$ {field[;width]}". Поля отображаются с выравниванием по правому краю, если ширина не является отрицательной, и в этом случае будет использоваться выравнивание по левому краю. Распознаются следующие имена полей без учета регистра:
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 |
Только поля $ {ip} и $ {mac} доступны, если указан параметр --quiet.
Любые символы, не являющиеся полями, выводятся дословно. "\" вводит escape-последовательности:
\n | newline |
\r | carriage return |
\t | tab |
\ | suppress special meaning for following character |
Вы должны заключить аргумент --format в одинарные кавычки, чтобы защитить специальные символы от оболочки.
Пример: --format='$ {ip}\t$ {mac}\t$ {поставщик}'
Рандомизируйте список целевых хостов.
Посейте генератор псевдослучайных чисел. Полезно, если вам нужен воспроизводимый --случайный порядок.
Установите общее количество попыток на хост равным <i>, по умолчанию=2.
Установите коэффициент отсрочки <f>, по умолчанию=1,50. Умножает время ожидания на <f> для каждого прохода.
Установите начальный тайм-аут для каждого хоста на <i> мс, по умолчанию=500. Это время ожидания для первого пакета, отправленного на каждый хост. последующие тайм-ауты умножаются на коэффициент отсрочки, который устанавливается с помощью --backoff.
Установите минимальный интервал между пакетами <x>. Это контролирует использование исходящей полосы пропускания, ограничивая скорость передачи пакетов. Если вы хотите использовать заданную пропускную способность, проще вместо этого использовать параметр --bandwidth. Интервал указывается в миллисекундах или микросекундах, если добавляется «u».
Установите для исходящей пропускной способности значение <x>, по умолчанию=256000. Значение указано в битах в секунду. Добавьте K для килобитов или M для мегабитов (десятичных кратных). Вы не можете указать одновременно --interval и --bandwidth.
Целями должны быть IP-адреса, а не имена хостов. Может сократить время запуска для больших целевых списков.
Разрешить отвечающие адреса на имена хостов. Формат вывода по умолчанию будет отображать имя хоста вместо адреса IPv4. Этот параметр делает поле $ {name} доступным для параметра --format.
Установите Ethernet-адрес источника ARP. Устанавливает 48-битное поле ar$sha, но не изменяет аппаратный адрес в заголовке фрейма, см. --srcaddr, чтобы узнать, как изменить этот адрес. По умолчанию используется Ethernet-адрес исходящего интерфейса.
Установите целевой Ethernet-адрес ARP. Устанавливает 48-битное поле ar$tha. Значение по умолчанию равно нулю, так как это поле не используется для пакетов запроса ARP.
Установите тип оборудования ARP, по умолчанию=1. Задает 16-битное поле ar$hrd. Значение по умолчанию: 1 (ARPHRD_ETHER). Многие операционные системы также реагируют на 6 (ARPHRD_IEEE802).
Установите тип протокола ARP, по умолчанию=0x0800. Задает 16-битное поле ar$pro. Большинство операционных систем реагируют только на 0x0800 (IPv4).
Установите длину аппаратного адреса, по умолчанию=6. Задает 8-битное поле ar$hln. Эта опция не изменяет длины полей ar$sha и ar$tha; он изменяет только поле ar$hln.
Установите длину адреса протокола, по умолчанию=4. Задает 8-битное поле ar$pln. Эта опция не изменяет длину полей ar$spa и ar$tpa; он изменяет только поле ar$pln.
Укажите операцию ARP, по умолчанию=1. Устанавливает 16-битное поле ar$op. Большинство операционных систем отвечают только на значение 1 (ARPOP_REQUEST).
Установите исходный адрес IPv4. Адрес должен быть в формате четверки с точками или в виде строки "dest", которая устанавливает исходный адрес в адрес целевого хоста. По умолчанию используется адрес исходящего интерфейса. Устанавливает 32-битное поле ar$spa. Некоторые операционные системы отвечают только в том случае, если исходный адрес находится в сети принимающего интерфейса. Установка ar$spa для IP-адреса назначения может привести к тому, что некоторые операционные системы сообщат о конфликте адресов.
Установите исходный MAC-адрес Ethernet. По умолчанию используется MAC-адрес интерфейса. Это устанавливает адрес в заголовке Ethernet. Он не изменяет адрес в пакете ARP: используйте --arpsha, чтобы изменить этот адрес.
Установите MAC-адрес назначения. Устанавливает адрес назначения в заголовке Ethernet. По умолчанию используется ff:ff:ff:ff:ff:ff (широковещательная рассылка). Хосты также отвечают, если запрос отправлен на их одноадресный или многоадресный адрес, который они прослушивают.
Устанавливает тип протокола Ethernet, по умолчанию=0x0806. Это устанавливает поле типа протокола в заголовке Ethernet.
Используйте инкапсуляцию RFC 1042 LLC/SNAP для сетей 802.2. arp-scan будет декодировать и отображать ответы ARP в форматах Ethernet-II и IEEE 802.2 независимо от этого параметра.
Используйте теги 802.1Q с идентификатором VLAN <i>. Идентификатор должен находиться в диапазоне от 0 до 4095. arp-scan будет декодировать и отображать ответы ARP в формате 802.1Q независимо от этой опции.
Выйти после того, как заданное количество хостов ответит. arp-scan завершает работу со статусом 1, если количество отвечающих хостов меньше ограничения. Может использоваться в сценариях для проверки того, отвечает ли меньшее количество хостов без необходимости анализа вывода.
Запишите полученные пакеты в файл сохранения pcap <s>. Ответы ARP будут записываться в указанный файл, а также декодироваться и отображаться.
Установите длину привязки pcap на <i>. По умолчанию=64. Указывает длину захвата кадра, включая заголовок Ethernet. Обычно достаточно значения по умолчанию.
Установите количество попыток отправки, по умолчанию=20.
Установите интервал между попытками отправки. Интервал указывается в миллисекундах или микросекундах, если добавляется «u». по умолчанию=5.
Укажите заполнение после пакетных данных. Установите заполнение после запроса ARP на шестнадцатеричное значение
arp-scan завершится с 0 в случае успешного завершения или >0 в случае возникновения ошибки.
Если указана опция --limit, arp-scan также завершит работу с ненулевым кодом выхода, если число отвечающих хостов меньше указанного предела.
Список сопоставлений IEEE OUI (организационно уникальный идентификатор) с поставщиками.
Список других сопоставлений Ethernet MAC с поставщиками, включая локальные дополнения.
Сканируйте сеть по умолчанию, используя конфигурацию интерфейса IPv4, чтобы сгенерировать список хостов для сканирования.
$ 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 responded
Сканировать все хосты в 10.0.0.0/24, используя интерфейс eth0. Рассчитайте время приема-передачи и отобразите в выровненных столбцах, используя настраиваемый формат.
$ 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 удаляет посторонний вывод.
$ 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.