O modo NAT, que você aprendeu no primeiro tutorial do Virt-Manager, é um modo que cria uma rede NAT dentro do host por meio de um switch virtual do Virt-Manager! O modo Macvtap é semelhante ao modo Bridge, pois ele usará o gateway padrão do seu host, que pode ser um roteador ou switch físico, e conseguirá escanear e ter contato com os computadores da mesma rede do host, exceto com o próprio host! No entanto, diferente do modo 100% Bridge, não se usa uma bridge, mas sim uma interface de rede física do próprio host, seja Wi-Fi ou Ethernet. No modo Bridge, a VM pode escanear e se comunicar com o host e todos os dispositivos da rede!
No nosso exemplo, usaremos a interface física! Neste tutorial, você aprenderá como fazer isso manualmente e também como usar nossa CLI de gestão e anonimato para o Virt-Manager!
A vantagem do modo Macvtap é a segurança para operações de anonimato ou sensíveis. Caso a VM seja hackeada, se o atacante conseguir sair da VM, ainda encontrará a barreira da rede Macvtap, que impede a comunicação com o host, dificultando a invasão do sistema! Você pode usar esse modo para isolar aplicativos na VM, como aqueles que podem ser vulneráveis a ataques de zero-click, por exemplo. Assim, além da segurança da VM, você terá o isolamento adicional da rede Macvtap entre o host e a VM!
No modo Macvtap, não é possível realizar testes de penetração no próprio host através de uma VM rodando nele, sem precisar de uma máquina física adicional na rede, pois o Macvtap impede que a VM enxergue e se comunique com o host!
No Virt-Manager, ao utilizar o Mac Spoofing no modo Bridge, Macvtap ou Route, não é possível alterar o MAC diretamente pela VM, como no exemplo de ligar o Debian e usar o Mac Spoofing com o Macchanger. Isso ocorre porque, nos modos Bridge e Macvtap, o MAC da VM é fixado no arquivo XML da máquina virtual, localizado em:
/etc/libvirt/qemu
Para realizar o Mac Spoofing, basta acessar os arquivos XML das máquinas virtuais, procurar pela tag <mac address>
e modificar o MAC address por um falsificado, para camuflar a identidade da sua VM nas redes e impedir o monitoramento do seu MAC real por ISPs ou sniffers.
O MAC gerado automaticamente pelo Virt-Manager será aleatório, o que, embora não seja um MAC real, ainda é um metadado que pode chamar a atenção de administradores de rede ou ISPs que utilizam sniffers para monitorar esses dados. Para evitar que sua máquina virtual seja identificada como uma VM, você pode falsificar o MAC address usando um endereço de fabricante legítimo, de forma a se camuflar como um dispositivo real, como por exemplo, em uma rede de hotel.
Exemplo: se a maioria dos dispositivos em um hotel estiver usando iOS, você pode gerar um MAC da Apple, modificar o arquivo .xml
da VM com esse MAC e, ao reiniciar a rede e o Virt-Manager, sua VM parecerá um dispositivo iOS, embora esteja executando um sistema operacional como Linux ou outro SO de anonimato para operações sensíveis, como transações com criptomoedas.
Para gerar um MAC falsificado, você pode utilizar ferramentas como o mullvad-mac-ram (mais avançado, com sandbox anti-forense e amnésico) ou a versão mais simples, mac-random.html, que pode ser baixada em: Gerador de MAC Address Amnésico.
Por exemplo, se você criou uma máquina virtual chamada "Ubuntu", o arquivo correspondente estará em /etc/libvirt/qemu/ubuntu.xml
. Para modificar o MAC address, siga os passos abaixo:
cd /etc/libvirt/qemu
sudo nano ubuntu.xml
Parar os serviços do Virt-Manager
sudo systemctl stop libvirtd.socket
sudo systemctl stop libvirtd-admin.socket
sudo systemctl stop libvirtd-ro.socket
sudo systemctl stop libvirtd
Reiniciar o serviço libvirtd
sudo systemctl stop libvirtd
sudo systemctl disable libvirtd
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
sudo systemctl restart libvirtd
sudo systemctl status libvirtd
Iniciar novamente os serviços do Virt-Manager
sudo systemctl start libvirtd.socket
sudo systemctl start libvirtd-admin.socket
sudo systemctl start libvirtd-ro.socket
sudo systemctl restart libvirtd.socket
sudo systemctl restart libvirtd-admin.socket
sudo systemctl restart libvirtd-ro.socket
Antes, selecione a interface de rede Ethernet física que seu Linux host está usando para se comunicar na rede e na internet!
Use os comandos nmcli
ou ip addr
.
O output de nmcli
será mais ou menos assim:
eth0: conectado para Conexão cabeada 1
"marca..."
ethernet (s667hj), 00:02:2A:bf:2d:47, hw, mtu 1500
padrão ip4
inet4 192.168.0.100/24
route4 0.0.0.0/0
route4 192.168.0.0/24
route4 169.254.0.0/16
inet6 fe80::1d80:a877:cf39:f059/64
route6 fe80::/64
wlp11s3: não disponível
"marca..."
wifi (zdf4k), 00:02:2A:8c:39:19, sw habilitado, hw, mtu 1500
lo: não gerenciável
"lo"
loopback (unknown), 00:02:2A:82:bc:e9, sw, mtu 65536
DNS configuration:
servers: 8.8.8.8 8.8.4.4
Nesse exemplo, a interface física é a eth0
, mas poderia ser outro nome. Cada host e marca de PC aparecerá com um nome diferente! Escolha o que corresponde ao seu caso.
Crie um arquivo do tipo .xml
.
Você pode usar um arquivo de texto, colocar os dados e depois renomeá-lo com a extensão .xml
, ou no terminal, use os comandos:
touch macvtap.xml;
nano macvtap.xml;
Adicione o seguinte conteúdo ao arquivo, substituindo interface_substitua
pela sua interface (no exemplo, é eth0
):
<network>
<name>macvtap</name>
<forward mode="bridge">
<interface dev="interface_substitua"/>
</forward>
</network>
Após substituir, o arquivo ficará assim:
<network>
<name>macvtap</name>
<forward mode="bridge">
<interface dev="eth0"/>
</forward>
</network>
Dê Control + O para salvar e Control + X para sair.
Execute os seguintes comandos:
sudo virsh list --all;
sudo virsh net-define macvtap.xml;
sudo virsh net-start macvtap;
Opcional: Para sempre se auto conectar quando ocorrer reboot da máquina, execute:
sudo virsh net-autostart macvtap;
Pronto, o modo MacVTap está pronto!
Inicie o Virt Manager com o seguinte comando:
sudo virt-manager;
Escolha a máquina virtual que deseja usar o Macvtap.
Clique duas vezes nela ou selecione Open ou Abrir.
Vá em Ver (ou See).
Selecione a opção Detalhes (ou Details).
Vá até a opção NIC:
Clique em Aplicar (ou Apply).
Em seguida, vá em Ver (ou See), depois em Console.
Agora, dê o start na máquina virtual.
Checando...
Se você estiver conectado na rede por um roteador com IP 192.168.0.1
, execute o comando:
ip route;
No output, deverá aparecer algo como:
default via 192.168.0.1
Ou seja, você está conectado ao roteador e poderá visualizar os computadores na rede, escaneá-los, se comunicar via SSH, compartilhar arquivos, etc., e até realizar testes de segurança na rede. Porém, o seu host é o único dispositivo que você não poderá ver ou interagir, devido ao modo MacVtap!
Se você for escanear a rede com o Nmap, pode instalá-lo com o seguinte comando:
sudo apt update && sudo apt install nmap -y
Após a instalação, você verá que o Nmap consegue escanear os dispositivos da rede, exceto o host!
No seu host, abra o terminal para checar o seu IP com o comando:
nmcli
ou ip addr
Na máquina virtual, instale o Nmap e execute o seguinte comando para verificar o IP da rede:
ip route
O que aparecer com ip/algum_número será o IP da rede e a máscara de rede em CIDR.
Por exemplo, para um roteador com o IP 192.168.0.1
, a rede ficará 192.168.0.0/24
.
Agora, use o comando:
sudo nmap -sV -O 192.168.0.0/24;
No resultado, você não encontrará o IP do host!
Do host, se você usar o mesmo comando, o IP da VM também não será checado com o Nmap, atacando a rede!
Isso serve para testar o modo Macvtap como uma defesa cibernética, usando o isolamento pela rede entre o host e a VM! Por exemplo, ao operar aplicativos como Telegram ou Signal em uma VM configurada com Macvtap, se um atacante tentar realizar um ataque de zero clique (que não tem defesa), e ele conseguir sair da VM para atacar o host, a rede Macvtap o impedirá!
Todo esse processo complexo é automatizado pela nossa CLI de Virt Manager.
Instale no seu Linux a Suit CLI de acordo com as instruções em:
Após instalar, execute o comando:
sudo virt_menu
O output será:
QEMU-KVM Virt-Manager Menu: Network Settings ---------------------------------------------- Choose an option: 1) virt_manager_start 2) virt_manager_stop 3) virt_manager_delete 4) virt_manager_nat 5) virt_manager_default 6) virt_manager_macvtap 7) virt_manager_route 8) virt_bridge 9) virt_mac_spoofing 10) virt_network_spoofing 0) Exit
Ative a opção 1 para iniciar o Virt Manager.
Use a opção 9 para realizar o MAC Spoofing de fabricante, com o objetivo de ocultar metadados contra o ISP e sniffers/scanners de rede em geral! Lembre-se de usar o mac-random.html, conforme ensinado anteriormente.
Use a opção 6 para configurar a rede MacVTap.
Caso não saiba qual interface de rede está utilizando, abra outro terminal e cheque o IP com os seguintes comandos:
nmcli
ou ip addr
Para parar o Virt Manager, use a opção 2, e para reiniciá-lo e confirmar o MAC Spoofing de fabricante na VM, use novamente a opção 1.
Para sair, utilize a opção 0.
sudo virt-manager
Agora, siga o procedimento manual já ensinado anteriormente para colocar sua VM em MacVTap!
Doar monero para ajudar no crescimento desse projeto: Clique aqui!