PID Namespace
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Basic Information
Namespace ya PID (Identifier ya Mchakato) ni kipengele katika kernel ya Linux kinachotoa kutengwa kwa mchakato kwa kuwezesha kundi la michakato kuwa na seti yao ya kipekee ya PIDs, tofauti na PIDs katika namespaces nyingine. Hii ni muhimu hasa katika uundaji wa kontena, ambapo kutengwa kwa mchakato ni muhimu kwa usalama na usimamizi wa rasilimali.
Wakati namespace mpya ya PID inaundwa, mchakato wa kwanza katika namespace hiyo unapewa PID 1. Mchakato huu unakuwa mchakato wa "init" wa namespace mpya na unawajibika kwa usimamizi wa michakato mingine ndani ya namespace hiyo. Kila mchakato unaofuata unaoundwa ndani ya namespace hiyo utakuwa na PID ya kipekee ndani ya namespace hiyo, na PIDs hizi zitakuwa huru kutoka kwa PIDs katika namespaces nyingine.
Kutoka kwa mtazamo wa mchakato ndani ya namespace ya PID, unaweza kuona tu michakato mingine katika namespace hiyo hiyo. Haujui kuhusu michakato katika namespaces nyingine, na hauwezi kuingiliana nao kwa kutumia zana za usimamizi wa mchakato za jadi (mfano, kill
, wait
, n.k.). Hii inatoa kiwango cha kutengwa ambacho husaidia kuzuia michakato kuingiliana na nyingine.
How it works:
Wakati mchakato mpya unaundwa (mfano, kwa kutumia wito wa mfumo wa
clone()
), mchakato unaweza kupewa namespace mpya au iliyopo. Ikiwa namespace mpya inaundwa, mchakato unakuwa mchakato wa "init" wa namespace hiyo.Kernel inashikilia ramani kati ya PIDs katika namespace mpya na PIDs zinazolingana katika namespace ya mzazi (yaani, namespace ambayo namespace mpya ilianzishwa). Ramani hii inawawezesha kernel kutafsiri PIDs inapohitajika, kama vile wakati wa kutuma ishara kati ya michakato katika namespaces tofauti.
Michakato ndani ya namespace ya PID yanaweza kuona na kuingiliana tu na michakato mingine katika namespace hiyo hiyo. Hawawezi kujua kuhusu michakato katika namespaces nyingine, na PIDs zao ni za kipekee ndani ya namespace yao.
Wakati namespace ya PID inaharibiwa (mfano, wakati mchakato wa "init" wa namespace unapoondoka), michakato yote ndani ya namespace hiyo inakatishwa. Hii inahakikisha kwamba rasilimali zote zinazohusiana na namespace hiyo zinatakaswa ipasavyo.
Lab:
Create different Namespaces
CLI
Kwa kuunganisha mfano mpya wa mfumo wa faili wa /proc
ikiwa utatumia paramu --mount-proc
, unahakikisha kwamba jina jipya la kuunganisha lina mtazamo sahihi na wa kutengwa wa taarifa za mchakato maalum kwa jina hilo.
Docker
Angalia ni namespace gani mchakato wako uko ndani
Pata majina yote ya PID
Kumbuka kwamba matumizi ya root kutoka kwa namespace ya PID ya awali (ya default) yanaweza kuona mchakato wote, hata wale walio katika majina mapya ya PID, ndivyo maana tunaweza kuona majina yote ya PID.
Ingia ndani ya namespace ya PID
Wakati unapoingia ndani ya PID namespace kutoka kwa namespace ya default, bado utaweza kuona mchakato wote. Na mchakato kutoka kwa PID ns utaweza kuona bash mpya kwenye PID ns.
Pia, unaweza tu kuingia katika namespace ya PID ya mchakato mwingine ikiwa wewe ni root. Na huwezi kuingia katika namespace nyingine bila desktopa inayotaja hiyo (kama /proc/self/ns/pid
)
References
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated