Een showcase van LLMNR poisoning en de impact op cybersecurity.
Auteur: Abdulla Bagishev
Jaar: 2024-2025
Onderwerp: Cybersecurity en netwerkbeveiliging
Link-Local Multicast Name Resolution (LLMNR) is een netwerkprotocol dat wordt gebruikt in Windows-netwerken om hostnamen te resolven wanneer een DNS-server niet beschikbaar is. Hoewel LLMNR functioneel waardevol is, introduceert het een significante kwetsbaarheid die kan worden misbruikt door aanvallers om gevoelige informatie te onderscheppen, zoals inloggegevens en netwerkverkeer.
In deze paper onderzoeken we hoe LLMNR-poisoning werkt en demonstreren we hoe een aanvaller de zwakheden in dit protocol kan uitbuiten. Daarnaast behandelen we:
LLMNR is een fallback-mechanisme voor het resolven van hostnamen in lokale netwerken wanneer DNS niet beschikbaar is. Het protocol maakt gebruik van multicast UDP-verkeer op poort 5355.
Wanneer een apparaat een hostnaam moet resolven die niet in DNS voorkomt, stuurt het een multicast-query naar het netwerk. Alle apparaten ontvangen deze query en kunnen antwoorden als zij de gevraagde hostnaam hebben.
Stap 1: Netwerkverkenning - Wireshark gebruiken om LLMNR-verzoeken te detecteren.
Stap 2: LLMNR Listener opzetten - Een Python-script of Responder configureren.
Stap 3: Aanval uitvoeren - Gespoofte LLMNR-responses sturen naar het slachtoffer.
Stap 4: Interceptie en exploitatie - NTLM-hashes verzamelen en brute-force aanvallen uitvoeren.
We bouwen een Python LLMNR Listener die:
import socket
import struct
import threading
MCAST_GRP = '224.0.0.252' # Multicast-adres LLMNR
MCAST_PORT = 5355 # UDP-poort voor LLMNR
REDIRECT_IPv4 = '192.168.1.26' # IP van aanvaller
def start_llmnr_listener():
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((MCAST_GRP, MCAST_PORT))
print(f"Listening for LLMNR requests on {MCAST_GRP}:{MCAST_PORT}...")
while True:
data, addr = sock.recvfrom(1024)
print(f"[+] Received LLMNR request from {addr}")
threading.Thread(target=start_llmnr_listener, daemon=True).start()
while True:
pass
udp.port == 5355
).✅ Gebruik Wireshark en filter op UDP-poort 5355. ✅ Gebruik IDS/IPS zoals Snort of Suricata. ✅ Monitor verdachte verkeer naar ongebruikelijke IP-adressen.
🚫 LLMNR uitschakelen in Windows via Group Policy:
Computer Configuration → Administrative Templates → Network → DNS Client
.🔐 Gebruik beveiligde DNS-protocollen zoals DNSSEC.
LLMNR-poisoning is een krachtige techniek die kan worden misbruikt in netwerken waar het protocol actief is. Door de combinatie van een zwak authenticatie-mechanisme en multicast-verkeer is het een populaire aanvalsmethode onder pentesters en black-hat hackers.
Om dit te mitigeren, moeten organisaties LLMNR uitschakelen, hun netwerken segmenteren en monitoringtools inzetten. Dit project toont aan dat een kleine netwerkconfiguratie-fout grote beveiligingsrisico’s kan opleveren.