Carnet d'analyse Citrix
Un carnet Jupyter pour aider à automatiser une partie de l'analyse forensique liée aux hôtes Citrix Netscaler compromis via CVE-2019-19781.
Pour obtenir de l'aide sur la récupération des artefacts à examiner, consultez ce script de triage Citrix.
Toutes les notes/suggestions sont les bienvenues. N'hésitez pas à soumettre des pull requests ou des issues.
Avertissement : Ceci n'est pas destiné à être une solution universelle, c'est juste là pour vous aider à démarrer.
Fonctionnalités
- Gère actuellement les logs et XML de payload suivants, si disponibles :
- HTTPAccess
- HTTPError
- Cron
- Bash
- Notice
- Sh
- Décompression des logs
- Parsing des logs en dataframes pandas pour une analyse plus poussée si souhaité
- Recherche dans les logs d'IOC courants associés à la compromission
- Parsing et décodage des fichiers XML de payload si disponibles
- Sortie de l'analyse vers une feuille de résultats Excel pour examen
Ressources utiles
Journal des modifications
v 1.0
- Ajout du parsing des logs httperror
- L'analyse des notices recherche désormais les mêmes termes que l'analyse sh (les sh sont inclus dans les notices, nous devons donc rechercher les mêmes termes dans les deux pour obtenir les mêmes résultats)
- Les dataframes ne seront plus exportés vers la feuille de résultats s'ils sont vides. Un message dans les logs indiquera quels dataframes sont vides dans la cellule d'écriture Excel du carnet.
v 0.9
- Ajout de la récupération des dates de début et de fin couvertes par chaque log listé ci-dessus
- Légère refactorisation du code de parsing XML pour incorporer la clé 'username', permettant le parsing des XML récupérés depuis /xml/bookmarks
v 0.8
- Ajout de l'encodage 'latin1' à tout le parsing des logs pour prendre en compte les cas où les logs n'étaient pas en utf-8 et provoquaient des erreurs de parsing
- Division de searchFor en searchFor et shSearchFor car les logs sh ont des critères de recherche différents qui n'apparaissent pas dans les autres logs
v 0.7
- Ajout du décodage des payloads (chr() et base64) + agrégation de tous les payloads dans la colonne 'decodedpayloads'
v 0.6
- Ajout du parsing des logs sh
- Ajout de la variable commune 'searchFor' dans la config pour contenir les termes de recherche d'activité suspecte qui seront recherchés dans chaque log
v 0.5
- Ajout du parsing pour la majorité des logs notice (voir les erreurs pour les exceptions)
- Les exceptions sont actuellement : sslvpn_aaad_login_handler et Session setup data send logs, bien qu'ils s'affichent via les erreurs, vous pouvez donc toujours les inspecter
v 0.4
- Ajout du parsing des logs bash