MAC address spoofing (Portuguê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.
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
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 2024-07-30 ⓘ]
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
- Wikipedia:MAC spoofing
- Macchanger GitHub page
- Article on DebianAdmin with more macchanger options