Kubernetes Network Attacks
Utangulizi
Katika Kubernetes, imeonekana kuwa tabia ya msingi inaruhusu kuanzishwa kwa uhusiano kati ya kontena zote zilizopo kwenye nodi moja. Hii inatumika bila kujali tofauti za namespace. Uunganisho huu unafikia hadi Tabaka 2 (Ethernet). Kwa hivyo, usanidi huu unaweza kusababisha mfumo kuwa wazi kwa vitisho. Hasa, inafungua uwezekano wa kontena mabaya kutekeleza shambulio la ARP spoofing dhidi ya kontena zingine zilizopo 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 (Itifaki ya Ufafanuzi wa Anwani) kwenye mtandao wa eneo la karibu. Hii husababisha anwani ya MAC ya mshambuliaji kuunganishwa 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 hutekelezwa 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 mamlaka ya kutoroka kwenye nodi na kuangalia vipimo (haina haja kwa shambulio)
ubuntu-attack: Kontena mabaya katika namespace ya default
ubuntu-victim: Mashine ya mwathirika katika namespace ya kube-system
mysql: Mashine ya mwathirika katika namespace ya default
Mfumo wa Msingi wa Uunganishaji wa Kubernetes
Ikiwa unataka maelezo zaidi kuhusu mada za uunganishaji zilizoletwa hapa, nenda kwenye marejeo.
ARP
Kwa ujumla, uunganishaji kutoka pod hadi pod ndani ya node unapatikana 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 inayokuja inawasili kwenye 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 kuwasiliana na pod nyingine yoyote kwenye node hiyo (bila kujali nafasi) kwenye kiwango cha ethernet (tabaka 2).
Kwa hivyo, ni rahisi kufanya mashambulizi ya ARP Spoofing kati ya pods kwenye node ile ile.
DNS
Katika mazingira ya kubernetes, kawaida utapata 1 (au zaidi) huduma 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 itakuwa kutafsiriwa 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 kwenye 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.
Unayo 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 iliyopewa jina hosts
na domaini unazotaka kufanya spoof 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 IP ya pod ya malicious na haliwezi kukubaliwa. 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 matatizo 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