Time Namespace
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.
Basic Information
Linuxμ μκ° λ€μμ€νμ΄μ€λ μμ€ν λ¨μ‘° λ° λΆν μκ° μκ³μ λν λ€μμ€νμ΄μ€λ³ μ€νμ μ νμ©ν©λλ€. μ΄λ Linux 컨ν μ΄λμμ 컨ν μ΄λ λ΄μ λ μ§/μκ°μ λ³κ²½νκ³ μ²΄ν¬ν¬μΈνΈ λλ μ€λ μ·μμ 볡μν ν μκ³λ₯Ό μ‘°μ νλ λ° μΌλ°μ μΌλ‘ μ¬μ©λ©λλ€.
Lab:
Create different Namespaces
CLI
sudo unshare -T [--mount-proc] /bin/bash
μλ‘μ΄ /proc νμΌ μμ€ν
μΈμ€ν΄μ€λ₯Ό λ§μ΄νΈνλ©΄ --mount-proc λ§€κ°λ³μλ₯Ό μ¬μ©νμ¬ μλ‘μ΄ λ§μ΄νΈ λ€μμ€νμ΄μ€κ° ν΄λΉ λ€μμ€νμ΄μ€μ νΉμ ν νλ‘μΈμ€ μ 보μ λν μ ννκ³ κ²©λ¦¬λ λ·°λ₯Ό κ°λλ‘ λ³΄μ₯ν©λλ€.
μ€λ₯: bash: fork: λ©λͺ¨λ¦¬λ₯Ό ν λΉν μ μμ΅λλ€
unshareκ° -f μ΅μ
μμ΄ μ€νλ λ, Linuxκ° μλ‘μ΄ PID(νλ‘μΈμ€ ID) λ€μμ€νμ΄μ€λ₯Ό μ²λ¦¬νλ λ°©μ λλ¬Έμ μ€λ₯κ° λ°μν©λλ€. μ£Όμ μΈλΆμ¬νκ³Ό ν΄κ²°μ±
μ μλμ μ€λͺ
λμ΄ μμ΅λλ€:
- λ¬Έμ μ€λͺ :
- Linux 컀λμ νλ‘μΈμ€κ°
unshareμμ€ν νΈμΆμ μ¬μ©νμ¬ μλ‘μ΄ λ€μμ€νμ΄μ€λ₯Ό μμ±ν μ μλλ‘ νμ©ν©λλ€. κ·Έλ¬λ μλ‘μ΄ PID λ€μμ€νμ΄μ€λ₯Ό μμ±νλ νλ‘μΈμ€(μ΄λ₯Ό βunshareβ νλ‘μΈμ€λΌκ³ ν¨)λ μλ‘μ΄ λ€μμ€νμ΄μ€μ λ€μ΄κ°μ§ μμΌλ©°, μ€μ§ κ·Έ μμ νλ‘μΈμ€λ§ λ€μ΄κ°λλ€. %unshare -p /bin/bash%λ₯Ό μ€ννλ©΄/bin/bashκ°unshareμ λμΌν νλ‘μΈμ€μμ μμλ©λλ€. κ²°κ³Όμ μΌλ‘/bin/bashμ κ·Έ μμ νλ‘μΈμ€λ μλ PID λ€μμ€νμ΄μ€μ μμ΅λλ€.- μλ‘μ΄ λ€μμ€νμ΄μ€μμ
/bin/bashμ 첫 λ²μ§Έ μμ νλ‘μΈμ€λ PID 1μ΄ λ©λλ€. μ΄ νλ‘μΈμ€κ° μ’ λ£λλ©΄, λ€λ₯Έ νλ‘μΈμ€κ° μμ κ²½μ° λ€μμ€νμ΄μ€μ μ λ¦¬κ° νΈλ¦¬κ±°λ©λλ€. PID 1μ κ³ μ νλ‘μΈμ€λ₯Ό μ μνλ νΉλ³ν μν μ κ°μ§κ³ μμ΅λλ€. κ·Έλ¬λ©΄ Linux 컀λμ ν΄λΉ λ€μμ€νμ΄μ€μμ PID ν λΉμ λΉνμ±νν©λλ€.
- κ²°κ³Ό:
- μλ‘μ΄ λ€μμ€νμ΄μ€μμ PID 1μ μ’
λ£λ
PIDNS_HASH_ADDINGνλκ·Έμ μ 리λ₯Ό μ΄λν©λλ€. μ΄λ‘ μΈν΄ μλ‘μ΄ νλ‘μΈμ€λ₯Ό μμ±ν λalloc_pidν¨μκ° μλ‘μ΄ PIDλ₯Ό ν λΉνλ λ° μ€ν¨νμ¬ βλ©λͺ¨λ¦¬λ₯Ό ν λΉν μ μμ΅λλ€β μ€λ₯κ° λ°μν©λλ€.
- ν΄κ²°μ± :
- μ΄ λ¬Έμ λ
unshareμ ν¨κ»-fμ΅μ μ μ¬μ©νμ¬ ν΄κ²°ν μ μμ΅λλ€. μ΄ μ΅μ μunshareκ° μλ‘μ΄ PID λ€μμ€νμ΄μ€λ₯Ό μμ±ν ν μλ‘μ΄ νλ‘μΈμ€λ₯Ό ν¬ν¬νλλ‘ λ§λλλ€. %unshare -fp /bin/bash%λ₯Ό μ€ννλ©΄unshareλͺ λ Ή μμ²΄κ° μλ‘μ΄ λ€μμ€νμ΄μ€μμ PID 1μ΄ λ©λλ€./bin/bashμ κ·Έ μμ νλ‘μΈμ€λ μ΄ μλ‘μ΄ λ€μμ€νμ΄μ€ λ΄μμ μμ νκ² ν¬ν¨λμ΄ PID 1μ μ‘°κΈ° μ’ λ£λ₯Ό λ°©μ§νκ³ μ μμ μΈ PID ν λΉμ νμ©ν©λλ€.
unshareκ° -f νλκ·Έμ ν¨κ» μ€νλλλ‘ λ³΄μ₯ν¨μΌλ‘μ¨ μλ‘μ΄ PID λ€μμ€νμ΄μ€κ° μ¬λ°λ₯΄κ² μ μ§λλ©°, /bin/bashμ κ·Έ νμ νλ‘μΈμ€κ° λ©λͺ¨λ¦¬ ν λΉ μ€λ₯ μμ΄ μλν μ μμ΅λλ€.
Docker
docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash
νλ‘μΈμ€κ° μ΄λ€ λ€μμ€νμ΄μ€μ μλμ§ νμΈνκΈ°
ls -l /proc/self/ns/time
lrwxrwxrwx 1 root root 0 Apr 4 21:16 /proc/self/ns/time -> 'time:[4026531834]'
λͺ¨λ μκ° λ€μμ€νμ΄μ€ μ°ΎκΈ°
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>
Time λ€μμ€νμ΄μ€μ λ€μ΄κ°κΈ°
nsenter -T TARGET_PID --pid /bin/bash
μκ° μ€νμ μ‘°μ
Linux 5.6λΆν°, λ κ°μ μκ³λ₯Ό μκ° λ€μμ€νμ΄μ€λ³λ‘ κ°μνν μ μμ΅λλ€:
CLOCK_MONOTONICCLOCK_BOOTTIME
κ·Έλ€μ λ€μμ€νμ΄μ€λ³ λΈνλ /proc/<PID>/timens_offsets νμΌμ ν΅ν΄ λ
ΈμΆλλ©° (μμ ν μ μμ):
$ sudo unshare -Tr --mount-proc bash # -T creates a new timens, -r drops capabilities
$ cat /proc/$$/timens_offsets
monotonic 0
boottime 0
νμΌμλ λλ Έμ΄ λ¨μμ μ€νμ μ΄ μλ μκ³λΉ ν μ€μ΄ ν¬ν¨λμ΄ μμ΅λλ€. CAP_SYS_TIME _μκ° λ€μμ€νμ΄μ€_λ₯Ό 보μ ν νλ‘μΈμ€λ κ°μ λ³κ²½ν μ μμ΅λλ€:
# advance CLOCK_MONOTONIC by two days (172 800 s)
echo "monotonic 172800000000000" > /proc/$$/timens_offsets
# verify
$ cat /proc/$$/uptime # first column uses CLOCK_MONOTONIC
172801.37 13.57
λ²½μκ³(CLOCK_REALTIME)λ λ³κ²½ν΄μΌ νλ κ²½μ° μ¬μ ν κ³ μ μ μΈ λ©μ»€λμ¦(date, hwclock, chronyd, β¦)μ μμ‘΄ν΄μΌ ν©λλ€; μ΄λ λ€μμ€νμ΄μ€νλμ§ μμ΅λλ€.
unshare(1) ν¬νΌ νλκ·Έ (util-linux β₯ 2.38)
sudo unshare -T \
--monotonic="+24h" \
--boottime="+7d" \
--mount-proc \
bash
κΈ΄ μ΅μ
μ λ€μμ€νμ΄μ€κ° μμ±λ μ§ν μ νν λΈνλ₯Ό timens_offsetsμ μλμΌλ‘ κΈ°λ‘νμ¬ μλ echoλ₯Ό μ μ₯ν©λλ€.
OCI λ° λ°νμ μ§μ
- OCI λ°νμ μ¬μ v1.1 (2023λ
11μ)μ 컨ν
μ΄λ μμ§μ΄ ν΄λ κ°λ₯ν λ°©μμΌλ‘ μκ° κ°μνλ₯Ό μμ²ν μ μλλ‘ μ μ©
timeλ€μμ€νμ΄μ€ μ νκ³Όlinux.timeOffsetsνλλ₯Ό μΆκ°νμ΅λλ€. - runc >= 1.2.0μ μ¬μμ ν΄λΉ λΆλΆμ ꡬνν©λλ€. μ΅μνμ
config.jsonμ‘°κ°μ λ€μκ³Ό κ°μ΅λλ€:
{
"linux": {
"namespaces": [
{"type": "time"}
],
"timeOffsets": {
"monotonic": 86400,
"boottime": 600
}
}
}
κ·Έλ° λ€μ runc run <id>λ‘ μ»¨ν
μ΄λλ₯Ό μ€νν©λλ€.
μ£Όμ: runc 1.2.6 (2025λ 2μ)μ βκ°μΈ timensλ‘ μ»¨ν μ΄λμ execβ λ²κ·Έλ₯Ό μμ νμ¬ μ μ§ λ° μ μ¬μ μΈ DoSλ₯Ό μ΄λν μ μμ΅λλ€. νλ‘λμ μμ β₯ 1.2.6μ μ¬μ©νκ³ μλμ§ νμΈνμμμ€.
보μ κ³ λ €μ¬ν
- νμ κΆν β νλ‘μΈμ€λ μ€νμ μ λ³κ²½νκΈ° μν΄ μ¬μ©μ/μκ° λ€μμ€νμ΄μ€ λ΄μμ CAP_SYS_TIMEμ΄ νμν©λλ€. 컨ν μ΄λμμ ν΄λΉ κΆνμ μ κ±°νλ©΄ (Docker λ° Kubernetesμ κΈ°λ³Έκ°) λ³μ‘°λ₯Ό λ°©μ§ν μ μμ΅λλ€.
- λ²½μκ³ λ³κ²½ μμ β
CLOCK_REALTIMEμ΄ νΈμ€νΈμ 곡μ λκΈ° λλ¬Έμ 곡격μλ timensλ§μΌλ‘ μΈμ¦μ μλͺ , JWT λ§λ£ λ±μ μ€νΈνν μ μμ΅λλ€. - λ‘κ·Έ/νμ§ ννΌ β
CLOCK_MONOTONICμ μμ‘΄νλ μννΈμ¨μ΄(μ: κ°λ μκ° κΈ°λ°μ μλ μ νκΈ°)λ λ€μμ€νμ΄μ€ μ¬μ©μκ° μ€νμ μ μ‘°μ νλ©΄ νΌλμ€λ¬μμ§ μ μμ΅λλ€. 보μ κ΄λ ¨ νμμ€ν¬νμλCLOCK_REALTIMEμ μ νΈνμμμ€. - 컀λ 곡격 νλ©΄ β
CAP_SYS_TIMEμ΄ μ κ±°λλλΌλ 컀λ μ½λλ μ¬μ ν μ κ·Ό κ°λ₯νλ―λ‘ νΈμ€νΈλ₯Ό ν¨μΉ μνλ‘ μ μ§νμμμ€. Linux 5.6 β 5.12λ μ¬λ¬ timens λ²κ·Έ μμ (NULl-deref, λΆνΈ λ¬Έμ )μ λ°μμ΅λλ€.
κ°ν 체ν¬λ¦¬μ€νΈ
- 컨ν
μ΄λ λ°νμ κΈ°λ³Έ νλ‘νμμ
CAP_SYS_TIMEμ μ κ±°νμμμ€. - λ°νμμ μ λ°μ΄νΈ μνλ‘ μ μ§νμμμ€ (runc β₯ 1.2.6, crun β₯ 1.12).
--monotonic/--boottimeλμ°λ―Έμ μμ‘΄νλ κ²½μ° util-linux β₯ 2.38μ κ³ μ νμμμ€.- 보μμ μ€μν λ Όλ¦¬λ₯Ό μν΄ uptime λλ CLOCK_MONOTONICμ μ½λ 컨ν μ΄λ λ΄ μννΈμ¨μ΄λ₯Ό κ°μ¬νμμμ€.
μ°Έμ‘°
- man7.org β μκ° λ€μμ€νμ΄μ€ λ§€λ΄μΌ νμ΄μ§: https://man7.org/linux/man-pages/man7/time_namespaces.7.html
- OCI λΈλ‘κ·Έ β βOCI v1.1: μλ‘μ΄ μκ° λ° RDT λ€μμ€νμ΄μ€β (2023λ 11μ 15μΌ): https://opencontainers.org/blog/2023/11/15/oci-spec-v1.1
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.


