Kubernetes Network Attacks
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
U Kubernetes-u, primećeno je da podrazumevano ponašanje omogućava uspostavljanje veza između svi kontejneri koji se nalaze na istom čvoru. Ovo važi bez obzira na razlike u namespace-ima. Takva povezanost seže do Layer 2 (Ethernet). Kao rezultat, ova konfiguracija potencijalno izlaže sistem ranjivostima. Konkretno, otvara mogućnost da maliciozni kontejner izvrši ARP spoofing napad protiv drugih kontejnera smeštenih na istom čvoru. Tokom takvog napada, maliciozni kontejner može obmanuti i presresti ili izmeniti mrežni saobraćaj namenjen drugim kontejnerima.
ARP spoofing napadi uključuju napadača koji šalje lažne ARP (Address Resolution Protocol) poruke preko lokalne mreže. To rezultira povezivanjem MAC adrese napadača sa IP adresom legitimnog računara ili servera na mreži. Nakon uspešnog izvršenja takvog napada, napadač može presresti, izmeniti ili čak zaustaviti podatke u tranzitu. Napad se izvršava na Layer 2 OSI modela, zbog čega podrazumevana povezanost u Kubernetes-u na ovom sloju izaziva bezbednosne brige.
U scenariju će biti kreirane 4 mašine:
ubuntu-pe: Privilegovana mašina za bekstvo na čvor i proveru metrika (nije potrebna za napad)
ubuntu-attack: Maliciozni kontejner u podrazumevanom namespace-u
ubuntu-victim: Žrtva mašina u kube-system namespace-u
mysql: Žrtva mašina u podrazumevanom namespace-u
Ako želite više detalja o mrežnim temama predstavljenim ovde, pogledajte reference.
Generalno govoreći, mrežno povezivanje između podova unutar čvora je dostupno putem mosta koji povezuje sve podove. Ovaj most se zove “cbr0”. (Neki mrežni dodaci će instalirati svoj vlastiti most.) cbr0 takođe može obraditi ARP (Protokol za rešavanje adresa) rezoluciju. Kada dolazni paket stigne na cbr0, može rešiti odredišnu MAC adresu koristeći ARP.
Ova činjenica implicira da, po defaultu, svaki pod koji radi u istom čvoru će moći da komunicira sa bilo kojim drugim podom u istom čvoru (nezavisno od imenskog prostora) na ethernet nivou (sloj 2).
Stoga, moguće je izvršiti ARP Spoofing napade između podova u istom čvoru.
U kubernetes okruženjima obično ćete pronaći 1 (ili više) DNS usluga koje rade obično u kube-system imenskom prostoru:
U prethodnim informacijama možete videti nešto zanimljivo, IP usluge je 10.96.0.10 ali IP poda koji pokreće uslugu je 172.17.0.2.
Ako proverite DNS adresu unutar bilo kog poda, naći ćete nešto poput ovoga:
Međutim, pod ne zna kako da dođe do te adrese jer je pod opseg u ovom slučaju 172.17.0.10/26.
Zato će pod poslati DNS zahteve na adresu 10.96.0.10 koja će biti prevedena od strane cbr0 na 172.17.0.2.
To znači da DNS zahtev poda uvek ide na most da prevede IP usluge na IP krajnje tačke, čak i ako je DNS server u istoj podmreži kao pod.
Znajući ovo, i znajući da su ARP napadi mogući, pod u čvoru će moći da presretne saobraćaj između svakog poda u podmreži i mosta i modifikuje DNS odgovore sa DNS servera (DNS Spoofing).
Štaviše, ako je DNS server u istom čvoru kao napadač, napadač može presresti sve DNS zahteve bilo kog poda u klasteru (između DNS servera i mosta) i modifikovati odgovore.
Naš cilj je da ukrademo barem komunikaciju od ubuntu-victim do mysql.
Kao što je već pomenuto, ako kompromitujete pod u istoj čvoru kao pod DNS servera, možete MitM sa ARPSpoofing mostom i DNS podom i modifikovati sve DNS odgovore.
Imate stvarno dobar alat i tutorijal za testiranje ovoga u https://github.com/danielsagi/kube-dnsspoof/
U našem scenariju, preuzmite alat u podu napadača i kreirajte **datoteku nazvanu hosts
** sa domenama koje želite da spoof kao:
Izvršite napad na ubuntu-victim mašinu:
Ako pokušate da kreirate svoj vlastiti DNS spoofing skript, ako samo modifikujete DNS odgovor to neće raditi, jer će odgovor imati src IP adresu malicioznog poda i neće biti prihvaćen. Morate generisati novi DNS paket sa src IP adrese DNS na koju žrtva šalje DNS zahtev (što je nešto poput 172.16.0.2, a ne 10.96.0.10, to je IP adresa K8s DNS servisa, a ne IP adresa DNS servera, više o tome u uvodu).
Alat Mizu je jednostavan, ali moćan API pregledač saobraćaja za Kubernetes koji vam omogućava da vidite svu API komunikaciju između mikroservisa kako biste pomogli u debagovanju i rešavanju regresija. Instaliraće agente u odabranim podovima i prikupiti informacije o njihovom saobraćaju i prikazati ih na web serveru. Međutim, biće vam potrebne visoke K8s dozvole za ovo (i nije baš diskretno).
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)