--- title: "Sécurité des réseaux : L'attaque" date: 2022-09-13 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.