SSL/TLS

O Transport Layer Security, ou TLS, é um protocolo utilizado para fornecer privacidade e integridade de dados entre duas partes durante a comunicação pela Internet. É a tecnologia de segurança padrão para estabelecer um link criptografado entre um servidor web e um navegador/aplicação.

A criptografia Secured Socket Layer, ou SSL, foi desenvolvida pela Netscape em 1995 com o propósito de garantir privacidade, autenticação e integridade de dados nas comunicações pela Internet. Em 1999, a Internet Engineering Task Force (IETF) propôs uma atualização para SSL. Como esta atualização estava sendo desenvolvida pela IETF e a Netscape não estava mais envolvida, o nome foi alterado para TLS.

Em 2014, o SSL foi oficialmente considerado obsoleto devido à falta de atualizações e vulnerabilidades de segurança identificadas. A maioria dos navegadores modernos parou de oferecer suporte ao SSL, tornando-o incompatível com websites e serviços modernos. Os termos SSL e TLS agora são usados ​​indistintamente quando se referem a esta tecnologia. O TLS, ou Transport Layer Security, funciona de maneira similar para proteger seus dados online. É como um protocolo de segurança que cria um túnel confidencial entre seu dispositivo e um site ou serviço. Através desse túnel, as informações trafegam de forma criptografada.

Como o TLS funciona?

O objetivo principal do TLS é a Autenticação e a Confidencialidade, mas ele também fornece Integridade para os dados.

Durante o  processo de autenticação chamado handshake entre dois dispositivos em comunicação, o processo garante que ambos os dispositivos devam confirmar quem afirmam ser. Durante um handshake TLS, os dois lados em comunicação trocam mensagens para se reconhecerem, verificarem um ao outro, para então estabelecer os algoritmos de criptografia que usarão e assim concordar com as chaves de sessão. Caso alguma pessoa tente interceptar esses dados que serão criptografados verá apenas uma mistura distorcida de caracteres que é quase impossível de descriptografar. O SSL/TLS também assina digitalmente os dados para fornecer integridade dos dados, verificando se os dados não foram alterados antes de chegarem ao destinatário pretendido.

Passo a passo do TLS:

O handshake TLS consiste em três partes, começando com um cliente enviando uma solicitação SYN para um servidor que hospeda as informações que o cliente está procurando. O servidor então confirmará o recebimento da solicitação de sincronização do cliente enviando um SYN ACK  de volta ao cliente. Por último, o Cliente confirma o recebimento da mensagem de sincronização do servidor (ACK).

Quando um cliente, como um navegador da Web, inicia uma conexão TLS, com a mensagem ClientHello, ele especifica a versão mais alta do protocolo TLS que suporta, um número aleatório, uma lista de conjuntos de criptografia que suporta em ordem preferencial, métodos de compactação sugeridos e quaisquer extensões TLS, como ID de sessão, tickets de sessão, SNI, ALPN e assim por diante.

Depois de receber o ClientHello, o servidor escolhe os parâmetros para o handshake daqui para frente. O servidor então responde ao cliente escolhendo o seguinte: uma versão do protocolo, um número aleatório, um conjunto de criptografia, Certificado e um método de compactação. O servidor pode impor sua própria preferência de seleção do conjunto de cifras seguido de uma mensagem informando que a negociação do handshake foi finalizada.

O cliente então valida o Certificado em relação ao trusted store, o período de validade especificado no certificado e verifica a revogação pela Autoridade de Certificação emissora, a CA. O cliente pode responder com uma Troca de Chave do Cliente (Client Key Exchange), se necessário, seguida por uma mensagem Alterar Especificação de Cifra (Change Cipher Spec). Isto indica ao servidor que todas as mensagens futuras nesta conexão serão criptografadas e autenticadas com as informações previamente negociadas. Finalmente, o cliente envia uma mensagem Finished contendo o código de autenticação das mensagens de handshake anteriores.

