Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
mail-security-tester — Un framework de test pour les solutions de sécurité et de filtrage des e-mails. | Kitploit
Outils/GitHubGitHub/tkcert/mail-security-tester
Outils de PhishingScanners de VulnérabilitésÉvasion IDS/IPSTests d'IntrusionSécurité des Emails
GitHubtkcert/mail-security-tester

mail-security-tester

Un framework de test pour les solutions de sécurité et de filtrage des e-mails.

Voir le dépôt
24446il y a 7 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Build Status

Cadre de test de sécurité des courriels

Un cadre de test pour les solutions de sécurité et de filtrage des courriels.

IMPORTANT : Ne faites rien de malveillant avec cela ! Les tests de solutions cloud ou hébergées doivent toujours être approuvés par le fournisseur testé. Utilisez uniquement vos propres comptes de test et n'ennuyez personne avec une multitude de courriels de test.

Installation

Le cadre de test de sécurité des courriels fonctionne avec Python >=3.5. Il suffit de cloner ce dépôt et de commencer. Aucune autre dépendance n'est requise.

Utilisation

Le script mail-tester.py exécute les tests. Lisez le message d'aide avec ./mail-tester.py --help et consultez la liste des modules de test et d'évasion avec ./mail-tester.py -l pour obtenir un aperçu des capacités et de l'utilisation du script. Quelques conseils :

  • Au moins les paramètres --smtp-server et --to doivent être fournis pour une exécution de test minimale.
  • Tous les paramètres peuvent également être stockés dans des fichiers de configuration sans le préfixe --. Ces fichiers de configuration peuvent être utilisés en invoquant ./mail-tester.py @tester.conf (configuration contenue dans tester.conf).
  • Plusieurs destinataires peuvent être configurés avec --to pour tester différentes configurations de filtrage.
  • Certaines solutions de filtrage des courriels peuvent rejeter les messages après un certain temps. Utilisez --auto-delay pour un réglage automatique du débit des courriels. Cela peut être affiné avec --delay-step, --delay-max et --delay.
  • Certains tests (Spam et Malware) nécessitent des échantillons. Placez-les dans des répertoires et configurez ces répertoires avec les paramètres --spam-folder et --malware-folder. Les échantillons ne sont pas inclus dans ce dépôt (et ne le seront pas). De bons endroits pour obtenir des malwares sont theZoo, Das Malwerk ou d'autres collections. Les spams peuvent être exportés directement depuis votre dossier Spam, mais doivent être au format EML.
  • Les listes noires peuvent être fournies avec le paramètre --blacklist et sont utilisées comme adresses d'expéditeur.
  • Les cas de test Shellshock et XSS dans l'objet doivent avoir un domaine de rappel valide, où vous êtes en mesure de voir les rappels (en particulier les requêtes DNS). Le service gratuit Canary Tokens peut être utilisé à cette fin. Merci à Thinkst pour ce service génial !
  • Quelques astuces intéressantes d'évasion de reconnaissance des pièces jointes peuvent être activées avec --evasion content-disposition. Elles étaient utilisées par le passé pour tromper les solutions d'analyse antivirus/sandbox et leur laisser passer des courriels malveillants.
  • N'oubliez pas de journaliser les résultats des tests avec --log. Les fournisseurs de filtrage de courriels rejettent souvent les courriels lors du dialogue SMTP, ce qui est reflété dans le journal généré.
  • Les cas de test peuvent être exportés avec --output sous forme de fichiers simples dans un répertoire, au format MBox (--mbox) ou MailDir (--maildir). Cela est utile pour tester les clients de messagerie sans envoyer de courriels, pour documenter ou examiner les cas de test générés.

Développement et extension

Tests

Les tests personnalisés peuvent être implémentés avec une classe dans l'un des fichiers Python existants ou nouvellement créés dans le répertoire tests/. La classe doit être une sous-classe de MailTestBase située dans le module tests.base de ce projet. Les tests nouvellement implémentés sont découverts automatiquement lorsque la variable de classe active est définie à True. De plus (si vous prévoyez de contribuer des tests au dépôt principal), les variables de classe identifier, name et description doivent être définies de manière appropriée.

Les classes de base suivantes existent avec des méthodes ou des variables de classe destinées à être surchargées :

  • MailTestBase : Classe de test pour les tests génériques.
    • generateTestCases() : Génère des messages de test. Ceux-ci doivent être générés avec les classes MIME* des packages email.mime.* de Python ou avec la classe Message de email.message pour garantir des messages électroniques valides.
    • active : Valeur booléenne indiquant si le test doit être actif.
    • identifier : Identifiant court du test. Celui-ci est utilisé pour activer ou désactiver les tests dans les paramètres.
    • name : Titre court du test.
    • description : Description plus longue du test, doit tenir dans environ 100 caractères.
    • delivery_sender et delivery_recipient : Valeurs booléennes, par défaut. Normalement, l'expéditeur et les destinataires sont définis dans le message et le module SMTP de Python les reprend à partir de là. Parfois, il est souhaitable de les définir explicitement dans la bibliothèque SMTP, ce qui peut être configuré en définissant ces valeurs sur .

