Time Namespace
Reading time: 4 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Basic Information
Namespace ya muda katika Linux inaruhusu offsets za kila namespace kwa saa za mfumo zisizobadilika na saa za kuanzisha. Inatumika sana katika kontena za Linux kubadilisha tarehe/saa ndani ya kontena na kurekebisha saa baada ya kurejesha kutoka kwa alama ya ukaguzi au picha.
Lab:
Create different Namespaces
CLI
sudo unshare -T [--mount-proc] /bin/bash
Kwa kuunganisha mfano mpya wa mfumo wa /proc
ikiwa unatumia param --mount-proc
, unahakikisha kwamba namespace mpya ya kuunganisha ina mtazamo sahihi na wa kutengwa wa taarifa za mchakato maalum kwa namespace hiyo.
Hitilafu: bash: fork: Haiwezekani kugawa kumbukumbu
Wakati unshare
inatekelezwa bila chaguo la -f
, hitilafu inakutana kutokana na jinsi Linux inavyoshughulikia namespaces mpya za PID (Kitambulisho cha Mchakato). Maelezo muhimu na suluhisho yameelezwa hapa chini:
- Maelezo ya Tatizo:
- Kernel ya Linux inaruhusu mchakato kuunda namespaces mpya kwa kutumia wito wa mfumo wa
unshare
. Hata hivyo, mchakato unaoanzisha uundaji wa namespace mpya ya PID (inayojulikana kama mchakato wa "unshare") hauingii kwenye namespace mpya; ni watoto wake tu wanajumuishwa. - Kuendesha
%unshare -p /bin/bash%
kunaanzisha/bin/bash
katika mchakato sawa naunshare
. Kwa hivyo,/bin/bash
na watoto wake wako katika namespace ya awali ya PID. - Mchakato wa kwanza wa mtoto wa
/bin/bash
katika namespace mpya unakuwa PID 1. Wakati mchakato huu unapoondoka, unachochea usafishaji wa namespace ikiwa hakuna mchakato mwingine, kwani PID 1 ina jukumu maalum la kupokea mchakato wa yatima. Kernel ya Linux itazima ugawaji wa PID katika namespace hiyo.
- Matokeo:
- Kuondoka kwa PID 1 katika namespace mpya kunasababisha usafishaji wa bendera ya
PIDNS_HASH_ADDING
. Hii inasababisha kazi yaalloc_pid
kushindwa kugawa PID mpya wakati wa kuunda mchakato mpya, ikitoa hitilafu ya "Haiwezekani kugawa kumbukumbu".
- Suluhisho:
- Tatizo linaweza kutatuliwa kwa kutumia chaguo la
-f
pamoja naunshare
. Chaguo hili linafanyaunshare
kuunda mchakato mpya baada ya kuunda namespace mpya ya PID. - Kutekeleza
%unshare -fp /bin/bash%
kunahakikisha kwamba amri yaunshare
yenyewe inakuwa PID 1 katika namespace mpya./bin/bash
na watoto wake wanajumuishwa salama ndani ya namespace hii mpya, kuzuia kuondoka mapema kwa PID 1 na kuruhusu ugawaji wa kawaida wa PID.
Kwa kuhakikisha kwamba unshare
inatekelezwa na bendera ya -f
, namespace mpya ya PID inatunzwa kwa usahihi, ikiruhusu /bin/bash
na mchakato wake wa chini kufanya kazi bila kukutana na hitilafu ya ugawaji wa kumbukumbu.
Docker
docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash
Angalia ni namespace ipi mchakato wako uko ndani
ls -l /proc/self/ns/time
lrwxrwxrwx 1 root root 0 Apr 4 21:16 /proc/self/ns/time -> 'time:[4026531834]'
Pata majina yote ya Time namespaces
sudo find /proc -maxdepth 3 -type l -name time -exec readlink {} \; 2>/dev/null | sort -u
# Find the processes with an specific namespace
sudo find /proc -maxdepth 3 -type l -name time -exec ls -l {} \; 2>/dev/null | grep <ns-number>
Ingia ndani ya muda namespace
nsenter -T TARGET_PID --pid /bin/bash
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.