Дмитрий Барышников
23.10.2019
20047

Использование ARP сканирования.

   При работе с АТС, иногда возникает необходимость узнать информацию о подключении устройств, чаще всего это необходимо для обнаружения подключения шлюзов, телефонных аппаратов, не зная их адресов или убедиться в подключении, еще таким образом можно проверить безопасность, т.е. можно зафиксировать подключение скрытых или неизвестных устройств.    Самый надежный и простой способ обнаружения всех подключенных устройств, […]

   При работе с АТС, иногда возникает необходимость узнать информацию о подключении устройств, чаще всего это необходимо для обнаружения подключения шлюзов, телефонных аппаратов, не зная их адресов или убедиться в подключении, еще таким образом можно проверить безопасность, т.е. можно зафиксировать подключение скрытых или неизвестных устройств.

   Самый надежный и простой способ обнаружения всех подключенных устройств, даже которые скрыты – это ARP сканирование.

   ARP-scan – это инструмент командной строки для обнаружения подключенных устройств. Создает и отправляет запросы указанным IP адресам и отображает полученный ответ.

ARP-scan подходит только для сканирования локальной сети, если есть необходимость сканировать за пределами сети, можно воспользоваться ping сканированием.

Возможности ARP сканирования

  1. Отправление ARP пакетов на любое количество хостов, используя пропускную способность или скорость передачи: удобно для обнаружения устройств при сканировании больших адресных пространств.
  2. Многофункциональный способ конструирования исходящих ARP пакетов: управление всеми полями пакета ARP и полями в заголовке Ethernet кадра.
  3. Декодирование и отображение любых возвращенных пакетов: декодирование и отображение любых принятых ARP пакетов, поиск источника, используя MAC-адрес.
  4. Снятие «отпечатков» IP хостов, используя инструмент arp-fingerprint.

Каким образом осуществляется сканирование.

   Для преобразования физических адресов в ip адреса используется протокол ARP (Address Resolution Protocol), протокол разрешения адресов.

   Процесс сканирования сопровождается ARP сообщениями, которые содержат либо запрос с IP адресом, либо ответ. Размер сообщения зависит от используемого сетевого протокола (ipv4 или ipv6), типа оборудования сети и т.д.

   Типы и размеры адресов определяются в заголовке сообщения, заголовок завершается кодом сообщения.

Код заголовка сообщения: 1 – для запроса, 2 – для ответа.

Установка ARP-scan

   Сканер локальной сети доступен для следующих операционных систем:

  • Debian, поставляется по умолчанию;
  • Ubuntu, можно установить с репозитория Universe;
  • Fedora, официальные репозитории начиная с версии 6;
  • RedHat – доступна начиная с версии 5;
  • Gentoo, официальные репозитории;
  • ArchLinux – официальные репозитории Pacman.

Для установки в CentOS необходимо выполнить:

# yum install –y arp-scan

Опции ARP-scan

Для вывода справки по команде необходимо ввести:

# man arp-scan

# man arp-scan

 Далее отобразиться:

Name: arp-scan – The ARP scanner
Options

Примечание: там, где опция принимает значение, это значение указано буквой в

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

<s> Строка символов, например.

--file=hostlist.txt.

<i> Целое число, которое может быть в десятеричной или шестнадцатеричной

    форме если перед ним стоит 0x, например,

--arppro=2048 или --arpro=0x0800.

<f> Число с плавающей запятой, например –backoff=1.5.

<m> Ethernet MAC-адрес, который может быть записал либо в формате

    01:23:45:67:89:ab, или как 01-23-45-67-89-ab. Алфавитные шестнадцатеричные

    символы могут быть как заглавными, так и прописными. Напр.,

--arpsha=01:23:45:67:89:ab.

<a> IPv4 адрес, например,

--arpspa=10.0.0.1

<h> Бинарные данные, указанные как шестнадцатеричная строка, которая не

    должна включать начальные 0x. Алфавитные hex символы могут быть как

    заглавные, так и прописные. Например

--padding=aaaaaaaaaaaa

