Giter VIP home page Giter VIP logo

heigvd-sen-labo-mail-set-2022's Introduction

Teaching-HEIGVD-SEN-2022-Laboratoire-Docker-Mail et SET

Introduction

L'un des outils le plus important dans l'arsenal d'un ingénieur social c'est l'email.

L'ingénierie sociale implique très souvent des interactions avec la cible. Ces interactions sont facilitées de nos jours par l'ubiquité des communications numériques. Il est tout à fait normal de recevoir des instructions par email de la part de supérieurs hiérarchiques ou des collègues pour réaliser toute sorte de tâches. Les destins de pays, des opérations financières multimilliardaires, des plans de construction d'un nouvel appareil; tout peut être transmis par email.

L'email est aussi utilisé pour les relations privées. Ça peut être donc la voie de communication avec des membres de la famille, des amis, les conjoints, les fils et parents.

Pour complémenter le travail réalisé pour apprendre à connaitre la cible afin de la compromettre, l'ingénieur social a souvent besoin de délivrer une payload utilisant le même canal de communication. L'utilisation d'un serveur mail public devient parfois compliqué. Si on essaie de faire une campagne de phishing, par exemple, l'émission d'un grand nombre de messages à des destinations différentes peut soulever une alarme qui vous met dans une liste noire. L'utilisation de certaines payloads peut aussi être détectée par votre serveur mail d'envoi.

Il est donc très intéressant de ne pas dépendre d'un serveur mail public. Vous pouvez configurer votre propre serveur email avec quelques manipulations très simples. Ce serveur vous appartient. Il acceptera de faire tout ce que vous lui demanderez de faire, sans poser des questions.

Une petite note sur l'éthique

Il n'est absolument pas acceptable d'attaquer quelqu'un pour quelque raison que ce soit.

L'utilisation de ces outils à des fins autres que votre propre éducation et formation sans autorisation est strictement interdite par les politiques de ce cours et de l'école, ainsi que par les lois.

Le but de cet exercice est de vous permettre de vous familiariser avec les outils et comment ils peuvent être utilisés dans le contexte professionnel d'un pentest. Ça vous permettra aussi de comprendre les tactiques de l'adversaire afin de pouvoir les contrer par le biais de la politique, de l'éducation et de la formation.

Que faut-il faire ?

Voici les activités à réalise dans ce laboratoire. Vous devez :

  • Installer, configurer et tester votre propre serveur mail
  • Installer le Social Engineering Toolkit (SET)
  • Créer un collecteur d'identifiants (credential harvester)
  • Capturer certains identifiants utilisateur (les vôtres)
  • Créer une attaque de mailing utilisant SET et votre propre serveur mail

Le "rapport" de ce labo est très simple : Pour chaque tâche, faites des captures d'écran de vos activités et répondez les éventuelles questions.

Docker Mailserver

Le projet Docker Mailserver est un système très complet et sophistiqué qui vous permet d'installer et utiliser votre propre serveur mail. Il est en même temps très simple et inclut des fonctionnalités avancées comme des filtres de spam et antivirus (justement ce que l'on veut éviter...).

Vous pouvez visiter le site du projet et apprendre beaucoup de choses à propos de cet outil très puissant. Nous allons pourtant nous contenter de faire un nombre assez réduit de manipulations dans le but de le faire fonctionner rapidement et avec peu d'effort. Ce n'est de loin la bonne utilisation de ce produit. En effet, il peut être déployé pour une utilisation en production.

Notre scénario c'est celui d'un attaquant qui se sert de ce serveur pour délivrer des emails de phishing, par exemple, voir des payloads. Notre configuration de base ne nous permettra pas de recevoir des réponses aux mails. Si vous voulez être capable de recevoir des réponses (ce qui peut être le cas dans certains scénarios), il faudra faire du travail supplémentaire pour installer et configurer un serveur DNS capable de fournir des "MX records". La documentation très complète de Docker Mailserver contient entre autres les informations nécessaires pour configurer votre DNS. L'installation de certificats est aussi normalement importante, mais ce ne sera pas fait pour le moment.

Configuration minimaliste de Docker Mailserver

Nous avons testé ce guide sur Kali Linux et macOS Monterey. Son utilisation devrait être possible sur Windows avec peu ou pas de modification. Il vous faudra comprendre votre propre infrastructure afin de faire interagir correctement tous les éléments.

Nous allons commencer par créer un répertoire "mailserver" et entrer dedans (ce guide part du principe que vous avez déjà Docker et Docker Compose installés et correctement configurés sur votre plateforme).

mkdir mailserver
cd mailserver

