Em suma, 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 @Quantim mencionou, isso não é possível sem instalar / ter um certificado / CA personalizado no dispositivo por trás do roteador, pois ele precisa de uma CA personalizada para atuar como um intermediário para conexões SSL e precisa ser capaz para gerar e assinar certificados que a vítima confia . Assim, a vítima deve ter o certificado da CA raiz do invasor em seu armazenamento confiável. Explicar como as CAs funcionam e como você pode alcançar o resultado desejável 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 é um pouco diferente.
O SSLsplit funciona de forma bastante semelhante a outras ferramentas de proxy SSL transparentes - como o mitmproxy, que tem mais recursos e é mais complexo.
Ele age como um homem intermediário entre o cliente e o servidor real. Contanto que o tráfego esteja sendo redirecionado para o servidor no qual o SSLsplit está em execução e atendendo alterando o gateway padrão , ARP spoofing , forjando entradas DNS ou qualquer outro meio. Em outras palavras, como você deve ter adivinhado, o SSLsplit seleciona conexões SSL de uma forma que finge ser o servidor real ao qual o cliente está se conectando e com o qual está disposto a se comunicar. Na verdade, ele gera dinamicamente um certificado e o assina com a chave privada de um certificado de CA que o cliente deve - vai - confiar.
Então, para responder à sua pergunta " O SSLsplita 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 acerte o jackpot com sua pesquisa.
E para responder " SSLsplit com regras iptables modificadas é suficiente e uma maneira razoável de fazer isto, ou eu teria que modificar outras partes do sistema de rede Linux, também? ", eu Deve-se dizer que, se você tiver configurado corretamente os conjuntos de regras do IPTables e as 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 você vai interceptar o tráfego dos clientes, como mencionado anteriormente. A propósito, você precisa observar que a palavra " transparente " em meios de computação (de um processo ou interface) funciona sem que o usuário esteja ciente de sua presença.
Trecho da documentação original:
SSLsplit supports plain TCP, plain SSL, HTTP and HTTPS connections
over both IPv4 and IPv6. For SSL and HTTPS connections, SSLsplit
generates and signs forged X509v3 certificates on-the-fly, based on
the original server certificate subject DN and subjectAltName
extension. SSLsplit fully supports Server Name Indication (SNI) and is
able to work with RSA, DSA and ECDSA keys and DHE and ECDHE cipher
suites. Depending on the version of OpenSSL, SSLsplit supports SSL
3.0, TLS 1.0, TLS 1.1 and TLS 1.2, and optionally SSL 2.0 as well.
SSLsplit can also use existing certificates of which the private key
is available, instead of generating forged ones. SSLsplit supports
NULL-prefix CN certificates and can deny OCSP requests in a generic
way. For HTTP and HTTPS connections, SSLsplit removes response headers
for HPKP in order to prevent public key pinning,
for HSTS to allow the user to accept untrusted certificates,
and Alternate Protocols to prevent switching to QUIC/SPDY.
As an experimental feature, SSLsplit supports STARTTLS mechanisms
in a generic manner.
Redirecionamento
Como o OP precisa saber como redirecionar as solicitações para o SSLsplit, mas não deseja configurar um proxy - como mencionado nos comentários -, vou dar uma rápida visão para isso e espero que ajude:
Scenario 1 : If SSLsplit is on the OpenWRT which you are using - i.e. if SSLsplit is set on the GateWay which victims (clients) are connecting to :
|
VICTIMS | ATTACKER
|
+-------~+ | (GATEWAY) If SSLsplit is set on the Gateway users are gonna connect to, you only need to redirect some ports to those SSLsplit is listening on
| | | SSLsplit will be running on two ports: 8080 for non-SSL TCP connections and 8443 for SSL connections.
| | ---> |
| | | sysctl -w net.ipv4.ip_forward=1
+~~~~~~~~+ | iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
| \ iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443 (HTTPS)
+-------~+ | \ +~~~~~~~~+ iptables -t nat -A PREROUTING -p tcp --dport 636 -j REDIRECT --to-ports 8443 (LDAPS)
| | | \ | | iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 8443 (MSA) Encryption = StartTLS
| | ---> | ===➤ | | iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT --to-ports 8443 (SMTPS) Encryption = SSL
| | | / | | iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT --to-ports 8443 (IMAPS) Encryption = StartTLS
+~~~~~~~~+ | / +~~~~~~~~+ iptables -t nat -A PREROUTING -p tcp --dport 5222 -j REDIRECT --to-ports 8080 (XMPP)
| / ...
+-------~+ |
| | |
| | ---> |
| | |
+~~~~~~~~+ |
|
|
Scenario 2 : AND IF SSLsplit is not set on the GateWay whic clients are connecting to - You will be in need of setting DNAT as the following :
VICTIMS | GATEWAY
|
+-------~+ |
| | |
| | ---> | IPTables will be like this :
| | |
+~~~~~~~~+ | SSLsplit iptables -t nat -A PREROUTING -d x.x.x.x/CIDR -p tcp -m tcp --dport 443 -j DNAT --to-destination z.z.z.z:8443
| \ iptables -t nat -A PREROUTING -d x.x.x.x/CIDR -p tcp -m tcp --dport 465 -j DNAT --to-destination z.z.z.z:8443
+-------~+ | \ +~~~~~~~~+ +~~~~~~~~+ ...
| | | \ | | | |
| | ---> | ===➤ | | ---------> | | In this scenario, all packets arriving on the router with a destination of x.x.x.x/CIDR will
| | | / | | | | depart from the router with a destination of z.z.z.z
+~~~~~~~~+ | / +~~~~~~~~+ +~~~~~~~~+
| /
+-------~+ | Redirects desired connection from somewhere
| | | to somewhere else to desired ports.
| | ---> |
| | |
+~~~~~~~~+ |
|
|
Preste atenção em definir o valor de net.ipv4.ip_forward
para 1. O comando que usei acima usando sysctl -w
não é permanente. Se você quiser defini-lo permanentemente, edite o arquivo /etc/sysctl.conf
, onde você pode adicionar uma linha contendo net.ipv4.ip_forward = 1
.
Por padrão, a maioria das distribuições Linux terá o IP Forwarding desabilitado. E IMHO é uma boa idéia, já que a maioria das pessoas não precisará usá-lo, mas como você está configurando um roteador / gateway Linux - útil para o servidor VPN (pptp ou ipsec) - você precisa ativar o encaminhamento. Isso pode ser feito de várias maneiras, como eu mostrei algumas.