MAC address spoofing (Русский)

From ArchWiki
(Redirected from Смена MAC адреса)
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

В этой статье описываются несколько способов подмены адреса Media Access Control (MAC).

Вручную

Существует два способа подмены MAC-адреса: используя iproute2 (установленный по умолчанию), и с помощью macchanger (доступный в официальных репозиториях). Оба способа изложены ниже.

Способ 1: iproute2

Сперва проверьте ваш текущий MAC-адрес при помощи команды:

# ip link show интерфейс

где интерфейс — имя вашего сетевого интерфейса.

Необходимая нам в данный момент информация расположена в строке, начинающейся со слов "link/ether", за которыми следует 6-битный номер. Скорее всего, у вас это будет выглядеть примерно так:

link/ether 00:1d:98:5a:d1:3a

Первый шаг для подмены MAC-адреса — отключить интерфейс. Это можно сделать, выполнив команду:

# ip link set dev интерфейс down

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

Чтобы сменить MAC, необходимо выполнить команду:

# ip link set dev интерфейс address XX:XX:XX:XX:XX:XX

где вместо XX:XX:XX:XX:XX:XX необходимо указать любое 6-битное значение.

Последний шаг — включить интерфейс обратно. Это можно сделать, выполнив команду:

# ip link set dev интерфейс up

Если вы хотите проверить, произошла ли подмена MAC-адреса, просто еще раз запустите ip link show интерфейс и проверьте значение "link/ether". Если подмена сработала, "link/ether" будет иметь то значение, которое вы ему присвоили.

Способ 2: macchanger

В этом способе используется пакет macchanger (GNU MAC Changer). Он предоставляет множество функций, таких как смена адреса для соответствия конкретному поставщику и присвоение полностью случайного адреса.

Установите пакет macchanger из официальных репозиториев.

Подмена осуществляется для конкретного интерфейса: в каждой из следующих команд заменяйте интерфейс на имя вашего сетевого интерфейса.

Вы можете сгенерировать полностью случайный адрес:

# macchanger -r интерфейс

А чтобы изменить только байты, которые являются уникальными для конкретного устройства (благодаря чему при проверке MAC-адрес будет по-прежнему считаться принадлежащим тому же производителю), необходимо выполнить:

# macchanger -e интерфейс

Для установки конкретного MAC-адреса выполните:

# macchanger --mac=XX:XX:XX:XX:XX:XX интерфейс

где XX:XX:XX:XX:XX:XX — MAC, который вы хотите присвоить.

Наконец, для восстановления исходного значения MAC-адреса:

# macchanger -p интерфейс
Примечание: Пока будет происходить смена МАС-адреса, вы не сможете использовать устройство вне зависимости от способа подключения и того, включен ли сетевой интерфейс.

Автоматически

Способ 1: systemd-networkd

systemd-networkd поддерживает подмену MAC-адреса при помощи файлов link:

/etc/systemd/network/00-default.link
[Match]
MACAddress=постоянный MAC

[Link]
MACAddress=новый MAC
NamePolicy=kernel database onboard slot path

Для получения дополнительной информации смотрите страницу справочного руководства man systemd.link.

Способ 2: systemd-udevd

Udev позволяет подменять MAC-адреса в файлах правил. Атрибут address дает возможность udev находить правильное устройство по MAС-адресу производителя, а затем выполняется команда для смены адреса:

/etc/udev/rules.d/75-mac-spoof.rules
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="02:03:09:xx:xx:xx", RUN+="/usr/bin/ip link set dev %k address c8:0a:a9:xx:xx:xx"

где XX:XX:XX:XX:XX:XX — оригинальный MAC-адрес, YY:YY:YY:YY:YY:YY — новый.

Способ 3: юнит systemd

Создание юнита

Ниже вы найдете пару примеров юнитов systemd для изменения MAC-адреса при загрузе системы: первый устанавливает указанный MAC, используя утилиту ip, а второй использует macchanger для присвоения случайного адреса. Зависимость network-pre.target используется для того, чтобы смена MAC происходила перед тем, как запустятся сетевые программы вроде netctl, NetworkManager, systemd-networkd или dhcpcd.

iproute2

Юнит systemd, устанавливающий указанный MAC-адрес:

/etc/systemd/system/macspoof@.service
[Unit]
Description=MAC Address Change %I
Wants=network-pre.target
Before=network-pre.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
Type=oneshot
ExecStart=/usr/bin/ip link set dev %i address 36:aa:88:c8:75:3a
ExecStart=/usr/bin/ip link set dev %i up

[Install]
WantedBy=multi-user.target
macchanger

Юнит systemd, устанавливающий случайный адрес (префикс производителя остается тем же). Удостоверьтесь, что у вас установлен пакет macchanger):

/etc/systemd/system/macspoof@.service
[Unit]
Description=macchanger on %I
Wants=network-pre.target
Before=network-pre.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
ExecStart=/usr/bin/macchanger -e %I
Type=oneshot

[Install]
WantedBy=multi-user.target

Если вы хотите, чтобы адрес измнялся целиком, включая префикс производителя (первые три байта), используйте опцию -r вместо -e (смотрите также #Способ 2: macchanger).

Включение службы

Включите службу, добавив требуемое имя интерфейса (например, eth0) к:

# systemctl enable macspoof@eth0.service

Перезагрузитесь либо перезапустите необходимые службы в правильном порядке.

Решение проблем

Не удается подключиться к сети DHCPv4

Если вы не можете подключиться к сети DHCPv4 и используете dhcpcd, который по умолчанию используется NetworkManager, необходимо изменить настройки dhcpcd, чтобы арендовать адрес.

Смотрите также