O servidor então responde com sua própria mensagem Change Cipher Spec, indicando ao cliente que todas as mensagens futuras nesta conexão serão criptografadas e autenticadas com as informações previamente negociadas.

Finalmente, o servidor envia uma mensagem Finished contendo o código de autenticação das mensagens de handshake anteriores. O handshake TLS agora está completo e inicia-se a comunicação segura entre o cliente e a aplicação.

Ao final  da comunicação, cliente e servidor fecham o túnel privado e descartam a chave secreta compartilhada.

Referência

https://www.cloudflare.com/pt-br/learning/ssl/what-happens-in-a-tls-handshake

MITM com arpspoof, thc-ipv6 e SSLStrip

Os ataques à rede local do tipo man-in-the-middle, ou comumente conhecido como MITM, permitem ao atacante posicionar-se no meio da comunicação entre duas partes. Este ataque é útil para conduzir outros ataques, como sniffing(captura das informações) e session hijacking (sequestro de sessão).

Em um ataque MITM, a vítima não percebe a interceptação do tráfego e isso permite ao atacante a leitura e captura do tráfego entre as duas vítimas como também a alteração da informação para os fins de objetivo do ataque, sem a interrupção da comunicação do ponto de vista da vítima.

Em IPv4, um ataque man-in-the-middle pode ser executado de diversas formas, como com o envenenamento do cache ARP (ARP cache poisoning /ARP Spoofing) e a falsificação de mensagens ICMPv6 durante a descoberta de vizinhos e/ou o serviço DHCPv6.

arpspoof

Os equipamentos com função de gateway na rede possuem a responsabilidade de rotear os pacotes da rede local para outras redes dentro do domínio da empresa ou Internet. Ferramentas como arpspoof disparam mensagens ARP reply ao computador da vítima (em uma rede IPv4) falsificando o endereço MAC do gateway. Essa série de respostas ARP dizem ao nosso alvo que a máquina atacante é o gateway de destino. Desse modo, quando o alvo enviar o tráfego para o dispositivo de destino, o switch enviará os pacotes da vítima diretamente para a máquina do atacante.

THC-IPv6

O THC-IPv6 possui diversas ferramentas para spoofing (falsificação) em redes IPv6, forjando os pacotes de router advertisement (RA ou anuncio de roteadores), neighbor advertisement (NA ou anuncio de vizinhos), router solicitation (RS ou solicitação de roteadores) e neighbor solicitation (NS ou solicitação de vizinhos). Em ataques específicos MITM, o THC-IPv6 pode anunciar que a máquina do atacante é o roteador para os pacotes de solicitação (RS e NS) ou envia deliberadamente que possui a melhor rota padrão, assim o computador da vítima recebe o anúncio falso da máquina atacante e envia todos os pacotes que iriam direto ao roteador para a máquina atacante.

A RFC 4861, lista 3 (três) tipos de prioridades para rotas ensinadas aos computadores da rede local via mensagens ICMPv6 RA: baixa, média (padrão) e alta. Utilizando dessa implementação o THC-IPv6 consegue enviar uma atualização anunciando-se como o roteador em a rede com a mais alta prioridade.

Com o atacante personificando o gateway da rede tanto em redes IPv4 e IPv6, todo o tráfego não criptografado pode ser lido, modificado ou descartado, possibilitando outros tipos de ataques.

 SSLStrip

Uma vez que o atacante consegue se posicionar para capturar todo o tráfego da vítima e ler as informações que trafegam sem nenhum tipo de criptografia, algumas técnicas podem ser utilizadas para as conseguir acesso as credenciais através de serviços de rede que utilizam navegadores de Internet.

A grande maioria dos sites provedores de serviço tem gerado versões de suas páginas com o protocolo SSL que tem como objetivo criar um canal criptografado entre o servidor da aplicação e o cliente. O SSL é associado juntamente com outros protocolos para fornecer uma implementação segura de serviços e aplicações, como: SMTPS, IMAPS, e etc. Uma vez que o SSL é utilizado com o protocolo HTTP, ele é denominado como HTTP over SSL ou HTTPS.

