Add attack course
This commit is contained in:
parent
8b18e6f085
commit
f3a6b57e32
3 changed files with 1621 additions and 0 deletions
97
content/secu_reseaux/1_attaque/index.md
Normal file
97
content/secu_reseaux/1_attaque/index.md
Normal 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)*.
|
||||
|
||||

|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
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.
|
Loading…
Add table
Add a link
Reference in a new issue