Como alterar permanentemente o endereço MAC no Linux

30 de maio de 2018

Este artigo explica como alterar/falsificar permanentemente os endereços MAC das interfaces de rede. Para isso, usaremos o Macchanger, um utilitário para manipulação de endereços MAC, para o qual criaremos uma unidade systemd para iniciá-lo automaticamente na inicialização.

Ferramenta Macchanger

Macchanger, a ferramenta que vamos usar neste artigo para alterar o endereço MAC, tem um serviço que pergunta se você deseja alterar seu MAC cada vez que o computador inicializa, mas isso não funciona para mim no Ubuntu 18.04. Como qualquer alteração feita pelo Macchanger é redefinida quando você reinicia o sistema, este artigo inclui instruções para criar uma unidade systemd para executar o Macchanger automaticamente quando o computador Linux é inicializado, alterando o endereço MAC a cada vez.

Para usar este guia, seu sistema Linux precisa usar o systemd, obviamente.

1. Instale o Macchanger

Macchanger deve estar nos repositórios das principais distribuições Linux. Para instalá-lo no Debian/Ubuntu/Linux Mint, use:

Comandos para usar no terminal

sudo apt install macchanger

2. Descubra a interface de rede para a qual deseja alterar o endereço MAC

Para isso, você pode usar o seguinte comando:

Comandos para usar no terminal

ifconfig -a

Se estiver usando um sistema em que isso não funciona mais, você pode executar este comando:

Comandos para usar no terminal

ip link show

Suas interfaces de rede agora devem ser exibidas assim:

  • Para ifocnfig -a:
$ ifconfig -a
enp10s0: flags=4163  mtu 1500
        inet 192.168.1.211  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe60::cc24:29cf:2c1:1c5a  prefixlen 64  scopeid 0x20
        ether 1d:21:da:ab:1d:71  txqueuelen 1000  (Ethernet)
        RX packets 164861  bytes 215658240 (215.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 45118  bytes 8577639 (8.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 265  bytes 20133 (20.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 265  bytes 20133 (20.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp3s0: flags=4098  mtu 1500
        ether 1e:14:57:1c:66:11  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • Para ip link show:
$ ip link show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp10s0:  mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 1d:21:da:ab:1d:71 brd ff:ff:ff:ff:ff:ff
3: wlp3s0:  mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 1e:14:57:1c:66:11 brd ff:ff:ff:ff:ff:ff

Aqui, a interface de rede com fio é enp10s0 e a interface de rede sem fio é wlp3s0 (anteriormente, eth0, 1, etc. era usado para interfaces com fio e wlan0, 1 e assim por diante para sem fio). Anote a interface de rede para a qual você deseja falsificar o endereço MAC.

3. Verifique se Macchanger realmente funciona em seu sistema

Antes de criar a unidade do systemd para alterar o endereço MAC automaticamente em cada reinicialização, verifique se Macchanger pode realmente alterar seu endereço MAC (já vi casos em que ele não funciona por algum motivo). Para alterar temporariamente o endereço MAC (a alteração é revertida após a reinicialização do sistema), execute o Macchanger da seguinte maneira:

Comandos para usar no terminal

sudo macchanger -r NETWORK-INTERFACE

NETWORK-INTERFACE é a interface de rede para a qual você deseja alterar o MAC, conforme listado na etapa 2 neste artigo (por exemplo, enp10s0, wlp3s0).

Se Macchanger funcionar, a opção -r deve alterar o MAC para um endereço MAC aleatório e o comando deve gerar o endereço MAC original e o novo.

4. Crie uma unidade systemd para executar o Macchanger automaticamente sempre que o sistema for iniciado (para que o endereço MAC mude cada vez que o sistema for inicializado)

Criaremos o arquivo de unidade systemd 24430105 e o abriremos como raiz com um editor de texto:

Comandos para usar no terminal

sudo touch /etc/systemd/system/changemac@.service

gedit admin:///etc/systemd/system/changemac@.service

Se você não tiver o Gedit instalado, substitua-o no comando acima por outro editor de texto instalado em seu sistema.

Cole o seguinte no arquivo changemac@.service:

[Unit]
Description=changes mac for %I
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
Type=oneshot
ExecStart=/usr/bin/macchanger -r %I
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

A unidade systemd usa macchanger -r para alterar o MAC. -r define um endereço MAC totalmente aleatório. Você pode alterar -r para -e para alterar o MAC, mas preservar os bytes do fornecedor da NIC original, -a para definir o MAC do fornecedor aleatório do mesmo tipo e assim por diante. Você pode ver todas as opções disponíveis executando:

Comandos para usar no terminal

macchanger --help

Você também pode definir um endereço MAC não aleatório personalizado. Para isso, altere a linha ExecStart=/usr/bin/macchanger -r %I para algo assim:

Comandos para usar no terminal

ExecStart=/usr/bin/macchanger --mac=XX:XX:XX:XX:XX:XX %I

Substituindo XX:XX:XX:XX:XX:XX pelo novo endereço MAC.

5. Habilite o serviço systemd Macchanger

Agora é hora de habilitar o serviço systemd para que ele comece na inicialização. Para isso, use:

Comandos para usar no terminal

sudo systemctl enable changemac@enp10s0.service

Substituindo enp10s0 pelo endereço de rede da etapa 2.

Você pode usar o mesmo comando para ativar a alteração do endereço MAC para várias interfaces de rede.

6. Reinicialize o sistema

Sua(s) interface(s) de rede agora devem ter um novo endereço MAC. Para saber como verificar o endereço MAC antigo (original) e o novo, consulte abaixo.

Como verificar o endereço MAC original e o novo

Macchanger pode ser usado para descobrir o MAC original e o novo endereço MAC, executando este comando:

Comandos para usar no terminal

macchanger -s NETWORK-INTERFACE

Onde NETWORK-INTERFACE  é a interface de rede que você descobriu usando os comandos da etapa 2.

Exemplo:

$ macchanger -s enp10s0
Current MAC:   1d:21:da:ab:1d:71 (unknown)
Permanent MAC: 72:ab:3d:89:88:88 (Intel Corporate)

Como desativar a alteração do MAC em cada reinicialização com o systemd

Para desfazer as alterações, comece desabilitando o (s) serviço (s) do trocador de MAC systemd:

Comandos para usar no terminal

sudo systemctl disable changemac@enp10s0.service

Substituindo enp10s0 pelo endereço de rede da etapa 2 (das instruções de configuração inicial). Faça isso para cada interface de rede para a qual habilitou o serviço anteriormente.

Agora você pode remover o arquivo de serviço systemd do trocador de MAC:

Comandos para usar no terminal

sudo rm /etc/systemd/system/changemac@.service

Esse post foi traduzido do site LinuxUprising.com pela rtland.team.

Linux Uprising Blog

Confira a versão original desse post em inglês:

How To Permanently Change The MAC Address On Linux
Propaganda
Propaganda