<x> Что-то ещу. Подробности смотрите в описании опции.
–help или -h      
Показать справку и выйти.
–file=<s> или -f <s>   Считать имена хостов или адресов из указанного файла, а не из строки команды. Одно имя или IP адрес на строку. Используйте “-” для стандартного ввода.

–localnet или -l   Сгенерировать адреса из настройки сетевого интерфейса.
Использовать IP адрес сетевого интерфейса и маску сети  для генерации списка целевых хост адресов.   Этот список будет включать сетевые и широковещательные   адреса, так адрес 10.0.0.1 сетевого интерфейса с маской сети 255.255.255.0 сгенерирует 256 целевых хостов с 10.0.0.0 до 10.0.0.255 включительно. Если вы используете эту опцию, вы не можете указать опцию –file или указать любые целевые хосты в строке команды. Спецификации интерфейса берутся с интерфейса, на котором будет использоваться arp-scan, он  может быть изменён опцией –interface.

--retry=<i> или -r <i>

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

--timeout=<i> или -t <i>

   Установить начальный на каждый хост таймаут в <i> мс, по  умолчанию=500.

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

--interval=<x> или -i <x>

Установить минимальный пакетный интервал на <x>.

Это контролирует использование исходящей полосы
пропускания путем ограничения скорости, на которой отправляются пакеты. Пакетный интервал будет на менее, чем это число. Если вы хотите использовать до определённой полосы пропускания,  тогда вместо этой проще использовать опцию –bandwidth. По умолчанию интервал указывается в миллисекундах, или в микросекундах, если к значению добавить “u”.

--bandwidth=<x> или -B <x>

Установить желаемую полосу пропускания на <x>, по умолчанию=256000.

Это значение по умолчанию в битах в секунду. Если вы добавите к значению “K”, тогда значение будет в килобитах в сек.; а если добавите к значению “M”, единица будет в мегабитах в секунду. Суффиксы “K” и “M” представляют десятичное, а не двоичное умножение. Поэтому 64K это 64000, а не 65536. Вы не можете указать и –interval и –bandwidth поскольку они являются просто разными способами задать один и тот же базовый параметр

--backoff=<f> или -b <f>   

Установить коэффициент отсрочки таймаута на <f>, по умолчанию=1.50.

Таймаут для каждого хоста умножается на этот коэффициент после каждого таймаута. Поэтому если количество попыток равно 3, начальный таймаут хоста 500ms, а коэффициент отсрочки 1.5, тогда первый таймаут будет 500ms, второй 750ms, а третий 1125ms.

--verbose или -v       

Отображать подробные сообщения о ходе выполнения.

            Использование более чем один раз усиливает эффект:

1 — Показать используемые маску и сетевой адрес, когда указана опция –localnet, отображать любое ненулевое заполнение пакетов, отображать пакеты, полученные неизвестных хостов, и показывать, когда завершается каждый проход через список.
2 — Показывать каждый отправленный и полученный пакет, когда записи удаляются из списка, строку фильтра pcap, и подсчёт записей сопоставления MAC/Vendor.
3 — Показать список хостов перед началом сканирования.

--version или -V 

       Показать версию программы и выйти.

--random или -R    

Рандомизировать список хостов.

Эта опция перемешивает порядок хостов в списке хостов, поэтому ARP пакеты отправляются хостам в случайном порядке. Используется алгоритм перетасовки Кнута.

--numeric или -N       

Только IP адреса, без имён хостов.

С этой опцией все хосты должны быть указаны как IP адреса. Имена хостов не разрешены. Не будет выполняться DNS преобразования.

--snap=<i> или -n <i>  

Установить длину snap в pcap на <i>. По умолчанию=64.

Это определяет длину фрейма захвата. Эта длина включает data-link заголовок. Значения по умолчанию обычно достаточно.

--interface=<s> или -I <s>

Использовать сетевой интерфейс <s>.

Если эта опция не указана, arp-scan будет искать самый нижний номер в списке системных интерфейсов, среди только настроенных (за исключением loopback). Указанный интерфейс должен поддерживать ARP.

–quiet или -q      Отображать только минимальный вывод.

Если указана эта опция, тогда будет отображаться только минимальная информация. С этой опцией не используются файлы OUI.

