Documente Academic
Documente Profesional
Documente Cultură
INFORMATIQUE
UE5-Ethical Hacking
Projet - Infrastructure SI
Septembre 2017 – S1 / M1
Groupe N° 3
1
Contacts
Type de document
Révision du document
Validation du document
Nom Date
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
Possibilité 2
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.
8
I) Gestion de l’équipe (talents et compétences)
a) Membres de l’équipe
Notre groupe est composé de sept membres :
XX (profil : programmeur)
○ Intérêts/compétences : développement / sécurité / système / réseau
○ Vue : fonctionnelle + / technique +
○ Travail en groupe : scolaire + professionnel
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.
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.
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
Matériel utilisé :
○ 1 commutateur CISCO 2600
○ 2 commutateurs CISCO 2860
○ 1 routeur CISCO 3750
○ 3 ordinateurs fixes
12
réseau :
○ VLANID 10
○ VLANID 20
○ VLANID 30
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.
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.
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.
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.
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 :
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)
-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)
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é.
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).
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.
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).
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 :
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..).
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).
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é.
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
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.
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 :
Commandes du protocole IP :
- 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.
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 :
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.
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.
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.
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.
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.
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.
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.
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é :
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.
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.
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.
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 :
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
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 :
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.
- 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.
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.
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 :
44
Haute Niveau 6 : Présentation Donnée
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 :
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 :
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.
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.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é.
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
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.
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.
Netdiscover
Objectifs :
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 :
51
Hping
Objectif :
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.
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.
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.
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 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.
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
Pour le transférer sur notre machine et le conserver, on utilise une autre fonctionnalité de nc.
Nous sommes donc en écoute sur notre port 8000, prêt à recevoir un fichier. Nous
redirigeons son contenu dans un fichier nommé code.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:
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).
Puis, nous lançons alors la requête et pour spoofer correctement, on doit effectuer une
boucle.
Donc:
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:
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
! encapsulation dot1Q 30
! !
! duplex auto
! !
ip subnet-zero !
! !
! !
! !
ip cef !
! !
! !
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
interface FastEthernet0/0.10
encapsulation dot1Q 10
60
2) Configuration du commutateur 1
version 15.0 !
service password-encryption !
! interface GigabitEthernet1/0/5
boot-start-marker !
! !
! !
! interface GigabitEthernet1/0/8
61
! interface GigabitEthernet1/0/9
! !
! interface GigabitEthernet1/0/10
! !
! interface GigabitEthernet1/0/11
! !
! interface GigabitEthernet1/0/12
! !
no ip address !
! !
! !
62
interface GigabitEthernet1/0/19 !
! ip http secure-server
interface GigabitEthernet1/0/20 !
! !
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
!
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
interface GigabitEthernet1/0/26
63
interface GigabitEthernet1/0/27
interface GigabitEthernet1/0/28
3) Configuration commutateur 2
! !
! !
! !
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
! !
! interface GigabitEthernet1/0/9
! !
! interface GigabitEthernet1/0/10
! !
! interface GigabitEthernet1/0/11
! !
! interface GigabitEthernet1/0/12
! !
no ip address !
! interface GigabitEthernet1/0/14
interface GigabitEthernet1/0/1 !
! interface GigabitEthernet1/0/16
65
interface GigabitEthernet1/0/2 !
! interface GigabitEthernet1/0/18
interface GigabitEthernet1/0/20 !
! ip default-gateway 192.168.1.254
! !
interface GigabitEthernet1/0/22 !
!
interface GigabitEthernet1/0/24
line con 0
switchport mode trunk
line vty 0 4
!
password 7 0958411D16
interface GigabitEthernet1/0/25
! login
password 7 0958411D16
!
login
interface GigabitEthernet1/0/27
!
!
End
interface GigabitEthernet1/0/28
66
4) Configuration commutateur 3
interface FastEthernet2/0/7
no service pad !
! !
! !
! !
! interface FastEthernet2/0/11
! !
! interface FastEthernet2/0/12
! interface FastEthernet2/0/13
67
! interface FastEthernet2/0/14
! !
! !
! !
! !
! !
! !
! !
68
interface FastEthernet2/0/28 switchport trunk allowed vlan 1,10,20,30
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
! !
! ip classless
! ip http secure-server
interface FastEthernet2/0/37 !
! !
interface FastEthernet2/0/38 !
! control-plane
interface FastEthernet2/0/39 !
! !
69
interface FastEthernet2/0/42 line con 0
! line vty 0 4
! login
! password 7 071B2E5841
interface FastEthernet2/0/46
interface FastEthernet2/0/47
70