
Script locale F5 BIG-IP che scansiona gli Indicator of Compromise (IoC) relativi a CVE-2020-5902, controllando log, file e integrità del sistema per rilevare attività post-exploitation.
Questo script è pensato per essere eseguito localmente su un F5 BIG-IP nella Advanced Shell (bash) da un utente con privilegi di root; non è pensato per essere eseguito in nessun altro contesto. Nota: la modalità Appliance non consente l'accesso alla Advanced Shell e, pertanto, questo strumento non può essere eseguito su tali sistemi.
Lo script esamina il BIG-IP alla ricerca degli indicatori di compromissione associati a CVE-2020-5902 noti a F5 Networks al momento della stesura. Lo script raccoglie questi IoC e presenta un report come panoramica che puoi utilizzare per orientare la tua decisione sul percorso migliore da seguire. Se questo strumento rileva degli IoC, devi esaminarli e confermarli manualmente, quindi seguire le procedure documentate per la gestione dei sistemi sospettati di compromissione. Le indicazioni specifiche di F5 sono disponibili in K11438344: Considerazioni e indicazioni quando sospetti una compromissione della sicurezza su un sistema BIG-IP.
Nota: se hai incertezze o dubbi sull'integrità di un sistema, l'approccio prudente è considerare il sistema compromesso e seguire le procedure interne per la gestione di un sistema compromesso. Nota anche che qualsiasi informazione contenuta su un sistema compromesso deve essere considerata a sua volta compromessa. Questo include, a titolo esemplificativo ma non esaustivo, password, chiavi private, certificati digitali, configurazioni, log, ecc.
Va notato che gli IoC potrebbero non essere più presenti a causa del tempo trascorso (ad esempio, per le politiche di rotazione dei log) o della rimozione da parte di un avversario sufficientemente abile. Poiché lo sfruttamento di CVE-2020-5902 può potenzialmente portare all'esecuzione di codice remoto come utente root, un attaccante esperto sarebbe libero di ripulire il sistema dalle tracce dopo lo sfruttamento.
Nota anche che un attaccante potrebbe alterare qualsiasi binario sul sistema, incluso python. Sono stati adottati passaggi ragionevoli per evitare questa possibilità; tuttavia, devi determinare il tuo livello di fiducia nell'output di questo strumento su qualsiasi sistema sospettato di essere compromesso.
Sulle versioni BIG-IP che includono sys-eicheck (dalla 13.1.0 in poi), questo strumento offre all'amministratore la possibilità di controllare il sistema in esecuzione rispetto agli RPM di installazione originali per cercare eventuali modifiche ai file, nel tentativo di garantire l'integrità dei comandi di sistema su cui questo strumento fa affidamento. Nota che sys-eicheck può essere eseguito su tutte le piattaforme indipendentemente dalle capacità FIPS.
Nelle versioni precedenti lo strumento non include attualmente questa funzionalità e verrà eseguito senza verificare la manomissione dei binari di sistema installati originariamente.
La somma sha384 di questa versione di CVE-2020-5902_bigip_ioc_checker.py è: ce674235744b54de3331c19a402f911c4390dbbf297643ec3eed165bda49a951f48c1be9188372de3d92dd9f28595cbb
Devi scaricare questi file solo dal repository GitHub F5 DevCentral
Nota che la fonte autorevole di informazioni su CVE-2020-5902 è sempre l'avviso di sicurezza F5, K52145254: Vulnerabilità RCE TMUI CVE-2020-5902
Basta scaricare il file CVE-2020-5902_bigip_ioc_checker.py sul BIG-IP di destinazione ed eseguirlo usando l'installazione di python già presente su BIG-IP.
Esempio:
[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 un BIG-IP è gestito da BIG-IQ o da un altro sistema di automazione/gestione, potrebbe ricevere comandi bash da BIG-IQ o da un altro sistema di automazione/gestione. Alcuni comandi bash hanno lo script codificato in base64 incorporato. Quei comandi bash registrati nei log di audit del BIG-IP potrebbero portare lo strumento di rilevamento IoC a segnalare falsi positivi: "!! IoC pattern malicious bash command found". Per ridurre i falsi positivi, puoi usare l'opzione -q per fare in modo che lo strumento di rilevamento IoC ignori lo script codificato in base64 legittimo nei log di audit.
L'aggiornamento del sistema potrebbe aggiornare i timestamp dei file in /usr/local/www/ e ciò potrebbe comportare un falso positivo, ad esempio, se il software corretto è stato installato di recente.
Se vengono restituiti risultati per uno qualsiasi dei controlli sulla data di creazione dei file in /usr/local/www/, /etc/ e /tmp/, i file devono essere esaminati per determinarne la legittimità.
È ancora possibile trovare Indicator of Compromise dai log journalctl dopo un aggiornamento a una versione corretta o dopo l'applicazione della soluzione alternativa. Rivedi il timestamp dei log, se presenti, e verifica che siano avvenuti prima dell'aggiornamento o dell'applicazione della soluzione 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