[Dreamhack] NX & ASLR

ํ˜•์ค€ยท2023๋…„ 4์›” 5์ผ
0

Dreamhack ๊ฐœ๋…

๋ชฉ๋ก ๋ณด๊ธฐ
1/2

Static link vs Dynamic Link


  • Link(๋งํฌ)๋Š” ์–ด๋–ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ์ด๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

  • Link๋Š” ์ •์  ๋งํฌ(Static link)์™€ ๋™์  ๋งํฌ(Dynamic link)๋กœ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.



  • ๐Ÿšฉ ์žฅ์ 
    ํƒ์ƒ‰์˜ ๋น„์šฉ์ด ์ ˆ๊ฐ๋œ๋‹ค.

    ๐Ÿšฉ ๋‹จ์ 
    ์—ฌ๋Ÿฌ ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์ œ๊ฐ€ ์—ฌ๋Ÿฌ๋ฒˆ ์ด๋ฃจ์–ด์ ธ ํฌ๊ธฐ๊ฐ€ ์ปค์ง„๋‹ค.

     
  • ๐Ÿšฉ ์žฅ์ 
    ํšจ์œจ์ ์ด๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ๋งคํ•‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    ๐Ÿšฉ ๋‹จ์ 
    ์ •์ ์œผ๋กœ ๋งคํ•‘ ํ• ๋•Œ๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค.




โ“ Dynamic Link ํ•˜๋Š” ๋ฐฉ๋ฒ•


Dynamic Link๋Š” PLT์™€ GOT๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„๋‹ค

PLT (Procedure Linkage Table) : ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์žˆ๋Š” ํ”„๋กœ์‹œ์ €๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ…Œ์ด๋ธ”
GOT (Global Offset Table) : PLT๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”๋กœ ํ”„๋กœ์‹œ์ €์˜ ์ฃผ์†Œ๊ฐ€ ๋“ค์–ด์žˆ๋‹ค

์ฆ‰, PLT์™€ GOT๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ๋™์  ๋งํฌํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

PLT๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด GOT๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์† ์‹ค์ œ ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๊ตฌํ•˜์—ฌ ์‹คํ–‰ํ•œ๋‹ค
์ด๋•Œ ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜์˜ ์ฃผ์†Œ๋Š” GOT์— ์ €์žฅ๋˜์–ด ๋‹ค์Œ ํ˜ธ์ถœ์— ๋ฐ”๋กœ ์‚ฌ์šฉ๋œ๋‹ค




ASLR


ASLR (Addres Space Layout Randomization) : ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์Šคํƒ, ํž™, ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ์ž„์˜์˜ ์ฃผ์†Œ๋กœ ํ• ๋‹นํ•˜๋Š” ๋ณดํ˜ธ ๊ธฐ๋ฒ•



ASLR ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์ •๋œ๋‹ค

cat /proc/sys/kernel/randomize_va_space ๋ฅผ ํ†ตํ•ด ์ปค๋„์—์„œ ๋ณดํ˜ธ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค

0 : No ASLR
1 : ์Šคํƒ, ํž™, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, vdso
2 : 1์˜ ์˜์—ญ + brk์˜์—ญ

  • PLT์™€ GOT์˜์—ญ์€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค (PIE๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด)




NX


NX (No-eXecute) : ์‹คํ–‰์— ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊ณผ ์“ฐ๊ธฐ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๋ณดํ˜ธ๊ธฐ๋ฒ•

  • ์‹คํ–‰ ๊ถŒํ•œ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— NX ๋ณดํ˜ธ ๊ธฐ๋ฒ•์ด ์ ์šฉ๋˜๋ฉด Shell code๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.






Next Time

  • Return to Library
  • Return Oriented Programming

0๊ฐœ์˜ ๋Œ“๊ธ€