--- tags: TATT, revision author: Joffrey title: TATT revisions --- Attaque sur TCP/IP === # Couche Physique et Liaison Souvent attaque sur Ethernet, et etant une couche du reseau locale => attaques seulement possible sur le meme reseau Ethernet: MAC-dst|MAC-src|type|Data(ex ARP ou le type est 0x806) Announcement ARP: meme addr demandeur+cible => mise a jour du cache ARP sur mach Table CAM sur commutateur: MAC/port # Ecoute de paquets Couche physique et liaison pour du sniffing => protocole broadcast (Eth/WIFI), trames envoyées à tous dans le domaine de collision Sniffing: carte reseau en mode promiscious (desactive check MAC) Recommandé de tcpdump puis check en non-admin sur wireshark les paquets recupérés # Usurpation MAC ## Changement d'addr MAC Commande pour changer la MAC > ip link set eth0 address xx:xx:xx:xx:xx:xx ## Envoi de trames ARP Requete ARP legitime: - Ethernet en broadcast (dst=FF...FF) - Dans la partie Data ARP: - MAC-src=notre MAC - IP-src=notre IP - MAC-dst=00...00 - IP-dst=IP recherchée Reponse ARP: - Ethernet en unicast - Dans la partie Data ARP: - MAC-src=MAC annoncée - IP-src=IP donnée - MAC-dst=mach cible - IP-dst=mach cible ## ARP Cache poisoning (ARP spoofing) - Rep ARP prise en compte meme si pas de requete - derniere info recue ecrase la precedente **But**: modifier le cache des victimes pour envoyer paquet a des mauvaises addr <span style="color: red">Attaque de type MitM</span> Il faut envoyer a 2 mach une ARP reply pour rediriger le dialogue sur l'attaquant. *Se faire passer pour la Gatewway pour etre le plus efficace* **Realisation d'ARP spoofing**: - deter les 2 mach cibles (ping puis affichage cache ARP **$ ip n show**) - envoi de reponse ARP periodique (10 sec) - attaquant enverra les paquet grace au forward automatique du noyau Programmes possible: arpspoof, dsniff, ettercap ## DoS Ethernet ### ARP flood <span style="color: red">Principe: inonder d'ARP response le commutateur pour remplir la CAM. Alors il passe en HUB pour laisser tout le trafic ouvert ou implose ^^ et crash.</span> ### Faire ignorer une mach ARP response (10 sec) - d'une mach cible avec mauvaise addr a toutes les mach => mach cible ne recevra plus rien - envoyer une fausse addr de GateWay => il enverra a la mauvaise et rien ne se passera *(ARP spoofing total)* ### Selon les protos - Ethernet: Jam signal (indique une collision) h24 => plus rien ne passe dans ce domaine de collision - token ring: on ne redonne jamais le jeton - WIFI: brouiller la gamme des frequences ## Protections ### Detection des cartes en mode promiscious Le plus simple est d'envoyer une requete ARP-dst=#cible => si reponse de la cible => mode promiscious ### Surveillance trames ARP prgm arpwatch: interface en promiscious (notation p+) et creation table MAC/IP => si MAC change alors emission d'une alerte ### Addr MAC Statique Empeche tout individu de tenter un changement. Pour deter addr MAC legitime: *$ arp -d IP; ping IP* et analyser le trafic a la recherche de reponse involontaires. Pour resumer: - Commutateur qui filtre les ports par addr MAC - Secu physique - Alerte si changement ### Dynamic Arp Inspection Equipement évolué: activer le DHCP snooping pour specifier MAC/IP du serveur DHCP de reference. Ensuite Dynamic ARP Inspection (DAI) peut inspecter les trames forgees. (VLAN entre postes aussi possible => bloque tout) ## STP Commutateur STP (un racine>autres) => mailler les equipements. La topologie repose sur l'envoi de trames BPDU (Bridge Protocol Data Unit) et prend 50sec environ. Si attaquant envoie une trame BPDU, il peut se faire passer pour le racine. (Seulement installer STP sur commutateur maille entre eux et non avec les utilisateurs) # Couche Reseau ## Decouverte d'un reseau ### Composants d'un reseau - Pinger l'addr broadcast du reseau (methode naive) - Methode intelligente: *$ nmap -sn* requetes ARP sur chaque addr du reseau => si reponse alors addr IP (decouverte de tout le reseau car meme ceux qui ne reponde pas a IP) sont force de repondre a du ARP pour communiquer sur le reseau local. - sinon: ICMP (ping) et co au port 80. Si un des 2 marche => addr IP associe a une mach ### Archi reseau Traceroute: distance Record route: quels routeurs sont traversés (avec option dans le IP Header avec leur addr IP) ## Fingerprint IP Connaitre la version precise d'un system d'exp d'un equipement. Pas dans la RCF => donc tester plusieurs et faire un arbre de decisions ### TTL/ICMP Echo Request/Erreur ICMP Valeur depends de l'implem de la pile => peut indiquer l'OS ### Drapeau IP ToS/DF => peuvent lacher des info sur le system ## Usurpation IP Aucune protec - Proto sans etats (UDP, ICMP, etc...): si un seul paquet applicatif peut faire des modifs alors les consequences peuvent etre dangeureuse - Proto avec etats (TCP) ou que l'applicatif veut plusieurs interactions c'est plus complexe: - en MitM: sniff info de la co => compromis - en aveugle: tente de randomizer les sequences mais ajd quasi impossible (aleatoirement) ## VLAN **But**: cloisonner les reseaux sur 1/plusieurs equipements. **Principe**: affecter un port physique du commu a un reseau slon - addr Eth - addr IP - un etat d'authent - une config fixe **Modes**: - access: 1 seul VLAN ID autorisé - trunk: plusieurs VLAN ID Les Privates VLAN: empeche le trafic entre ports physiques, sauf les trunk. ARP cache poisoning => X ### Sauts de VLAN Cisco ajoute un proto DTP (dynamic trunk proto): possible de modif VLAN ID a la volee => <span style="color: red">A Desactiver</span> ## DoS IP ### Ping of the death Pas besoin de reexpliquer mdr ### Teardrop Paquets IP avec des offsets qui se superposent => plantage de la pile IP de certaines machines ^^ ### Bonk Inverse du Teardrop, mach qui l'avait patch etaient vulnerable. Paquet avec offset espace et donc du vide ^^ ### Ping flood et smurf Ping flood: envoyer requetes ping pour saturer la BP de la mach cible (plus efficace si ICMP ECHO broadcast spoofing avec mach cible ^^) ### ICMP Blind Co reset **ICMP Connection reset**: addr src/dst, port src/dst, num de sequence. Certains sys ne verifiant pas le num de sequence, en aveugle on peut couper la co (brute-force du port et c'est tout). ## Protections ### Return Path Filter rp_filter: code dans le noyau linux qui evite l'IP spoofing. Principe= rejeter pkts qui ne correspondent pas dans la table de routage. (protege entre reseau du routeur) ### Ignorer broadcast reseau Sur le routeur, bloquer pkts dont la dst dont la src est l'addr de broadcast. ### Desactivation ICMP - aucune assurance qu'une mach est sur le reseau - evitemment des fingerprints - evitemment des fuites d'infos - evite d'etre la source d'un DoS ### SSL/TLS Pour eviter le sniffing, le chiffrement est de mise (niveau applicatif) TLSv1.2 commence a etre deploye, et TLSv3 est en creation. ### IPSec Pour le layer 3, protege tous les protos de manieres transparente. 2 modes: - transport: protec des protos superieurs, souvent protec d'une communication entre 2 mach - tunnel: encapsule les pkts IP dans d'autres pkts IP, pour protec une communication entre 2 reseaux ou entre 1 mach et un reseau Modes: ![](https://i.imgur.com/HjcP1V5.png) # Couche Transport (TCP/UDP) Co={IPs,IPd,Ps,Pd} ## Fingerprinting TCP La window-size (fenetre TCP) est fortement dependante de l'OS, donc on peut trouver facilement l'OS. La taille d'un pkt SYN aussi. ## Portscanning ### Ports TCP Scan suicidaire: *$ nmap -sT* => se connecter a chacun des ports d'une mach (risque de planter l'application qui s'attend a de la data). ### SYN scan Methode (attaquant=A | cible:T): A:SYN C:SYN ACK(port ouvert) | RST ACK(port ferme) A:(si SYN/ACK)RST Comme la connexion est a moitie ouverte => non journalisee par appli mais IDS detect it anyway *$ nmap -sS* et pour eviter detection *$ nmap -sS -T* ### ACK scan/Window scan **Check de port filtré** Pkt avec flag ACK: - si pas de reponse port filtre et parfois ouvert - sinon port ferme envoie RST ### UDP scan nmap sans data => si rep ICMP type3 code3 (unreachable) port ferme, sinon no one knows ^^ (*$ nmap -sU*) ### Conditions - cible sur mm subnet: ideal, resultat tres probable - cible sur autre subnet: ralentissement, resultat tres probable - cible derriere NAT: possible forward de pkts, identification troublée - cible derriere Firewall: tout peut etre modifié, resultat pas sur du tout ### TCP Hijacking Prendre place avant le client, juste apres authent. Il faut le num de sequence actuel et le tour est joué NSA 2015: attaque *Man-on-the-Side* qui lorsque qqun visite un site web en HTTP un element de l'infra intercepte les flux et les envoie a un server ultra rapide (*shooter*) proche de la victime pour injecter un segment TCP dans la session web pour rediriger le trafic vers un server qui va compromettre le navigateur (le server legitime etant trop lent dans la reponse). ## DoS TCP IP: DoS sur la BP TCP: saturation de la pile TCP/IP ou ses buffers ### SYN flood Envoyer bcp de SYN flood sans repondre aux SYN ACK suivant. Les tables se remplissent et il faut attendre le timeout de vidage des entrees ^^ ### Land Envoyer un SYN avec la meme IP src/dst et le meme port src/dst. Mach se repond a elle-meme ### Win Nuke Erreur Windows sur les pointeurs URG dans le Header TCP. Envois: pkt Out of Band (OOB) au port 139 NetBios, sys affichait un BSOD (Blue Screen of Death) ### Sockstress DoS sur les fenetre TCP **But**: empecher la victime de liberer les ressources **Principe**:envoyer pkt avec fenetre NULL ou petite apres le handshake, attaquant peut ensuite les effacer de sa table et n'aura qu'a renvoyer ceux du serveur victime qui va envoyer des pkt sans data en attendant que la fenetre de co de l'attaquant devienne NULL ce qui n'arrivera pas. ## Protection ### Portscan SYN scan: avec un script envoyer des SYN ACK des qu'un SYN est envoye, tous les ports sembleront ouvert => impossible de savoir les services. IDS: reconnaissent de maniere generale les scans de ports ### Port Knocking Methode basique (du confort, pas de la secu): ouverture de ports a la volee, besoin de connaitre la sequence d'ouverture des ports sinon il ne se passe rien. ### Contre Fingerprinting Blocage de certains pkts par le Firewall => certains empecheront de suivre les RFCs. ### Contre SYN flood c cho retient pas mdr (page 52-53 stuv) # Protocoles utilisés par TCP/IP (chapitre 5) ## Attaques sur DNS ### Rappels DNS DNS utilise port UDP 53 par défaut Si réponse dépasse 512 octets, une drapeau qu'une session TCP doit-être établie Trois types de serveurs : * Serveur autoritaire : responsable d'une zone * Serveur racine : indique les serveurs autoritaires des TLD (Top Level Domain) (exemple : AFNIC pour le .fr) * Serveur cache récursif : interroge les serveurs autoritaires des autres domaines Types d'entrées DNS : * A : adresse IPv4 * AAAA : adresse IPv6 * PTR : nom de machine * CNAME : alias d'un nom de machine * MX : serveur SMTP * NS : délégation d'un sous domaine * SOA : serveur de nom primaire, contacts et expiration ### DNS Spoofing Chaque requête DNS contient un identifiant de requête codé sur 2 octets. Un attaquant peut donc répondre à la place d'un serveur DNS, en connaissant le port source, s'il envoie 65 536 paquets. Il est alors possible de rediriger la victime vers un autre site. ### DNS cache poisoning Lorsqu'un serveur DNS répond à une requête, il lui est possible d'utiliser la section additional records pour envoyer des informations supplémentaires qui seront enregistrées par le serveur cache récursif. Un serveur DNS malveillant peut donc envoyer, en plus de ses informations de base, des informations additionelles qui seront erronées et qui seront enregistrées par le serveur cache récursif. ![](https://i.imgur.com/7cLiTEM.png) Cependant, aujourd'hui les serveurs modernes sont immunisés contre cette attaque car ils vérifient si les infos additionelles ont un lien avec les infos de base. ### DNS reflexion attack Utilise des serveurs DNS comme amplificateur afin de créer un DOS sur une machine. L'attaquant envoie plusieurs requêtes DNS en spoofant l'adresse source (la victime recevra la réponse). Le but est d'effectuer de petites requêtes qui génèrent de grandes réponses pour provoquer un DOS. On utilise les serveurs récursifs qui améliorent les débits de l'attaque. ### Fast flux Technique utilisées par des attaquants pour éviter qu'on ne remonte jusqu'à eux. Les attaquants utilisent des reverses proxies hébergés sur des machines compromises qui vont rediriger les requêtes vers le vrai serveur. Les reverses proxies sont tous associés au même nom de domaine avec un TTL très bas, ainsi l'adresse IP du site malveillant change à chaque fois. ### DNSSEC (Domain Name System Security Extensions) Extension de DNS permettant d'authentifier l'émetteur (empêche le DNS spoofing) et d'assurer l'intégrité des données. Les réponses DNS sont signées et une PKI est mise en place avec des champs spéciaux et des autorités d'authentification de chaîne. ### DNS root Les DNS root sont utilisés pour accéder à des serveurs situés dans d'autres pays et qui ne sont pas en cache. Il y en a 13, nommés [a-m].root-servers.net, chacun nommé par une lettre allant de a à m. ### Autres protocoles de résolution de noms Sous Windows NBNS (NetBios Name Service) (UDP 137) Sous Windows depuis Vista LLMNR (Link-Local Multicast Name Resolution) (UDP 5355), même format que DNS. Apple mDNS/Bonjour ## Attaques sur DHCP Les clients envoient un paquet UDP contenant leur MAC depuis le port 68 en broadcast vers le port 67 (DHCPDISCOVER). Les serveurs DHCP répondent en offrant une adresse IP et une configuration IP (DHCPOFFER). Les clients répondent à la première offre (DHCPREQUEST) et les serveurs acquittent la requête (DHCPACK). ### Spoofing L'attaquant se fait passer pour le serveur DHCP. Il peut installer un second serveur DHCP ou faire un DOS sur le serveur existant. Il peut aussi faire de l'IP spoofing pour répondre à la place du serveur. L'attaquant peut alors se faire passer passer pour le serveur DNS ou/et la passerelle par défaut. ### Dénis de service Trois types de DOS : * perte du serveur : Plus personne ne peut joindre le réseau * flood : un client peut émettre de fausses requêtes avec des adresses MAC différentes pour remplir la table des adresses dynamiques et empêcher les clients légitimes de se connecter * réponse spoofé erronée : si la réponse donnée à la place du serveur légitime empêche le client de se connecter, le réseau tombe ### Protection Y en a pas ## Attaques sur le routage ### Sécurité des routeurs Les routeurs sont souvent la cible d'attaques car : * ils ne sont pas souvent journalisés * ils sont rapides, on peut donc lancer des DoS avec * on peut y sniffer tout le traffic extérieur * ils contiennent plein d'informations sur le réseau cible Il faut protéger l'accès physique aux routeurs, désactiver les services inutiles, utiliser SSH au lieu de telnet si possible, et éviter HTTP. Il faut retirer les mdp par défaut. ### Attaques sur RIP RIP est un IGP (protocole de routage interne) UDP 520 -> facilement spoofable RIPv1 n'a pas d'authentification et RIPv2 envoie le mdp en clair. Pas de contrôle des données reçues -> on peut envoyer de très grandes tables de routages pour engorger le réseau. Etapes d'une attaque de spoofing RIP après avoir trouvé le routeur cible : * déterminer la table de routage (envoyée en broadcast ou sur demande si on est sur le même réseau) * trouver une règle à changer ou à ajouter * envoyer un paquet RIP spoofé On peut alors sniffer tout ce qui passe par la route modifée Protection : Bloquer les paquets RIP depuis le réseau interne et utiliser du routage statique, utiliser une version améliorée de RIPv2 avec une authentification à base de MD5 avec clé. ### OSPF Plus sécurisé que RIP Découpage en zones, liste optionelle de routeurs voisins, mot de passe (aucune par défaut) en clair ou en MD5 par zone Paquets en clair ### BGP Peut être utilisé en interne ou en externe TCP 179 Protocole critique sur internet Réseaux regroupés en AS identifiés par un numéro. BGP possède des contrôles internes qui empêche d'accepter plusieurs routes vers une même destination mais a plusieurs défauts : * pas d'authentification entre les routeurs pairs * pas d'autorisation : pas de vérification des routes en elles-même * utilisation de TCP sans chiffrement ni intégrité Risques : dénis de service d'un AS, altération de routes pour intercepter les connexions ## Dénis de service distribués DOS de grande envergure Pour mener l'attaque, l'attaquant doit infecter le plus grand nombre de machines possibles. L'attaquant y installe des backdoors (IRC, MSN, HTTP, HTTPS, P2P, ICMP, SMTP, DNS,...) Les attaques DDOS peuvent se baser sur de l'ICMP flood, UDP flood, SYN flood et smurf ainsi que du spam # Pare-feu ## DMZ ### Topologies ![](https://i.imgur.com/C6QdpDj.png) ![](https://i.imgur.com/qfElBoo.png) ![](https://i.imgur.com/qzmvQSe.png) ![](https://i.imgur.com/0PI0cDp.png) ![](https://i.imgur.com/GDtRi9k.png) ![](https://i.imgur.com/J5mR5i5.png) ![](https://i.imgur.com/ZdLrcQr.png) ![](https://i.imgur.com/xp90m57.png) ![](https://i.imgur.com/FvwtYn1.png) ### Flux En général on autorise seulement le traffic vers les ports ouverts de la DMZ. Les flux sortants doivent également être filtrés afin d'empêcher les canaux de communication après compromission. Aucune connexion d'un réseau de confiance basse vers un réseau de confiance élevée. DMZ sert de zone tampon (filtrage strict) ## Pare-feu Iptables et PacketFilter ### Différences Syntaxe : PacketFilter lit un fichier, Netfilter en ligne de commande PacketFilter gère le FTP via un proxy, Netfilter via le contenu applicatif des paquets PacketFilter fait de la normalisation de paquet PacketFilter peut faire du fingerprinting Ordre des règles : dans PacketFilter dernière règle a raison, Netfilter première règle a raison Netfilter différentie les paquets propres à la machine des paquets forwardés contrairement à PacketFilter Netfilter un peu plus rapide ### Iptables #### Tables Trois types de tables : filter, nat et mangle filter : * INPUT : paquet à destination de la machine locale * OUTPUT : paquets émis par la machine locale * FORWARD : paquets transitant par la machine locale nat : * PREROUTING : modifie les paquets à leur arrivée * OUTPUT : modifie les paquets locaux avant le routage * POSTROUTING : modifie les paquets à leur sortie mangle : modifie les paquets à la volée #### Cibles Décrit le traitement du paquet qui a matché. ACCEPT : laisse le paquet continuer DROP : abandonner le paquet sans message REJECT : refuse le paquet en notifiant l'émetteur LOG : envoie l'entête du paquet à syslog ULOG : envoie l'entête du paquet à ulog #### Règles On peut spécifier le traitement par défaut des chaînes avec -P #### Filtrage avec état Cela permet d'accepter les paquets liés à des connexions déjà établies ![](https://i.imgur.com/d51aN2j.png) ## Déterminer les ACL ### Réponses TCP Réponse TCP permet de savoir si un port est fermé ou bloqué par un pare-feu sur le chemin ou sur la machine. Voici les quatres réponses : * TCP SYN/ACK : le port est ouvert * TCP RST/ACK : le port est fermé ou un pare-feu a rejeté le paquet * ICMP type 3 code 13 : la machine (ou un équipement intermédiaire) a refusé explicitement les connexions à ce port * rien : paquet supprimé en silence, donc filtré ### Firewalk L'outil firewalk permet de tester les ACL d'une passerelle. Envoie des paquets avec une TTL à 0 juste après l'équipement. Selon la réponse, on peut en déduire la règle sur ce port : * ICMP type 11 code 0 (TTL exceeded) : le port n'est pas filtré * ICMP type 3 code 13 : le port est bloqué * aucune réponse Toutefois, ces réponses ne sont pas forcément réalistes. Un filtre peut se trouver sur la machine après la passerelle, certains pare-feu changent la TTL pour éviter cette détection ou effectuent un traitement spécial sur les paquets avec une TTL de 1. Firewalk prend en paramètre la passerelle et la machine à tester derrière elle afin qu'il connaisse la valeur du TTL à mettre et à qui envoyer le paquet. ## Contourner les pare-feu ### Abuser d'une règle Si une règle autorise tout depuis un port source (exemple : 53), il est possible d'outrepasser le pare-feu. ### Fragmentation En abaissant la MTU d'un pare-feu, il est possible de passer à travers ## Pare-feu applicatif ### Relais Protègent les postes internes vis-à-vis des des serveur potentiellement malveillant sur Internet. Les postes clients envoient leurs requêtes au relais et non directement aux serveurs. Types de relais : * relais Web (HTTP) authentifiant et filtrants * relais SMTP sortant * relais DNS (serveur cache récursif) ### Relais inverses Protègent les serveurs, souvent en DMZ, vis-à-vis d'Internet Types fréquents : * relais inverse Web (HTTP), appelés également WAF (Web Application Firewall) * relais inverse SMTP entrant (antispam et antivirus) ### Journalisation Les pare-feu sont très efficaces pour journaliser les flux refusés. Mais pour journaliser les flux autorisés, il est préférable d'utiliser d'autres solutions telles que le format netflow.