Add attack course

This commit is contained in:
Yorick Barbanneau 2022-10-11 12:29:37 +02:00
parent 8b18e6f085
commit f3a6b57e32
3 changed files with 1621 additions and 0 deletions

View file

@ -0,0 +1,97 @@
---
title: "Sécurité des réseaux : L'attaque"
date: 2022-02-07
tags: ["TCP", "scan", "nmap"]
categories: ["Sécurité des réseaux", "Cours"]
---
## Comment
C'est la question centrale posées par l'attaquant: comment pénétrer le réseau
cible. Pour cela il va passer par plusieurs étapes:
1. **recherche d'information** sur la cible: organisation du réseau, versions
des systèmes d'exploitations des équipements, version des logiciels etc.
2. **recherche de vulnérabilités** en fonction des éléments obtenus
précédemment
3. **exploitation** de ces vulnérabilités
4. **installation d'une porte dérobée**
L'attaquant doit alors rester le plus discret possible
Le défenseur doit lui détecter la collecter des informations au plus vite afin de
se prémunir.
## Les buts recherchés
Les buts d'une attaque sont multiples:
* **le déni de service**: le rendre inaccessible en le noyant de requête
* **le déni service distribué**: il s'agit ici aussi de rendre un service
inaccessible mais avec une multitude d'attaquant: les **botnets**. Il sont
composé de centaines à quelques millions d'équipements. L'exemple le plus
parlant est [Mirai](https://fr.wikipedia.org/wiki/Mirai_(logiciel_malveillant))
* **l'interception**: C'est une classe d'attaque par l'homme du milieu *(Man in
the Middle)*.
![Interception du trafic entre deuxinterlocuteurs](./images/interception.svg)
Dans l'exemple ci-dessus, une attaquant intercepte le trafic entre A et B et p
renant soin de le réacheminer après l'avoir enregistré (pour l'analyser à
posteriori).
* **la corruption**: C'est une autre attaque de type *MitM*. Il s\agit de
corrompre une communication. Le cas le plus courant et le
[cache poisoning](https://en.wikipedia.org/wiki/Cache_poisoning]) que se soit
sur les caches DNS ou les caches ARP (les deux protocoles les plus attaqués)
* **l'usurpation** avec les
[attaques par rejeu](https://fr.wikipedia.org/wiki/Attaque_par_rejeu).
## Recherche d'informations
Il est possible de deviner tout un tas d'informations en observant le trafic
réseau et utilisant des techniques de
[fingerprinting](https://fr.wikipedia.org/wiki/Empreinte_digitale_d%27appareil). En
observant notamment les numéro de séquence d'un échange TCP, il est possible
d'en déduire le *système d'exploitation*. L'outil de base pour le fingerprinting
est [nmap](https://nmap.org/), dans le cas du système d'exploitation, il utilise
*xprobe*.
### Balayages de ports
Nmap permet aussi le balayage les ports d'un hôte (ou d'un groupe d'hôte). Il
utilise pour cela plusieurs technique.
* la plus connue est le *SYN SCAN*: nmap envoie un paquet TCP `SYN` à la cible,
celle-ci répond avec les drapeaux `SYN/ACK` de positionnés si le port est
ouvert et `RST/ACK` s'il est fermé. Il est possible de trasformer cette
technique en envoyant un `ACK` après le `SYN/ACK` de la réponse de la victime
afin de simuler une connexion valide et ce afin d'être plus discret;
* le *FIN scan*: nmap envoie un paquet TCP de fin de connexion (drapeau `FIN`
positionné à 1). En cas de port ouvert la victime ne réponds pas, sinon elle
répond par un `RST/ACK`;
* le *null scan* et *xmas scan* jouent avec les drapeaux en les initialisation
de manière non conforme afin de dejouer les pare-feux. En vas de réponse
`RST/ACK` alors on peut en déduite que le port est ouvert sur la victime.
#### le cas de l'IDLE scan
C'est un balayage particulier qui fait intervenir un tiers et joue avec l'IPID.
L'IPID est un numéro d'identification IP utilisé en cas de fragmentation
notamment.
![Schéma représentant l'IDLE Scan](./images/idle_scan.svg)
Reprenons le schéma ci-dessus, nous avons **A**, machine *zombie* sous conrôle
de l'attaquant et **B** la victime:
1. l'attaqant récupère l'*IPID* de la machine zombie **A** en envoyant un
`SYN/ACK` et en observant l'IPID du segment TCP `RST` en retour -- nomons le
X;
2. l'attaquant forge ensuite un segment TCP `SYN`; la trame IP englobant celui-
ci a comme adresse source l'IP celle de **A**;
3. il suffit alors de renvoyer un segment `SYN/ACK` et d'observer l'*IPID* de
la réponse : fonction de l'échange entre **A** et **B**, nous pouvons en
déduire si le port est ouvert sur la cible:
* s'il est égal à X+1 alors le port est fermé: en effet la victime a
répondu un simple `RST`, l'*IPID* n'est pas incrémenté;
* s'il est égal à X+2, le port est ouvert: la victime a répondue avec un
`SYN/ACK`, notre *zombie* avec un `RST` incrémentant l'*IPID* de 1.