Reviewed-on: #1
Créez des données exploitables à partir de vos scans de vulnérabilités
VulnWhisperer est un outil de gestion des vulnérabilités et un agrégateur de rapports. VulnWhisperer récupère tous les rapports des différents scanners de vulnérabilités et crée un fichier avec un nom unique pour chacun, utilisant ensuite ces données pour se synchroniser avec Jira et alimenter Logstash. Jira effectue une synchronisation complète en cycle fermé avec les données fournies par les scanners, tandis que Logstash indexe et étiquette toutes les informations contenues dans le rapport (voir les fichiers logstash dans /resources/elk6/pipeline/
). Les données sont ensuite envoyées à ElasticSearch pour être indexées, et finissent dans un format visuel et consultable dans Kibana avec des tableaux de bord déjà définis.
VulnWhisperer est un projet open-source financé par la communauté. VulnWhisperer est actuellement fonctionnel mais nécessite une refonte de la documentation et une revue de code. Si vous souhaitez de l'aide, si vous êtes intéressé par de nouvelles fonctionnalités, ou si vous recherchez un support payant, veuillez nous contacter à info@sahelcyber.com.
Scanners de Vulnérabilités Supportés
- Nessus (v6/v7/v8)
- Qualys Web Applications
- Qualys Vulnerability Management
- OpenVAS (v7/v8/v9)
- Tenable.io
- Detectify
- Nexpose
- Insight VM
- NMAP
- Burp Suite
- OWASP ZAP
- Et d'autres à venir
Plateformes de Reporting Supportées
Démarrage
- Suivez les prérequis d'installation
- Remplissez la section que vous souhaitez traiter dans le fichier frameworks_example.ini
- [JIRA] Si vous utilisez Jira, remplissez la configuration Jira dans le fichier de configuration mentionné ci-dessus.
- [ELK] Modifiez les paramètres IP dans les fichiers Logstash pour correspondre à votre environnement et importez-les dans votre répertoire de configuration logstash (par défaut
/etc/logstash/conf.d/
) - [ELK] Importez les visualisations Kibana
- Exécutez Vulnwhisperer
Note importante concernant les liens du Wiki : La migration de Gitea ne transfère pas toujours le Wiki d'un projet GitHub (qui est techniquement un dépôt séparé). Si les liens vers le Wiki (comme le guide de déploiement ELK) ne fonctionnent pas, vous devrez peut-être recréer ces pages manuellement dans l'onglet "Wiki" de votre dépôt sur Gitea.
Besoin d'aide ou juste envie de discuter ? Rejoignez notre canal Slack
Prérequis
- Python 2.7
- Un Scanner de Vulnérabilités
- Un Système de Reporting : Jira / ElasticStack 6.6
Prérequis d'Installation - VulnWhisperer (peut nécessiter sudo)
Installez les dépendances des paquets du système d'exploitation (pour les distributions basées sur Debian, CentOS n'en a pas besoin)
sudo apt-get install zlib1g-dev libxml2-dev libxslt1-dev
(Optionnel) Utilisez un environnement virtuel python pour ne pas perturber les bibliothèques python de l'hôte
virtualenv venv # créera l'environnement virtuel python 2.7
source venv/bin/activate # démarre l'environnement, pip s'exécutera ici et devrait installer les bibliothèques sans sudo
deactivate # pour quitter l'environnement virtuel une fois que vous avez terminé
Installez les dépendances des bibliothèques python
pip install -r /chemin/vers/VulnWhisperer/requirements.txt
cd /chemin/vers/VulnWhisperer
python setup.py install
(Optionnel) Si vous utilisez un proxy, ajoutez l'URL du proxy comme variable d'environnement au PATH
export HTTP_PROXY=[http://exemple.com:8080](http://exemple.com:8080)
export HTTPS_PROXY=[http://exemple.com:8080](http://exemple.com:8080)
Vous êtes maintenant prêt à télécharger les scans.
Configuration
Il y a quelques étapes de configuration pour mettre en place VulnWhisperer :
Configurer le fichier Ini
Configurer le fichier Logstash
Importer les modèles ElasticSearch
Importer les tableaux de bord Kibana
Exécution
Pour exécuter, remplissez le fichier de configuration avec les paramètres de votre scanner de vulnérabilités. Ensuite, vous pouvez l'exécuter depuis la ligne de commande.
# (optionnel : -F -> fournit une coloration "Fantaisie" des logs, utile pour la compréhension lors de l'exécution manuelle de VulnWhisperer)
vuln_whisperer -c configs/frameworks_example.ini -s nessus
# ou
vuln_whisperer -c configs/frameworks_example.ini -s qualys
Si aucune section n'est spécifiée (ex. -s nessus), vulnwhisperer vérifiera dans le fichier de configuration les modules ayant la propriété enabled=true et les exécutera séquentiellement.
Docker-compose
ELK est un monde en soi, et pour les nouveaux venus sur la plateforme, cela nécessite des compétences de base sous Linux et généralement un peu de dépannage jusqu'à ce qu'il soit déployé et fonctionne comme prévu. Comme nous ne sommes pas en mesure de fournir un support pour les problèmes ELK de chaque utilisateur, nous avons mis en place un docker-compose qui inclut :
VulnWhisperer
Logstash 6.6
ElasticSearch 6.6
Kibana 6.6
Le docker-compose nécessite simplement de spécifier les chemins où les données de VulnWhisperer seront sauvegardées, et où se trouvent les fichiers de configuration. S'il est exécuté directement après un git clone, en ajoutant simplement la configuration du scanner au fichier de configuration de VulnWhisperer (/resources/elk6/vulnwhisperer.ini), il fonctionnera immédiatement.
Il se charge également de charger automatiquement les tableaux de bord et les visualisations Kibana via l'API, ce qui doit être fait manuellement autrement au démarrage de Kibana.
Pour plus d'informations sur le docker-compose, consultez le wiki docker-compose ou la FAQ.
Feuille de route
Notre feuille de route actuelle est la suivante :
[ ] Créer un standard de vulnérabilité
[ ] Mapper les résultats de chaque scanner au standard
[ ] Créer des directives de module de scanner pour une intégration facile de nouveaux scanners
[ ] Refactoriser le code pour réutiliser les fonctions et permettre une compatibilité totale entre les modules
[ ] Changer Nessus CSV en JSON
[ ] Adapter le Logstash unique au standard et aux tableaux de bord Kibana
[ ] Implémenter le scanner Detectify
[ ] Implémenter le reporting/tableaux de bord Splunk
En plus de cela, nous essayons de nous concentrer sur la correction des bugs dès que possible, ce qui peut retarder le développement. Nous accueillons également très volontiers les PR (Pull Requests), et une fois que nous aurons implémenté le nouveau standard, il sera très facile d'ajouter la compatibilité avec de nouveaux scanners.
Le standard de vulnérabilité sera initialement un nouveau JSON simple à un niveau avec toutes les informations correspondantes des différents scanners ayant des noms de variables standardisés, tout en conservant le reste des variables telles quelles.