
Scanner de Indicadores de Comprometimento para CVE-2019-19781
Este repositório contém uma utilidade para detectar comprometimentos de Appliances Citrix ADC relacionados ao CVE-2019-19781. A utilidade e seus recursos codificam indicadores de compromisso coletados durante investigações da FireEye Mandiant. Para saber mais, leia o blog que anuncia o lançamento desta ferramenta.
Em resumo, a utilidade irá:
Ela não irá:
Com o feedback da comunidade, a ferramenta pode se tornar mais minuciosa na sua detecção. Por favor, abra uma issue, submeta um PR ou entre em contato com os autores se tiver problemas, ideias ou feedback.
Este scanner pode identificar:
O Scanner de Indicadores de Compromisso (IoC) para CVE-2019-19781 foi desenvolvido em conjunto pela FireEye Mandiant e Citrix com base no conhecimento obtido em compromissos de resposta a incidentes relacionados à exploração do CVE-2019-19781. O objetivo do scanner é analisar fontes de log disponíveis e artefatos forenses do sistema para identificar evidências de exploração bem-sucedida do CVE-2019-19781. Existem limitações no que a ferramenta será capaz de realizar e, portanto, executar a ferramenta não deve ser considerado uma garantia de que um sistema está livre de comprometimento. Por exemplo, arquivos de log no sistema com evidências de comprometimento podem ter sido truncados/rotacionados, o sistema pode ter sido reiniciado, um atacante pode ter adulterado o sistema para remover evidências de comprometimento e/ou instalado um rootkit que mascara evidências de comprometimento, etc.
A saída desta ferramenta se enquadrará em uma de três categorias:
Evidência de comprometimento. Este é o padrão. Qualquer evidência que caia nesta categoria indica que um dispositivo foi comprometido com sucesso. Isso pode ser desde executar comandos que divulgam informações (por exemplo, visualizar os arquivos de configuração ns.conf ou smb.conf), até instalar uma backdoor (por exemplo, NOTROBIN, um minerador de moedas, etc.), ou soltar um web shell baseado em Perl.
Evidência de varredura de vulnerabilidade bem-sucedida (pode ser administrador de sistema autorizado ou atacante não autorizado). Qualquer evidência que caia nesta categoria indica que o sistema estava em um estado vulnerável (por exemplo, a mitigação não havia sido aplicada) e que pelo menos o primeiro passo para explorar o CVE-2019-19781 foi bem-sucedido.
Evidência de varredura de vulnerabilidade falha. Qualquer evidência que caia nesta categoria indica que as tentativas de escanear ou explorar o sistema falharam.
Esta ferramenta não garante encontrar todas as evidências de comprometimento, ou todas as evidências de comprometimento relacionadas ao CVE-2019-19781. Se indícios de comprometimento forem identificados nos sistemas, as organizações devem realizar um exame forense do sistema comprometido para determinar o escopo e a extensão do incidente. Esta ferramenta é oferecida COMO ESTÁ e sem garantia.
Você deve baixar o script Bash independente da aba de Releases deste repositório. Copiar o diretório de origem para um Citrix ADC Appliance é possível, mas não recomendado.
O Scanner IoC pode ser executado diretamente em um Citrix ADC Appliance. Neste modo, a ferramenta escaneará arquivos, processos e portas em busca de indicadores conhecidos. A ferramenta escreve mensagens de diagnóstico no fluxo STDERR e resultados no fluxo STDOUT. No uso típico, você deve redirecionar o STDOUT para um arquivo para revisão. A ferramenta deve ser executada como root no modo live em um Citrix ADC Appliance.
Por exemplo:
$ sudo bash ./ioc-scanner-CVE-2019-19781-v1.1.sh > "/tmp/results-$(date).txt"
A ferramenta foi projetada para ser usada com os seguintes produtos:
O Scanner IoC também pode inspecionar uma imagem forense montada. Neste cenário, passe um argumento de linha de comando especificando o caminho para o diretório raiz da imagem. Você não precisa ser root para executar no modo offline.
Por exemplo:
$ bash ./ioc-scanner-CVE-2019-19781-v1.1.sh /mnt/path/to/evidence/root/
Em ambos os modos, a ferramenta extrairá o código de suporte para um diretório temporário; este diretório será excluído ao término do script. A ferramenta não faz outras alterações no sistema, embora possa causar a geração de entradas de log.
Como em toda análise forense, prefira a análise offline contra uma imagem dd em vez de resposta ao vivo. Isso eliminará a probabilidade de a ferramenta causar a sobrescrita de evidências relevantes.
Por favor, revise as Perguntas Frequentes para mais detalhes.
À medida que você inventa novas maneiras de identificar comprometimento, considere contribuir com este Scanner IoC. Gostaríamos de fornecer o scanner mais completo e correto possível.
O objetivo principal é relatar indicadores de compromisso de alta confiança. Como os usuários podem confiar na saída desta ferramenta para iniciar uma investigação adicional, é importante que não os enviemos em uma busca inútil. Portanto, atividades como varredura simples não devem ser relatadas no modo padrão. Qualquer evidência de um ator obtendo acesso ao sistema, obtendo informações ou criando conteúdo deve sempre ser relatada.
Fornecemos esta ferramenta como um script Bash porque é um denominador comum em todos os Appliances Citrix ADC. Aqui está a matriz de recursos para as versões do Citrix ADC:
Embora tenhamos visto malware usar Go para atingir FreeBSD/NetScaler, o Go não suporta FreeBSD 6.x.
Mantemos imagens esparsas do sistema de arquivos contendo evidências de comprometimento no diretório ./tests/. Ao adicionar IoCs a esta ferramenta, como caminhos conhecidos ou conteúdo em lista negra, forneça exemplos das evidências para teste.
Você pode executar os testes unitários em um sistema Linux ou macOS da seguinte forma:
$ bash ./tests/test.sh
runnning test: access-logs
runnning test: xml-template
runnning test: crontab
runnning test: var-cron-tabs-nobody
runnning test: error-logs
runnning test: file-system
runnning test: netscalerd
runnning test: notrobin-tmp-init
runnning test: notrobin-var-nstmp-nscache
runnning test: ns-content
runnning test: chr-encoded-template
runnning test: copied-ns-conf
runnning test: curl-in-template
runnning test: perms
runnning test: var-tmp-netscaler-portal-templates
runnning test: var-vpn-bookmark
runnning test: webshell-in-scripts
runnning test: shell-history
runnning test: bash_log
runnning test: notice_log
Depois de fazer o checkout do repositório de origem, você pode compilar um script independente usando a ferramenta ./build.sh. Isso empacota o script principal e os recursos de suporte em um único pacote. Após a execução, ele será extraído para um diretório temporário, executado a partir daí e depois limpo.
Para compilar:
$ bash ./build.sh > ioc-scanner-CVE-2019-19781-rev$(git rev-parse HEAD | cut -c 1-8).sh
Para informações adicionais da FireEye sobre CVE-2019-19781 e exploração in-the-wild, veja:
A resposta ao CVE-2019-19781 tem sido um esforço significativo em toda a indústria de segurança e esses blogs citam fortemente contribuições adicionais que serão valiosas para os usuários desta ferramenta. Recomendamos a leitura do material vinculado dessas postagens para entender melhor a atividade em seu ambiente. Como sempre, a equipe FireEye Mandiant está disponível para responder a perguntas de acompanhamento ou ajudar ainda mais em uma investigação entrando em contato conosco aqui.
| Versão NetScaler | SO | Idiomas disponíveis |
|---|
| 13.0 | FreeBSD 8.4 | Bash, Perl, Python |
| 12.1 | FreeBSD 8.4 | Bash, Perl, Python |
| 12.0 | FreeBSD 8.4 | Bash, Perl, Python |
| 11.1 | FreeBSD 8.4 | Bash, Perl |
| 10.5 | FreeBSD 8.4 | Bash, Perl |
| 10.1 | FreeBSD 6.3 | Bash, Perl |
| 9.3 | FreeBSD 6.3 | Bash, Perl |