
Scanner per indicatori di compromesso per CVE-2019-19781
Questo repository contiene un'utilità per rilevare compromissioni degli apparati Citrix ADC correlate a CVE-2019-19781. L'utilità e le sue risorse codificano gli indicatori di compromissione raccolti durante le indagini di FireEye Mandiant. Per saperne di più, leggere il blog che annuncia il rilascio di questo strumento.
In sintesi, l'utilità farà:
Non farà:
Con il feedback della comunità, lo strumento potrebbe diventare più approfondito nella sua rilevazione. Si prega di aprire un ticket, inviare una PR, o 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 basandosi sulle conoscenze acquisite da interventi di incident response relativi 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 su ciò che lo strumento sarà in grado di realizzare, e pertanto, l'esecuzione dello strumento non deve essere considerata una garanzia che un sistema sia esente da compromissioni. 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 prove di compromissione, e/o installato un rootkit che maschera le prove di compromissione, ecc.
L'output di questo strumento rientrerà in una delle tre categorie:
Prova di compromissione. Questa è l'impostazione predefinita.
Qualsiasi prova che rientri in questa categoria indica che un dispositivo è stato compromesso con successo.
Potrebbe essere qualsiasi cosa, dall'esecuzione di comandi che divulgano informazioni (ad esempio, visualizzare i file di configurazione ns.conf o smb.conf),
all'installazione di una backdoor (ad esempio NOTROBIN, un minatore di criptovalute, ecc.),
o al rilascio di una web shell basata su Perl.
Prova di scansione di vulnerabilità riuscita (potrebbe essere un amministratore di sistema autorizzato o un attaccante non autorizzato). Qualsiasi prova che rientri in questa categoria indica che il sistema era in uno stato vulnerabile (ad esempio, la mitigazione non era stata applicata) e che almeno il primo passo per sfruttare CVE-2019-19781 è riuscito.
Prova 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, o tutte le prove di compromissione correlate a CVE-2019-19781. Se vengono identificate indicazioni di compromissione sui sistemi, le organizzazioni dovrebbero eseguire un esame forense del sistema compromesso per determinare l'ambito e l'estensione dell'incidente. Questo strumento viene fornito "COSÌ COM'È" e senza garanzia.
Dovresti scaricare lo script Bash standalone dalla scheda Release di questo repository. Copiare la directory dei sorgenti 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 scansiona file, processi e porte alla ricerca di indicatori noti.
Lo strumento scrive messaggi diagnostici sul flusso STDERR e i risultati sul flusso STDOUT.
Nell'uso tipico, si dovrebbe reindirizzare STDOUT in 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/risultati-$(date).txt"
Lo strumento è progettato per essere utilizzato con i seguenti prodotti:
Lo scanner IoC può anche ispezionare un'immagine forense montata. In questo scenario, passare un argomento della riga di comando che specifica il percorso della directory radice dell'immagine. Non è necessario essere root per eseguire in modalità offline.
Ad esempio:
$ bash ./ioc-scanner-CVE-2019-19781-v1.1.sh /mnt/percorso/della/radice/delle/prove/
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 inventi ulteriori modi per identificare compromissioni, considera di contribuire a questo scanner IoC. Vorremmo fornire lo scanner più completo e corretto possibile.
L'obiettivo principale è segnalare indicatori di compromissione ad alta confidenza. Poiché gli utenti potrebbero fare affidamento sull'output di questo strumento per avviare ulteriori indagini, è importante che non li mandiamo a cercare una pista falsa. 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 utilizzare Go per colpire FreeBSD/NetScaler, Go non supporta FreeBSD 6.x.
Manteniamo immagini del file system sparse contenenti prove di compromissione nella directory ./tests/.
Man mano che aggiungi IoC a questo strumento, come percorsi noti o contenuti nella lista nera, fornisci esempi delle prove per i test.
Puoi eseguire i test unitari su un sistema Linux o macOS in questo modo:
$ bash ./tests/test.sh
esecuzione test: access-logs
esecuzione test: xml-template
esecuzione test: crontab
esecuzione test: var-cron-tabs-nobody
esecuzione test: error-logs
esecuzione test: file-system
esecuzione test: netscalerd
esecuzione test: notrobin-tmp-init
esecuzione test: notrobin-var-nstmp-nscache
esecuzione test: ns-content
esecuzione test: chr-encoded-template
esecuzione test: copied-ns-conf
esecuzione test: curl-in-template
esecuzione test: perms
esecuzione test: var-tmp-netscaler-portal-templates
esecuzione test: var-vpn-bookmark
esecuzione test: webshell-in-scripts
esecuzione test: shell-history
esecuzione test: bash_log
esecuzione test: notice_log
Una volta estratto il repository dei sorgenti, puoi creare uno script standalone utilizzando 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 poi 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 riguardo CVE-2019-19781 e lo sfruttamento in natura, consultare:
La risposta a CVE-2019-19781 è stata uno sforzo significativo in tutta l'industria della sicurezza e questi blog citano ampiamente contributi aggiuntivi che saranno di valore per gli utenti di questo strumento. Raccomandiamo di leggere il materiale collegato da questi post per comprendere al meglio l'attività nel vostro ambiente. Come sempre, il team FireEye Mandiant è disponibile per rispondere a domande di follow-up o per assistere ulteriormente in un'indagine contattandoci qui.
| Versione NetScaler | Sistema operativo | Linguaggi disponibili |
|---|
| 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 |