https://www.roe.ch/sssplit
O SSLSplit é uma ferramenta para ataques de man-in-the-middle contra conexões de rede criptografadas SSL/TLS. Pretende -se ser útil para forense de rede, análise de segurança de aplicativos e teste de penetração.
O SSLSplit foi projetado para encerrar transparentemente as conexões que são redirecionadas usando um mecanismo de tradução de endereço de rede. O SSLSplit termina o SSL/TLS e inicia uma nova conexão SSL/TLS com o endereço de destino original, enquanto registra todos os dados transmitidos. Além da operação baseada em NAT, o SSLSplit também suporta destinos estáticos e usando o nome do servidor indicado pelo SNI como destino a montante. O SSLSplit é puramente um proxy transparente e não pode atuar como um proxy HTTP ou de meias configurado em um navegador.
O SSLSplit suporta conexões simples TCP, SSL, HTTP e HTTPs simples em IPv4 e IPv6. Ele também tem a capacidade de atualizar dinamicamente o TCP simples para o SSL, a fim de suportar genericamente o SMTP STARTTLS e mecanismos de atualização semelhantes. O SSLSplit suporta totalmente a indicação do nome do servidor (SNI) e é capaz de trabalhar com as chaves RSA, DSA e EcdSA e os suites DHE e Ecdhe Cipher. Dependendo da versão do OpenSSL construída, o SSLSplit suporta SSL 3.0, TLS 1.0, TLS 1.1 e TLS 1.2 e também opcionalmente SSL 2.0.
Para conexões SSL e HTTPS, o SSLSPLIT gera e sinais forjou certificados x509v3 na fly, imitando o assunto do certificado de servidor original, a extensão SubjectName e outras características. O SSLSplit tem a capacidade de usar os certificados existentes dos quais a chave privada está disponível, em vez de gerar forjados. O SSLSplit suporta certificados CN de prefixo nulo, mas, de outra forma, não implementa explorações contra vulnerabilidades específicas de verificação de certificados nas pilhas SSL/TLS.
O SSLSplit implementa várias defesas contra mecanismos que normalmente impediriam os ataques do MITM ou as tornariam mais difíceis. O SSLSplit pode negar solicitações OCSP de maneira genérica. Para conexões HTTP e HTTPS, os cabeçalhos SSLSPlit ManGles para impedir a fixação de chave pública (HPKP) instrutada pelo servidor (HPKP), evite restrições estritas de segurança de transporte (HSTs), evite a transparência de certificado) (expectativa) e prevenir a troca de troca/spdy, htttp/2 ou werechets (Upgrade) e a alternância alternativa, HTTP/2 ou sedocados. A compactação HTTP, as codificações e a manutenção são desativadas para tornar os logs mais legíveis.
As opções de registro incluem arquivos de log de conexão e conteúdo tradicionais do SSLSplit, bem como arquivos PCAP e tráfego descriptografado espelhado para uma interface de rede. Além disso, certificados, segredos mestres e informações do processo local podem ser registrados.
Consulte a página manual SSLSplit (1) para obter detalhes sobre o uso do SSLSplit e a configuração dos vários motores NAT.
SSLSplit depende do OpenSSL, Libevent 2.x, LibpCap e Libnet 1.1.x Librarias por padrão; LibpCap e Libnet não são necessários se o recurso de espelhamento for omitido. A compilação depende da marca GNU e de um ambiente POSIX.2 no PATH . Se disponível, o PKG-Config é usado para localizar e configurar as dependências. Os testes de unidade opcionais dependem da biblioteca de verificação.
Atualmente, o SSLSplit suporta os seguintes sistemas operacionais e mecanismos NAT:
Atualmente, o suporte a informações do processo local ( -i ) está disponível no Mac OS X e FreeBSD.
Os recursos e compatibilidade SSL/TLS dependem muito da versão do OpenSSL vinculada. Para obter melhores resultados, use uma versão recente do OpenSSL ou Libressl.
Com os requisitos acima disponíveis, execute:
make
make test # optional unit tests
make sudotest # optional unit tests requiring privileges
make install # optional install
As dependências são configuradas automaticamente usando PKG-Config. Se as dependências não forem retiradas e a fixação PKG_CONFIG_PATH não ajudar, você poderá especificar seus respectivos locais manualmente, definindo OPENSSL_BASE , LIBEVENT_BASE , LIBPCAP_BASE , LIBNET_BASE e/ou CHECK_BASE para os respectivos prefixos.
Você pode substituir o prefixo de instalação padrão ( /usr/local ) definindo PREFIX . Para obter mais opções de construção e padrões de tempo de construção, consulte GNUmakefile e defaults.h .
Consulte as páginas manuais sslsplit(1) e sslsplit.conf(5) para documentação do usuário. Consulte NEWS.md para notas de lançamento listando mudanças significativas entre versões e SECURITY.md para obter informações sobre divulgação de vulnerabilidades de segurança.
O SSLSplit é fornecido sob uma licença BSD de 2 cláusulas. O SSLSplit contém componentes licenciados sob as licenças MIT e APSL. Consulte LICENSE , LICENSE.contrib e LICENSE.third , bem como os respectivos cabeçalhos de arquivo de origem para obter detalhes.
Consulte AUTHORS.md para a lista de colaboradores.
O SSLSplit foi inspirado no mitm-ssl por Claes M. Nyberg e sslsniff por Moxie Marlinspike, mas não compartilha o código-fonte com eles.