Il est fortement recommandé de définir les sujets des messages générés afin de pouvoir reconnaître les tests dans la boîte de réception destinataire.

Évasions

Les classes d'évasion implémentent des techniques pour éviter la reconnaissance de propriétés particulières des courriels par les solutions de sécurité des courriels. Actuellement, une technique d'évasion qui tente de cacher les pièces jointes à ces solutions en utilisant des en-têtes Content-Disposition intentionnellement cassés est implémentée.

Implémenter de nouvelles évasions

Les évasions sont implémentées par un modèle de classe d'usine. La classe DeliveryBase instancie une classe d'usine dérivée de la classe BaseEvasionFactory. Le constructeur de l'usine reçoit un indicateur qui signale si l'évasion est activée. L'instance de l'usine d'évasion est ensuite passée à la classe de test et stockée dans son attribut evasions qui contient un dict avec les identifiants d'évasion comme clés. À l'intérieur du test, une classe d'évasion (basée sur EvasionBase) est instanciée avec getEvasionGenerator(). Les paramètres du constructeur sont définis individuellement par technique d'évasion.

Les classes de base suivantes sont utilisées pour implémenter les évasions :

  • BaseEvasionFactory : Les usines d'évasion doivent être basées sur cette classe. En général, seules les variables de classe suivantes doivent être définies :
    • active : Définir sur True si l'évasion doit être active.
    • identifier : Identifiant court du module d'évasion utilisé pour l'activer dans la configuration de test.
    • name : Titre court de la technique d'évasion.
    • description : Description plus longue de la technique d'évasion. Doit tenir dans environ 100 caractères.
    • generator_evasion : Classe d'évasion qui est instanciée si l'évasion est activée.
    • generator_default : Classe d'évasion qui est instanciée si l'évasion est désactivée.
  • BaseEvasion : L'implémentation des évasions doit être une sous-classe de cette classe de base. La méthode suivante doit être surchargée :
    • __init__() : Doit instancier la classe avec le message ou la pièce jointe de base qui doit être manipulé(e) avec des techniques d'évasion.
    • generate() : Appliquer la technique d'évasion à l'objet passé au constructeur et le renvoyer à l'appelant sous forme de tuple (description, objet avec évasion appliquée).

En général, la classe d'évasion doit générer toutes les variantes d'évasion et passer la valeur par défaut comme cas de test dédié, tandis que les classes d'évasion par défaut ne font que transmettre l'objet donné ou créer les structures de données requises, comme les en-têtes.

Utilisation des techniques d'évasion dans les cas de test

Les techniques d'évasion sont utilisées dans les cas de test où elles sont applicables. Par exemple, si une technique d'évasion manipule l'en-tête d'un courriel ou d'une pièce jointe, les étapes suivantes doivent être implémentées :

  1. Générer l'objet de base (courriel ou pièce jointe) sans prendre en compte l'évasion.
  2. Instancier la classe d'évasion appropriée en utilisant l'instance de l'usine d'évasion à partir de self.evasions, par exemple : evasion_items = self.evasions["evasion_identifier"].getEvasionGenerator(message)
  3. Itérer sur le générateur et renvoyer les cas de test :
root@kitploit:~
for evasion_item in evasion_items:
    yield evasion_item

Utilisation de la technique d'évasion Content-Disposition

La technique d'évasion Content-Disposition est déjà implémentée dans le cadre et doit être utilisée pour tous les cas de test qui ciblent la reconnaissance de pièces jointes malveillantes. Le constructeur reçoit une pièce jointe et le nom de fichier prévu. La classe d'évasion renvoie ensuite des tuples (nom d'évasion, pièce jointe avec technique d'évasion appliquée) qui peuvent directement être renvoyés par la méthode generateAttachments() des tests.

Télécharger l’outil
False
True
  • finalizeMessage(msg) : Par défaut, la classe de test de base définit les en-têtes From et To en conséquence. Ce comportement peut être surchargé si nécessaire pour le cas de test.
  • MailAttachmentTestBase : Classe de test pour les cas de test de pièces jointes. Cela génère un courriel complet valide avec un sujet et une partie texte et y attache le cas de test. Dérivé de MailTestBase, donc les méthodes/variables de celui-ci peuvent être surchargées ici aussi.
    • generateAttachments() : Génère des cas de test sous forme de tuples (description, pièce jointe).
    • subject : Définit le sujet. L'espace réservé {} est remplacé par la description générée par generateAttachments().
    • generateTestCases() : est déjà surchargée avec une implémentation de la génération de messages décrite ci-dessus, mais peut être adaptée davantage si nécessaire.