ํดํน ์๋ ค์ค๊ฒ 24ํ: Return Address Overwrite ์๋
ํ์ธ์ ํดํน ์๋ ค์ค๊ฒ์
๋๋ค~! ๐ ์ค๋ ํด ํดํน ์๋ ค์ค๊ฒ 24ํ: Return Address Overwrite ์๋
ํ์ธ์ ํดํน ์๋ ค์ค๊ฒ์
๋๋ค~! ๐ ์ค๋ ํดํน ์๋ ค์ค๊ฒ์์ ๊ฐ์ ธ์จ ์ฃผ์ ๋ Return Address Overwrite์
๋๋ค! ์์คํ
ํดํน์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ์ ๋ก, ๋ง ๊ทธ๋๋ก Return Address๋ฅผ ๋ฎ์ด์ฐ๋ ๊ธฐ๋ฒ์ด์์.
ํ์ง๋ง ์์ง Return Address๋ ๋ญ์ง ๋ชจ๋ฅด๊ฒ ๊ณ ...์ ๋ฎ์ด์ฐ๋์ง๋ ๋ชจ๋ฅด๊ฒ ๊ณ ... ๊ฐ์ด ์ ์ ์ค์์ฃ ? ๐ฃ
์ฌ์ด ์์๋ฅผ ๋ค์ด๋ณด๋ฉด, Return Address๋ฅผ ๊ฐ๋จํ ๋์๊ฐ ์ฃผ์๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ฌ๋ฌ๋ถ์ด ๋งค์ผ ํ๊ต ๋๋ ์ง์ฅ์์ ํ ์ผ์ ํ๋ค๊ฐ ๊ฒฐ๊ตญ์๋ ์ด๋๋ก ๋์๊ฐ๊น์? ๋ง์์, ์ฐ๋ฆฌ์ Home Sweet Home์ ๊ฐ์ ํน ์ฌ์ด์ผ ํ๊ฒ ์ฃ ! ๐ ๊ทธ๋ฌ๋ฉด ๋์๊ฐ์ผ ํ Return Address๋ ์ง์ด ๋๊ฒ ๋ค์. ํ์ง๋ง ์ฌ๊ธฐ์ ๋๊ตฐ๊ฐ(๋์ ์ฌ๋...) ๋์๊ฐ ๊ณณ์ ์ง์ด ์๋ ํ๊ต๋ ์ง์ฅ, ๋๋ ์ด๋๋ก ๊ฐ(..?)๋ก ๋ฐ๊ฟ๋ฒ๋ฆฐ ๊ฒ์ด์ฃ . ๐ฑ Return Address(RET)๊ฐ ์ ํํ ๋ญ๊ฐ์?
Return Address Overwrite์ด์ ์ ์ฐ์ Return Address์ ๋ํด์ ์๊ธฐํด๋ณด๋๋ก ํ ๊ฒ์. Return Address๋ฅผ ์ดํดํ๋ ค๋ฉด ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ์์์ ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ์ง์์ด ํ์ํ๋ฐ์. ์ด๋ ต์ง ์๊ฒ ๊ฐ๋จํ ์ง์๋ถํฐ ์ค๋ช
ํด๋ณด๊ฒ ์ต๋๋ค! ๐
์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๊ฒ ๋๋ฉด ์ปดํจํฐ์์๋ ํ๋ก๊ทธ๋จ์ ์๋์ํค๊ธฐ ์ํด ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น์์ผ์ค๋๋ค. ์ด ๋ฉ๋ชจ๋ฆฌ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ๋๊ธฐ ์ํด ๊ฐ ์ฌ์ฉ ๋ชฉ์ ์ ๋ง๊ฒ ๊ตฌ์ญ์ ๋๋์ด ์ฌ์ฉํ๋๋ฐ์. ์ด ์ค์์ ์คํ ์์ญ๊ณผ ํ๋ก๊ทธ๋จ ํ๋ฆ์ ์์ฃผ๋ก ์ดํด๋ณผ๊ฒ์.
๋ฉ๋ชจ๋ฆฌ ๋ ์ด์์๊ณผ ์คํ, ์คํ ํ๋ ์์ ๋ํ ์ค๋ช
์ ํดํคํผ๋์๋ฅผ ๊ผญ ๋ด์ฃผ์ธ์! ๐ ์, ๊ทธ๋ผ ํดํคํผ๋์๋ฅผ ๋ดค๊ฑฐ๋ ํด๋น ๋ด์ฉ์ ์์ ๋ค๋ ๊ฒ์ ์ ์ ๋ก ํ๋ฒ ์ค๋ช
ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฌ๋ฌ๋ถ์ ํ์ฌ๋ ํ๊ต์ ์๋ค๊ฐ ์ ์ฌ์๊ฐ์ด ๋๋ฉด ์ด๋ป๊ฒ ํ๋์? ํ๋ ์ผ์ด๋ ๊ณต๋ถ๋ฅผ ๋ฉ์ถ๊ณ ์ ์ฌ์ ๋จน์ ๋ค ๋ค์ ์๋ฆฌ์ ๋์์ ์ผ์ ๋ง์น ๊ฑฐ์์.
์ด์ฒ๋ผ ํ๋ก๊ทธ๋จ์์๋ ํ์ํ ํน์ ๊ธฐ๋ฅ ํน์ ๋์์ ์ํํ๊ธฐ ์ํด์ ํจ์(์๋ธ ๋ฃจํด)๋ฅผ ํธ์ถํ๊ฒ ๋๋๋ฐ์. ์ด๋ ํ๋ก๊ทธ๋จ์ ์๋ ์คํํ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ช
๋ น์ด ๋์ ํธ์ถ๋ ํจ์์ ๋ช
๋ น์ด๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ๋ก ์ด๋ํ๊ณ ํด๋น ํจ์์ ํ ๋น๋ฐ์ ์คํ ํ๋ ์์ ์ฌ์ฉํด ๋์ํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํจ์์ ์๋์ด ๋๋๋ฉด ๋ค์ ์๋ ํธ์ถ ์ ๋ช
๋ น์ด๋ก ๋์๊ฐ๊ฒ ๋ฉ๋๋ค. ์ ๊น! โ๊ทธ๋์ ์ด๋ป๊ฒ ๋์๊ฐ๋ ๊ฑฐ์ผ?โ๋ผ๊ณ ์๊ฐ์ด ๋์์ง ์๋์? ๋ง์์. ์ด ๋ถ๋ถ์์ Return Address๊ฐ ์ฌ์ฉ๋๋ ๊ฒ์ด์ฃ . ํ์ฌ ํจ์์ ์คํ ํ๋ ์์ ์ ์ฅ๋ Return Address๋ฅผ ์ฐธ์กฐํด ๋ค์ ์๋ ์คํํ๋ ๋ช
๋ น์ด๋ก ๋์๊ฐ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋์ Overwrite๋ ์ด๋ป๊ฒ ํ ์ ์๋์?
Return Address๊ฐ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์์์ผ๋ ์ด์ Return Address Overwrite๊ฐ ๋ฌด์์ธ์ง ์ง์์ด ๊ฐ์ฃ . ๐
๋ฐ๋ก Return Address๋ฅผ ๋ฎ์ด์์ฐ๋ ๊ฒ์ด์ฃ . ๊ทธ๋ ๋ค๋ฉด, ์ด๋ป๊ฒ ๋ฎ์ด์์ฐ๋ ๊ฑธ๊น์? ์ด์ ํดํน ์๋ ค์ค๊ฒ์์ ๋ค๋ฃจ์๋ Stack Buffer Overflow๋ฅผ ๊ธฐ์ตํ์๋์? ์ด Buffer Overflow๋ฅผ(BOF) ์ด์ฉํด ์คํ์ ์์นํ Return Address๋ฅผ ์กฐ์ํด ์ฃผ๋ ๊ฒ์
๋๋ค. ์ดํดํ๊ธฐ ์ฝ๊ฒ ์์ ๋ฌธ์ ๋ฅผ ๊ทธ๋ฆผ๊ณผ ํจ๊ป Return Address๊ฐ BOF๋ก ์ธํด ๋ฎ์ด ์์์ง๋ ๊ณผ์ ์ ์ดํด๋ณผ๊ฒ์. want_to_go() ํจ์์์ ์ง์ ๊ฐ๊ณ ์ถ๋๊ณ ๋ฌผ์ด๋ณด๊ณ scanf(โ%sโ, answ); ๋ก ์
๋ ฅ์ ๋ฐ์ต๋๋ค. ํ์ง๋ง ์ด๋ค ๋ต์ ์
๋ ฅํ๋ ์ดํ printf("Nope, You can't go \\n"); ๊ฐ ์คํ๋์ด ๊ฐ ์ ์๋ ๋๋ต๋ง ๋์์ต๋๋ค. ๐๊ทธ๋ ๋ค๋ฉด ์ง์ ๊ฐ ์ ์๋ ๊ฒ์ผ๊น์...? ๋คํํ ์์
run() ํจ์์์ โOk, Byeโ๋ผ๋ ๋๋ต์ด ๋์ค๋ ํจ์๊ฐ ์๋ค์! ์ด๋ป๊ฒ ํด์ผ run() ํจ์๋ฅผ ์คํ์ํฌ ์ ์์๊น์?์์ธํ ์ดํด๋ณด๋, want_to_go() ํจ์์์ Buffer Overflow ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ค์! ์ด๋ฅผ ์ด์ฉํด์ Return Address Overwrite๋ก ์ง์ ๊ฐ๋ณด์๊ณ ์! ๐ํ์ฌ ์์ ๊ทธ๋ฆผ์ ๋ฉ์ธ ํจ์์์ want_to_go() ํจ์๋ฅผ ํธ์ถํ์ ๋ ์คํ ์์ญ์ ๋ฉ๋ชจ๋ฆฌ ์ํ์
๋๋ค. scanf() ๋ ๊ณต๋ฐฑ์ ํฌํจํ์ง ์๋ ๋ฌธ์์ด ํ ์ค์ ์
๋ ฅ๋ฐ์ง๋ง ์ด๋ ๋ฌธ์์ด ๊ธธ์ด์ ๋ํด ์ ํํ์ง ์๊ธฐ ๋๋ฌธ์ BOF๊ฐ ์ผ์ด๋ ์ ์์ต๋๋ค. ์ด ์ ์ ์ด์ฉํ๋ฉด answ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 0x10 ์ด๊ธฐ ๋๋ฌธ์ ๊ณต๋ฐฑ์ ํฌํจํ์ง ์๋ 0x10๊ฐ ์ด์์ ๋ฌธ์๋ฅผ ์
๋ ฅํด์ค๋ค๋ฉด ์ถฉ๋ถํ want_to_go() ํจ์๊ฐ ์ข
๋ฃ๋ ์ดํ ๋์๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์(want_to_go() ํจ์ ํธ์ถ ์ดํ ์คํ๋ main() ํจ์ ๋ด์ ๋ช
๋ น์ด ์ฃผ์)๊ฐ ๋ด๊ธด RET ๋ถ๋ถ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ์ ๋ฎ์ด์ธ ์ ์๊ฒ ์ฃ !๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๋ ๋๋ต์ ์
๋ ฅํ ๋ answ ๋ฐฐ์ด์ ์์ ์ฃผ์๋ถํฐ ํ์ฌ ์คํ ํ๋ ์์ RET ์์ ๋ถ๋ถ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํด ์๋ฌด ๋ฌธ์์ด๋ก ์ฑ์ฐ๊ณ (โAโ๋ฌธ์๋ก ์ฑ์๋ณผ๊ฒ์!) RET ๋ถ๋ถ์ run() ํจ์์ ์ฃผ์๋ฅผ ์
๋ ฅํด์ฃผ๋ฉด ๋๊ฒ ๋ค์. ๐ฒ ์ฑ๊ณตํ์ผ๋ ์ผ๋ฅธ ๋๋ง์น์๊ณ ์! ๐์ ๊น! ์คํ์ ๋์ ์ฃผ์์์ ๋ฎ์ ์ฃผ์๋ก ์๋ผ์ง ์๋์. ์ด๋ป๊ฒ ๋ฌธ์์ด๋ก ๋ ๋์ ์ฃผ์๋ฅผ ๋ฎ์ด์ธ ์ ์์ฃ ? ๐
๋ง์์. ๋ถ๋ช
์ค๋ช
ํ๋๋ฐ ์๋ผ๋ ๋ฐฉํฅ์ด๋ ์
๋ ฅํ ๋ฌธ์์ด์ด ๋ฉ๋ชจ๋ฆฌ์ ์จ์ง๋ ๋ฐฉํฅ์ด๋ ๋ฐ๋์ฃ . ํ!์ง!๋ง! โ์คํ ์์ญ์ด ์๋๋คโ๋ผ๋ ๊ฒ์ ์๋ฏธ๋ โ์คํ ์์ญ์ด ํ์ฅ๋๋คโ๋ผ๋ ์๋ฏธ์
๋๋ค. ์
๋ ฅํ ๋ฌธ์์ด ๋ฐ์ดํฐ๊ฐ ์จ์ง๋ ๊ฒ์ ์ด๋ฏธ ํ์ฅ๋ ์คํ ์์์ ๋ฐฐ์ด์ ํด๋นํ๋ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์ด์ผ๊ธฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฎ์ ์ฃผ์์์ ๋์ ์ฃผ์๋ก ๋ฐ์ดํฐ๊ฐ ์จ์ง๋ ๊ฒ์ด ๋ง์ต๋๋ค. ์์ญ์ด ํ์ฅ๋๋ ๊ฒ๊ณผ ๋ฐ์ดํฐ๊ฐ ์จ์ง๋ ๊ฒ์ ๋ค๋ฅธ ๊ฐ๋
์ด๋ ํท๊ฐ๋ฆฌ์ง ์๋๋ก ์ฃผ์ํด์ผ ํด์! ๐
BOF๋ฅผ ์ด์ฉํ ์ฌ์ด ํดํน ๊ธฐ๋ฒ Return Address Overwrite! ์ฌ๋ฐ๊ฒ ๋ณด์
จ๋์? ๋ค์ ์ฃผ์๋ ๋์ฑ ์์ฐจ๊ณ ์ฌ๋ฐ๋ ์ฃผ์ ๋ก ๋์์ค๊ฒ ์ต๋๋ค. ๋ชจ๋ ๋ค์ ์๊ฐ์ ๋ด์. ์๋
~ ๐ โ๏ธ ํดํน์งน์งน ๋ด์ค๋ ํฐ์์ ๋ค๋ฃจ๋ ๊ธฐ์ ๋ค์ ์ค๋ก์ง ๊ต์ก์ ์ธ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ด๋ฅผ ์
์ฉํ์ฌ ๋ฐ์ํ๋ ๋ชจ๋ ์ฑ
์์ ๋ณธ์ธ์๊ฒ ์์ต๋๋ค. ์ง์ํด์ ๋ ์ข์ ๋ด์ค๋ ํฐ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ๊ฒ์ผ๋ก ๊ธ์ ์ ์ผ๋ก ์๊ฐํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค! ์นด์นด์ค๋ฑ
ํฌ 3333-22-3886590 ใ
ใ
ใ
์ค๋ ์ ํด๋๋ฆฐ ๋ด์ฉ์ด ๋ง์์ ๋์
จ๋์? ์ฃผ์ ์น๊ตฌ๋ค์๊ฒ ๋ด์ค๋ ํฐ๋ฅผ ์ถ์ฒํด์ฃผ์ธ์! ๋ค์์ฃผ์๋ ์์ฐฌ ๋ด์ฉ์ผ๋ก ๋์์ค๊ฒ ์ต๋๋ค. ๐ ํน์ ๋ง์์ ์๋๋ ๋ถ๋ถ์ด ์์๋์? ์ฌ๊ธฐ์์ ํผ๋๋ฐฑ์ ์ ๋ฌํด์ฃผ์ธ์! ์ฌ๋ฌ๋ถ์ ์๊ฒฌ๋ค์ ์ ๊ทน ๋ฐ์ํด์ ๋์ฑ ์ ์ตํ ๋ด์ค๋ ํฐ๋ฅผ ๋ง๋ค์ด๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค. ๐ ํดํค๋ณด์ด์ฆ |