Os atacantes atualmente utilizam de técnicas como sequestro de sessão (session hijacking) para explorar a comunicação de uma sessão valida da vítima. O roubo de sessão para o trafego HTTPS, também conhecido como SSL hijacking, trabalha em cima da conexão HTTP (não segura) para uma segura (HTTPS) intermediando a conexão SSL, antes dela correr. Geralmente um usuário ao acessar uma página digita apenas o nome da página sem o prefixo “http://” ou “https://”, os navegadores de Internet como o Internet Explorer, Chrome, Firefox, entre outros, adicionam automaticamente o prefixo ‘http://’ na requisição da página web. Se a página for HTTPS, o servidor web retornará uma mensagem ao host solicitando o redirecionamento para a versão https://”.

Usando como referência o site http://outlook.com , quando o navegador recebe a resposta de redirecionamento do servidor web, ele emite uma nova requisição para o site incorporado na resposta da mensagem de redirecionamento, em nosso caso https://outlook.live.com/owa/. O navegador então estabelecerá a conexão SSL / TLS com o site. O resto da comunicação acontece via HTTPS a partir de agora.

A ferramenta SSLStrip, escrita por Moxie Marlinspike, é bastante utilizada em um ataque man-in-the-middle para SSL Hijacking. O SSLStrip fecha uma sessão HTTP com a vítima e uma sessão HTTPS com a página web, capturando assim as informações que deveriam ser criptografadas. A vítima não receberá nenhuma informação do certificado da página segura e na barra de endereço do navegador o site exibirá o nome da página apenas com o prefixo HTTP enquanto o SSLStrip comunica-se em HTTPS com o servidor web.

Laboratório

Em um ambiente de testes, executamos as ferramentas arpspoof e SSLStrip com o objetivo principal de capturar as credenciais digitadas em páginas web.

Como preparação no Kali Linux é necessário habilitar o IP forwarding e configurar o iptables para redirecionar o tráfego HTTP para a porta que será utilizada pelo SSLStrip.

O próximo passo para iniciar o ataque inclui a execução das ferramentas arpspoof e o SSLStrip.

Com o ataque em execução, o SSLStrip irá registrar as credenciais inseridas em páginas que solicitam autenticação, tanto no acesso as páginas HTTP e HTTPS. Abaixo um exemplo da captura durante a autenticação em um serviço de e-mail da Microsoft utilizando o navegador Internet Explorer8.

Análise dos resultados

A execução dos testes em ambiente de laboratório simulando uma rede local de uma empresa demonstrou a facilidade que um atacante interno consegue capturar e modificar o tráfego da vítima.

Os testes para as máquinas alvo incluíram os sistemas operacionais Windows 7, Windows 10 e o Debian 9. Algumas funcionalidades de segurança incorporadas por padrão aos equipamentos e softwares utilizados no estudo serviram para mitigar o ataque, como a utilização do navegador Firefox que possui suporte nativo ao protocolo HSTS, que permite que a comunicação entre o servidor web e o navegador ocorra somente com criptografia e com certificado emitido por uma autoridade certificadora confiável.

A utilização de funcionalidades em switches como arp inspect (DAI) validam se a mensagem ARP é gerada pela máquina verdadeira.

Uma outra opção também surge em cenários que não é necessário a comunicação entre todas a máquinas da rede sendo possível efetuar a configuração em switches e access points para isolamento dos hosts entre si, permitindo apenas a comunicação entre hosts e equipamentos e servidores de rede.

Um usuário mais atento poderia também perceber que a pagina requisitada estaria trabalhando apenas em HTTP ao invés de HTTPS, visto que os provedores de serviço na Internet quase em sua totalidade trabalham com a versão segura do protocolo.