Ensuite, nous allons télécharger les 3 fichiers indispensables pour déployer le serveur. Vous n'êtes pas obligés de cloner le repo github entier.

DMS_GITHUB_URL='https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/master'
wget "${DMS_GITHUB_URL}/docker-compose.yml"
wget "${DMS_GITHUB_URL}/mailserver.env"
wget "${DMS_GITHUB_URL}/setup.sh"

Finalement, nous allons rendre executable le script setup.sh.

chmod a+x ./setup.sh

Le fichier mailserver.envcontient une énorme quantité de variables d'environnement qui vous permettent de configurer votre serveur. La bonne nouvelle c'est que la configuration de base est déjà une version "clé en main". Vous pourriez ne rien modifier. Nous allons pourtant éditer le fichier et faire deux petits changements.

Ouvrez le fichier mailserver.env avec votre éditeur de texte préféré et trouvez la ligne qui fait référence à Amavis. Changez la ligne pour désactiver son utilisation:

ENABLE_AMAVIS = 0

Question : quelle est l'utilité de cette option ? C'est quoi Amavis ?

Réponse : L'option permet de désactiver Amavis. Amavis est un filtre de contenu mail open-source. Il permet la détection de spam, virus, erreur dans la syntaxe du mail ou des contenus interdits mais peut également rediriger, trier ou bloquer les emails en fonction de leur contenu, mettre en quarantaine un email suspect ou archiver les emails. Il fournit également un interface pour d'autres filtres comme ClamAv (antivirus) SpamAssasin (Antispam).

image_amavis

Cherchez ensuite la variable PERMIT_DOCKER dans ce même fichier et dans la documentation. Changez sa valeur à :

PERMIT_DOCKER=connected-networks

Question : Quelles sont les différentes options pour cette variable ? Quelle est son utilité ? (gardez cette information en tête si jamais vous avez des problèmes pour interagir avec votre serveur...)

Réponse : Cette option permet de définir les réseaux depuis lesquels l'envoi de mail est autorisé.
- none : Explict Authentification needed
- container : Container IP only
- host : Docker host
- network : Docker bridge (172.16.0.0/12)
- connected-networks : All docker connected networks

image_permit-docker

Vous allez maintenant éditer le fichier docker-compose.yml. Ce fichier contient aussi une configuration de base qui est fonctionnelle sans modification. Vous pouvez pourtant changer le domainname dans ce fichier. Vous pouvez choisir ce qui vous convient. Vous voulez utiliser gmail.com? Allez-y ! C'est votre serveur !

La dernière partie de la configuration c'est la création d'un compte que vous pouvez utiliser pour envoyer vos emails. Il suffit d'utiliser la commande suivante, avec évidement les paramètres que vous désirez. Ce compte sera utilisé pour vous authentifier auprès de votre serveur mail :

./setup.sh email add [email protected] password

[email protected] c'est l'adresse email et le nom d'utilisateur qui seront crées et password est le mot de passe correspondant.

Installation et test

C'est le moment de télécharger l'image, créer le container et tester votre serveur. On utilise docker-compose :

docker-compose -f docker-compose.yml up -d

Vous pouvez vous servir de la commande docker ps pour vérifier que votre container est créé et en fonctionnement.

Nous allons faire un test très basique pour nous assurer que le serveur fonctionne. Vous aurez besoin de telnet ou d'une commande équivalente (vous pouvez utiliser netcat, par exemple):

telnet localhost 25

Si votre serveur fonctionne correctement, il devrait vous saluer avec :

Connection to localhost port 25 [tcp/smtp] succeeded!
220 mail.whitehouse.gov ESMTP

Dans mon cas, j'ai configuré le domaine de mon serveur avec whitehouse.gov

Vous pouvez ensuite établir une conversation avec votre serveur. Nous allons en particulier nous authentifier. Si vous ne vous authentifiez pas, le serveur refusera de vous laisser l'utiliser comme un relay (Relay access denied).

La commande pour l'authentification c'est AUTH LOGIN. Vous devez ensuite transmettre votre username et votre mot de passe de l'utilisateur que vous avez créé, tous les deux en base64.

Voici ma conversation avec mon serveur :

arubinst@mailserver % nc -v localhost 25
Connection to localhost port 25 [tcp/smtp] succeeded!
220 mail.whitehouse.gov ESMTP
HELO rubinstein.gov
250 mail.whitehouse.gov
AUTH LOGIN
334 VXNlcm5hbWU6
dmxhZGltaXJAcHV0aW4ucnU=    <----- "[email protected]" en base64
334 UGFzc3dvcmQ6
cGFzc3dvcmQ=                <----- "password" en base64
235 2.7.0 Authentication successful

