arp-scan - справочное руководство, опции, примеры команд


ИМЯ

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 использует необработанные сокеты, что требует привилегий в некоторых системах:

Linux with POSIX.1e capabilities support using libcap:

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.

BSD and macOS:

Вам необходим доступ для чтения/записи к /dev/bpf*

Any operating system:

Запуск от имени 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 в локальной сети.

ПАРАМЕТРЫ

Если параметр принимает значение, это значение указывается в виде буквы в угловых скобках. Буква указывает на тип ожидаемых данных:

<s>

Строка символов.

<i>

Десятичное целое или шестнадцатеричное число, если ему предшествует 0x, например. 2048 или 0x800.

<f>

Десятичное число с плавающей запятой.

<m>

MAC-адрес, например. 01:23:45:67:89:ab или 01-23-45-67-89-ab (без учета регистра)

<a>

IPv4-адрес, например. 10.0.0.1

<h>

Двоичные данные в шестнадцатеричном коде. Нет ведущего 0x. (без учета регистра).

<x>

Что-то еще - см. описание варианта.

Общие настройки

--help or -h

Отобразите это сообщение об использовании и выйдите.

--verbose or -v

Отображение подробных сообщений о ходе выполнения. Может использоваться более одного раза для увеличения детализации. Макс=3.

--version or -V

Показать версию программы и выйти. Отображает версию, сведения о лицензии, версию libpcap и включена ли поддержка возможностей POSIX.1e.

--interface=<s> or -I <s>

Используйте сетевой интерфейс <s>. Если этот параметр не указан, arp-scan будет искать в списке системных интерфейсов настроенный интерфейс с наименьшим номером (исключая петлю).

Выбор хоста

--file=<s> or -f <s>

Чтение имен хостов или адресов из указанного файла. Одно имя или шаблон адреса в строке. Используйте «-» для стандартного ввода.

--localnet or -l

Сгенерируйте адреса из конфигурации интерфейса. Генерирует список из адреса интерфейса и сетевой маски (включая сеть и широковещательную рассылку). Вы не можете использовать параметр --file или задавать цели в командной строке. Используйте --interface, чтобы указать интерфейс.

Файлы сопоставления MAC/поставщика

--ouifile=<s> or -O <s>

Используйте файл сопоставления поставщиков реестра IEEE <s>. По умолчанию это ieee-oui.txt в текущем каталоге. Если он не найден, используется /usr/share/arp-scan/ieee-oui.txt.

--macfile=<s> or -m <s>

Используйте пользовательский файл сопоставления поставщиков <s>. По умолчанию используется файл mac-vendor.txt в текущем каталоге. Если он не найден, используется /etc/arp-scan/mac-vendor.txt.

Управление форматом вывода

--quiet or -q

Отображение минимального вывода для каждого отвечающего хоста. Отображаются только IP-адрес и MAC-адрес. Уменьшает использование памяти примерно на 5 МБ, поскольку файлы сопоставления поставщиков не используются. Только поля $ {ip} и $ {mac} доступны для параметра --format, если - -quiet указано.

--plain or -x

Подавить текст заголовка и нижнего колонтитула. Отображать только сведения об отвечающем хосте. Полезно, если вывод будет анализироваться сценарием.

--ignoredups or -g

Не отображать повторяющиеся пакеты. По умолчанию дубликаты пакетов помечаются с помощью (DUP: n), где n — количество ответов этого узла.

--rtt or -D

Рассчитайте и отобразите время прохождения пакета туда и обратно. Время отображается в миллисекундах и долях микросекунд. Делает поле $ {rtt} доступным для --format.

--format=<s> or -F <s>

Укажите строку выходного формата. Формат представляет собой строку, которая будет выводиться для каждого отвечающего хоста. Сведения о хосте можно включить, вставив ссылки на поля с использованием синтаксиса "$ {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$ {поставщик}'

Рандомизация списка хостов

--random or -R

Рандомизируйте список целевых хостов.

--randomseed=<i>

Посейте генератор псевдослучайных чисел. Полезно, если вам нужен воспроизводимый --случайный порядок.

Время вывода и повторная попытка

--retry=<i> or -r <i>

Установите общее количество попыток на хост равным <i>, по умолчанию=2.

--backoff=<f> or -b <f>

Установите коэффициент отсрочки <f>, по умолчанию=1,50. Умножает время ожидания на <f> для каждого прохода.

--timeout=<i> or -t <i>

Установите начальный тайм-аут для каждого хоста на <i> мс, по умолчанию=500. Это время ожидания для первого пакета, отправленного на каждый хост. последующие тайм-ауты умножаются на коэффициент отсрочки, который устанавливается с помощью --backoff.

--interval=<x> or -i <x>

Установите минимальный интервал между пакетами <x>. Это контролирует использование исходящей полосы пропускания, ограничивая скорость передачи пакетов. Если вы хотите использовать заданную пропускную способность, проще вместо этого использовать параметр --bandwidth. Интервал указывается в миллисекундах или микросекундах, если добавляется «u».

--bandwidth=<x> or -B <x>

Установите для исходящей пропускной способности значение <x>, по умолчанию=256000. Значение указано в битах в секунду. Добавьте K для килобитов или M для мегабитов (десятичных кратных). Вы не можете указать одновременно --interval и --bandwidth.

Разрешение DNS

--numeric or -N

Целями должны быть IP-адреса, а не имена хостов. Может сократить время запуска для больших целевых списков.

--resolve or -d