Apesar desse estudo utilizar-se de algumas técnicas exploradas há anos, elas ainda se tornam efetivas tanto em redes IPv4 quanto em redes IPv6, inclusive para captura do tráfego de outros serviços críticos.

Os ataques MITM atuam diretamente na privacidade do usuário pois coletam informações confidenciais através das técnicas citadas nesse trabalho. É relevante notar que a aplicação de políticas de segurança ajudaria a mitigar e isolar alguns cenários de ataque.

O objetivo final desse artigo é contribuir para que os responsáveis pela infraestrutura e segurança da tecnologia da informação estejam atentos aos riscos. Uma vez que esse tipo de ataque é comumente efetuado dentro da rede local, algumas ações podem ser facilmente adotadas contra dispositivos não cadastrados e contra o acesso indevido a rede da empresa através do uso de certificados digitais para validação da máquina e/ou usuário. Um outro ponto importante inclui o estudo da implementação do protocolo IPv6 em dispositivos como smartphones e usuários do sistema operacional Linux e Windows, pois os diferentes sistemas operacionais trazem implementações diferente das principais RFC’s que padronizam as implementações dos protocolos.

Referências

ORIYANO, Sean-Philip. CEHv9 – Certified Ethical Hacker Version 9 – Study Guide. Indianópolis: John Wiley & Sons,2017.
WEIDMAN, Georgia. Teste de Invasão – Uma introdução prática ao hacking. São Paulo: Novatec, 2014.

Acesso em 14/05/2018
http://techgenix.com/Understanding-Man-in-the-Middle-Attacks-ARP-Part1/
http://techgenix.com/Understanding-Man-in-the-Middle-Attacks-ARP-Part2/
http://techgenix.com/Understanding-Man-in-the-Middle-Attacks-ARP-Part3/
http://techgenix.com/Understanding-Man-in-the-Middle-Attacks-ARP-Part4/

Acesso em 15/05/2018
http://gutocarvalho.net/octopress/2012/11/29/entendendo-o-hsts/
https://www.cybrary.it/0p3n/sslstrip-in-man-in-the-middle-attack/

Fortigate: SSL-VPN

A utilização de soluções de VPNs estende o acesso a redes privadas através da conectividade remota para o fornecimento de comunicação segura entre os dispositivos.

Uma VPN estabelece um túnel entre dois dispositivos, que estão separados por uma rede pública insegura, como a Internet por exemplo, entregando acesso seguro para a rede privada. A VPN pode também ser utilizada na comunicação entre uma matriz e suas filiais, entre empresas para fornecimento de serviços ou para o estabelecimento do teletrabalho.

Existem diversos mecanismos para estabelecimento de VPNs e os principais para conectividade para o acesso remoto utilizam o SSL ou IPsec.

O FortiOS suporta a utilização de VPNs IPsec e SSL, assim como outros métodos menos seguros.

Uma VPN deve utilizar métodos seguros para que somente usuários autorizados possam estabelecer a comunicação e acessar os recursos da rede. A comunicação deve ter como premissa a criptografia do tráfego ( que não poderá ser lido quando interceptado por usuários não autorizados).

Neste artigo  faremos um breve resumo sobre SSL-VPN no FortiOS.

Protocolo SSL

O protocolo SSL é uma aplicação para criptografia de camada 7, que fornece comunicação segura pela Internet através de um navegador web, e-mail e outros tipos de tráfego.

O principal objetivo é providenciar tanto a privacidade, quanto a integridade dos dados, oferecendo comunicação segura entre as aplicações.

Por padrão o SSL para o tráfego web utiliza a porta TCP 443.

SSL-VPN

A solução de VPN quando baseada em SSL, oferece conectividade a determinados recursos internos da empresa, através de acesso remoto por um computador conectado a Internet, através de um software cliente ou um navegador web com criptografia SSL nativa.