--ignoredups или -g

Не показывать повторяющиеся пакеты.

По умолчанию, повторяющиеся пакеты показываются и помечаются флагом “(DUP: n)”.

--ouifile=<s> или -O <s>   

Использовать IEEE Ethernet OUI файл <s> для определения производителя.

Если эта опция не указана, именем файлом по умолчанию является ieee-oui.txt в текущей директории. Если он не найден, тогда используется файл

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

--iabfile=<s> или -O <s>   

Использовать IEEE Ethernet IAB файл <s> для определения производителя.

Если эта опция не указана, именем файлом по умолчанию является ieee-iab.txt в текущей директории. Если он не найден, тогда используется файл

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

--macfile=<s> или -O <s>   

Использовать пользовательский Ethernet MAC файл <s> для определения производителя.

Если эта опция не указана, именем файлом по умолчанию является mac-vendor.txt в текущей директории. Если он не найден, тогда используется файл

/usr/share/arp-scan/mac-vendor.txt.

--srcaddr=<m> или -S <m>

Установить Ethernet MAC-адрес источника на <m>.

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

--destaddr=<m> или -T <m>

Отправлять пакеты на Ethernet MAC адрес <m>

Это устанавливает 48-битный аппаратный адрес в заголовках Ethernet фрейма для пункта назначения. По умолчанию это широковещательный адрес ff:ff:ff:ff:ff:ff. Большинство операционных систем также ответят, если ARP запрос отправлен ан их MAC-адрес, или на многоадресный адрес, который они прослушивают.

--arpsha=<m> или -u <m>

Использовать <m> как адрес источника ARP  Ethernet

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

--arptha=<m> или -w <m>

Использовать <m> в качестве целевого ARP  Ethernet адреса

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

--prototype=<i> или -y <i>

Установить тип Ethernet протокола на <i>, по умолчанию=0x0806.

Это устанавливает 16-битное поле типа протокола в заголовке Ethernet фрейма. Установка на не-дефолтное значение приведёт к тому, что пакет будет проигнорирован целью, или отправлен
в неправильный стек протокола.

--arphrd=<i> или -H <i>

Использовать <i> для типа ARP железа, по умолчанию=1.

Это устанавливает 16-битное ar$hrd поле в ARP пакете. Нормальным значением является 1 (ARPHRD_ETHER). Большинство, но не все операционные системы также ответят на 6 (ARPHRD_IEEE802). Некоторые системы отвечают на любое значение.

--arppro=<i> или -p <i>

Использовать <i> для типа ARP протокола, по умолчанию=0x0800.

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

--arphln=<i> или -a <i>

Установить длину аппаратного адреса на <i>, по умолчанию=6.

Это устанавливает 8-битное поле ar$hln в ARP пакете. Это устанавливает заявленную длину аппаратного адреса в ARP пакете. Установка его на любое значение, отличное от стандартного, сделает пакет не совместимым с RFC. Хотя некоторые операционные системы ещё могут на него ответить. Помните, что действительные длины полей ar$sha и ar$tha в ARP пакете не меняются этой опцией;
она изменяет только поле ar$hln.

--arppln=<i> или -P <i>

Установить длину протокола адреса на <i>, по умолчанию=4.

Это устанвливает 8-битное поле ar$pln в пакете ARP. Это устанавливает заявленную длину протокола адреса в ARP пакете. Установка его на любое значение, отличное от стандартного, сделает пакет не совместимым с RFC. Хотя некоторые операционные системы ещё могут на него ответить. Помните, что действительные длины полей ar$spa и ar$tpa ar$tpa в ARP пакете не меняются этой опцией;
она изменяет только поле ar$pln.

--arpop=<i> или -o <i> 

Использовать <i> для ARP операций, по умолчанию=1.

Это устанвливает 16-битное поле ar$op в пакете ARP. Большинство операционных систем ответят только на значение 1 (ARPOP_REQUEST). Хотя некоторые системы ответят также и на другие значения.

--arpspa=<a> или -s <a>

Использовать <a> как IP адрес источника.