Faire une capture de votre authentification auprès de votre serveur mail

Livrable : capture de votre conversation/authentification avec le serveur

image_auth

Configuration de votre client mail

Cette partie dépend de votre OS et votre client mail. Vous devez configurer sur votre client les paramètres de votre serveur SMTP pour pouvoir l'utiliser pour envoyer des messages.


Montrez-nous votre configuration à l'aide d'une capture

Livrable : capture de votre configuration du serveur SMTP sur un client mail de votre choix

image_SMTP

Vous pouvez maintenant vous servir de votre serveur SMTP pour envoyer des mails. Envoyez-vous un email à votre adresse de l'école pour le tester.

Si tout fonctionne correctement, envoyez-nous (Stéphane et moi) un email utilisant votre serveur. Puisque vous avez certainement créé un faux compte email, n'oubliez pas de signer le message avec votre vraie nom pour nous permettre de vous identifier.


Livrable : capture de votre mail envoyé (si jamais il se fait bloquer par nos filtres de spam...

image_mail

The Social-Engineer Toolkit (SET)

A propos de SET

Selon la propre description donnée par TrustedSec, LLC, la société de consulting américaine responsable du développement de ce produit, le Social-Engineer Toolkit est un framework de test d'intrusion open-source conçu pour l'ingénierie sociale. Le SET dispose d'un certain nombre de vecteurs d'attaque personnalisés qui vous permettent de réaliser rapidement une attaque crédible.

Le SET est spécifiquement conçu pour réaliser des attaques avancées contre l'élément humain. Il est rapidement devenu un outil standard dans l'arsenal des testeurs de pénétration. Les attaques intégrées dans la boîte à outils sont conçues pour être des attaques ciblées contre une personne ou une organisation utilisées lors d'un test de pénétration.

La réalité c'est que, en raison de l'évolution très rapide en matière de protection, cet outil fonctionne que partiellement. C'est un peu le jeu du chat et la souris. Le support pour certaines fonctionnalités est souvent utilisable pendant un certain temps et puis, rendu inutile. Cela reste quand-même très intéressant à le surveiller et à l'essayer.

Téléchargement et installation de SET

Le SET est nativement supporté sur Linux et sur Mac OS X (experimental). Il est normalement préinstallé sur Kali Linux et il est capable de se mettre à jour lui-même.

Pour une installation sur Ubuntu/Debian/Mac OS X (ou si vous ne le retrouvez pas sur Kali) :

git clone https://github.com/trustedsec/social-engineer-toolkit/ setoolkit/
cd setoolkit
pip3 install -r requirements.txt
python setup.py

Execution de SET

Pour exécuter SET, dans votre terminal taper :

setoolkit

Dépendant de votre OS et de votre installation particulière, il est possible que certaines fonctionnalités ne soient pas disponibles au moins d'utiliser sudo.

sudo setoolkit

Credential Harvesting

Vous découvrirez l'un des outils les plus couramment utilisés par les ingénieurs sociaux et les acteurs malveillants pour tromper les cibles.

Nous allons essayer avec le site de Postfinance.

Dans le menu de SET, sélectionner l'option 1, attaques de Social Engineering.

Menu principal SET

Ensuite, l'option 2 vous permettra de sélectionner les attaques Web.

Menu principal SET

Vous voulez maintenant l'option 3 pour le collecteur d'identifiants.

Menu principal SET

Et pour finir, l'option 2 pour cloner un site web.

Menu principal SET

Il faudra maintenant remplir deux informations :

(1) l'adresse IP qui réceptionne la requête POST de votre site cloné. Dans notre cas, vous allez très probablement laisser la valeur par défaut proposée par SET (votre adresse dans le NAT d'une machine virtuelle ou votre adresse locale). Si votre attaque est sur une cible externe et que vous récoltez les identifiants depuis un réseau local derrière un NAT, il vous faudra votre adresse publique et faire quelques manipulations de redirection de ports au niveau de votre routeur.

(2) L'url du site à cloner.

Certains sites ne fonctionnent pas bien, voir pas du tout. Pour ces cas, il existe la possibilité de modifier localement le clone du site pour le faire fonctionner. On ne va pas le faire dans le cadre de ce labo.

On a pourtant trouvé deux sites qui fonctionnent bien et que vous pouvez essayer. On avait déjà mentionné Postfinance. L'autre site, c'est notre cher et vénérable gaps :

  • https://www.postfinance.ch/ap/ba/ob/html/finance/home?login
  • https://gaps.heig-vd.ch/consultation/

Soumettre des captures d'écran

Pour le collecteur d'identifiants, montrez que vous avez cloné les deux sites proposés. Dans chaque cas, saisissez des fausses informations d'identification sur votre clone local, puis cliquez le bouton de connexion. Essayez d'autres sites qui puissent vous intéresser (rappel : ça ne marche pas toujours). Faites des captures d'écran des mots de passe collectés dans vos tests avec SET.

image_poste

image_gaps

J'ai également testé avec webmail.heig-vd.ch et login-live.com mais sans succès pour les 2.


Mass Mailer Attack

Essayez la fonction d'envoie de mails. Vous la trouvez dans "Social Engineering Attacks".

Sélectionnez l'option "Single Email Address". Vous avez le choix entre des modèles de mail préfabriqués ou de créer votre propre message.

Pour cet exercice, nous allons utiliser notre serveur mail que vous venez de configurer.

Les paramètres à remplir sont :

  • Adresse email de destination (cible) - vous pouvez essayer votre adresse email de l'école, par exemple
  • Sélectionner l'option "User your own server"
  • From address : l'adresse email de l'expéditeur de votre message - à vous de choisir le personnage
  • FROM NAME : le nom qui sera affiché dans le client mail de la cible
  • Username open-relay : le compte que vous avez créé pour votre serveur mail
  • Password open-relay : le mot-de-passe que vous avez donné à ce compte
  • SMTP server : normalement ce sera localhost mais ça peut dépendre de votre cas
  • Port : 25
  • Flag high priority : à vous de choisir
  • Joindre une pièce : pas en ce moment. Il faut répondre "n" deux foix

En fonction de beaucoup de paramètres (config de votre serveur mail, par exemple), il est fort probable que votre mail se fasse arrêter par le filtre de spam. Vous pouvez regarder le filtre de spam de l'école. Si vous retrouvez votre mail, utilisez l'option "Deliver" pour le libérer. Vous retrouverez votre mail dans la boîte de réception.

Si votre mail s'est fait filtrer, lire les entêtes et analyser les informations rajoutées par le filtre de spam.


Question : Est-ce que votre mail s'est fait filtrer ? qu'es-ce qui a induit ce filtrage ?

Réponse : Non mon mail n'a pas été filtré. (Le mail a été envoyé depuis le réseau de l'école)

image_PPMP

Si vous avez une autre adresse email (adresse privée, par exemple), vous pouvez l'utiliser comme cible, soumettre une capture et répondre à la question.


Question : Est-ce que votre mail s'est fait filtrer dans ce cas-ci ? Montrez une capture.

Réponse et capture : Pas appliqué car marche avec l'addresse de l'école.

Explorer les liens "Phishy" et le courrier électronique "Phishy"

Pour cette dernière partie de notre exploration du phishing, nous allons utiliser un contenu réalisé par les Dr. Matthew L. Hale, le Dr. Robin Gandhi et la Dr. Briana B. Morrison de Nebraska GenCyber.

Visitez : https://mlhale.github.io/nebraska-gencyber-modules/phishing/README/ et passez en revue les modules :

  • Analyse d'url. Ce module risque d'être beaucoup trop simple pour vous mais il peut être très intéressant pour vos rapports de pentest, surtout comme outil pour sensibiliser les employés d'une entreprise. Gardez-le précieusement comme une partie de votre toolbox pour l'avenir.
  • Analyse d'Email (ce module est probablement plus intéressant techniquement pour vous)

En général, c'est un bon exemple de matériel de formation et d'éducation qui peut aider à lutter contre les attaques de phishing et à sensibiliser le personnel d'une organisation.

Vous avez la liberté de reproduire et d'utiliser ce matériel grâce à sa licence.

Soumettre des captures d'écran

Pour cette tâche, prenez des captures d'écran de :

  • Vos inspections d'un en-tête de courrier électronique à partir de votre propre boîte de réception Voici le message de l'étape précédente reçu sur mon addresse de l'école:
Received: from EIMAIL01.einet.ad.eivd.ch (10.192.41.71) by
 EIMAIL01.einet.ad.eivd.ch (10.192.41.71) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2375.24 via Mailbox Transport; Thu, 7 Apr 2022 09:00:48 +0200
Received: from EIMAIL03.einet.ad.eivd.ch (10.192.41.73) by
 EIMAIL01.einet.ad.eivd.ch (10.192.41.71) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2375.24; Thu, 7 Apr 2022 09:00:47 +0200
