MAC address spoofing (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de MAC address spoofing. Data da última tradução: 2023-03-01. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Este artigo apresenta vários métodos para realizar o spoofing do endereço MAC (Media Access Control), ou seja, alterá-lo para dificultar a identificação de um dispositivo.

Nota: O termo foi traduzido como mascarar ou alterar, conforme o contexto.

Manualmente

Há dois métodos para mascarar um endereço MAC: instalar e configurar iproute2 ou macchanger. Ambos os são descritos abaixo.

iproute2

Primeiro, você pode verificar o seu endereço MAC atual com o comando:

# ip link show interface

onde interface é o nome da sua interface de rede.

A secção que nos interessa neste momento é a que tem "link/ether" seguido por um número de 6 bytes. Será provavelmente algo parecido com isto:

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

O primeiro passo para mascarar o endereço MAC é desativar a interface de rede. Pode ser realizado com o comando:

# ip link set dev interface down

Em seguida vamos de fato mascarar nosso MAC. Qualquer valor hexadecimal serve, mas algumas redes podem ser configuradas para recusar a atribuição de endereços IP a um cliente cujo MAC não corresponda a nenhum dos vendors conhecidos. Portanto, a menos que controle a(s) rede(s) a que se conecta, utilize o prefixo MAC de qualquer vendor real (basicamente, os três primeiros bytes), e utilize valores aleatórios para os três bytes seguintes. Para mais informações, por favor leia Wikipedia:Organizationally unique identifier.

Para alterar o MAC, precisamos rodar o comando:

# ip link set dev interface address XX:XX:XX:XX:XX:XX

Onde qualquer valor de 6 bytes será suficiente para XX:XX:XX:XX:XX:XX:XX.

O passo final é reativar a interface de rede. Isto pode ser feito através da execução do comando:

# ip link set dev interface up

Se quiser verificar se o seu MAC foi mascarado, basta executar novamente ip link show interface e verificar o valor para 'link/ether'. Se funcionou, 'link/ether' deve estar com o novo endereço que você definiu.

macchanger

Outro método utiliza macchanger (também conhecido como GNU MAC Changer). Fornece uma variedade de funções, como alterar o endereço para corresponder a um determinado vendor ou randomizá-lo completamente.

Instalar o pacote macchanger}.

A alteração é feita por interface, especificar o nome da interface de rede ao invés de interface em cada um dos seguintes comandos.

O endereço MAC pode ser mascarado com um endereço totalmente aleatório:

# macchanger -r interface

Para randomizar apenas bytes do endereço MAC atual específicos do dispositivo (ou seja, de forma que se o endereço MAC fosse verificado ainda se mostraria como sendo do mesmo vendor), você roda o comando:

# macchanger -e interface

Para alterar o endereço MAC para um valor específico, você executaria:

# macchanger --mac=XX:XX:XX:XX:XX:XX interface

Onde XX:XX:XX:XX:XX:XX é o MAC para o qual se deseja mudar.

Finalmente, para devolver o endereço MAC ao seu valor de hardware, original e permanente:

# macchanger -p interface
Nota: Um dispositivo não pode estar em uso (conectado de qualquer forma, ou com a sua interface habilitada) enquanto o endereço MAC estiver sendo alterado.

Automaticamente

systemd-networkd

systemd-networkd suporta spoofing de endereço MAC através de link files (ver systemd.link(5) para detalhes).

Para definir um endereço MAC mascarado estático:

/etc/systemd/network/01-mac.link
[Match]
PermanentMACAddress=original MAC

[Link]
MACAddress=spoofed MAC

Para randomizar o endereço MAC a cada boot, defina MACAddressPolicy=random ao invés de MACAddress=spoofed MAC.

systemd-udevd

O Udev permite realizar o spoofing de endereços MAC através da criação de regras udev. Utilize o atributo address para encontrar o dispositivo correto pelo seu endereço MAC original, e altere-o utilizando o comando 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 $name address YY:YY:YY:YY:YY:YY"

onde XX:XX:XX:XX:XX:XX é o endereço MAC original e YY:YY:YY:YY:YY:YY é o novo, utilizar letra minúscula para o endereço MAC.

systemd unit

Criando um unit

Abaixo você encontra dois exemplos de unidades systemd para alterar um endereço MAC no boot, um deles configura um MAC estático usando ip e outro usa macchanger para atribuir um endereço MAC aleatório. O serviço systemd network-pre.target é utilizado para assegurar que o MAC é alterado antes de um gerenciador de rede como Netctl ou NetworkManager, systemd-networkd ou dhcpcd iniciar o serviço.

iproute2

Unidade systemd que configura um MAC pré-definido:

/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

Unidade systemd que configura um endereço aleatório, preservando os bytes de vendor originais da placa de rede (NIC). Confira se o macchanger está instalado:

/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

Um endereço completamente aleatório pode ser definido utilizando a opção -r, ver #macchanger.

Habilitando o serviço

Adicione a interface de rede desejada ao nome do serviço (por exemplo, eth0) e habilite o serviço (por exemplo, macspoof@eth0.service).

Reinicie, ou pare e inicie, os serviços pré-requeridos e requeridos na ordem correta. Se estiver no controle da sua rede, verifique se o MAC alterado foi aceito pelo seu roteador, examinando as tabelas de endereços estáticos, ou DHCP, do roteador.

Interfaces netctl

Você pode usar um netctl hook para executar um comando cada vez que um perfil netctl é reiniciado para uma interface de rede específica. Substitua interface pela sua interface:

/etc/netctl/interfaces/interface
#!/usr/bin/env sh
/usr/bin/macchanger -r interface

Torne o script executável.

Fonte: akendo.eu[link inativo 2023-05-06 ⓘ]

NetworkManager

Veja NetworkManager (Português)#Configurando aleatorização de endereço MAC.

wpa_supplicant

wpa_supplicant pode usar um MAC aleatório para cada conexão ESS(AP) (ver [1] para detalhes).

Adicione o seguinte na sua configuração:

/etc/wpa_supplicant/wpa_supplicant-wlan0.conf
mac_addr=1
preassoc_mac_addr=1
gas_rand_mac_addr=1

iwd

Para randomizar o endereço MAC quando o iwd iniciar (ver iwd.config(5)} para detalhes):

/etc/iwd/main.conf
[General]
AddressRandomization=once
AddressRandomizationRange=nic

Especificar AddressRandomizationRange permite controlar qual a parte do endereço que é randomizada. Se definido para nic, apenas os octetos específicos da placa de rede (últimos três octetos) são randomizados. O endereço mac permanente da interface de rede é utilizado para os 3 octetos iniciais. Se colocado em full, todos os seis octetos do endereço são randomizados.

Troubleshooting

Falha de conexão a rede DHCPv4

Se não conseguir conectar a uma rede DHCPv4 e estiver utilizando dhcpcd, que é o padrão para o NetworkManager, poderá ter que modificar a configuração dhcpcd para obter um IP.

Ver também