Адрес должен быть в формате xxx.xxx.xxx.xxx; или буквальная строка “dest”, которая устанавливает адрес источника на тот же, как адрес целевого хоста. Это устанавливает 32-битное поле ar$spa в ARP пакете.
Некоторые операционные системы проверяют его, и ответят только если адрес источника внутри сети интерфейса приёма. Другие не заботятся и отвечают на адреса из любого источника. По умолчанию используется адрес исходящего интерфейса. ПРЕДУПРЕЖДЕНИЕ: Установка ar$spa на IP адрес назначения может нарушить работу некоторых операционных систем, поскольку они полагают, что есть конфликт в IP адресах, если они получили ARP запрос для их собственного адреса.

--padding=<h> или -A <h>   

Указывает отступ после пакета данных.

Устанавливает отступ данных на шестнадцатеричное значение
h>. Эти данные добавляются к концу ARP пакета, после данных. Большинство, если не все, операционные системы проигнорируют любой отступ. По умолчанию отступ отсутствует, хотя Ethernet драйвер на отправляющей системе может накладывать пакет на минимальную длину Ethernet фрейма.

--llc или -L       

Использовать RFC 1042 LLC фрейминг с SNAP.

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

--vlan=<i> или -Q <i>  

Использовать 802.1Q тэггинг с VLAN id <i>.

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

--pcapsavefile=<s> или -W <s>  

Записывать полученные пакеты в pcap файл <s>.

Это опция приводит к тому, что полученные ARP ответы
записываются в указанный pcap файл, а также декодируются
и отображаются. Этот файл может быть проанализирован
 программами, которые понимают формат pcap, такими как “tcpdump” и “wireshark”. –rtt или -D  Отображение времени прохождения пакета.

Files:

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

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

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

List of IEEE IAB (Индивидуальный блок адресов IAB) для сопоставления производителя.

/usr/share/arp-scan/mac-vendor.txt

Список других Ethernet MAC для сопоставления производителя.

Сканирование локальной сети

   ARP Scan находит активные устройства, как в проводных сетях Ethernet, так и в беспроводных Wifi сетях, возможна работа в Token Ring (протокол передачи данных в локальной вычислительной сети с топологией кольца и «маркерным доступом». ) и FDDI (Волоконно-оптический распределенный интерфейс передачи данных).

   Если в вашей сети есть устройства, которые не отвечают на любые запросы, такие как Ping, HTTP, HTTPS и т д, то их можно найти послав ARP запрос. Это могут быть различные фаерволы и маршрутизаторы, в том числе маршрутизаторы компании Cisco, такое поведение заложено их протоколом. В таком случае ARP сканирование сети Linux будет единственным способом найти такое устройство.

Не поддерживаются последовательные соединения PPP и SLIP, в них не используется ARP.

  Ниже приведена команда для простого способа сканирования:

# arp-scan --interface=eth0 --localnet
пример ответа сканирования сети
пример ответа сканирования сети

   Здесь параметр –interface, задает интерфейс для сканирования, а –localnet, говорит, что нужно использовать все возможные ip адреса для текущей сети.

   Ответ дает информацию:

   Сканирование было осуществлено на 256 портах, 23 устройства подключено, по каждому указан локальный ip, MAC адрес, название устройства (если распознано).

    Для того, чтобы посмотреть, какие есть интерфейсы в Вашей системе, необходимо выполнить:

# ls /sys/class/net
вывод интерфейсов
вывод интерфейсов

   Так же вместо параметра –localnet можно указать маску сети:

# arp-scan --interface=eth0 <маска_сети>
пример ответа сканирования сети по маске
пример ответа сканирования сети по маске

   ARP Scan или еще называемый MAC Scanner – это очень быстрый инструмент для сканирования локальной сети Linux с помощью ARP. ARP Scan находит все активные устройства, даже если у них включен брандмауэр.    ARP Scan это простой, но очень мощный инструмент, с помощью которого можно выполнять сканирование ip адресов в локальной сети linux. Те, кто знаком с Cisco маршрутизаторами и коммутаторами, знают что найти такие устройства можно только с помощью ARP. Это полезный инструмент для поиска подключенных устройств к АТС.

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices