๐โSystem_Study/๐โDreamhack_Hacking
basic_rop_x64 WriteUp ๋ฌธ์ ํ์ด NX์ Partial RELRO๊ฐ ๊ฑธ๋ ค์๋ค์ ๋คํ์ธ ์ ์ Canary๊ฐ ์๊ธฐ์ ๊ทธ ๋ถ๋ถ์ ์๋ตํด๋ ๋๋ค.. ๋๊ฐํ ๊ฑฐ๋๊น ROP๋ก ํ์ด์ผ๊ฒ ๋ค์ ์ฝ๋๋ฅผ ๋ณด์๋ฉด ์ด์ ๋ด์ฉ์ด๋ ์ ์ฌํ ๋ฐฉ๋ฒ์ด๋ค์ read()ํจ์์ bof๊ฐ ๋ฐ์ํ๋๊น์ ๊ทธ๋ผ ์ค์ ๋ก ์ด๋ค ์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋์๋์ง๋ ํ์ธํด๋ด
์๋ค. buf์์ 0x40์ด์ง๋ง read์์ 0x400์ด๋ ๋ฐ๊ธฐ์ bof๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ค๋ง ๋ณดํธ๊ธฐ๋ฒ์ ๊ณ ๋ คํด์ NX์ด๋ฏ๋ก ์ธ๋ถ ์ ์ฝ๋ ์คํ X, ๊ทธ๋ ๋ค๊ณ ์ฌ๊ธฐ์ system๊ฐ์ ํจ์๋ ์ฝ๋์ ์กด์ฌ X์ด๋ฏ๋ก Return Overwrite Programming์ ํด์ผ๊ฒ ๋ค์(๋คํ์ด Lazy Binding์ด๋๊น...) ๊ทธ๋ผ ํด๋น ํจ์๋ฅผ ๋ฐ๊ธฐ์ํด ํด๋น lib์ธ libc.so.6์ ๋..
๐โSystem_Study/๐โDreamhack_Hacking
์๋ก ASLR์ด ์ ์ฉ๋๋ฉด ๋ฐ์ด๋๋ฆฌ๊ฐ ์คํ๋ ๋๋ง๋ค ์คํ, ํ, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ด ๋ฌด์์ ์ฃผ์์ ๋งคํ๋๋ฏ๋ก, ๊ณต๊ฒฉ์๊ฐ ์ด ์์ญ๋ค์ ๊ณต๊ฒฉ์ ํ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ฌ๋ ์ง๋ ์ฝ์ค์ ์ค์ต addr์ ๋ ์ฌ๋ ค ๋ณด๋ฉด, ๋ค๋ฅธ ์์ญ์ ์ฃผ์๋ ๊ณ์ ๋ณํํ๋๋ฐ mainํจ์์ ์ฃผ์๋ ๋งค๋ฒ ๊ฐ์์ต๋๋ค. Mitigation: NX & ASLR ์์คํ
๋ณด์์ ์ง๋ ์๋
๊ฐ ๋ฐ์ ํด์จ ๊ณต๊ฒฉ ๊ธฐ๋ฒ๊ณผ ๋ณดํธ ๊ธฐ๋ฒ์ ๋ฐ์ ์์์ ๋ณด์๋ฉด.. ์ด๋ค ๋ณดํธ ๊ธฐ๋ฒ์ด ๋ฑ์ฅํ๋ฉด ์ฐํ ๊ธฐ์ ๋ ๋ฑ์ฅํฉ๋๋ค.. ์ด๋ ๊ฒ ์ด๋ค ๊ณต๊ฒฉ์ด ์ฌ์ง ๋ชจ๋ฅด๊ธฐ์ ์์คํ
๊ฐ๋ฐ์๋ค dystopia050119.tistory.com ์ด๋ฐ ํน์ง์ ์ด์ฉํด ๊ณต๊ฒฉ์๋ ๊ณ ์ ๋ ์ฃผ์์ ์ฝ๋ ๊ฐ์ ฏ์ ํ์ฉํ ROP๋ฅผ ์ํํ ์ ์์ต๋๋ค. Position-Independent Executable(..
๐โSystem_Study/๐โDreamhack_Hacking
Overwrite _rtld_global ํ๋ก๊ทธ๋จ์์ ๋ฆฌํด ๋ช
๋ น์ด๋ฅผ ์ํํ๋ฉด lib์ ๋ก๋์์ ๋ค์ํ ํจ์ ํธ์ถ! HTML ์ฝ์
๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค ๋ชจ๋ ๋ณดํธ๊ธฐ๋ฒ์ด ์ ์ฉ๋ ๋ชจ์ต ์๋ฌด๋๋ ๋ก๋๋ฅผ ์ฐํํ์ฌ ์คํํด๋ด์ผ๊ฒ ๋ค์ exploit ์ค๊ณ lib ๋ฐ loder base addr ๊ณ์ฐ ์์ ์์ ์ ๊ณตํ stdout ์ฃผ์๋ฅผ ํตํด lib_base๋ฅผ ๊ตฌํ๊ณ "/lib64/ld-linux-x86-64.so.2"๊ฐ ๋งตํ๋ ๋ก๋์ ๋ฒ ์ด์ค ์ฃผ์๋ฅผ ์์๋ด
์๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ก๋๊ฐ ๋งตํ๋ ์ฃผ์์ ๊ฐ๊ฒฉ์ ์ผ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ฒ๊น
์ ํตํด ๊ฐ๊ฒฉ์ ์์๋ด๊ณ ์คํ์
์ ๊ณ์ฐํด ์์๋ด
์๋ค. _rtld_global ๊ตฌ์กฐ์ฒด ๊ณ์ฐ ๋ก๋์ ๋ฒ ์ด์ค ์ฃผ์๋ฅผ ์์๋๋ค๋ฉด, rtld_global ๊ตฌ์กฐ์ฒด์ ์ฌ๋ณผ ์ฃผ์๋ฅผ ๋ํด ํด๋น ๊ตฌ์กฐ์ฒด์ ์ฃผ์๋ฅผ ์์๋ด..
๐โSystem_Study/๐โDreamhack_Hacking
์ฐธ๊ณ ๋ก rtld๋ return to LD library ๋ผ๊ณ ์ถ์ธกํ์๋ ๋ถ์ด ์์ผ์๋๋ผ๊ณ ์ ์ ๋ ์ด๋์ ๋ ๊ทธ๋ฌ์ง ์์๊น?(์ฌ๊ธฐ ๋ก๋๋ฆฌ์์ฒ๋ผ ใ
) rtld HTML ์ฝ์
๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค stdout์ด ์ถ๋ ฅ๋๋๊น lib_base๋ฅผ ๊ตฌํ๋ฉฐ, ์์ ์ฃผ์ ์ฐ๊ธฐ ์ทจ์ฝ์ ์ด ์กด์ฌํฉ๋๋ค. get_shell()ํจ์๊ฐ ์์ผ๋ฏ๋ก.. stdout์ด ์ถ๋ ฅ๋๋๊น lib_base๋ฅผ ๊ตฌํ๋ฉฐ, ์์ ์ฃผ์ ์ฐ๊ธฐ ์ทจ์ฝ์ (์ ์ ํ๋)์ด ์กด์ฌ get_shell() ํจ์๊ฐ ์์ผ๋ฏ๋ก NX๋ ์ฐํ๋๊ณ ๋๋จธ์ง ์ทจ์ฝ์ ์ ์ธ์๋ก ํ๋๊น ใ
ใ
์ฆ, ์์ ์ฃผ์ ์ฐ๊ธฐ ์ทจ์ฝ์ ์ ์ด์ฉ dl_rtld_lock_recursive๋ฅผ get_shell()๋ก ๋ฎ์ด ์์ ๋ฐ๋ฉด ์
ธ์ ํ๋ํ ์ ์๊ฒ ์ต๋๋ค. ์๋๋ฉด Partial RELRO๋๊น GOT Overwrite..
๐โSystem_Study/๐โDreamhack_Hacking
_rtld_global ๋ฆฌ๋
์ค ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ํ๋ก๊ทธ๋จ์ ๋ช
์๋ ์ฝ๋์ ๊ฒฐ๊ณผ๊ฐ์ด ์ฐ๋ฆฌ์๊ฒ ์ถ๋ ฅ๋ฉ๋๋ค. ํ๋ก๊ทธ๋จ์ด ์คํ๋์ด ํ๋ก์ธ์ค๋ก ๋ฑ๋ก ์ ํ๋ก๊ทธ๋จ์ ๋ช
์๋ ์ฝ๋๋ฟ๋ง ์๋ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋๋ ๋ณ์ ๊ด๋ฆฌ๋ฅผ ์ํ ์ฌ์ญ์ ํ ๋นํ๋ ๋ฑ์ ๋ค์ํ ์ฝ๋๊ฐ ๋ก๋์ ์ํด ์คํ๋ฉ๋๋ค. ํ๋ก์ธ์ค๊ฐ ๋ฑ๋ก๋๊ฑฐ๋ ์ข
๋ฃ ์ ์ฐ์ด๋ ๋ณ์์ ์์ญ์ ์ ์ ์๋ค๋ฉด ๋ค์ํ ๋ฐฉ์์ ๊ณต๊ฒฉ ๊ธฐ๋ฒ ๊ฐ๋ฐ! ๊ทธ๋ฌ๋ฏ๋ก ์ ํฌ ๋ณด์์ชฝ์์ ์ด๋ฐ ๊ตฌ์กฐ์ ๊ตฌ๋์ ์ดํดํด์ผํฉ๋๋ค ๊ฐ์ด ์์๋ด
์๋ค. HTML ์ฝ์
๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค __GI_exit ์์ ์์ ์ฝ๋๋ฅผ ๋ณด์๋ฉด ๋ณ๋ค๋ฅธ ์ฝ๋๋ฅผ ์คํX ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค. ์ข
๋ฃ์์ ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ฅด๋ ๋ง์ ์ฝ๋๋ค์ด ๋ด๋ถ์ ์ผ๋ก ์คํ๋๋๋ฐ, ํ๋ฒ ์ดํด๋ด
์๋ค. ์ผ๋จ main ํจ์ ๋ด ๋ฆฌํดํ๋ ๋ช
๋ น์ด์ ๋ธํฌ๋ฅผ ์ค์ ..
๐โSystem_Study/๐โDreamhack_Hacking
send_sig ์.. ๋ด ๋ญ setvbuf ๋ถ๋ถ๊ณผ 5-7๊น์ง๋ 1๋ฒ์งธ ์ธ์ 1์ด๋๊น write์ธ๋ฏ ์ถ๋ค์ ๊ทธ๋ฆฌ๊ณ 11๋ฒ์งธ ์ฝ๋๊ฐ signal์ writeํด์ read์ 1024byte๋งํผ ํ๋ ๊ฑธ๋ก ๋ณด์
๋๋ค. ๋ํ v3๊ฐ ์ด์ buf์ธ ๋ฏ ์ถ๊ธฐ์ v3[8]์ด๊ตฌ๋.. ์ด๋ฅผ ์ด์ฉํด NX๊ฐ ๊ฑธ๋ ค ์์ผ๋ฏ๋ก SROP๋ฅผ ํฉ์๋ค(Partial RELRO ์ฐํ) ์ฌ๊ธฐ์ ์ ๋ฌธ์ ์ฒ๋ผ gadget์ด ์๊ธฐ์.. ์ผ๋จ execve์ ํจ์๋ binsh๊ฐ์ ๋ฌธ์์ด์ด ์๋์ง ํ์ธ์ ํด๋ด
์๋ค. PIE๊ฐ ์ ๊ฑธ๋ ค์์ผ๋ฏ๋ก ์ฌ์ฉ์ด ์ฝ๊ฒ ๊ฐ๋ฅํฉ๋๋ค. ํด์ bss ์์ญ์ผ๋ก read ํด์ ํ ํ์๊ฐ ์์ด์ ํธํด์ก๋ค์ ๋์ด์ค ์ต์ค ์ค๊ณ sigreturn ํธ์ถ SROP๋ฅผ ํ๊ธฐ ์ํด sigreturn ์์ค์ฝ์ ํธ์ถํด์ผ์ฃ ๊ทธ๋ฆฌ๊ณ ์์์ ๋์ถฉ sig..
๐โSystem_Study/๐โDreamhack_Hacking
SigReturn-Oriented Programming ์ด๊ฑด.. gadget??์ด ์๊ณ signal์ ํ์ฉํ sigreturn์ด ์กด์ฌํ๋ค์ Partial RELRO๋ก ROP ๋๋ ๋์ฃ gadget(NX ์ฐํ)ํจ์๋ฅผ ์ฌ์ฉํ์ฌ read๋ 1024byte๋งํผ ๋ฐ๊ธฐ์ bof ์์ค์ฝ์ ํธ์ถ ๋ ์ง์คํฐ ์กฐ์ ์
ธ ํ๋์ผ๋ก ๊ฐ ์ ์์ต๋๋ค. ์ต์ค ์ค๊ณ sigreturn ํธ์ถ SROP๋ฅผ ํ๊ธฐ ์ํด sigreturn ์์ค์ฝ์ ํธ์ถํด์ผ์ฃ ์์ ์์ ์์ค์ฝ์ ํธ์ถํ ์ ์๋๋ก gadget ํจ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ํด๋น ํจ์ ๋ด๋ถ ์ฝ๋ ๊ฐ์ ฏ ์ฃผ์๋ฅผ ์์๋ด๊ณ ์์ค์ฝ ๋ฒํธ(sig_id?)์ syscall์ ํตํด sigreturn์ ํธ์ถํฉ๋๋ค. execve ํธ์ถ sigreturn์ ์คํ ์์ญ์ ๊ฐ์ ๋ ์ง์คํฐ๋ก ๋ณต์ฌํฉ๋๋ค. ๋ฐ๋ผ์ 1024 ..
๐โ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' ์นดํ
๊ณ ๋ฆฌ์ ๊ธ ๋ชฉ๋ก
๋จ์ถํค
๋ด ๋ธ๋ก๊ทธ
๋ด ๋ธ๋ก๊ทธ - ๊ด๋ฆฌ์ ํ ์ ํ |
Q
Q
|
์ ๊ธ ์ฐ๊ธฐ |
W
W
|
๋ธ๋ก๊ทธ ๊ฒ์๊ธ
๊ธ ์์ (๊ถํ ์๋ ๊ฒฝ์ฐ) |
E
E
|
๋๊ธ ์์ญ์ผ๋ก ์ด๋ |
C
C
|
๋ชจ๋ ์์ญ
์ด ํ์ด์ง์ URL ๋ณต์ฌ |
S
S
|
๋งจ ์๋ก ์ด๋ |
T
T
|
ํฐ์คํ ๋ฆฌ ํ ์ด๋ |
H
H
|
๋จ์ถํค ์๋ด |
Shift + /
โง + /
|
* ๋จ์ถํค๋ ํ๊ธ/์๋ฌธ ๋์๋ฌธ์๋ก ์ด์ฉ ๊ฐ๋ฅํ๋ฉฐ, ํฐ์คํ ๋ฆฌ ๊ธฐ๋ณธ ๋๋ฉ์ธ์์๋ง ๋์ํฉ๋๋ค.