---
# System prepended metadata

title: TATT revisions
tags: [TATT, ' revision']

---

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










