
Indicator of Compromise Scanner for CVE-2019-19781
Este repositório contém uma ferramenta para detecção de comprometimentos de Appliances Citrix ADC relacionados ao CVE-2019-19781. A ferramenta 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 ferramenta irá:
Ela não irá:
Com o feedback da comunidade, a ferramenta pode se tornar mais completa em sua detecção. Por favor, abra uma issue, envie um PR ou entre em contato com os autores se tiver problemas, ideias ou comentários.
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 a partir de 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, os arquivos de log no sistema com evidências de comprometimento podem ter sido truncados/rotacionados, o sistema pode ter sido reiniciado, um invasor 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 das três categorias:
Evidência de comprometimento. Este é o padrão.
Qualquer evidência que se enquadre nesta categoria indica que um dispositivo foi comprometido com sucesso.
Isso pode ser qualquer coisa, desde a execução de comandos que divulgam informações (por exemplo, visualizar os arquivos de configuração ns.conf ou smb.conf), instalar uma backdoor (por exemplo, NOTROBIN, um minerador de moedas, etc.) ou deixar cair um web shell baseado em Perl.
Evidência de varredura de vulnerabilidade bem-sucedida (pode ser administrador de sistema autorizado ou invasor não autorizado). Qualquer evidência que se enquadre 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 malsucedida. Qualquer evidência que se enquadre nesta categoria indica que as tentativas de varredura ou exploração do 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 em 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 Releases deste repositório. Copiar o diretório de origem para um Appliance Citrix ADC é possível, mas não recomendado.
O Scanner IoC pode ser executado diretamente em um Appliance Citrix ADC.
Neste modo, a ferramenta irá escanear arquivos, processos e portas em busca de indicadores conhecidos.
A ferramenta escreve mensagens de diagnóstico para o fluxo STDERR e resultados para o fluxo STDOUT.
No uso típico, você deve redirecionar STDOUT para um arquivo para revisão.
A ferramenta deve ser executada como root no modo ativo em um Appliance Citrix ADC.
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 em 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 análise offline contra uma imagem dd à 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ê inventar novas maneiras de identificar comprometimentos, considere contribuir para 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 investigações adicionais, é importante que não os enviemos em uma busca infrutífera. 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 entre os Appliances Citrix ADC. Aqui está a matriz de recursos para as versões do Citrix ADC:
Embora tenhamos visto malware usando Go para atingir FreeBSD/NetScaler, 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 verificar o repositório de origem, você pode construir 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 extrairá para um diretório temporário, executará a partir daí e depois fará a limpeza.
Para construir:
$ 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 o CVE-2019-19781 e exploração em campo, consulte:
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 de valor 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 auxiliar em uma investigação entrando em contato conosco aqui.
| Versão do 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 |