Kubernetes Network Attacks
Utangulizi
Katika Kubernetes, imeonekana kwamba tabia ya msingi inaruhusu kuanzishwa kwa uhusiano kati ya kontena zote zilizoko kwenye nodi moja. Hii inatumika bila kujali tofauti za eneo. Uunganisho kama huo unafikia hadi Tabaka 2 (Ethernet). Kwa hivyo, usanidi huu unaweza kusababisha mfumo kuwa wazi kwa udhaifu. Hasa, inafungua uwezekano wa kontena mabaya kutekeleza shambulio la ARP spoofing dhidi ya kontena zingine zilizoko kwenye nodi hiyo hiyo. Wakati wa shambulio kama hilo, kontena mabaya linaweza kwa hila kuingilia au kubadilisha trafiki ya mtandao iliyokusudiwa kwa kontena zingine.
Mashambulizi ya ARP spoofing yanahusisha mshambuliaji kutuma ujumbe wa ARP uliodanganyifu (Itara ya Azimio la Anwani) kwenye mtandao wa eneo la karibu. Hii inasababisha kuunganishwa kwa anwani ya MAC ya mshambuliaji na anwani ya IP ya kompyuta au seva halali kwenye mtandao. Baada ya kutekelezwa kwa mafanikio kwa shambulio kama hilo, mshambuliaji anaweza kuingilia, kubadilisha, au hata kusimamisha data inayosafirishwa. Shambulio hili linatekelezwa kwenye Tabaka 2 ya mfano wa OSI, ndio maana uunganisho wa msingi katika Kubernetes kwenye tabaka hili unazua wasiwasi wa usalama.
Katika kesi hii, mashine 4 zitabuniwa:
ubuntu-pe: Mashine yenye haki ya kutoroka kwenye nodi na kuangalia vipimo (haipaswi kwa shambulio)
ubuntu-attack: Kontena mabaya katika eneo la default
ubuntu-victim: Mashine ya kudhulumiwa katika eneo la kube-system
mysql: Mashine ya kudhulumiwa katika eneo la default
Ufundishaji wa Msingi wa Kubernetes Networking
Ikiwa unataka maelezo zaidi kuhusu mada za mitandao zilizoletwa hapa, nenda kwenye marejeo.
ARP
Kwa ujumla, mtandao kutoka pod hadi pod ndani ya node inapatikana kupitia daraja linalounganisha pod zote. Daraja hili huitwa "cbr0". (Baadhi ya programu-jalizi za mtandao zitainstall daraja yao wenyewe.) Cbr0 pia inaweza kushughulikia ARP (Itifaki ya Ufumbuzi wa Anwani) ufumbuzi. Wakati pakiti inayoingia inawasili kwa cbr0, inaweza kutatua anwani ya MAC ya marudio kwa kutumia ARP.
Ukweli huu unaashiria kwamba, kwa chaguo-msingi, kila pod inayotumika kwenye node ile ile itaweza kutangamana na pod nyingine yoyote kwenye node hiyo hiyo (bila kujali nafasi) kwenye kiwango cha ethernet (tabaka 2).
Hivyo, ni rahisi kufanya mashambulizi ya ARP Spoofing kati ya pods kwenye node ile ile.
DNS
Katika mazingira ya kubernetes utapata kawaida huduma 1 (au zaidi) za DNS zikifanya kazi kawaida kwenye nafasi ya kube-system:
Katika habari iliyopita unaweza kuona kitu cha kuvutia, IP ya huduma ni 10.96.0.10 lakini IP ya podi inayotumia huduma ni 172.17.0.2.
Ikiwa utachunguza anwani ya DNS ndani ya podi yoyote utapata kitu kama hiki:
Hata hivyo, podi hajui jinsi ya kufikia anwani hiyo kwa sababu mbalimbali ya podi katika kesi hii ni 172.17.0.10/26.
Kwa hivyo, podi itatuma ombi la DNS kwa anwani 10.96.0.10 ambayo itatafsiriwa na cbr0 kuwa 172.17.0.2.
Hii inamaanisha kwamba ombi la DNS la podi daima litapita daraja kwa kutafsiri IP ya huduma kuwa IP ya mwisho, hata kama seva ya DNS iko kwenye upanishaji sawa na podi.
Kwa kujua hili, na kujua mashambulizi ya ARP yanawezekana, podi katika node itaweza kukamata trafiki kati ya kila podi katika upanishaji na daraja na kurekebisha majibu ya DNS kutoka kwa seva ya DNS (DNS Spoofing).
Zaidi ya hayo, ikiwa seva ya DNS iko kwenye node sawa na mshambuliaji, mshambuliaji anaweza kukamata ombi zote za DNS za podi yoyote katika kikundi (kati ya seva ya DNS na daraja) na kurekebisha majibu.
Kudanganya ARP katika podi kwenye Node sawa
Lengo letu ni kuiba angalau mawasiliano kutoka kwa ubuntu-victim hadi mysql.
Scapy
ARPSpoof
DNS Spoofing
Kama ilivyotajwa awali, ikiwa unachukua udhibiti wa podi kwenye nodi ile ile ya podi ya seva ya DNS, unaweza kufanya MitM na ARPSpoofing kwenye daraja na podi ya DNS na kurekebisha majibu yote ya DNS.
Una chombo na mafunzo mazuri sana ya kufanya majaribio haya kwenye https://github.com/danielsagi/kube-dnsspoof/
Katika mazingira yetu, pakua chombo kwenye podi ya mshambuliaji na unda faili iliyoitwa hosts
na domaini unazotaka kudanganya kama:
Fanya shambulizi kwa kompyuta 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 IP ya chanzo ni anwani ya pod ya malicious na halitakubaliwa. Unahitaji kuzalisha paki mpya ya DNS na IP ya chanzo ya DNS ambapo muathiriwa anatuma ombi la DNS (ambayo ni kitu kama 172.16.0.2, sio 10.96.0.10, hiyo ni IP ya huduma ya DNS ya K8s na sio IP ya seva ya DNS, zaidi kuhusu hili katika utangulizi).
Kukamata Trafiki
Zana Mizu ni mtazamaji wa trafiki wa API wa Kubernetes rahisi lakini yenye nguvu inayokuwezesha kuona mawasiliano yote ya API kati ya microservices kusaidia katika kutatua na kurekebisha kasoro. Itaunda mawakala katika pod zilizochaguliwa na kukusanya habari zao za trafiki na kuonyesha kwenye seva ya wavuti. Walakini, utahitaji ruhusa kubwa za K8s kwa hili (na sio ya siri sana).
Marejeo
Last updated