Received: from mail01.heig-vd.ch (10.192.222.28) by EIMAIL03.einet.ad.eivd.ch
 (10.192.41.73) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24 via Frontend
 Transport; Thu, 7 Apr 2022 09:00:47 +0200
X-ASG-Debug-ID: 1649314846-1114bd34058cc9e0001-YtEL9b
Received: from mail.example.com ([10.193.20.223]) by mail01.heig-vd.ch with ESMTP id OGGu8Xedwj5mtgud for <[email protected]>; Thu, 07 Apr 2022 09:00:47 +0200 (CEST)
X-Barracuda-Envelope-From: [email protected]
X-Barracuda-RBL-Trusted-Forwarder: 10.193.20.223
Received: from [127.0.1.1] (unknown [172.18.0.1])
	by mail.example.com (Postfix) with ESMTPA id 62E334C26CB
	for <[email protected]>; Thu,  7 Apr 2022 03:00:46 -0400 (EDT)
Content-Type: multipart/mixed;
	boundary="===============0603072422493991407=="
MIME-Version: 1.0
From: =?utf-8?b?UFBNUA==?= <[email protected]>
To: <[email protected]>
X-Priority: 1 (Highest)
X-MSMail-Priority: High
Subject: =?utf-8?b?TGUgcmV0b3VyIGR1IENydW5jaA==?=
X-Barracuda-Connect: UNKNOWN[10.193.20.223]
X-Barracuda-Start-Time: 1649314846
X-Barracuda-URL: https://quarantine.heig-vd.ch:443/cgi-mod/mark.cgi
X-ASG-Orig-Subj: =?utf-8?b?TGUgcmV0b3VyIGR1IENydW5jaA==?=
X-Virus-Scanned: by bsmtpd at heig-vd.ch
X-Barracuda-Scan-Msg-Size: 68
X-Barracuda-BRTS-Status: 1
X-Barracuda-Spam-Score: 2.60
X-Barracuda-Spam-Status: No, SCORE=2.60 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=4.0 KILL_LEVEL=5.0 tests=FROM_EXCESS_BASE64, FROM_EXCESS_BASE64_2, MISSING_DATE, MISSING_MID, MISSING_MIMEOLE
X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.97182
	Rule breakdown below
	 pts rule name              description
	---- ---------------------- --------------------------------------------------
	0.14 MISSING_MID            Missing Message-Id: header
	0.01 FROM_EXCESS_BASE64     From: base64 encoded unnecessarily
	0.00 MISSING_MIMEOLE        Message has X-MSMail-Priority, but no X-MimeOLE
	1.40 MISSING_DATE           Missing Date: header
	1.05 FROM_EXCESS_BASE64_2   From: base64 encoded unnecessarily
Message-ID: <[email protected]>
Return-Path: [email protected]
Date: Thu, 7 Apr 2022 09:00:47 +0200
X-MS-Exchange-Organization-Network-Message-Id: b7794603-3da6-40eb-ef43-08da186457ff
X-MS-Exchange-Organization-AVStamp-Enterprise: 1.0
X-MS-Exchange-Organization-AuthSource: EIMAIL03.einet.ad.eivd.ch
X-MS-Exchange-Organization-AuthAs: Anonymous
X-MS-Exchange-Transport-EndToEndLatency: 00:00:00.1622857
X-MS-Exchange-Processed-By-BccFoldering: 15.01.2375.024

On peut voir que ce message a reçu un score de spam de 2.60 par Barracuda et n'est donc pas considéré comme un spam. L'échelle du score est de 0 (message normal) à 10 (spam). On peut voir que les points considérés comme les plus importants par Barracuda lors du calcul de ce score est l'absence de header pour la date (1.40) (Malgré la précense d'un header Date, mais qui a probablement été rajouté par Barracuda) et l'utilisation excessive de la base64 (1.05), probalement du au fait que le nom du FROM soit encodé de même que le sujet du message.

Au niveau des headers, on peut observer que le Return-Path correspond bien au champ FROM. Pas de header Reply-To, X-Distribution, X-Mailer ou Bcc


Partagez avec nous vos conclusions.

Conclusions : Il est intéressant de pouvoir créer facilement et gérer son propre serveur mail. La configuration Thunderbird est toujours une expérience aussi satisfaisante. Il est interessant de noter que docker-mail ne supporte pas les majuscules dans les adresses. 

SET est un outil très intéressant, facile à prendre en main et qui parait très complet.

Echeance

Le 14 avril 2022 à 10h25

heigvd-sen-labo-mail-set-2022's People

Contributors

arubinst avatar leonardbesseau avatar naludrag avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.