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)
Katika Kubernetes, inabainika kwamba tabia ya default inaruhusu kuanzishwa kwa muunganisho kati ya mashine zote zinazokaa kwenye nodi moja. Hii inatumika bila kujali tofauti za namespace. Muunganisho huu unashuka hadi Layer 2 (Ethernet). Kwa hivyo, usanidi huu huweza kufichua mfumo kwa udhaifu. Kwa haswa, unafungua uwezekano wa konteina mbaya kutekeleza shambulio la ARP spoofing dhidi ya konteina nyingine zilizoko kwenye nodi hiyo hiyo. Wakati wa shambulio kama hilo, konteina mbaya inaweza kwa udanganyifu kukamata au kubadilisha trafiki ya mtandao inayokusudiwa kwa konteina nyingine.
Shambulio la ARP spoofing linahusisha mshambuliaji kutuma ujumbe wa ARP uliofanywa (Address Resolution Protocol) juu ya mtandao wa eneo la ndani. Hii inasababisha kuunganishwa kwa anwani ya MAC ya mshambuliaji na anwani ya IP ya kompyuta halali au seva kwenye mtandao. Baada ya kutekeleza shambulio kama hilo kwa mafanikio, mshambuliaji anaweza kukamata, kubadilisha, au hata kusitisha data inayopita. Shambulio linafanyika kwenye Layer 2 ya mfano wa OSI, ndiyo maana muunganisho wa default katika Kubernetes kwenye layer hii unaleta wasiwasi wa usalama.
Katika hali hii, mashine 4 zitaundwa:
ubuntu-pe: Mashine yenye mamlaka ya kutoroka hadi nodi na kuangalia metriki (haihitajiki kwa shambulio)
ubuntu-attack: Konteina mbaya katika namespace ya default
ubuntu-victim: Mashine ya mwathirika katika namespace ya kube-system
mysql: Mashine ya mwathirika katika namespace ya default
Ikiwa unataka maelezo zaidi kuhusu mada za mtandao zilizowasilishwa hapa, tembelea marejeleo.
Kwa ujumla, mtandao wa pod hadi pod ndani ya node upatikana kupitia daraja linalounganisha pods zote. Daraja hili linaitwa “cbr0”. (Baadhi ya plugins za mtandao zitafunga daraja zao.) cbr0 pia inaweza kushughulikia ARP (Protokali ya Kutatua Anwani). Wakati pakiti inayokuja inafika cbr0, inaweza kutatua anwani ya MAC ya marudio kwa kutumia ARP.
Hali hii inaashiria kwamba, kwa kawaida, kila pod inayotembea katika node hiyo hiyo itakuwa na uwezo wa kuwasiliana na pod nyingine yoyote katika node hiyo hiyo (bila kujali namespace) katika kiwango cha ethernet (tabaka la 2).
Hivyo, inawezekana kufanya ARP Spoofing attacks kati ya pods katika node hiyo hiyo.
Katika mazingira ya kubernetes mara nyingi utapata 1 (au zaidi) huduma za DNS zinazoendesha kawaida katika namespace ya kube-system:
Katika taarifa zilizopita unaweza kuona kitu cha kuvutia, IP ya huduma ni 10.96.0.10 lakini IP ya pod inayotumia huduma hiyo ni 172.17.0.2.
Ikiwa utachunguza anwani ya DNS ndani ya pod yoyote utapata kitu kama hiki:
Hata hivyo, pod haijui jinsi ya kufikia anwani hiyo kwa sababu pod range katika kesi hii ni 172.17.0.10/26.
Kwa hivyo, pod itatuma maombi ya DNS kwa anwani 10.96.0.10 ambayo yatakuwa yamefasiriwa na cbr0 kuenda 172.17.0.2.
Hii inamaanisha kwamba maombi ya DNS ya pod daima yataenda kwenye daraja ili kufasiri IP ya huduma kuwa IP ya mwisho, hata kama seva ya DNS iko katika subnet moja na pod.
Kujua hili, na kujua shambulio la ARP linawezekana, pod katika nodi itakuwa na uwezo wa kukamata trafiki kati ya kila pod katika subnetwork na daraja na kubadilisha majibu ya DNS kutoka kwa seva ya DNS (DNS Spoofing).
Zaidi ya hayo, ikiwa seva ya DNS iko katika nodi moja na mshambuliaji, mshambuliaji anaweza kukamata maombi yote ya DNS ya pod yoyote katika klasta (kati ya seva ya DNS na daraja) na kubadilisha majibu.
Lengo letu ni kuchukua angalau mawasiliano kutoka kwa ubuntu-victim hadi mysql.
Kama ilivyotajwa tayari, ikiwa unafanya kompromi pod katika node sawa na pod ya DNS server, unaweza MitM na ARPSpoofing daraja na pod ya DNS na kubadilisha majibu yote ya DNS.
Una chombo na mafunzo mazuri ya kujaribu hii katika https://github.com/danielsagi/kube-dnsspoof/
Katika hali yetu, pakua chombo katika pod ya mshambuliaji na uunde faili inayoitwa hosts
na domain unazotaka spoof kama:
Fanya shambulio kwa mashine ya ubuntu-victim:
Ikiwa unajaribu kuunda script yako ya DNS spoofing, ikiwa unabadilisha tu jibu la DNS hilo halitafanya kazi, kwa sababu jibu litakuwa na src IP anwani ya IP ya pod ya kibaya na halitakubaliwa. Unahitaji kuunda pakiti mpya ya DNS yenye src IP ya DNS ambapo mwathirika anatumia ombi la DNS (ambayo ni kitu kama 172.16.0.2, si 10.96.0.10, hiyo ni IP ya huduma ya K8s DNS na si IP ya seva ya DNS, zaidi kuhusu hii katika utangulizi).
Zana Mizu ni mtazamaji wa trafiki wa API rahisi lakini wenye nguvu kwa Kubernetes inayo kuwezesha kuona mawasiliano yote ya API kati ya microservices ili kusaidia kutatua matatizo na kurekebisha makosa. Itasakinisha wakala katika pods zilizochaguliwa na kukusanya taarifa zao za trafiki na kuonyesha kwako kwenye seva ya wavuti. Hata hivyo, utahitaji ruhusa za juu za K8s kwa hili (na si ya siri sana).
Jifunze & fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze & fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)