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 (первые три байта), а для для оставшихся трех использовать случайное значение. Для дополнительной информации пожалуйста прочтите Wikipedia:ru:Уникальный идентификатор организации
Чтобы сменить 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 (смотрите 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
.
Способ 2: systemd-udevd
Udev позволяет подменять MAC-адреса в файлах правил[ссылка недействительна: раздел не найден]. Атрибут address
дает возможность udev находить правильное устройство по MAС-адресу производителя, а затем выполняется команда ip для смены адреса:
/etc/udev/rules.d/75-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
— новый.
Способ 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
Перезагрузитесь либо перезапустите необходимые службы в правильном порядке.If you are in control of your network, verify that the spoofed MAC has been picked up by your router by examining the static, or DHCP address tables within the router.
Способ 4: использование netctl
Вы можете использовать netctl хуки[ссылка недействительна: раздел не найден] для запуска команд, каждый раз когда профиль netctl (пере)запускается для нужного вам интерфейса. Замените interface
на необходимый:
/etc/netctl/interfaces/interface
#!/usr/bin/env sh /usr/bin/macchanger -r interface
Сделайте скрипт исполняемым:
chmod +x /etc/netctl/interfaces/interface
Источник: akendo.eu
Способ 5: NetworkManager
Смотрите NetworkManager (Русский)#Настройка подмены MAC-адреса на случайный[ссылка недействительна: раздел не найден].
Решение проблем
Не удается подключиться к сети DHCPv4
Если вы не можете подключиться к сети DHCPv4 и используете dhcpcd, который по умолчанию используется NetworkManager, необходимо изменить настройки dhcpcd, чтобы арендовать адрес.
Смотрите также
- Страница Macchanger на GitHub
- Статья на debianadmin.com с большим количеством опций для macchanger