
☠ Ponto de acesso sem fio Man-in-the-middle dentro de um contêiner docker 🐳
Transforme qualquer computador Linux em uma rede Wi-Fi pública que realiza MITM silenciosamente em todo tráfego HTTP. Funciona dentro de um container Docker usando hostapd, dnsmasq e mitmproxy para criar uma rede sem fio honeypot aberta chamada "Public". Para mais diversão, mude o nome da rede para "xfinitywifi" para conectar automaticamente qualquer pessoa que já se conectou a essas redes... eles estão em toda parte.
AVISO: Este software é apenas para fins educacionais. Não deve ser usado para atividades ilegais. O autor não é responsável pelo seu uso. Não seja um idiota.
# clone the repo
git clone https://github.com/brannondorsey/mitm-router
cd mitm-router
# build the image this step can be omitted if you prefer to pull
# the image from the docker hub repository
docker build . -t brannondorsey/mitm-router
Execute o seguinte, substituindo AP_IFACE e INTERNET_IFACE pelo seu dispositivo sem fio e dispositivos ethernet/sem fio conectados à internet respectivamente. Você pode ver os nomes dos seus dispositivos de rede executando ifconfig.
# run the container
docker run -it --net host --privileged \
-e AP_IFACE="wlan0" \
-e INTERNET_IFACE="eth0" \
-e SSID="Public" \
-v "$(pwd)/data:/root/data" \
brannondorsey/mitm-router
Se tudo deu certo, você deve ver algo como:
Current MAC: a5:ae:f9:a4:b7:e3 (TP-LINK TECHNOLOGIES CO.,LTD.)
Permanent MAC: a5:ae:f9:a4:b7:e3 (TP-LINK TECHNOLOGIES CO.,LTD.)
New MAC: 00:d2:6b:d5:fe:bd (PHOTRON USA)
[ ok ] Starting system message bus: dbus.
[ ok ] Starting DNS forwarder and DHCP server: dnsmasq.
[ ok ] Starting advanced IEEE 802.11 management: hostapd.
Proxy server listening at http://0.0.0.0:1337
O mitm-router captura de forma transparente todo tráfego HTTP enviado ao roteador em 10.0.0.1:80. Ele não intercepta tráfego HTTPS (porta 443) pois isso alertaria o usuário de que um possível ataque man-in-the-middle estava ocorrendo. O tráfego entre URLs que começam com https:// não será capturado.
A pasta mitm-router/data/ é compartilhada com o container Docker para que possamos visualizar os arquivos de captura que ele coloca lá na nossa máquina host. Por padrão, você encontrará o arquivo de captura mitmdump em mitm-router/data/http-traffic.cap.
Você também pode conectar seu INTERNET_IFACE a um hotspot rodando no seu telefone para realizar MITM em movimento ;)
Se algo parecer que deu errado, veja a página de solução de problemas.
Derrube o container Docker para redefinir as regras de roteamento iptables.
# get the name of your container
docker ps
# attach to the container
docker stop <CONTAINER_NAME>
Proxy server listening at http://0.0.0.0:1337
[ ok ] Stopping DNS forwarder and DHCP server: dnsmasq.
[ ok ] Stopping advanced IEEE 802.11 management: hostapd.
[ ok ] Stopping system message bus: dbus.
received shutdown signal, exiting.
Por padrão, o mitm-router randomiza o endereço MAC do seu AP_IFACE para anonimizar seu dispositivo de rede. Isso pode ser desabilitado com a variável de ambiente MAC="unchanged". Você também pode definir explicitamente o endereço MAC do AP_IFACE com MAC="XX:XX:XX:XX:XX:XX".
As variáveis de ambiente suportadas estão listadas abaixo com seus valores padrão:
# wireless device name that will be used for the Access Point
AP_IFACE="wlan0"
# device name that is used for the router's internal internet connection
# packets from AP_IFACE will be forwarded to this device
INTERNET_IFACE="eth0"
# wireless network name
SSID="Public"
# optional WPA2 password; if left empty network will be public
PASSWORD=""
# optional randomization of AP_IFACE MAC address
# can be set to a specific value like "XX:XX:XX:XX:XX:XX"
# or "unchanged" to leave the device MAC alone
MAC="random"
# tcpdump output file location inside the container
CAPTURE_FILE="/root/data/http-traffic.cap"
# optional mitmproxy filter
# see http://docs.mitmproxy.org/en/stable/features/filters.html
FILTER=""
Veja a página de solução de problemas para mais informações.
Este ponto de acesso é executado dentro do Docker para isolamento, garantindo que quaisquer vulnerabilidades que possam ser exploradas no ponto de acesso não permitirão que um adversário tenha acesso ao seu computador ou rede doméstica. Dito isso, existem algumas ressalvas a serem observadas:
--net host compartilha todas as interfaces de rede e entradas iptables da máquina host com o container Docker. Presuma que um container Docker vulnerável teria acesso root a esses dispositivos.--privileged concede permissões estendidas ao container Docker.ufw no Linux) para bloquear tráfego de entrada em todas as portas, para que computadores na rede "Public" não tenham acesso a serviços expostos da sua máquina.Para segurança adicional, prefiro executar este container Docker em um computador dedicado, como um Raspberry Pi.
Este código começou como um hard fork do rpi-hostapd do simonschuang. O código foi fortemente modificado para fins de MITM.