SSLsplit é a ferramenta certa para interceptar e criptografar novamente o tráfego HTTPS em um roteador wifi?

7

Estou procurando fazer uma pesquisa de vulnerabilidades em produtos executados em vários dispositivos interceptando o tráfego HTTPS deles, mas não quero modificar os dispositivos além de instalar um certificado personalizado .

Parece que SSLsplit faz o que eu quero, já que permite " conexões [ para ser] transparentemente interceptado através de um mecanismo de conversão de endereços de rede e redirecionado para SSLsplit ". Pelo que entendi, essas regras NAT não precisam ser definidas no dispositivo que está executando o aplicativo que está sendo MITM-ed, e eu posso personalizar iptables para redirecionar o tráfego do roteador por meio de SSLsplit em um dispositivo executando Wifi frutado ou OpenWRT .

O 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?

OBSERVAÇÃO: O sistema que estou tentando criar requer que os dispositivos tenham um certificado instalado no armazenamento raiz confiável para "aceitar" essa interceptação. Eu não estou tentando construir um sistema para interceptar tráfego arbitrário de dispositivos indesejáveis.

    
por Andrey Fedorov 13.03.2017 / 16:35

3 respostas

2

Você tem duas partes aqui: o SSLsplit que atua como os clientes do servidor da Web 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 usado pelos dispositivos clientes, alterando o endereço de destino dos pacotes do servidor de destino real para o servidor SSLsplit.

Em seguida, o SSLsplit pode escolher a conexão e fazer o seguinte: conectando-se ao host externo (disponível no handshake TLS) e encaminhando a resposta.

Portanto, a única coisa da perspectiva de rede é que você precisa garantir que os clientes obtenham essas opções de rede que o gateway padrão aponte para um roteador que faz o NAT.

    
por 21.03.2017 / 02:26
5

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.

    
por 19.03.2017 / 12:39
1

Isso não é possível sem instalar o certificado personalizado / CA no dispositivo por trás do roteador. Em outro caso, você poderá atuar como qualquer serviço de rede. O SSLsplit só gera seu próprio certificado ou usa um para o qual você fornece a chave privada

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

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 todos os hosts que deseja interceptar e pode interceptar todo o tráfego, mas isso ainda é MitM attact no SSL

    
por 17.03.2017 / 22:29