O FortiOS permite dois modos para o estabelecimento de SSL-VPN e a escolha dependerá  do uso das aplicações pela VPN, conhecimento técnico dos usuários e/ou permissões administrativas em seus computadores.

  • SSL-VPN Web Mode: Requer unicamente um navegador web, mas possui limitação no número de protocolos. É o modo mais fácil de configuração.
  • SSL-VPN Tunnel Mode: Oferece suporte a grande maioria dos protocolos, mas requer a instalação de um software cliente VPN, um virtual network adapter, que pode ser utilizado com o FortiClient ou o módulo FortiSSL-VPN client.

Web Mode

O modo Web  permite ao usuário conectar em um portal no Fortigate (que atua como um servidor de proxy reverso) e então comunicar-se com a rede ou aplicação.

O portal web permite a configuração de bookmarks que contém todos os recursos disponíveis para acesso ao usuário. A principal vantagem do modo web é que o usuário não necessitará instalar nenhum software adicional. A desvantagem é que toda interação acontecerá através do navegador para os protocolos mais populares como HTTP, FTP e compartilhamento Windows.

1 – Os usuários remotos estabelecem um túnel seguro ao Fortigate utilizando HTTPS.

2 – Uma vez conectado, os usuários fornecem as credenciais para autenticação.

3 – O Fortigate irá exibir um portal SSL-VPN que contém os serviços e recursos de rede para acesso ao usuário.

Para configurar a SSL-VPN no modo Web utilize o cookbook abaixo:

https://docs.fortinet.com/document/fortigate/6.2.0/cookbook/579694/ssl-vpn-web-mode-for-remote-user

Tunnel Mode

A opção Tunnel Mode requer a instalação de um cliente SSL-VPN (FortiClient) para conexão ao Firewall. O FortiClient adiciona um virtual network adapter identificado como fortissl para o usuário que recebe dinamicamente um endereço IP do Fortigate na conexão da VPN. O tráfego será enviado encapsulado em um túnel SSL/TLS.

O modo Tunnel permite a comunicação de qualquer aplicação (quando permitida nas políticas do firewall) através do túnel.

1 – Os usuários remotos solicitam um túnel seguro ao Fortigate utilizando FortiClient.

2 – Os usuários fornecem as credenciais para autenticação.

3 – O Fortigate estabelece um túnel e atribui um endereço IP ao software client com um virtual network adapter (fortissl), durante o tempo da conexão.

4 – Após o estabelecimento da conexão é possível acessar os recursos de rede através do túnel criptografado.

Para configurar a SSL-VPN no modo Web utilize o cookbook abaixo:

https://docs.fortinet.com/document/fortigate/6.2.0/cookbook/954097/ssl-vpn-tunnel-mode

O Forticlient  com a SSL-VPN estabelecida, fará a criptografia dos dados ao Fortigate que ao receber o tráfego removerá a criptografia e encaminhará a comunicação ao dispositivos de destino.

Tunnel mode também permite o split tunneling, que encaminhará todo o tráfego de Internet diretamente para a Internet (sem encaminhá-lo ao túnel). O tráfego para a rede privada continuará sendo enviado através da VPN.

Referências

FortiGate Security Study Guide for FortiOS 6.2

Network Security Technologies and Solutions, Cisco press – Yusuf Bhaiji

arpspoof com SSLStrip

Os ataques à rede local do tipo man-in-the-middle, ou comumente conhecido como MITM, permitem ao atacante posicionar-se no meio da comunicação entre duas partes. Este ataque é útil para conduzir outros ataques, como sniffing (captura das informações) e session hijacking (sequestro de sessão).

A ferramenta arpspoof falsifica mensagems ARP reply com o intuido de direcionar o tráfego da máquina alvo para a máquina do atacante.

A ferramenta SSLStrip, escrita por Moxie Marlinspike, é bastante utilizada em um ataque man-in-the-middle para SSL Hijacking. O SSLStrip fecha uma sessão HTTP com a vítima e uma sessão HTTPS com a página web, capturando assim as informações que deveriam ser criptografadas.