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

Состояние перевода:
На этой странице представлен перевод статьи
MAC address spoofing
. Дата последней синхронизации: 10 июля 2021. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
В статье описаны способы подмены адреса Media Access Control (MAC).
Вручную
Существует два способа подменить MAC-адрес "вручную":
установить
и настроить либо
iproute2
, либо
macchanger
. Оба способа изложены ниже.
iproute2
Сперва проверьте ваш текущий MAC-адрес:
# ip link show
интерфейс
Здесь
интерфейс
— имя вашего
сетевого интерфейса
.
Необходимая нам в данный момент информация расположена в строке, начинающейся со слов "link/ether", за которыми следует 6-байтный номер:
link/ether 00:1d:98:5a:d1:3a
Отключите интерфейс:
# 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" будет иметь то значение, которое вы ему присвоили.
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
интерфейс
Примечание
В процессе смены МАС-адреса вы не сможете использовать устройство вне зависимости от способа подключения и статуса (включён/выключен) интерфейса.
Автоматически
systemd-networkd
systemd-networkd
поддерживает подмену MAC-адреса при помощи
файлов link
(подробнее см.
systemd.link(5)
).
Для подмены статическим адресом:
/etc/systemd/network/00-default.link
[Match]
MACAddress=
оригинальный MAC
[Link]
MACAddress=
новый MAC
NamePolicy=kernel database onboard slot path
Для случайной генерации MAC-адреса при каждой загрузке, установите
MACAddressPolicy=random
вместо
MACAddress=
новый MAC
.
systemd-udevd
udev
позволяет подменять MAC-адреса с помощью
правил
. Атрибут
address
позволяет udev найти нужное устройство по MAС-адресу производителя, после чего выполняется команда
ip
для его замены:
/etc/udev/rules.d/81-mac-spoof.rules
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="XX:XX:XX:XX:XX:XX", RUN+="/usr/bin/ip link set dev %k address YY:YY:YY:YY:YY:YY"
где
XX:XX:XX:XX:XX:XX
— оригинальный MAC-адрес, а
YY:YY:YY:YY:YY:YY
— новый. Для адреса необходимо использовать буквы в нижнем регистре.
Юнит 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
(см.
#macchanger
).
Включение службы
Добавьте имя интерфейса в название службы (например,
eth0
; в итоге служба будет назваться как-то вроде
macspoof@eth0.service
) и
включите
её.
Перезагрузитесь либо перезапустите необходимые службы в правильном порядке. Если вы являетесь администратором сети, в которой находится машина с изменяемым MAC-адресом, то изучите таблицу статических/динамических адресов на маршрутизаторе на предмет того, был ли MAC дествительно изменён.
netctl
Вы можете использовать
хуки netctl
для выполнения команд при каждом (пере)запуске профиля netctl на определённом сетевом интерфейсе. Замените
интерфейс
на необходимый:
/etc/netctl/interfaces/
интерфейс
#!/usr/bin/env sh
/usr/bin/macchanger -r
интерфейс
Сделайте скрипт исполняемым:
chmod +x /etc/netctl/interfaces/
интерфейс
Источник:
akendo.eu (archive)
NetworkManager
См.
NetworkManager#Configuring MAC address randomization
.
wpa_supplicant
wpa_supplicant может использовать случайный MAC-адрес для каждого ESS-соединения
[1]
.
Добавьте следующие строки в файл настроек:
/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
mac_addr=1
preassoc_mac_addr=1
gas_rand_mac_addr=1
iwd
Со следующими настройками iwd будет генерировать случайный MAC-адрес при каждом запуске (подробнее см.
iwd.config(5)
):
/etc/iwd/main.conf
[General]
AddressRandomization=once
AddressRandomizationRange=nic
Параметр
AddressRandomizationRange
определяет, какая часть адреса будет сгенерирована. При значении
nic
изменяться будут последние три октета, относящиеся непосредственно к сетевому интерфейсу; первые три октета останутся прежними. При значении
full
сгенерирован будет весь адрес целиком.
Решение проблем
Не удается подключиться к сети DHCPv4
Если вы используете dhcpcd (в NetworkManager используется по умолчанию) и не можете подключиться к сети DHCPv4, необходимо
изменить настройки dhcpcd
, чтобы арендовать адрес.
Смотрите также
Википедия:MAC-спуфинг
Macchanger на GitHub
Статья на debianadmin.com
с большим количеством опций для
macchanger