rosieblue
article thumbnail
728x90

๐Ÿค” ์ปค๋„์ด๋ž€? 

์ปค๋„์€ ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์œผ๋กœ, ์ปดํ“จํ„ฐ ์ž์›์„ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
์‚ฌ์šฉ์ž์™€๋Š” ์ง์ ‘์ ์œผ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ์šฉ์ž์˜ ๋ช…๋ น์–ด๋ฅผ ํ•ด์„ํ•˜์—ฌ ์ปค๋„๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฒˆ์—ญ๊ธฐ(์…ธ, Shell)์ด ์žˆ๋‹ค. 
 

systemcall์„ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค์—์„œ ์ปค๋„์—๊ฒŒ ๋„์›€์„ ์š”์ฒญํ•˜๊ณ , ์ปค๋„์ด CPU, Memory, Devices๋“ฑ์— ์ ‘๊ทผํ•ด์„œ ์ž‘์—…ํ•œ ํ›„ ๋‹ค์‹œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋Œ๋ ค์ค€๋‹ค.

 

 

์•„๋ž˜๋Š” 32bit ์‹œ์Šคํ…œ์—์„œ ์ปค๋„ ๊ณต๊ฐ„๊ณผ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์˜ ๊ตฌ๋ถ„์ด๋‹ค. 

์ด์ฒ˜๋Ÿผ ๋‘˜์€ ์„œ๋กœ ๋ถ„๋ฆฌ๋˜์–ด์žˆ๊ณ  ์ ‘๊ทผ ๊ถŒํ•œ๋„ ๋‹ค๋ฅด๋‹ค.

32bit ์•„ํ‚คํ…์ฒ˜๋ฉ”์„œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๊ตฌ๋ถ„

 

 

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.
[๐Ÿ–ฅ๏ธ Computer Science/System] - [Pwnable] ์‹œ์Šคํ…œ์ฝœ(syscall), ์…ธ, ์ปค๋„๋ชจ๋“œ vs ์œ ์ €๋ชจ๋“œ

 

[Pwnable] ์‹œ์Šคํ…œ์ฝœ(syscall), ์…ธ, ์ปค๋„๋ชจ๋“œ vs ์œ ์ €๋ชจ๋“œ

์˜ค๋Š˜ ๋‹ค๋ฃฐ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ปค๋„ ๋ชจ๋“œ์™€ ์œ ์ € ๋ชจ๋“œ ์‹œ์Šคํ…œ์ฝœ(syscall)์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? (+syscall๊ณผ call๊ณผ์˜ ์ฐจ์ด) ํ”„๋กœ์‹œ์ €๋ž€? syscall์˜ ์›๋ฆฌ (x86,x86_64) ์ปค๋„, ์…ธ, ์œ ์ € ์šด์˜์ฒด์ œ๋Š” ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐ๋œ

hannahsecurity.tistory.com

 
 

๐Ÿ˜† ์ปค๋„์˜ ๊ตฌ์„ฑ์š”์†Œ

์ปค๋„์€ ๊ณง ์ปดํ“จํ„ฐ ์ž์›์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ด€๋ฆฌ์ž์ด๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ž˜์ฒ˜๋Ÿผ ๊ธฐ๋Šฅ์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.
 
1) ํƒœ์Šคํฌ(Task) ๊ด€๋ฆฌ์ž
  : ๋ฌผ๋ฆฌ์  ์ž์›์ธ CPU๋ฅผ ์ถ”์ƒ์  ์ž์›์ธ ํƒœ์Šคํฌ๋กœ ์ œ๊ณต 
 
2) ๋ฉ”๋ชจ๋ฆฌ(Memory) ๊ด€๋ฆฌ์ž 
  : ๋ฌผ๋ฆฌ์  ์ž์›์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ถ”์ƒ์  ์ž์›์ธ ํŽ˜์ด์ง€๋‚˜ ์„ธ๊ทธ๋จผํŠธ๋กœ ์ œ๊ณต
 
3) ํŒŒ์ผ ์‹œ์Šคํ…œ(File System) ๊ด€๋ฆฌ์ž 
  : ๋ฌผ๋ฆฌ์  ์ž์›์ธ ๋””์Šคํฌ๋ฅผ ์ถ”์ƒ์  ์ž์›์ธ ํŒŒ์ผ๋กœ ์ œ๊ณต
 
4) ๋„คํŠธ์›Œํฌ(Network) ๊ด€๋ฆฌ์ž
 : ๋ฌผ๋ฆฌ์  ์ž์›์ธ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๋ฅผ ์ถ”์ƒ์  ์ž์›์ธ ์†Œ์ผ“์œผ๋กœ ์ œ๊ณต
 
5) ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„(Device Driver) ๊ด€๋ฆฌ์ž
 : ๊ฐ์ข… ์™ธ๋ถ€ ์žฅ์น˜์—๋Œ€ํ•œ ์ ‘๊ทผ 
 
 

๐Ÿ˜˜ ์ปค๋„์˜ ์ข…๋ฅ˜

๋‹จ์ผํ˜• ๊ตฌ์กฐ ์ปค๋„

์ดˆ์ฐฝ๊ธฐ์˜ ์šด์˜์ฒด์ œ ๊ตฌ์กฐ๋กœ, ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋ชจ๋“ˆ๋“ค ๊ตฌ๋ถ„์—†์ด ํ•˜๋‚˜๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค.
๋งˆ์น˜ mainํ•จ์ˆ˜ ์•ˆ์— ๋ชจ๋“  ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ•œ ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

๋‹จ์ผํ˜• ๊ตฌ์กฐ ์ปค๋„

์žฅ์ 

  • ๋ชจ๋“ˆ๋“ค ๊ฐ„์˜ ํ†ต์‹  ๋น„์šฉ์ด ์ ์Œ
  • ๋น ๋ฆ„

๋‹จ์ 

  • ํ•œ ๋ชจ๋“ˆ์— ๋ฌธ์ œ ์ƒ๊ธฐ๋ฉด ๋‹ค๋ฅธ ๊ฒƒ์—๊นŒ์ง€ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Œ
  • ํ˜„๋Œ€์˜ ๋ณต์žกํ•œ ์šด์˜์ฒด์ œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ์—๋Š” ์–ด๋ ต๋‹ค.
  • ์ˆ˜์ •์ด ์–ด๋ ต๋‹ค.

 

๊ณ„์ธตํ˜• ๊ตฌ์กฐ ์ปค๋„

๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋ชจ๋“ˆ๋ผ๋ฆฌ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ๊ณ„์ธต์œผ๋กœ ๋งŒ๋“  ์ปค๋„ ๊ตฌ์กฐ์ด๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ์šด์˜์ฒด์ œ๊ฐ€ ๊ณ„์ธตํ˜• ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋‹ค!

์žฅ์ 

  • ๋‹จ์ผํ˜•์— ๋น„ํ•ด ๋ฒ„๊ทธ๋‚˜ ์˜ค๋ฅ˜๋ฅผ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ ์‹œ ํ•ด๋‹น ๊ณ„์ธต๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ!
  • ๋””๋ฒ„๊น…์ด ์‰ฝ๋‹ค.

๋‹จ์ 

  • ๊ณ„์ธต์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ๊ณ„์ธต์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด  ์œ„, ์•„๋ž˜ ๊ณ„์ธต๋„ ๋™์ž‘ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์šด์˜์ฒด์ œ๊ฐ€ ์ปค์ง€๊ณ  ๋ณต์žกํ•ด์ง€๋ฉด ๋งŽ์€ ๊ณ„์ธต๋“ค์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์–ด ์ปค๋„์˜ ํฌ๊ธฐ๋„ ์ปค์ง€๊ณ  ํ•˜๋“œ์›จ์–ด์˜ ์šฉ๋Ÿ‰๋„ ๋Š˜์–ด๋‚œ๋‹ค.

 

๋งˆ์ดํฌ๋กœ ๊ตฌ์กฐ ์ปค๋„

์ด ๊ตฌ์กฐ๋Š” ์ปค๋„์—๊ฒŒ IPC, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, CPU ๊ด€๋ฆฌ ๋“ฑ์˜ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๋ถ€์—ฌํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๊ธฐ๋Šฅ๋“ค์€ ์‚ฌ์šฉ์ž ๋ชจ๋“œ์— ๋‘”๋‹ค.
 

์žฅ์ 

  • ๋ชจ๋“ˆ๋“ค์ด ๋…๋ฆฝ๋˜์–ด์žˆ์–ด ์„œ๋กœ์—๊ฒŒ ์˜ํ–ฅ x
  • ์ด์‹์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค
  • ์ปค๋„์ด ์ž‘๊ณ  ๊ฐ€๋ฒผ์›Œ ์‚ฌ์–‘์ด ๋‚˜๋Š” CPU์—๋„ ์ ์šฉ ๊ฐ€๋Šฅ

๋‹จ์ 

  • IPC overhead ๋•Œ๋ฌธ์— ๋Š๋ฆผ

 
์ถ”์ฒœ ๋งํฌ : https://kernelnewbies.org/KernelHacking

Reference

https://butter-shower.tistory.com/28

https://ardor-dev.tistory.com/22
https://5equal0.tistory.com/entry/Linux-Kernel-%EC%BB%A4%EB%84%90%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%BB%A4%EB%84%90%EC%9D%98-%EA%B5%AC%EC%A1%B0
https://sedangdang.tistory.com/173

profile

rosieblue

@Rosieblue

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!