Разрешить отвечающие адреса на имена хостов. Формат вывода по умолчанию будет отображать имя хоста вместо адреса IPv4. Этот параметр делает поле $ {name} доступным для параметра --format.

Выходной ARP-пакет

--arpsha=<m> or -u <m>

Установите Ethernet-адрес источника ARP. Устанавливает 48-битное поле ar$sha, но не изменяет аппаратный адрес в заголовке фрейма, см. --srcaddr, чтобы узнать, как изменить этот адрес. По умолчанию используется Ethernet-адрес исходящего интерфейса.

--arptha=<m> or -w <m>

Установите целевой Ethernet-адрес ARP. Устанавливает 48-битное поле ar$tha. Значение по умолчанию равно нулю, так как это поле не используется для пакетов запроса ARP.

--arphrd=<i> or -H <i>

Установите тип оборудования ARP, по умолчанию=1. Задает 16-битное поле ar$hrd. Значение по умолчанию: 1 (ARPHRD_ETHER). Многие операционные системы также реагируют на 6 (ARPHRD_IEEE802).

--arppro=<i> or -p <i>

Установите тип протокола ARP, по умолчанию=0x0800. Задает 16-битное поле ar$pro. Большинство операционных систем реагируют только на 0x0800 (IPv4).

--arphln=<i> or -a <i>

Установите длину аппаратного адреса, по умолчанию=6. Задает 8-битное поле ar$hln. Эта опция не изменяет длины полей ar$sha и ar$tha; он изменяет только поле ar$hln.

--arppln=<i> or -P <i>

Установите длину адреса протокола, по умолчанию=4. Задает 8-битное поле ar$pln. Эта опция не изменяет длину полей ar$spa и ar$tpa; он изменяет только поле ar$pln.

--arpop=<i> or -o <i>

Укажите операцию ARP, по умолчанию=1. Устанавливает 16-битное поле ar$op. Большинство операционных систем отвечают только на значение 1 (ARPOP_REQUEST).

--arpspa=<a> or -s <a>

Установите исходный адрес IPv4. Адрес должен быть в формате четверки с точками или в виде строки "dest", которая устанавливает исходный адрес в адрес целевого хоста. По умолчанию используется адрес исходящего интерфейса. Устанавливает 32-битное поле ar$spa. Некоторые операционные системы отвечают только в том случае, если исходный адрес находится в сети принимающего интерфейса. Установка ar$spa для IP-адреса назначения может привести к тому, что некоторые операционные системы сообщат о конфликте адресов.

Выходной Ethernet-заголовок

--srcaddr=<m> or -S <m>

Установите исходный MAC-адрес Ethernet. По умолчанию используется MAC-адрес интерфейса. Это устанавливает адрес в заголовке Ethernet. Он не изменяет адрес в пакете ARP: используйте --arpsha, чтобы изменить этот адрес.

--destaddr=<m> or -T <m>

Установите MAC-адрес назначения. Устанавливает адрес назначения в заголовке Ethernet. По умолчанию используется ff:ff:ff:ff:ff:ff (широковещательная рассылка). Хосты также отвечают, если запрос отправлен на их одноадресный или многоадресный адрес, который они прослушивают.

--prototype=<i> or -y <i>

Устанавливает тип протокола Ethernet, по умолчанию=0x0806. Это устанавливает поле типа протокола в заголовке Ethernet.

--llc or -L

Используйте инкапсуляцию RFC 1042 LLC/SNAP для сетей 802.2. arp-scan будет декодировать и отображать ответы ARP в форматах Ethernet-II и IEEE 802.2 независимо от этого параметра.

--vlan=<i> or -Q <i>

Используйте теги 802.1Q с идентификатором VLAN <i>. Идентификатор должен находиться в диапазоне от 0 до 4095. arp-scan будет декодировать и отображать ответы ARP в формате 802.1Q независимо от этой опции.

Разные параметры

--limit=<i> or -M <i>

Выйти после того, как заданное количество хостов ответит. arp-scan завершает работу со статусом 1, если количество отвечающих хостов меньше ограничения. Может использоваться в сценариях для проверки того, отвечает ли меньшее количество хостов без необходимости анализа вывода.

--pcapsavefile=<s> or -W <s>

Запишите полученные пакеты в файл сохранения pcap <s>. Ответы ARP будут записываться в указанный файл, а также декодироваться и отображаться.

--snap=<i> or -n <i>

Установите длину привязки pcap на <i>. По умолчанию=64. Указывает длину захвата кадра, включая заголовок Ethernet. Обычно достаточно значения по умолчанию.

--retry-send=<i> or -Y <i>

Установите количество попыток отправки, по умолчанию=20.

--retry-send-interval=<i> or -E <i>

Установите интервал между попытками отправки. Интервал указывается в миллисекундах или микросекундах, если добавляется «u». по умолчанию=5.

--padding=<h> or -A <h>

Укажите заполнение после пакетных данных. Установите заполнение после запроса ARP на шестнадцатеричное значение .

ВЫХОД СТАТУС

arp-scan завершится с 0 в случае успешного завершения или >0 в случае возникновения ошибки.

Если указана опция --limit, arp-scan также завершит работу с ненулевым кодом выхода, если число отвечающих хостов меньше указанного предела.

ФАЙЛЫ

/usr/share/arp-scan/ieee-oui.txt

Список сопоставлений IEEE OUI (организационно уникальный идентификатор) с поставщиками.

/etc/arp-scan/mac-vendor.txt

Список других сопоставлений 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

Вывод в формате CSV

--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.