MAC address spoofing (Русский)
В этой статье описываются несколько способов подмены адреса 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, чтобы арендовать адрес.
Смотрите также
- Страница Macchanger на GitHub
- Статья на debianadmin.com с большим количеством опций для macchanger