๐โSystem_Study/๐โDreamhack_Hacking
Exploit Tech: __environ ํ๋ก๊ทธ๋จ์์ ๋ฆฌํด ๋ช
๋ น์ด๋ฅผ ์ํํ๋ฉด lib์ ์ธ์์์ ๋ค์ํ ํจ์ ํธ์ถ! HTML ์ฝ์
๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค ํ๋ก์ธ์ค๋ ํ๊ฒฝ ๋ณ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ , ํ์ํ ๋๋ง๋ค ๋ถ๋ฌ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฒ์ lib ํจ์์์ ์ฐธ์กฐํ๋ ํ๊ฒฝ ๋ณ์ ํฌ์ธํฐ์ ๊ด๋ จ๋ ๊ณต๊ฒฉ์ ์ค์ตํฉ์๋ค. /etc/passwd ํ์ผ์ ๋ด์ฉ์ ์ฝ๊ณ ์คํ ๋ฒํผ์ ์ ์ฅํ๋๊ตฐ์ ๋ฉ์ธ ํจ์์์๋ stdout ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฃผ์๋ฅผ ์ถ๋ ฅํ๊ณ , ๋ฐ๋ณตํด ์์ ์ฃผ์์ ์๋ ๊ฐ์ ์ฝ์ ์ ์๋ ์ทจ์ฝ์ ์ด ์กด์ฌํฉ๋๋ค. ํ๊ฒฝ ๋ณ์ ๋ชจ๋ ๋ณดํธ๊ธฐ๋ฒ์ด ์กด์ฌํ๊ธฐ์ ๋ชจ๋ OS๊ฐ ์ฌ์ฉํ๋ ํ๊ฒฝ๋ณ์(environment ariable)๋ ๋งค๋ฒ ๋ณํ ์ ์๋ ๋์ ์ธ ๊ฐ๋ค์ ๋ชจ์์ผ๋ก, ์์คํ
์ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์๋ ๋ณ์์
๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ์ง์ ์ถ๊ฐ..
๐โSystem_Study/๐โDreamhack_Hacking
๋ค์ด๊ฐ๋ฉฐ.. ๋ฐ์ด๋๋ฆฌ ๋ณดํธ ๊ธฐ๋ฒ ๊ฐ๋
์์ฒด๊ฐ ์์ ๋์๋ ์
ธ์ฝ๋๋ฅผ ํตํด ๋ค์ํ ์์คํ
์ฝ์ ํธ์ถํด ์์ ๋ช
๋ น์ด๋ฅผ ์คํํ์์ต๋๋ค. ์ด ๊ธฐ๋ฒ์ ์ด์ฉํ ์ํ์ด ๊ณ์๋์ ์
ธ์ฝ๋์ ์คํ ๋ฐฉ์ง๋ฅผ ์ํ NX ๋ฑ์ฅ ๊ทธ๋ฌ๋ ์ผ๋ง๊ฐ์ง ์์ ์
ธ์ฝ๋ค๋ฅด ์คํํ์ง ์๊ณ lib ํจ์๋ฅผ ํธ์ถํด ๋ณดํธ๊ธฐ๋ฒ์ ์ฐํํ๋ RTL! ํ๋ก๊ทธ๋จ์ ์ฝ๋ฅผ ์ฌํ์ฉํด ์์ ํจ์๋ฅผ ์ฐ์ํด ํธ์ถํ ์ ์๋ ROP๋ ๋ฑ์ฅํ์์ต๋๋ค. ์๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์์ ๊ฐ์ ์ข
๋ฅ์ ์ทจ์ฝ์ ์ด ์๋คํด๋ ๊ณต๊ฒฉ ๋์์ ๋ณดํธ ๊ธฐ๋ฒ ๋๋ ์คํ ์ฝ๋์ ๋ฐ๋ผ ๊ณต๊ฒฉํ๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๊ธฐ์ ์ด๋ฅผ ๊ณ ๋ คํ์ฌ ๊ณ์ ๋ณดํธ๊ธฐ๋ฒ์ด ์ถ๊ฐ๋ฉ๋๋ค ์ด๋ฒ์ 2014๋
๋ฐํํ SROP๋ฅผ ์์๋ณด๊ธฐ ์ํด ์๊ทธ๋(Signal)์ ์์๋ด
์๋ค. Signal [๋ฆฌ๋
์ค / ์ ๋์ค ] ์๊ทธ๋์ด๋? ์๊ทธ๋(SIGNAL) ์ข
๋ฅ, ์..
๐โSystem_Study/๐โDreamhack_Hacking
Master Canary ๋ง์คํฐ ์นด๋๋ฆฌ๋ฅผ ์คํ ๋ฒํผ์ ํ์ธํ๋ ๋ฒ! HTML ์ฝ์
๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค ์ ์ฝ๋๊ฐ ํต์ฌ์ธ๋ฏ ์ถ์ผ๋ฉฐ, ๋ณด์๋ฉด.. 1๋ฒ ์ต์
์ผ๋ก ์ฐ๋ ๋๋ฅผ ์์ฑ/2๋ฒ์ size๋ฅผ ์
๋ ฅ ํด๋น ์
๋ ฅ size๋งํผ ์
๋ ฅ์ ๋ฐ๋ค์ ์ฆ, bof๊ฐ ๋ฐ์๋๊ฒ ์ฃ ? ๋ง์ง๋ง์ read ํจ์๋ก 1024๋ฐ์ดํธ๋งํผ ์
๋ ฅ ๋ฐ๊ธฐ Master canary๋ฅผ ์ด์ฉํ ๊ฒ์ด๊ธฐ์(Partial RELRO, Canary)๋ฅผ ์ฐํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ๋ํ ์์ get_shell()์ ํจ์๊ฐ ์กด์ฌํ๋ฏ๋ก NX๋ ์ฐํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ๋ง์คํฐ ์นด๋๋ฆฌ๋ ๋ก๋์์ ํ ๋นํ TLS ์์ญ์ ์กด์ฌํ๊ณ , ํด๋น ํ์ด์ง๋ RW-๋ก ์กด์ฌํฉ๋๋ค. ํด๋น ์์ญ์ ์ดํดํ๊ธฐ ์ํด์๋ ์๋ ๋งํฌ์ ๋ํ์ฌ ์์ธํ ์ ํ์๊ฐ ์์ต๋๋ค. ๋์ถฉ ์๋๋ฆฌ์ค๋ฅผ ์ค๊ณํ์๋ฉด.. 1๋ฒ์ผ๋ก ..
๐โSystem_Study/๐โDreamhack_Hacking
Master Canary ๋ง์คํฐ ์นด๋๋ฆฌ๋ฅผ ์คํ ๋ฒํผ์ ํ์ธํ๋ ๋ฒ! HTML ์ฝ์
๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค ๋ง์คํฐ ์นด๋๋ฆฌ๋ ๋ก๋์์ ํ ๋นํ TLS ์์ญ์ ์กด์ฌํ๊ณ , ํด๋น ํ์ด์ง๋ RW-๋ก ์กด์ฌํฉ๋๋ค. ํด๋น ์์ญ์ ์ดํดํ๊ธฐ ์ํด์๋ ์๋ ๋งํฌ์ ๋ํ์ฌ ์์ธํ ์ ํ์๊ฐ ์์ต๋๋ค. Background: Master Canary Stack Smashing Protector(SSP)๋ BOF๋ก๋ถํฐ ret ๋ณดํธ ๊ธฐ๋ฒ์ผ๋ก์จ, ์คํ ๋ฒํผ๊ฐ ์กด์ฌํ๋ ํจ์ ๋ด๋ถ์์ ์์๋ก ์์ฑ๋ ๊ฐ์ ๋ฒํผ ๋ง์ง๋ง์ ์ฝ์
ํฉ๋๋ค. SSP ๋ณดํธ ๊ธฐ๋ฒ์ ๋ฐฐ์ธ ๋ ์คํ ์นด๋๋ฆฌ์ ๊ฐ์ด ์์นํ dystopia050119.tistory.com ๋ง์คํฐ ์นด๋๋ฆฌ๋ main ํจ์๊ฐ ํธ์ถ์ ์ ๋๋ค์ ์นด๋๋ฆฌ๋ฅผ ์ฐ๋ ๋๋ง๋ค ์ ์ญ ๋ณ์๋ก ์ฌ์ฉ๋๋ TLS์ ์ ์ฅ ์ด๋..
๐โSystem_Study/๐โDreamhack_Hacking
Stack Smashing Protector(SSP)๋ BOF๋ก๋ถํฐ ret ๋ณดํธ ๊ธฐ๋ฒ์ผ๋ก์จ, ์คํ ๋ฒํผ๊ฐ ์กด์ฌํ๋ ํจ์ ๋ด๋ถ์์ ์์๋ก ์์ฑ๋ ๊ฐ์ ๋ฒํผ ๋ง์ง๋ง์ ์ฝ์
ํฉ๋๋ค. SSP ๋ณดํธ ๊ธฐ๋ฒ์ ๋ฐฐ์ธ ๋ ์คํ ์นด๋๋ฆฌ์ ๊ฐ์ด ์์นํ Thread Local Storage(TLS)์ ๋ํ ์์ธํ ๋ด
์๋ค. Thread Local Storage ์ค๋ ๋์ ์ ์ฅ ๊ณต๊ฐ ELF ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ดํด๋ณด๋ฉด, ๊ฐ ๋ชฉ์ ์ ๊ฐ์ง ์น์
์์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ์ฝ๋๋ฅผ ์คํ(.text), ์ด๊ธฐํ X ์ ์ญ ๋ณ์(.data) ๋ฑ์ด ์๊ฒ ์ต๋๋ค. ์ด์ ๋ฌ๋ฆฌ TLS ์์ญ์ ์ค๋ ๋์ ์ ์ญ ๋ณ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๊ณต๊ฐ์ผ๋ก, ๋ก๋(Loader)์ ์ํด ํ ๋น๋จ ๋ก๋์์ TLS ์ฌ์ญ์ ํ ๋นํ๊ณ ์ด๊ธฐํํ๋ ํจ์์ธ init_tls ํจ์์
๋๋ค. ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด,..
๐โSystem_Study/๐โDreamhack_Hacking
seccomp ๋ฌธ์ ํ์ด ๋ณดํธ๊ธฐ๋ฒ์ ์ค์ํ ์ ๋๋ก NX์ Canary.., Partial RELRO๊ฐ ์๋ ๋ชจ์ต ASLR์ ๋น์ฐํ ๊ธฐ๋ณธ์ผ๋ก ๋์ด ์๊ฒ ๋ค์.. ใ
์ ์ด๋ ๋ณดํธ๊ธฐ๋ฒ์ด ๋ ใ
์ด๋ฒ์ filter_list๊ฐ ์๋ strict๋ชจ๋๋ผ์ read, write,exit..์ ๋์ ์์คํ
์ฝ๋ง ๊ฐ๋ฅํฉ๋๋ค. ์ํคํ
์ฒ๊ฐ 64๋๊น ์ฝ๋ฒํธ๊ฐ ์ด๊ณผํ์ง ์์ผ๋ฉด ํธ์ถ์ด๋๊น.. 0x400..์ ๋ง์ถ๊ณ seccomp์ ์ฐํํ๋ ๊ฑด ์ ์๋ ๋ฏ ์ถ๋ค์ ๊ทธ๋์ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๋์ค SECCOMP_MODE_STRICT์ ์ง์ค ๊ตฌ๊ธ๋งํ๊ฒฐ๊ณผ Linux seccomp Linux์ Process Sandboxing ๊ธฐ๋ฒ์ธ seccomp์ ๋ถ์ํ๋ค. ssup2.github.io seccomp(2) - Linux manual page sec..
๐โSystem_Study/๐โDreamhack_Hacking
Bypass SECCOMP-1 ๋ฌธ์ ํ์ด ๋ณดํธ๊ธฐ๋ฒ์ ์ค์ํ ์ ๋๋ก NX์ PIE, FULL ELRO๊ฐ ์๋ ๋ชจ์ต ASLR์ ๋น์ฐํ ๊ธฐ๋ณธ์ผ๋ก ๋์ด ์๊ฒ ๋ค์.. ใ
์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ ๋ sendbox๊ฐ ์๋ ๋ชจ์ต seccomp๊ฐ ์นํ ๊ฑธ๋ ค์๋๊ตฐ์ ์ฝ๊ธฐ, ์ฐ๊ธฐ, ์คํ ๊ถํ์ด ์๋ ํ์ด์ง๋ฅผ ํ ๋นํ๊ณ ์ด์ฉ์๋ก๋ถํฐ ์
๋ ฅ๋ ๊ฐ์ ์ฌ์ฉํ๋ค.. sendbox์ ํจ์์ allow์ ๋ฆฌ์คํธ๋ฅผ ๊ธฐ๋ฐํ๋ค๋ฉด execve์ open, write๊ฐ ์๋๋ค์.. ์ ๋ง์ ์ธ๋ฐ? Exploit ์ค๊ณ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ ์์คํ
์ฝ์ด ์๋์ง ํ์ธํด์ผํฉ๋๋ค. ์์คํ
์ฝ์ ๋ํ ์ ๋ณด๋ ์๋ ๋งํฌ์ Linux System Call Table for x86 64 · Ryan A. Chapman Linux 4.7 (pulled from github.com/to..
๐โSystem_Study/๐โDreamhack_Hacking
tcache_dup2 ๋ฌธ์ ํ์ด ์ด์ ์ด๋ ๋ณดํธ๊ธฐ๋ฒ๋ ๋๊ฐ๊ณ ์ฝ๋๋ง ์ด์ง ๋ฐ๋ ๋ชจ์ต์ผ๋ก ์ด์ ๊ณผ ๊ฐ์ด ์คํํ๋ฉด ๋ฌดํ๋ฃจํ์ ๋น ์ง๊ธฐ์ ํจ์๋ฅผ ํตํด p64 ๋ฐ์ดํฐ ์ ์ก ๊ณผ์ ์์ ์ ์กํ ๋ฐ์ดํฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ์ฐํ๋ ๋ฌธ์ ๊ฐ ์์๋ค์ ์คํํด๋ณด๋ฉด์ ๋ง์ด ๋งํ๋๋ฐ ๊ทธ ๋ถ๋ถ๋ง ์๋์ผ๋ก ๋ฐ๊ฟ์ ํ๋ฉด ๋ ๋ฏ ํฉ๋๋ค. Exploit ์ค๊ณ ๋ค๋ฅธ ๋ถ๋ถ๋ ๋ง์ฐฌ๊ฐ์ง๊ณ ์ถ๊ฐ์ ์ธ ์ธ์๋ฅผ ์
๋ ฅํ์ฌ ํ์ธํ๋ ๋ถ๋ถ๊ณผ modify๊ฐ ์ถ๊ฐ๋ ๋ชจ์ต์
๋๋ค. ํ์ง๋ง ๊ทธ๋ฌํ ๋ถ๋ถ์ idx๊ฐ 8์ ์ด๊ณผํ๋ฉด ์๋๋ค.. ์ค๋ช
์ ์ด์ ๋ด์ฉ์์ ๋ฌด์ง ๋ง์ด ํ์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ์ด์ ์ฝ๋๋ฅผ ํ์ฉํด์ ์์ฑํด๋ณผ๊น์? ๊ณต๊ฒฉ๊ธฐ๋ฒ์ ์ ๊ทผ ๋ฐฉ์๋ ์ ์ฌํ๋ฏ๋ก.. Exploit ์์์ ๋ค ์ค๋ช
ํ์ผ๋ ์ถ๊ฐ์ ์ธ ๋ถ๋ถ๋ง ๊ฐ๋จํ ์ค๋ช
ํ๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค. ์ด ๋ถ๋ถ์ DFB์ ๋ถ๋ถ์ ๊ธฐ๋ณธ์ด๋ฏ๋ก..
๐โSystem_Study/๐โDreamhack_Hacking
sint ๋ฌธ์ ํ์ด ์ด์ ์ฌ๊ธฐ์ ๊ธฐ๋ณธ์ ์ธ ๋ณดํธ๊ธฐ๋ฒ์ด ๊ฑธ๋ ค์์ต๋๋ค NX์ Partial RELRO์ด์ฃ .. ๋ณด์๋ฉด.. Type Error๋ฅผ ์ ๋ฐํ๋ผ๊ณ ํ๋๋ฐ.. 38๋ฒ ๋ผ์ธ์ ๊ฒ์ฌ์์ 0์ ๊ฒ์ฌ๋ฅผ ์ํ๋ ๋ถ๋ถ์ ํ์ธ ์ฆ, ์
๋ ฅ ํ๋๋ฅผ ๋์ ์ ์์ ์ ์๊ธฐ์ payload์ ์
๋ ฅ์ด ์์ ๋ก์์ง๋ค! ์ฆ, 0์ ๋ฃ๊ณ bof๋ฅผ ์ผ์ผ์ผ์ get_shell์ ํ๋๊ฑฐ์ฃ ๋ํ signal์ด ๋ฌด์จ ํจ์์ผ๊น ๊ฒ์ํด๋ณด๋๊น.. Segment fault ์ฆ ๊ตฌ๋ฌธ ์ค๋ฅ ๋๋ฉด get_shell์ ์คํํ๋ค์ ๊ทธ๋ผ ์ด๋ฒ์๋ pwn๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ ์ ์๊ฒ ๋ค์? Exploit ์ค๊ณ esp๊ฐ 0x104๋ก ์กํ์๋ค์.. 256byte๋ก ํ ๋น๋ฌ๋๋ฐ ๊ทธ๋ผ 0x100์ด์ฌ์ผํ๋๋ฐ ์ต์ ํ ๋จ๊ณ์์ 0x104๋ก ๋์์ผ๋ฏ๋ก sfp์ ret ๋ถ๋ถ๋ง ์ฑ์..