PID Namespace
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)
Die PID (Process IDentifier) namespace is 'n kenmerk in die Linux-kern wat prosesisolasie bied deur 'n groep prosesse in staat te stel om hul eie stel unieke PIDs te hê, geskei van die PIDs in ander namespaces. Dit is veral nuttig in containerisering, waar prosesisolasie noodsaaklik is vir sekuriteit en hulpbronbestuur.
Wanneer 'n nuwe PID namespace geskep word, word die eerste proses in daardie namespace aan PID 1 toegeken. Hierdie proses word die "init" proses van die nuwe namespace en is verantwoordelik vir die bestuur van ander prosesse binne die namespace. Elke daaropvolgende proses wat binne die namespace geskep word, sal 'n unieke PID binne daardie namespace hê, en hierdie PIDs sal onafhanklik wees van PIDs in ander namespaces.
Van die perspektief van 'n proses binne 'n PID namespace, kan dit slegs ander prosesse in dieselfde namespace sien. Dit is nie bewus van prosesse in ander namespaces nie, en dit kan nie met hulle interaksie hê nie met behulp van tradisionele prosesbestuur gereedskap (bv. kill
, wait
, ens.). Dit bied 'n vlak van isolasie wat help om te voorkom dat prosesse mekaar steur.
Wanneer 'n nuwe proses geskep word (bv. deur die clone()
stelselaanroep te gebruik), kan die proses aan 'n nuwe of bestaande PID namespace toegeken word. As 'n nuwe namespace geskep word, word die proses die "init" proses van daardie namespace.
Die kern handhaaf 'n kaart tussen die PIDs in die nuwe namespace en die ooreenstemmende PIDs in die ouer namespace (d.w.s. die namespace waaruit die nuwe namespace geskep is). Hierdie kaart stel die kern in staat om PIDs te vertaal wanneer nodig, soos wanneer dit seine tussen prosesse in verskillende namespaces stuur.
Prosesse binne 'n PID namespace kan slegs ander prosesse in dieselfde namespace sien en daarmee interaksie hê. Hulle is nie bewus van prosesse in ander namespaces nie, en hul PIDs is uniek binne hul namespace.
Wanneer 'n PID namespace vernietig word (bv. wanneer die "init" proses van die namespace verlaat), word alle prosesse binne daardie namespace beëindig. Dit verseker dat alle hulpbronne wat met die namespace geassosieer word, behoorlik skoongemaak word.
Deur 'n nuwe instansie van die /proc
lêerstelsel te monteer as jy die parameter --mount-proc
gebruik, verseker jy dat die nuwe monteer naamruimte 'n akkurate en geïsoleerde siening van die prosesinligting spesifiek vir daardie naamruimte het.
Let daarop dat die root-gebruiker van die aanvanklike (standaard) PID-nameskeping al die prosesse kan sien, selfs die in nuwe PID-nameskeping, daarom kan ons al die PID-nameskeping sien.
Wanneer jy binne 'n PID namespace van die standaard namespace ingaan, sal jy steeds al die prosesse kan sien. En die proses van daardie PID ns sal die nuwe bash op die PID ns kan sien.
Ook, jy kan slegs in 'n ander proses PID namespace ingaan as jy root is. En jy kan nie in 'n ander namespace ingaan sonder 'n beskrywer wat daarna verwys nie (soos /proc/self/ns/pid
)
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)