Mount 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
λ§μ΄νΈ λ€μμ€νμ΄μ€λ νλ‘μΈμ€ κ·Έλ£Ήμ΄ λ³΄λ νμΌ μμ€ν λ§μ΄νΈ μ§μ μ 격리λ₯Ό μ 곡νλ 리λ μ€ μ»€λ κΈ°λ₯μ λλ€. κ° λ§μ΄νΈ λ€μμ€νμ΄μ€λ κ³ μ ν νμΌ μμ€ν λ§μ΄νΈ μ§μ μ§ν©μ κ°μ§λ©°, νλμ λ€μμ€νμ΄μ€μμ λ§μ΄νΈ μ§μ μ λν λ³κ²½ μ¬νμ λ€λ₯Έ λ€μμ€νμ΄μ€μ μν₯μ λ―ΈμΉμ§ μμ΅λλ€. μ΄λ μλ‘ λ€λ₯Έ λ§μ΄νΈ λ€μμ€νμ΄μ€μμ μ€νλλ νλ‘μΈμ€κ° νμΌ μμ€ν κ³μΈ΅μ λν μλ‘ λ€λ₯Έ λ·°λ₯Ό κ°μ§ μ μμμ μλ―Έν©λλ€.
λ§μ΄νΈ λ€μμ€νμ΄μ€λ κ° μ»¨ν μ΄λκ° λ€λ₯Έ 컨ν μ΄λ λ° νΈμ€νΈ μμ€ν κ³Ό 격리λ μ체 νμΌ μμ€ν λ° κ΅¬μ±μ κ°μ ΈμΌ νλ 컨ν μ΄λνμμ νΉν μ μ©ν©λλ€.
How it works:
- μλ‘μ΄ λ§μ΄νΈ λ€μμ€νμ΄μ€κ° μμ±λλ©΄, λΆλͺ¨ λ€μμ€νμ΄μ€μ λ§μ΄νΈ μ§μ 볡μ¬λ³ΈμΌλ‘ μ΄κΈ°νλ©λλ€. μ΄λ μμ± μ μλ‘μ΄ λ€μμ€νμ΄μ€κ° λΆλͺ¨μ λμΌν νμΌ μμ€ν λ·°λ₯Ό 곡μ ν¨μ μλ―Έν©λλ€. κ·Έλ¬λ λ€μμ€νμ΄μ€ λ΄μ λ§μ΄νΈ μ§μ μ λν μ΄νμ λ³κ²½ μ¬νμ λΆλͺ¨ λλ λ€λ₯Έ λ€μμ€νμ΄μ€μ μν₯μ λ―ΈμΉμ§ μμ΅λλ€.
- νλ‘μΈμ€κ° λ€μμ€νμ΄μ€ λ΄μμ λ§μ΄νΈ μ§μ μ μμ ν λ, μλ₯Ό λ€μ΄ νμΌ μμ€ν μ λ§μ΄νΈνκ±°λ μΈλ§μ΄νΈν λ, λ³κ²½ μ¬νμ ν΄λΉ λ€μμ€νμ΄μ€μ κ΅νλλ©° λ€λ₯Έ λ€μμ€νμ΄μ€μ μν₯μ λ―ΈμΉμ§ μμ΅λλ€. μ΄λ κ° λ€μμ€νμ΄μ€κ° λ 립μ μΈ νμΌ μμ€ν κ³μΈ΅μ κ°μ§ μ μκ² ν©λλ€.
- νλ‘μΈμ€λ
setns()μμ€ν νΈμΆμ μ¬μ©νμ¬ λ€μμ€νμ΄μ€ κ°μ μ΄λνκ±°λ,unshare()λλclone()μμ€ν νΈμΆμ μ¬μ©νμ¬CLONE_NEWNSνλκ·Έμ ν¨κ» μλ‘μ΄ λ€μμ€νμ΄μ€λ₯Ό μμ±ν μ μμ΅λλ€. νλ‘μΈμ€κ° μλ‘μ΄ λ€μμ€νμ΄μ€λ‘ μ΄λνκ±°λ μμ±ν λ, ν΄λΉ λ€μμ€νμ΄μ€μ μ°κ²°λ λ§μ΄νΈ μ§μ μ μ¬μ©νκΈ° μμν©λλ€. - νμΌ λμ€ν¬λ¦½ν°μ μμ΄λ Έλλ λ€μμ€νμ΄μ€ κ°μ 곡μ λλ©°, μ΄λ νλμ λ€μμ€νμ΄μ€μ μλ νλ‘μΈμ€κ° νμΌμ κ°λ¦¬ν€λ μ΄λ¦° νμΌ λμ€ν¬λ¦½ν°λ₯Ό κ°μ§κ³ μλ€λ©΄, ν΄λΉ νμΌ λμ€ν¬λ¦½ν°λ₯Ό λ€λ₯Έ λ€μμ€νμ΄μ€μ νλ‘μΈμ€μ μ λ¬ν μ μμΌλ©°, λ νλ‘μΈμ€ λͺ¨λ λμΌν νμΌμ μ κ·Όν μ μμμ μλ―Έν©λλ€. κ·Έλ¬λ νμΌμ κ²½λ‘λ λ§μ΄νΈ μ§μ μ μ°¨μ΄λ‘ μΈν΄ λ λ€μμ€νμ΄μ€μμ λμΌνμ§ μμ μ μμ΅λλ€.
Lab:
Create different Namespaces
CLI
sudo unshare -m [--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/mnt
lrwxrwxrwx 1 root root 0 Apr 4 20:30 /proc/self/ns/mnt -> 'mnt:[4026531841]'
λͺ¨λ λ§μ΄νΈ λ€μμ€νμ΄μ€ μ°ΎκΈ°
sudo find /proc -maxdepth 3 -type l -name mnt -exec readlink {} \; 2>/dev/null | sort -u
# Find the processes with an specific namespace
sudo find /proc -maxdepth 3 -type l -name mnt -exec ls -l {} \; 2>/dev/null | grep <ns-number>
findmnt
Mount λ€μμ€νμ΄μ€ λ΄λΆλ‘ λ€μ΄κ°κΈ°
nsenter -m TARGET_PID --pid /bin/bash
λν, λ£¨νΈ μ¬μ©μλ§ λ€λ₯Έ νλ‘μΈμ€ λ€μμ€νμ΄μ€μ λ€μ΄κ° μ μμ΅λλ€. κ·Έλ¦¬κ³ λμ€ν¬λ¦½ν°κ° μμΌλ©΄ λ€λ₯Έ λ€μμ€νμ΄μ€μ λ€μ΄κ° μ μμ΅λλ€ (μ: /proc/self/ns/mnt).
μλ‘μ΄ λ§μ΄νΈλ λ€μμ€νμ΄μ€ λ΄μμλ§ μ κ·Όν μ μκΈ° λλ¬Έμ, λ€μμ€νμ΄μ€κ° κ·Έ μμμλ§ μ κ·Όν μ μλ λ―Όκ°ν μ 보λ₯Ό ν¬ν¨ν κ°λ₯μ±μ΄ μμ΅λλ€.
무μΈκ° λ§μ΄νΈνκΈ°
# Generate new mount ns
unshare -m /bin/bash
mkdir /tmp/mount_ns_example
mount -t tmpfs tmpfs /tmp/mount_ns_example
mount | grep tmpfs # "tmpfs on /tmp/mount_ns_example"
echo test > /tmp/mount_ns_example/test
ls /tmp/mount_ns_example/test # Exists
# From the host
mount | grep tmpfs # Cannot see "tmpfs on /tmp/mount_ns_example"
ls /tmp/mount_ns_example/test # Doesn't exist
# findmnt # List existing mounts
TARGET SOURCE FSTYPE OPTIONS
/ /dev/mapper/web05--vg-root
# unshare --mount # run a shell in a new mount namespace
# mount --bind /usr/bin/ /mnt/
# ls /mnt/cp
/mnt/cp
# exit # exit the shell, and hence the mount namespace
# ls /mnt/cp
ls: cannot access '/mnt/cp': No such file or directory
## Notice there's different files in /tmp
# ls /tmp
revshell.elf
# ls /mnt/tmp
krb5cc_75401103_X5yEyy
systemd-private-3d87c249e8a84451994ad692609cd4b6-apache2.service-77w9dT
systemd-private-3d87c249e8a84451994ad692609cd4b6-systemd-resolved.service-RnMUhT
systemd-private-3d87c249e8a84451994ad692609cd4b6-systemd-timesyncd.service-FAnDql
vmware-root_662-2689143848
References
- https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory
- https://unix.stackexchange.com/questions/464033/understanding-how-mount-namespaces-work-in-linux
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μ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.


