Estou procurando fazer uma pesquisa de vulnerabilidade em produtos executados em uma variedade de dispositivos interceptando seu tráfego HTTPS, mas não quero modificar os dispositivos além de instalar um certificado personalizado .
Parece que o SSLsplit faz o que eu quero, pois permite que " conexões [seja] interceptadas de forma transparente por meio de um mecanismo de tradução de endereços de rede e redirecionadas para o SSLsplit ". Pelo que entendi, essas regras NAT não precisam ser definidas no dispositivo que está executando o aplicativo sendo MITM-ed, e posso personalizar o iptables para redirecionar o tráfego do roteador por meio de SSLsplit em um dispositivo executando Fruity Wifi ou OpenWRT .
O SSLsplit com regras iptables modificadas é suficiente e uma maneira razoável de fazer isso, ou eu também teria que modificar outras partes do sistema de rede Linux?
NOTA: O sistema que estou tentando construir requer que os dispositivos tenham um certificado instalado no armazenamento raiz confiável para "aceitar" essa interceptação. Não estou tentando construir um sistema para interceptar tráfego arbitrário de dispositivos indesejados.
Resumindo, sim, pode ser a ferramenta certa, mas na verdade não faz diferença se você estiver usando SSLStrip , SSLSplit , mitmproxy ou qualquer outra ferramenta que possa fazer o seu trabalho, você deve apenas tomar cuidado com o modo como funciona.
Como o @Quantim mencionou, isso não é possível sem instalar/ter um certificado/CA personalizado no dispositivo atrás do roteador, pois ele precisa de um CA personalizado para atuar como um intermediário para conexões SSL e precisa ser capaz de gerar e assinar certificados nos quais a vítima confia . Assim, a vítima deve ter o certificado CA raiz do invasor em seu armazenamento confiável. Explicar como as CAs funcionam e como você pode alcançar o resultado desejado usando as ferramentas mencionadas está além do escopo desta resposta, mas dependendo do tipo de cliente - navegador de desktop ou celular - você deve observar que a instalação dos certificados raiz difere um pouco.
O SSLsplit funciona de maneira bastante semelhante a outras ferramentas de proxy SSL transparentes - como o mitmproxy, que possui mais recursos e é mais complexo. Ele age como um intermediário entre o cliente e o servidor real. Desde que o tráfego esteja sendo redirecionado para o servidor no qual o SSLsplit está sendo executado e escutando, alterando o gateway padrão , falsificação de ARP , falsificação de entradas de DNS ou qualquer outro meio. Em outras palavras, como você deve ter adivinhado, o SSLsplit capta as conexões SSL de uma forma que finge ser o servidor real ao qual o cliente está se conectando e deseja se comunicar. Na verdade, ele gera dinamicamente um certificado e o assina com a chave privada de um certificado CA no qual o cliente deve - vai - confiar.
Então, para responder à sua pergunta " O SSLsplit é a ferramenta certa para interceptar e criptografar novamente o tráfego HTTPS em um roteador wi-fi? ", sim, pode ser, mas você sabe o suficiente para fazer isso? Se sim, vá e ganhe o jackpot com sua pesquisa.
E para responder " SSLsplit com regras iptables modificadas é suficiente e uma maneira razoável de fazer isso, ou eu teria que modificar outras partes do sistema de rede Linux também? ", Devo dizer que se você configurou corretamente seus IPTables conjuntos de regras e regras NAT/DNAT, e se seus clientes puderem considerar o certificado CA como confiável, sim, isso será suficiente - com conjuntos de regras iptables modificados e redirecionando o tráfego dos clientes para o servidor que você vai interceptar os clientes ' tráfego, como mencionado antes. A propósito, é preciso observar que a palavra " transparente " em computação significa (de um processo ou interface) funcionando sem que o usuário esteja ciente de sua presença.
Trecho da documentação original:
Redirecionamento
Como o OP precisa saber como redirecionar solicitações para SSLsplit, mas não deseja configurar um proxy - conforme mencionado nos comentários - darei uma visão rápida de como fazer isso e espero que ajude:
Preste atenção ao definir o valor de
net.ipv4.ip_forward
como 1. O comando que usei acimasysctl -w
não é permanente. Se você quiser configurá-lo permanentemente, você deve editar o arquivo/etc/sysctl.conf
onde você pode adicionar uma linha contendonet.ipv4.ip_forward = 1
.Por padrão, a maioria das distribuições do Linux terá o encaminhamento de IP desabilitado. E IMHO, esta é uma boa ideia, já que a maioria das pessoas não precisará usá-lo, mas como você está configurando um roteador/gateway Linux - útil para servidor VPN (pptp ou ipsec) - você precisa habilitar o encaminhamento. Isso pode ser feito de várias maneiras, conforme mostrei algumas.
Isso não é possível sem instalar um certificado/CA personalizado no dispositivo atrás do roteador. Em outros casos, você poderá atuar como qualquer serviço de rede. O SSLsplit gera apenas seu próprio certificado ou usa um para o qual você fornece a chave privada
Fonte
Em ambos os casos, o cliente sem seu certificado/CA personalizado obtém um erro de emissor de certificado inválido
Interceptação transparente significa que você não precisa especificar cada host que deseja interceptar e pode interceptar todo o tráfego, mas ainda é um ataque MitM em SSL
Você tem duas partes aqui: o SSLsplit, que atua como o servidor da Web ao qual os clientes estão se conectando, e o NAT, que troca endereços de destino em pacotes para redirecioná-los ao servidor SSLsplit.
O NAT precisa ser configurado no roteador que os dispositivos clientes usam, alterando o endereço de destino dos pacotes do servidor de destino real para o servidor SSLsplit.
Então o SSLsplit pode pegar a conexão e fazer o seu trabalho: conectando-se ao host externo (disponível no handshake TLS) e encaminhando a resposta.
Portanto, a única coisa do ponto de vista da rede é que você precisa garantir que os clientes obtenham tais opções de rede que seu gateway padrão aponte para um roteador fazendo o NAT.