pulse-secure-vpn-mitm-research
Pesquisa mitm no Pulse Secure
Data de lançamento
Data de lançamento conjunta com o fornecedor: 26 de outubro de 2020
Autor
David Kierznowski, @withdk
Créditos
- Sahil Mahajan, da equipe PSIRT da Pulse Secure, pelo suporte durante todo o processo de divulgação.
- Alyssa Herrera, Justin Wagner, e Mimir, e Rich Warren pelo seu artigo "Guia do Red Teamer para Pulse Secure SSL VPN" - Alyssa Herrera (4 de setembro de 2019).
- The SA Red Team pelo apoio e incentivo contínuos.
Referências CVE
- CVE-2020-8241 (8.1 High CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H)
- CVE-2020-8239 (5.9 Medium CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N)
Exemplo

Prova de conceito demonstrando o rogue-pulse-svr.py adquirindo um shell reverso do meterpreter de um Pulse Client conectado à mesma rede.
Introdução
Pulse Connect Secure (PCS) é uma solução VPN empresarial comumente usada. No momento da redação deste texto, o PCS suporta mais de 20 milhões de endpoints (Pulse Secure, s.d.). Esta pesquisa concentrou-se em revisar a confidencialidade e integridade do canal de comunicação de rede estabelecido entre um endpoint Windows 10 PCS e um gateway PCS. Em particular, faz a pergunta: "quão seguro é um endpoint quando conectado a uma rede não confiável?". Esta pesquisa se aplica às configurações padrão e "Always-On".
Impacto (Médio - Alto)
Quando combinadas, é possível adquirir execução remota de código a partir de uma rede não confiável com privilégios totais de SYSTEM. Alternativamente, uma ameaça interna poderia usar o CVE-2020-8241 como uma vulnerabilidade independente para escalar privilégios.
Esses ataques poderiam ser usados em diversas situações, no entanto, são mais adequados para ataques direcionados. Com base nisso e nas suposições abaixo, a probabilidade é baixa a média.
Ataques Potenciais
Os seguintes ataques foram demonstrados com sucesso em uma ferramenta de prova de conceito "rogue-pulse":
- Roubar credenciais do usuário. Um servidor falso poderia atrair o usuário a revelar suas credenciais de login.
- Executar binário a partir de um caminho UNC do Microsoft Windows. O servidor PCS suporta a opção de iniciar um executável após a autenticação. Isso pode ser abusado para obter execução de código com as permissões do usuário logado. Isso se baseia no trabalho de Alyssa Herrera e equipe Alyssa Herrera (4 de setembro de 2019).
- Acesso total de administrador remoto abusando das verificações de conformidade do host. As verificações de conformidade do host são executadas como SYSTEM. Um servidor falso poderia abusar dessa funcionalidade para enviar uma política maliciosa que permite escrita arbitrária no registro.
- Interceptar tráfego de rede. Isso permitirá que o atacante intercepte e modifique o tráfego de rede mesmo quando o "always-on" estiver ativado. Atualmente, a ferramenta apenas exibe as solicitações de tráfego de rede do endpoint.
A PoC também implementa um recurso de login automático. Isso engana o cliente fazendo-o pensar que já se autenticou anteriormente. Isso seria útil em casos onde a execução de código é a prioridade sobre a captura de credenciais.
Premissas
- Esta pesquisa visa adquirir execução remota de código através de uma rede não confiável. Ambas as vulnerabilidades são encadeadas para atingir este objetivo. Dito isso, uma ameaça interna poderia simplesmente usar o CVE-2020-8241 isoladamente para escalar privilégios.
- O gateway PCS está usando a configuração padrão com "dynamic-trust" ativado. Note que a política geralmente é atualizada e enviada ao cliente após a autenticação. Isso significa que uma pequena janela de oportunidade ainda pode existir mesmo depois que o gateway desativou o "dynamic-trust".
- O atacante está em posição de realizar um ataque man-in-the-middle no tráfego HTTPS, por exemplo, o atacante comprometeu o roteador da rede doméstica do usuário, pontos de acesso Wi-Fi falsos, etc.
- É necessário que o usuário aceite o aviso de certificado. Uma observação interessante é que o Pulse Secure Client continuará exibindo esta mensagem até que o usuário aceite o certificado. Além disso, a mensagem pop-up não é particularmente alarmante. Finalmente, como um "Cliente Seguro", é muito mais provável que o usuário ignore a mensagem e conecte de qualquer forma. Isso não parece ser um grande obstáculo.
- O endpoint está se conectando em um sistema operacional Microsoft Windows.
Recomendações
Para mitigar e remediar o problema, as seguintes recomendações devem ser consideradas:
- As organizações devem realizar conformidade com as melhores práticas de segurança da Pulse Secure (Pulse Secure, 2 de julho de 2019). Garanta que "Dynamic certificate trust" esteja desabilitado.
- Aplique as correções do fornecedor (veja https://kb.pulsesecure.net/articles/Pulse_Security_Advisories/SA44601).
- A execução de scripts no servidor PCS é executada como um processo filho de "Pulse.exe". Portanto, salvaguardas podem ser implantadas monitorando processos filhos do binário "Pulse.exe".
- Monitore o serviço "PulseSecureService" para atividade suspeita no registro.
Referências
Aviso Legal
As informações fornecidas são apenas para fins educacionais e de pesquisa. O autor não assume nenhuma responsabilidade pelo seu uso destas informações e condena fortemente qualquer tentativa de violar as leis aplicáveis. O autor não assume nenhuma obrigação de atualizar estas informações, não oferece garantias quanto à sua completude, uso ou aplicabilidade, e rejeita toda confiança nas mesmas. O uso destas informações é de sua exclusiva responsabilidade.