
Scanner d'indicateurs de compromission pour CVE-2019-19781
Ce dépôt contient un utilitaire pour détecter les compromissions des appliances Citrix ADC liées à CVE-2019-19781. L'utilitaire et ses ressources encodent des indicateurs de compromission collectés lors des enquêtes FireEye Mandiant. Pour en savoir plus, veuillez lire le blog annonçant la sortie de cet outil.
En résumé, l'utilitaire fera :
Il ne fera pas :
Avec les retours de la communauté, l'outil pourrait devenir plus complet dans sa détection. Veuillez ouvrir un ticket, soumettre une PR, ou contacter les auteurs si vous avez des problèmes, des idées ou des commentaires.
Ce scanner peut identifier :
L'analyseur d'indicateurs de compromission (IoC) pour CVE-2019-19781 a été développé conjointement par FireEye Mandiant et Citrix sur la base des connaissances acquises lors d'interventions en réponse à des incidents liés à l'exploitation de CVE-2019-19781. L'objectif du scanner est d'analyser les sources de journaux disponibles et les artefacts médico-légaux du système pour identifier les preuves d'une exploitation réussie de CVE-2019-19781. Il existe des limites à ce que l'outil pourra accomplir, et par conséquent, l'exécution de l'outil ne doit pas être considérée comme une garantie qu'un système est exempt de compromission. Par exemple, les fichiers journaux du système contenant des preuves de compromission peuvent avoir été tronqués/écrasés, le système peut avoir été redémarré, un attaquant peut avoir falsifié le système pour supprimer les preuves de compromission, et/ou installé un rootkit qui masque les preuves de compromission, etc.
La sortie de cet outil se répartira dans l'une des trois catégories :
Preuve de compromission. C'est la valeur par défaut.
Toute preuve entrant dans cette catégorie indique qu'un appareil a été compromis avec succès.
Cela peut aller de l'exécution de commandes qui divulguent des informations (par exemple, visualiser les fichiers de configuration ns.conf ou smb.conf),
à l'installation d'une porte dérobée (par exemple NOTROBIN, un mineur de cryptomonnaie, etc.),
ou au dépôt d'un shell web basé sur Perl.
Preuve de scan de vulnérabilité réussi (cela peut être un administrateur système autorisé ou un attaquant non autorisé). Toute preuve entrant dans cette catégorie indique que le système était dans un état vulnérable (par exemple, l'atténuation n'avait pas été appliquée) et qu'au moins la première étape pour exploiter CVE-2019-19781 a été réussie.
Preuve de scan de vulnérabilité échoué. Toute preuve entrant dans cette catégorie indique que les tentatives de scanner ou d'exploiter le système ont échoué.
Cet outil n'est pas garanti pour trouver toutes les preuves de compromission, ou toutes les preuves de compromission liées à CVE-2019-19781. Si des indications de compromission sont identifiées sur des systèmes, les organisations doivent effectuer un examen médico-légal du système compromis pour déterminer la portée et l'étendue de l'incident. Cet outil est fourni EN L'ÉTAT et sans garantie.
Vous devriez télécharger le script Bash autonome depuis l' onglet Releases de ce dépôt. Copier le répertoire source sur une appliance Citrix ADC est possible mais déconseillé.
Le scanner IoC peut être exécuté directement sur une appliance Citrix ADC.
Dans ce mode, l'outil analysera les fichiers, les processus et les ports à la recherche d'indicateurs connus.
L'outil écrit les messages de diagnostic sur le flux STDERR et les résultats sur le flux STDOUT.
En utilisation typique, vous devriez rediriger STDOUT vers un fichier pour examen.
L'outil doit être exécuté en tant que root en mode live sur une appliance Citrix ADC.
Par exemple :
$ sudo bash ./ioc-scanner-CVE-2019-19781-v1.1.sh > "/tmp/results-$(date).txt"
L'outil est conçu pour être utilisé avec les produits suivants :
Le scanner IoC peut également inspecter une image médico-légale montée. Dans ce scénario, passez un argument en ligne de commande spécifiant le chemin du répertoire racine de l'image. Vous n'avez pas besoin d'être root pour exécuter en mode hors ligne.
Par exemple :
$ bash ./ioc-scanner-CVE-2019-19781-v1.1.sh /mnt/path/to/evidence/root/
Dans les deux modes, l'outil extraira le code de support dans un répertoire temporaire ; ce répertoire sera supprimé à la fin du script. L'outil n'apporte pas d'autres modifications au système, bien qu'il puisse générer des entrées de journal.
Comme pour toute analyse médico-légale, privilégiez l'analyse hors ligne d'une image dd à une réponse en direct.
Cela éliminera la probabilité que l'outil entraîne l'écrasement de preuves pertinentes.
Veuillez consulter la Foire aux questions pour plus de détails.
À mesure que vous inventez d'autres moyens d'identifier une compromission, veuillez envisager de contribuer à ce scanner IoC. Nous souhaitons fournir le scanner le plus complet et correct possible.
L'objectif principal est de signaler les indicateurs de compromission de haute confiance. Parce que les utilisateurs peuvent se fier au résultat de cet outil pour lancer une enquête plus approfondie, il est important que nous ne les envoyions pas sur une fausse piste. Par conséquent, une activité telle qu'un simple scan ne doit pas être signalée en mode par défaut. Toute preuve qu'un acteur a eu accès au système, récupéré des informations ou créé du contenu doit toujours être signalée.
Nous fournissons cet outil sous forme de script Bash car c'est un dénominateur commun sur les appliances Citrix ADC. Voici la matrice des fonctionnalités pour les versions de Citrix ADC :
Bien que nous ayons vu des malwares utiliser Go pour cibler FreeBSD/NetScaler, Go ne prend pas en charge FreeBSD 6.x.
Nous maintenons des images de système de fichiers clairsemées contenant des preuves de compromission dans le répertoire ./tests/.
Lorsque vous ajoutez des IoC à cet outil, comme des chemins connus ou du contenu sur liste noire, veuillez fournir des exemples de ces preuves pour les tests.
Vous pouvez exécuter les tests unitaires sur un système Linux ou macOS comme ceci :
$ 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
Une fois que vous avez cloné le dépôt source, vous pouvez construire un script autonome à l'aide de l'outil ./build.sh.
Celui-ci empaquette le script principal et les ressources de support dans un seul bundle.
Lors de l'exécution, il s'extraira dans un répertoire temporaire, s'exécutera à partir de là, puis nettoiera.
Pour construire :
$ bash ./build.sh > ioc-scanner-CVE-2019-19781-rev$(git rev-parse HEAD | cut -c 1-8).sh
Pour plus d'informations de FireEye concernant CVE-2019-19781 et l'exploitation dans la nature, veuillez consulter :
La réponse à CVE-2019-19781 a été un effort important dans l'industrie de la sécurité et ces blogs citent largement des contributions supplémentaires qui seront utiles aux utilisateurs de cet outil. Nous recommandons de lire le matériel lié à partir de ces articles pour mieux comprendre l'activité dans votre environnement. Comme toujours, l'équipe FireEye Mandiant est disponible pour répondre aux questions de suivi ou pour aider davantage lors d'une enquête en nous contactant ici.
| Version NetScaler | Système d'exploitation | Langues disponibles |
|---|
| 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 |