Libc Protections
Last updated
Last updated
AWS ํดํน ํ์ต ๋ฐ ์ค์ต:HackTricks Training AWS Red Team Expert (ARTE) GCP ํดํน ํ์ต ๋ฐ ์ค์ต: HackTricks Training GCP Red Team Expert (GRTE)
Malloc์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ 8๋ฐ์ดํธ(32๋นํธ) ๋๋ 16๋ฐ์ดํธ(64๋นํธ) ๊ทธ๋ฃน์ผ๋ก ํ ๋นํฉ๋๋ค. ์ด๋ 32๋นํธ ์์คํ ์์ ์ฒญํฌ์ ๋์ด 0x8์ ๋ง์ถฐ์ง๊ณ , 64๋นํธ ์์คํ ์์๋ 0x0์ ๋ง์ถฐ์ ธ์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ์ด ๋ณด์ ๊ธฐ๋ฅ์ ๊ฐ ์ฒญํฌ๊ฐ ํน์ ์์น์ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฌ๋์ด ์๋์ง ํ์ธํ ํ์ bin์์ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ด๋ฅผ ๊ฒ์ฌํฉ๋๋ค.
64๋นํธ ์์คํ ์์ ์ฒญํฌ ์ ๋ ฌ์ ๊ฐ์ ํจ์ผ๋ก์จ Malloc์ ๋ณด์์ด ํฌ๊ฒ ํฅ์๋ฉ๋๋ค. ์ด๋ ๊ฐ์ง ์ฒญํฌ์ ๋ฐฐ์น๋ฅผ ์ฃผ์ ์ค 16๊ฐ ์ค 1๊ฐ๋ง ํ์ฉํ๋๋ก ํ์ฌ ๊ณต๊ฒฉ์ ๋ณต์กํ๊ฒ ๋ง๋ค์ด ์ฑ๊ณต์ ์ธ ๊ณต๊ฒฉ์ ๋ ์ด๋ ต๊ฒ ํฉ๋๋ค. ํนํ ์ฌ์ฉ์๊ฐ ์ ๋ ฅ ๊ฐ์ ์ ์ดํ ์ ์๋ ์ํฉ์์ ๊ณต๊ฒฉ์ ๋ ๋ณต์กํ๊ณ ์ฑ๊ณตํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค.
__malloc_hook์ ๋ํ Fastbin ๊ณต๊ฒฉ
Malloc์ ์๋ก์ด ์ ๋ ฌ ๊ท์น์ __malloc_hook
์ ์ด์ฉํ ๊ณต๊ฒฉ์ ๋ฐฉ์งํฉ๋๋ค. ์ด์ ์ ๊ณต๊ฒฉ์๋ ์ฒญํฌ ํฌ๊ธฐ๋ฅผ ์กฐ์ํ์ฌ ์ด ํจ์ ํฌ์ธํฐ๋ฅผ ๋ฎ์ด์ฐ๊ณ ์ฝ๋ ์คํ์ ์ป์ ์ ์์์ต๋๋ค. ์ด์ ์๊ฒฉํ ์ ๋ ฌ ์๊ตฌ ์ฌํญ์ผ๋ก ์ธํด ์ด๋ฌํ ์กฐ์์ด ๋ ์ด์ ์ ํจํ์ง ์์์ ธ ๊ณตํต์ ์ธ ๊ณต๊ฒฉ ๊ฒฝ๋ก๋ฅผ ์ฐจ๋จํ๊ณ ์ ๋ฐ์ ์ธ ๋ณด์์ ํฅ์์ํต๋๋ค.
ํฌ์ธํฐ Mangling์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์์ ์์ fastbin ๋ฐ tcache Fd ํฌ์ธํฐ๋ฅผ ๋ณดํธํ๋ ๋ณด์ ๊ธฐ๋ฅ์ ๋๋ค. ์ด ๊ธฐ์ ์ ๋ฉ๋ชจ๋ฆฌ ์ ๋ณด ๋์ถ์ด ํ์ ์๊ฑฐ๋ ์๋ ค์ง ์์น์ ์ง์ ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ์กฐ์ํ๋ ์ผ๋ถ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฒฉ ์ ์ ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ด ๊ธฐ์ ์ ํต์ฌ์ ๋ค์๊ณผ ๊ฐ์ ๋ํดํ ๊ณต์์ ๋๋ค:
New_Ptr = (L >> 12) XOR P
L์ ํฌ์ธํฐ์ ์ ์ฅ ์์น์ ๋๋ค.
P๋ ์ค์ fastbin/tcache Fd ํฌ์ธํฐ์ ๋๋ค.
์ ์ฅ ์์น(L)๋ฅผ XOR ์ฐ์ฐ ์ ์ 12๋นํธ ์ค๋ฅธ์ชฝ์ผ๋ก ๋นํธ ์ด๋์ํค๋ ์ด์ ๋ ์ค์ํฉ๋๋ค. ์ด ์กฐ์์ ์ฃผ์์ ๊ฐ์ฅ ๋ฎ์ 12๋นํธ์ ๊ฒฐ์ ์ ์ธ ์ฑ๊ฒฉ์ ๋ํ ์ทจ์ฝ์ ์ ํด๊ฒฐํฉ๋๋ค. ์ด ๋นํธ๋ฅผ ์ด๋์ํด์ผ๋ก์จ ์์ธก ๊ฐ๋ฅํ ๋ถ๋ถ์ ์ ๊ฑฐํ์ฌ ์๋ก์ด, ํผ๋์ค๋ฌ์ด ํฌ์ธํฐ์ ๋ฌด์์์ฑ์ ํฅ์์ํค๊ณ ์ด ๋นํธ์ ์์ธก ๊ฐ๋ฅ์ฑ์ ์์กดํ๋ ๊ณต๊ฒฉ์ ๋๋นํฉ๋๋ค.
์ด ํผ๋์ค๋ฌ์ด ํฌ์ธํฐ๋ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ์ฃผ์๋ฅผ ๋ฌด์์๋ก ๋ณ๊ฒฝํ๋ **์ฃผ์ ๊ณต๊ฐ ๋ฐฐ์น ๋ฌด์์ํ(ASLR)**์ ์ํด ์ ๊ณต๋๋ ๊ธฐ์กด์ ๋ฌด์์์ฑ์ ํ์ฉํฉ๋๋ค. ์ด๋ ๊ณต๊ฒฉ์๊ฐ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๋ ์ด์์์ ์์ธกํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค๊ธฐ ์ํด ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ์ฃผ์๋ฅผ ๋ฌด์์๋ก ๋ณ๊ฒฝํฉ๋๋ค.
ํฌ์ธํฐ Mangling์ ํ ๊ด๋ฆฌ์์์ ๋ถ๋ถ ๋ฐ ์ ์ฒด ํฌ์ธํฐ ๋ฎ์ด์ฐ๊ธฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ชฉํ๋ก ํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ณต๊ฒฉ ๊ธฐ์ ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค:
๋ฐ์ดํธ ๋ฐ์ดํธ ์๋์ ๋ฎ์ด์ฐ๊ธฐ ๋ฐฉ์ง: ์ด์ ์ ๊ณต๊ฒฉ์๋ ์ ํํ ์ฃผ์๋ฅผ ์์ง ๋ชปํด ํ ์ฒญํฌ๋ฅผ ๋ค๋ฅธ ์์น๋ก ์ฌ์ง์ ํ๋ ๋ถ๋ถ์ ์ธ ํฌ์ธํฐ ๋ณ๊ฒฝ์ ํ ์ ์์์ต๋๋ค. ์ด๋ ๋์ถ ์๋ House of Roman ๊ณต๊ฒฉ์์ ๋ํ๋๋ ๊ธฐ์ ์ ๋๋ค. ํฌ์ธํฐ Mangling์ผ๋ก ์ด๋ฌํ ์๋์ ๋ฎ์ด์ฐ๊ธฐ๋ ์ด์ ํ ๋์ถ ์์ด๋ ๋ธ๋ฃจํธ ํฌ์ฑ์ด ํ์ํ๋ฏ๋ก ์ฑ๊ณต ๊ฐ๋ฅ์ฑ์ด ํฌ๊ฒ ์ค์ด๋ญ๋๋ค.
Tcache Bin/Fastbin ๊ณต๊ฒฉ์ ์ด๋ ค์ ์ฆ๊ฐ: fastbin ๋๋ tcache ํญ๋ชฉ์ ์กฐ์ํ์ฌ ํจ์ ํฌ์ธํฐ(์: __malloc_hook
)๋ฅผ ๋ฎ์ด์ฐ๋ ์ผ๋ฐ์ ์ธ ๊ณต๊ฒฉ์ด ๋ฐฉํด๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ณต๊ฒฉ์ LibC ์ฃผ์๋ฅผ ๋์ถํ๊ณ tcache bin์ ์ฒญํฌ๋ฅผ ํด์ ํ ๋ค์ Fd ํฌ์ธํฐ๋ฅผ __malloc_hook
๋ก ์ฌ์ง์ ํ์ฌ ์์์ ์ฝ๋ ์คํ์ ์ํํ ์ ์์ต๋๋ค. ํฌ์ธํฐ Mangling์ผ๋ก ์ธํด ์ด๋ฌํ ํฌ์ธํฐ๋ ์ฌ๋ฐ๋ฅด๊ฒ Mangling๋์ด์ผ ํ๋ฏ๋ก ์ ํํ ์กฐ์์ ์ํด ํ ๋์ถ์ด ํ์ํ๋ฉฐ, ์ด๋ก์จ ๊ณต๊ฒฉ ์ฅ๋ฒฝ์ด ๋์์ง๋๋ค.
๋นํ ์์น์์์ ํ ๋์ถ ์๊ตฌ: ๋นํ ์์ญ(์คํ, .bss ์น์ ๋๋ PLT/GOT)์ ๊ฐ์ง ์ฒญํฌ๋ฅผ ๋ง๋๋ ๊ฒ์ ์ด์ ํฌ์ธํฐ Mangling์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ํ ๋์ถ์ด ํ์ํฉ๋๋ค. ์ด๋ LibC ์ฃผ์๋ฅผ ์กฐ์ํ๋ ๊ฒ๊ณผ ์ ์ฌํ๊ฒ ์ด๋ฌํ ์์ญ์ ๊ณต๊ฒฉํ๋ ๋ณต์ก์ฑ์ ์ฆ๊ฐ์ํต๋๋ค.
ํ ์ฃผ์ ๋์ถ์ด ๋ ์ด๋ ค์์ง: ํฌ์ธํฐ Mangling์ fastbin ๋ฐ tcache bin์ Fd ํฌ์ธํฐ๋ฅผ ํ ์ฃผ์ ๋์ถ ์์ค๋ก ์ ํํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ๋ ฌ๋์ง ์์, ์์ ๋ฐ ํฐ bin์ ํฌ์ธํฐ๋ Mangling๋์ง ์์ผ๋ฏ๋ก ์ฌ์ ํ ์ฃผ์ ๋์ถ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๋ณํ๋ก ์ธํด ๊ณต๊ฒฉ์๋ ์ด๋ฌํ bin์์ ์ทจ์ฝํ ์ ๋ณด๋ฅผ ํ์ํด์ผ ํ์ง๋ง ์ผ๋ถ ๊ธฐ์ ์ ์ฌ์ ํ ๋์ถ ์ ์ ํฌ์ธํฐ๋ฅผ Demanglingํ ์ ์์ง๋ง ์ ์ฝ์ด ์์ต๋๋ค.
ํ๋ก์ธ์ค์ ๋ํ ๋ ๋์ ์ค๋ช ์ ์ํด ์ฌ๊ธฐ์ ์๋ณธ ๊ฒ์๋ฌผ์ ํ์ธํ์ธ์.
ํฌ์ธํฐ๋ฅผ Manglingํ๊ณ Demanglingํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ณต์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
New_Ptr = (L >> 12) XOR P
์ฌ๊ธฐ์ L์ ์ ์ฅ ์์น์ด๊ณ P๋ Fd ํฌ์ธํฐ์ ๋๋ค. L์ ์ค๋ฅธ์ชฝ์ผ๋ก 12๋นํธ ์ด๋์ํจ ํ P์ XOR ์ฐ์ฐ์ ์ํํ๋ฉด, XOR๊ฐ ์์ ๊ณผ XOR๋์์ ๋ 0์ ์ถ๋ ฅํ๋ ํน์ฑ์ผ๋ก ์ธํด P์ ๊ฐ์ฅ ์์ 12๋นํธ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ป๊ฒ ๋ฉ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์ฃผ์ ๋จ๊ณ:
๊ฐ์ฅ ์์ ๋นํธ์ ์ด๊ธฐ ๋์ถ: ์ด๋๋ L์ P์ XORํ์ฌ, ์ด๋๋ L์ ๋ถ๋ถ์ด 0์ด ๋์ด P์ ํด๋น ๋นํธ๊ฐ ๋ณ๊ฒฝ๋์ง ์๋๋ก ํ์ฌ P์ ์์ 12๋นํธ๋ฅผ ์ป์ต๋๋ค.
ํฌ์ธํฐ ๋นํธ ๋ณต๊ตฌ: XOR๊ฐ ์ญ์ผ๋ก ๊ฐ๋ฅํ๋ฏ๋ก ๊ฒฐ๊ณผ์ ํ๋์ ํผ์ฐ์ฐ์๋ฅผ ์๋ฉด ๋ค๋ฅธ ํผ์ฐ์ฐ์๋ฅผ ๊ณ์ฐํ ์ ์์ต๋๋ค. ์ด ์์ฑ์ ์ฌ์ฉํ์ฌ Mangling๋ ํฌ์ธํฐ์ ์ผ๋ถ์ ์๋ ค์ง ๋นํธ ์ธํธ๋ฅผ ์ฐ์์ ์ผ๋ก XORํ์ฌ P์ ์ ์ฒด ๋นํธ ์ธํธ๋ฅผ ์ถ๋ก ํฉ๋๋ค.
๋ฐ๋ณต์ ์ธ Demangling: ์ด ๊ณผ์ ์ ์ด์ ๋จ๊ณ์์ ๋ฐ๊ฒฌ๋ P์ ๋นํธ๋ฅผ ์ฌ์ฉํ์ฌ Mangling๋ ํฌ์ธํฐ์ ๋ค์ ์ธ๊ทธ๋จผํธ๋ฅผ ๋์ฝ๋ฉํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๋ชจ๋ ๋นํธ๊ฐ ๋ณต๊ตฌ๋ ๋๊น์ง ๋ฐ๋ณต๋ฉ๋๋ค.
๊ฒฐ์ ์ ๋นํธ ์ฒ๋ฆฌ: ์ด๋์ผ๋ก ์ธํด L์ ์ต์ข 12๋นํธ๊ฐ ์์ค๋์ง๋ง, ์ด๋ค์ ๊ฒฐ์ ์ ์ด๋ฉฐ ํ์ฒ๋ฆฌ์์ ์ฌ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํ์ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์์ต๋๋ค: https://github.com/mdulin2/mangle
ํฌ์ธํฐ ๊ฐ๋๋ glibc์์ ์ฌ์ฉ๋๋ ์ต์คํ๋ก์ ๋ฐฉ์ง ๊ธฐ์ ๋ก, ํนํ atexit()
์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ์ ์ํด ๋ฑ๋ก๋ ํจ์ ํฌ์ธํฐ๋ฅผ ๋ณดํธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ณดํธ๋ ํฌ์ธํฐ๋ฅผ ์ค๋ ๋ ๋ฐ์ดํฐ(fs:0x30
)์ ์ ์ฅ๋ ๋น๋ฐ๊ณผ XOR ์ฐ์ฐ ๋ฐ ๋นํธ ํ์ ์ ์ ์ฉํ์ฌ ํฌ์ธํฐ๋ฅผ ์๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด ๋ฉ์ปค๋์ฆ์ ํจ์ ํฌ์ธํฐ๋ฅผ ๋ฎ์ด์ฐ๋ ๊ณต๊ฒฉ์๋ก๋ถํฐ ์ ์ด ํ๋ฆ์ ํ์ทจํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฒ์
๋๋ค.
ํฌ์ธํฐ ๊ฐ๋ ์์
์ดํด: ํฌ์ธํฐ์ ์๊ธฐ ์์
์ PTR_MANGLE
๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋๋ฉฐ, ์ด ๋งคํฌ๋ก๋ ํฌ์ธํฐ๋ฅผ 64๋นํธ ๋น๋ฐ๋ก XOR ์ฐ์ฐํ ๋ค์ 0x11 ๋นํธ๋ฅผ ์ผ์ชฝ์ผ๋ก ํ์ ํฉ๋๋ค. ์๋ ํฌ์ธํฐ๋ฅผ ๋ณต๊ตฌํ๊ธฐ ์ํ ์ญ ์ฐ์ฐ์ PTR_DEMANGLE
์์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
๊ณต๊ฒฉ ์ ๋ต: ์ด ๊ณต๊ฒฉ์ ์๋ ค์ง ํ๋ฌธ ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ๋ฐํ๋ฉฐ, ๊ณต๊ฒฉ์๋ ์์ธ ํฌ์ธํฐ์ ์๋ณธ๊ณผ ์์ธ ๋ฒ์ ์ ์์์ผ๋ง ์๋ ๋ฐ ์ฌ์ฉ๋ ๋น๋ฐ์ ์ถ๋ก ํ ์ ์์ต๋๋ค.
์๋ ค์ง ํ๋ฌธ ํ์ฉ:
๊ณ ์ ํจ์ ํฌ์ธํฐ ์๋ณ: glibc ์์ค ์ฝ๋๋ฅผ ์กฐ์ฌํ๊ฑฐ๋ __libc_pthread_functions
์ ๊ฐ์ ์ด๊ธฐํ๋ ํจ์ ํฌ์ธํฐ ํ
์ด๋ธ์ ์ดํด๋ด์ผ๋ก์จ ๊ณต๊ฒฉ์๋ ์์ธก ๊ฐ๋ฅํ ํจ์ ํฌ์ธํฐ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๋น๋ฐ ๊ณ์ฐ: __pthread_attr_destroy
์ ๊ฐ์ ์๋ ค์ง ํจ์ ํฌ์ธํฐ ๋ฐ ํด๋น ํจ์ ํฌ์ธํฐ ํ
์ด๋ธ์์์ ์์ธ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ, ์์ธ ํฌ์ธํฐ๋ฅผ ์ญ ํ์ (์ค๋ฅธ์ชฝ ํ์ )ํ๊ณ ํด๋น ํจ์์ ์ฃผ์์ XOR ์ฐ์ฐํ์ฌ ๋น๋ฐ์ ๊ณ์ฐํ ์ ์์ต๋๋ค.
๋์ฒด ํ๋ฌธ: ๊ณต๊ฒฉ์๋ ์๋ ค์ง ๊ฐ(์: 0 ๋๋ -1)์ผ๋ก ํฌ์ธํฐ๋ฅผ ์์ด์ ๋ฉ๋ชจ๋ฆฌ์์ ์๋ณ ๊ฐ๋ฅํ ํจํด์ ์์ฑํ๋์ง ํ์ธํ๊ธฐ ์ํด ์คํํ ์ ์์ผ๋ฉฐ, ์ด๋ฌํ ํจํด์ด ๋ฉ๋ชจ๋ฆฌ ๋คํ์์ ๋ฐ๊ฒฌ๋ ๋ ๋น๋ฐ์ ๋ ธ์ถ์ํฌ ์ ์์ต๋๋ค.
์ค์ ์ ์ฉ: ๋น๋ฐ์ ๊ณ์ฐํ ํ, ๊ณต๊ฒฉ์๋ libc ๊ธฐ๋ณธ ์ฃผ์๋ฅผ ์๊ณ ์์์ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ์ฝ์ ์ ์๋ ๋ค์ค ์ค๋ ๋ ์์ฉ ํ๋ก๊ทธ๋จ์์ ํฌ์ธํฐ๋ฅผ ์ ์ด์ ์ผ๋ก ์กฐ์ํ์ฌ ํฌ์ธํฐ ๊ฐ๋ ๋ณดํธ๋ฅผ ์ฐํํ ์ ์์ต๋๋ค.