
Scanner di Indicatori di Compromissione per CVE-2019-19781
Questa repository contiene un'utility per rilevare compromissioni degli apparati Citrix ADC correlati a CVE-2019-19781. L'utility e le sue risorse codificano gli indicatori di compromissione raccolti durante le investigazioni FireEye Mandiant. Per saperne di più, si prega di leggere il blog che annuncia il rilascio di questo strumento.
In sintesi, l'utility:
Non:
Con il feedback della community, lo strumento potrà diventare più accurato nel suo rilevamento. Si prega di aprire una issue, inviare una PR, oppure contattare gli autori in caso di problemi, idee o feedback.
Questo scanner può identificare:
Lo scanner di Indicatori di Compromissione (IoC) per CVE-2019-19781 è stato sviluppato congiuntamente da FireEye Mandiant e Citrix sulla base delle conoscenze acquisite dagli interventi di incident response legati allo sfruttamento di CVE-2019-19781. L'obiettivo dello scanner è analizzare le fonti di log disponibili e gli artefatti forensi di sistema per identificare prove di sfruttamento riuscito di CVE-2019-19781. Ci sono limitazioni a ciò che lo strumento può ottenere, e pertanto l'esecuzione dello strumento non deve essere considerata una garanzia che un sistema sia esente da compromissione. Ad esempio, i file di log sul sistema con prove di compromissione potrebbero essere stati troncati/ruotati, il sistema potrebbe essere stato riavviato, un attaccante potrebbe aver manomesso il sistema per rimuovere le prove di compromissione, e/o aver installato una rootkit che maschera le prove di compromissione, ecc.
L'output di questo strumento rientrerà in una delle tre categorie:
Prove di compromissione. Questa è l'impostazione predefinita.
Qualsiasi prova che rientri in questa categoria indica che un dispositivo è stato compromesso con successo.
Può trattarsi di qualsiasi cosa, dall'esecuzione di comandi che rivelano informazioni (ad es. visualizzare i file di configurazione ns.conf o smb.conf),
all'installazione di una backdoor (ad es. NOTROBIN, un miner di criptovalute, ecc.),
o al rilascio di una web shell basata su Perl.
Prove di scansione di vulnerabilità riuscita (potrebbe trattarsi di un amministratore di sistema autorizzato o di un attaccante non autorizzato). Qualsiasi prova che rientri in questa categoria indica che il sistema si trovava in uno stato vulnerabile (ad es. la mitigazione non era stata applicata) e che almeno il primo passo per sfruttare CVE-2019-19781 è riuscito.
Prove di scansione di vulnerabilità fallita. Qualsiasi prova che rientri in questa categoria indica che i tentativi di scansionare o sfruttare il sistema sono falliti.
Questo strumento non garantisce di trovare tutte le prove di compromissione, né tutte le prove di compromissione correlate a CVE-2019-19781. Se sui sistemi vengono identificati indicatori di compromissione, le organizzazioni dovrebbero eseguire un esame forense del sistema compromesso per determinare l'ambito e l'estensione dell'incidente. Questo strumento è fornito COSÌ COM'È e senza garanzia.
È necessario scaricare lo script Bash autonomo dalla scheda Releases di questa repository. Copiare la directory sorgente su un apparato Citrix ADC è possibile ma non consigliato.
Lo scanner IoC può essere eseguito direttamente su un apparato Citrix ADC.
In questa modalità, lo strumento analizzerà file, processi e porte alla ricerca di indicatori noti.
Lo strumento scrive i messaggi diagnostici sul flusso STDERR e i risultati sul flusso STDOUT.
Nell'uso tipico, si dovrebbe reindirizzare STDOUT su un file per la revisione.
Lo strumento deve essere eseguito come root in modalità live su un apparato Citrix ADC.
Ad esempio:
$ sudo bash ./ioc-scanner-CVE-2019-19781-v1.1.sh > "/tmp/results-$(date).txt"
Lo strumento è progettato per essere utilizzato con i seguenti prodotti:
Lo scanner IoC può anche esaminare un'immagine forense montata. In questo scenario, passare un argomento da riga di comando che specifica il percorso della directory root dell'immagine. Non è necessario essere root per eseguire la modalità offline.
Ad esempio:
$ bash ./ioc-scanner-CVE-2019-19781-v1.1.sh /mnt/path/to/evidence/root/
In entrambe le modalità, lo strumento estrae il codice di supporto in una directory temporanea; questa directory verrà eliminata al termine dello script. Lo strumento non apporta ulteriori modifiche al sistema, sebbene possa causare la generazione di voci di log.
Come per ogni analisi forense, si preferisce l'analisi offline su un'immagine dd rispetto alla risposta live.
Ciò eliminerà la probabilità che lo strumento causi la sovrascrittura di prove rilevanti.
Si prega di consultare le Domande Frequenti per ulteriori dettagli.
Man mano che si inventano ulteriori modi per identificare una compromissione, si prega di prendere in considerazione l'idea di contribuire a questo scanner IoC. Vorremmo fornire lo scanner più accurato e corretto possibile.
L'obiettivo principale è segnalare indicatori di compromissione ad alta affidabilità. Poiché gli utenti possono fare affidamento sull'output di questo strumento per avviare ulteriori indagini, è importante non mandarli a caccia di fantasmi. Pertanto, attività come la semplice scansione non dovrebbero essere segnalate nella modalità predefinita. Qualsiasi prova che un attore abbia ottenuto accesso al sistema, recuperato informazioni o creato contenuti dovrebbe essere sempre segnalata.
Forniamo questo strumento come script Bash perché è un denominatore comune tra gli apparati Citrix ADC. Ecco la matrice delle funzionalità per le versioni di Citrix ADC:
Sebbene abbiamo visto malware usare Go per colpire FreeBSD/NetScaler, Go non supporta FreeBSD 6.x.
Manteniamo immagini sparse del file system contenenti prove di compromissione nella directory ./tests/.
Man mano che si aggiungono IoC a questo strumento, come percorsi noti o contenuti in lista nera, si prega di fornire esempi delle prove per i test.
È possibile eseguire i test unitari su un sistema Linux o macOS in questo modo:
$ 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
Dopo aver clonato la repository sorgente, è possibile creare uno script autonomo usando lo strumento ./build.sh.
Questo impacchetta lo script principale e le risorse di supporto in un unico bundle.
All'esecuzione, verrà estratto in una directory temporanea, eseguito da lì e infine ripulito.
Per compilare:
$ bash ./build.sh > ioc-scanner-CVE-2019-19781-rev$(git rev-parse HEAD | cut -c 1-8).sh
Per informazioni aggiuntive da FireEye su CVE-2019-19781 e sullo sfruttamento in the wild, si prega di consultare:
La risposta a CVE-2019-19781 è stata uno sforzo significativo nell'intero settore della sicurezza e questi blog citano ampiamente contributi aggiuntivi che saranno di valore per gli utenti di questo strumento. Consigliamo di leggere il materiale collegato da questi post per comprendere al meglio l'attività nel proprio ambiente. Come sempre, il team FireEye Mandiant è disponibile per rispondere a domande di follow-up o per assistere ulteriormente in un'indagine contattandoci qui.
| NetScaler Version | OS | Languages available |
|---|
| 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 |