728x90

ํฌ๋„ˆ๋ธ”

ํฌ๋„ˆ๋ธ”(Pwnable)

  • ์‹œ์Šคํ…œ ํ•ดํ‚น: ์šด์˜์ฒด์ œ๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด, ํ•˜๋“œ์›จ์–ด์— ๋‚ด์žฌ๋œ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ํ•ดํ‚นํ•˜๋Š” ๊ฒƒ

< ํฌ๋„ˆ๋ธ”์˜ ๋ชฉํ‘œ >

  • ๊ถŒ๋ฆฌ์ž ๊ถŒํ•œ ํƒˆ์ทจ → ์‰˜์„ ๋”ฐ๋‚ด๋Š” ๊ฒƒ
  • ๋ณดํ†ต ์ผ๋ฐ˜ ์œ ์ €์˜ ์ž๊ฒฉ์ด ์ฃผ์–ด์ง€๋Š”๋ฐ, ํฌ๋„ˆ๋ธ”์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ ๊ถŒ๋ฆฌ์ž ์ž๊ฒฉ์„ ๋บ๋Š” ์ ˆ์ฐจ
  • ๊ถŒ๋ฆฌ์ž ๊ถŒํ•œ์„ ์–ป๊ธฐ ์œ„ํ•ด ๋Œ€๊ฐœ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜: 'system("/bin/sh")', 'execve("/bin/sh")'

 

  • ๊ถŒ๋ฆฌ์ž ๊ถŒํ•œ์„ ์–ป๊ธฐ ์œ„ํ•ด ์‰˜์„ ์—ด์–ด์•ผ ํ•˜๊ณ , ์‰˜์„ ์—ฌ๋Š” ํ•จ์ˆ˜๋“ค์ด ํ•„์š”ํ•˜๋‹ค
    • ์ด๊ฑธ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธด ๊ฒƒ์ด ์‰˜์ฝ”๋“œ
    • ์‰˜์ฝ”๋“œ(Shell Code): ์ž‘์€ ํฌ๊ธฐ์˜ ์ฝ”๋“œ๋กœ ์†Œํ”„ํŠธ์›จ์–ด ์ทจ์•ฝ์  ์ด์šฉ์„ ์œ„ํ•œ ๋‚ด์šฉ๋ถ€์— ์‚ฌ์šฉ๋จ

ํฌ๋„ˆ๋ธ” ๊ณผ์ •

[ ๊ธฐ๋ณธ : ๊ถŒ๋ฆฌ์ž ๊ถŒํ•œ ํƒˆ์ทจ ]

  1. ํ”„๋กœ๊ทธ๋žจ ์ทจ์•ฝ์  ๋ฐœ๊ฒฌ
  2. ์ทจ์•ฝ์  ๊ธฐ๋ฐ˜ ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค ์ž‘์„ฑ
  3. ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ํ•„์š”ํ•œ ์ •๋ณด ์ˆ˜์ง‘ ๋ฐ ๊ณต๊ฒฉ
  4. ๊ณต๊ฒฉ ์„ฑ๊ณต ํ›„ ๊ถŒํ•œ์„ ํƒˆ์ทจํ•˜๊ฑฐ๋‚˜ ์›ํ•˜๋Š” ์ •๋ณด GET

์„ ์ˆ˜ ์ง€์‹

  • C์–ธ์–ด ํ•ด์„ ๋Šฅ๋ ฅ
    • ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ทจ์•ฝ์ ์ด ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ์•„์•ผ ํ•จ
  • ํ”„๋กœ๊ทธ๋žจ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ (๋ฆฌ๋ˆ…์Šค ์ค‘์‹ฌ์œผ๋กœ!)
    • ์Šคํƒ, ํž™, SFP, RET ๋“ฑ
  • ๋ฆฌ๋ˆ…์Šค ์ง€์‹
    • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฆฌ๋ˆ…์Šค์˜ CLI ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰๋จ
    • FTZ Trainer & HackTheBo๋กœ ์ตํž ์ˆ˜ ์žˆ๋‹ค
  • ๋ฆฌ๋ฒ„์‹ฑ ๋Šฅ๋ ฅ
  • ์‰˜์ฝ”๋“œ(Shell code)

์–ด์…ˆ๋ธ”๋ฆฌ์–ด

ํˆด ์„ค์น˜

< x64dbg ์„ค์น˜ >

  • x64dbg: ๋™์  ๋ถ„์„ ๋„๊ตฌ, ๋””๋ฒ„๊ฑฐ
    • OllyDbg, ImmunityDbg ๋“ฑ ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ๋””๋ฒ„๊ฑฐ ์‚ฌ์šฉํ•˜์…”๋„ ๋˜์ง€๋งŒ 64bit ํŒŒ์ผ์ด ์—ด๋ฆฌ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ
    • https://github.com/x64dbg/x64dbg/releases
 

Releases · x64dbg/x64dbg

An open-source user mode debugger for Windows. Optimized for reverse engineering and malware analysis. - x64dbg/x64dbg

github.com

  • ์••์ถ• ํ•ด์ œํ•œ ํด๋” - release - x96dbg.exe ์‹คํ–‰
  • ์„ค์น˜ํ•˜๊ณ  ๋‚˜๋ฉด x32dbg(32bit ์ „์šฉ), x64dbg(64bit ์ „์šฉ) ๊ฐ๊ฐ ์ด์šฉ ๊ฐ€๋Šฅ

< IDA ์„ค์น˜ >

  • IDA: ์ •์  ๋ถ„์„ ๋„๊ตฌ, ๋””์Šค์–ด์…ˆ๋ธ”๋Ÿฌ
 

IDA Free

IDA Free The free binary code analysis tool to kickstart your reverse engineering experience.

hex-rays.com

  • ์ž์‹ ์— ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ๋‹ค์šด๋กœ๋“œ, ๋‹ค์šด ๋ฐ›์€ exe ํŒŒ์ผ ์‹คํ–‰ํ•˜์—ฌ ์„ค์น˜
  • ์„ค์น˜ ํ›„ ํ•ด๋‹น ํด๋”(IDA Freeware 8.1) - ida64.exe ์‹คํ–‰

์–ด์…ˆ๋ธ”๋ฆฌ์–ด

< ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋ž€? >

  • ์‹œ์Šคํ…œ ํ•ดํ‚น: ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๋ฐœ๊ฒฌํ•œ ์ทจ์•ฝ์ ์œผ๋กœ ๊ถŒํ•œ์„ ํƒˆ์ทจํ•˜๊ฑฐ๋‚˜ ์˜๋„ํ•˜์ง€ ์•Š์€ ํ–‰์œ„๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒƒ
  • ์†Œํ”„ํŠธ์›จ์–ด: ์ปดํ“จํ„ฐ์˜ ์–ธ์–ด(๊ธฐ๊ณ„์–ด)๋กœ ๊ตฌ์„ฑ


< x86-64 ๊ธฐ๋ณธ ๊ตฌ์กฐ >

< ๋ฐ์ดํ„ฐ ์ด๋™ - ์–ด๋–ค ๊ฐ’์„ ๋ ˆ์ง€์Šคํ„ฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฎ๊ธฐ๋„๋ก ์ง€์‹œ >


< ์‚ฐ์ˆ  ์—ฐ์‚ฐ - ๋ง์…ˆ, ๋บ„์…ˆ, ๊ณฑ์…ˆ, ๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ์„ ์ง€์‹œ >


< ๋…ผ๋ฆฌ ์—ฐ์‚ฐ - and, or, xor, neg ๋“ฑ์˜ ๋น„ํŠธ ์—ฐ์‚ฐ ์ง€์‹œ >


< ๋น„๊ต - ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ  ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ • >


< ๋ถ„๊ธฐ - rip๋ฅผ ์ด๋™์‹œ์ผœ ์‹คํ–‰ ํ๋ฆ„์€ ์ œ์–ด >


< ์Šคํƒ - ์Šคํƒ ์กฐ์ž‘ >

< ์Šคํƒ >

  • LIFO (Last in First Out), ์ฆ‰ ๋‚˜์ค‘์— ๋“ค์–ด์˜จ ๊ฒƒ์ด ๋จผ์ € ๋‚˜๊ฐ„๋‹ค.
  • ์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์„ push, ์Šคํƒ์—์„œ ๊ฐ’์„ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์„ POP์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ top์œผ๋กœ ๋ช…๋ช…๋˜๋Š” ๊ณณ์ด ํ˜„์žฌ ์Šคํƒ ํฌ์ธํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.
  • Push ๋  ๋•Œ๋งˆ๋‹ค ์Šคํƒ ํฌ์ธํ„ฐ๊ฐ€ ํ•˜๋‚˜์”ฉ ๊ฐ์†Œ๋˜๊ณ , Pop์ด ๋  ๋•Œ๋งˆ๋‹ค ์Šคํƒ ํฌ์ธํ„ฐ๊ฐ€ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€๋œ๋‹ค.


< ํ”„๋กœ์‹œ์ € - ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ ์กฐ๊ฐ >

 

 


์‹œ์Šคํ…œ ์ฝœ

  • ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์šด์˜์ฒด์ œ์˜ ์„œ๋น„์Šค๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ์ปค๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ

→ ์œ ์ €๋ชจ๋“œ์™€ ์ปค๋„๋ชจ๋“œ ์‚ฌ์ด์—์„œ ์ž‘๋™


์…ธ (Shell)

์šด์˜์ฒด์ œ

์šด์˜์ฒด์ œ๋ž€?

  • ์šด์˜์ฒด์ œ(Operating System, OS) : ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ํ•˜๋“œ์›จ์–ด์™€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์˜ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•˜๋ฉฐ, ์ปดํ“จํ„ฐ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด
  • ์šด์˜์ฒด์ œ๋Š” ์ปดํ“จํ„ฐ ๋ถ€ํŒ…๊ณผ ํ•จ๊ป˜ ์‹œ์ž‘๋˜๋ฉฐ, ์‹œ์Šคํ…œ ์ž์›์˜ ํ• ๋‹น๊ณผ ๊ด€๋ฆฌ, ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰, ์‚ฌ์šฉ์ž์™€ ํ•˜๋“œ์›จ์–ด ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

์šด์˜์ฒด์ œ์˜ ๊ธฐ๋Šฅ

  1. ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ(Process Management): ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์„ ๊ด€๋ฆฌํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ์ž์› ๊ณต์œ  ๋ฐ ์ถฉ๋Œ ๋ฐฉ์ง€
  2. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ(Memory Management): ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ• ๋‹น, ํšŒ์ˆ˜ ๋ฐ ๋ณดํ˜ธ๋ฅผ ์ œ๊ณต
  3. ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ(File System Management): ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ƒ์„ฑ, ์‚ญ์ œ ๋ฐ ๊ด€๋ฆฌ
  4. ์ž…์ถœ๋ ฅ ์žฅ์น˜ ๊ด€๋ฆฌ(I/O Device Management): ์ž…์ถœ๋ ฅ ์žฅ์น˜์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต ๋ฐ ๊ด€๋ฆฌ
  5. ๋ณด์•ˆ(Security): ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ, ์‹œ์Šคํ…œ ์ž์› ๋ณดํ˜ธ
  6. ๋„คํŠธ์›Œํ‚น(Networking): ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ํ†ต์‹  ์ง€์›

→ ์šด์˜์ฒด์ œ๋Š” ์‚ฌ์šฉ์ž์™€ ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ, ์‚ฌ์šฉ์ž์™€ ํ•˜๋“œ์›จ์–ด ์‚ฌ์ด์˜ ์ง์ ‘์ ์ธ ์ƒํ˜ธ์ž‘์šฉ ์—†์ด๋„ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค€๋‹ค.


์…ธ(Shell)

  • ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉ์ž์™€ ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด ์‚ฌ์ด๋ฅผ ์ค‘๊ณ„ํ•ด ์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ช…๋ น์–ด๋ฅผ ์šด์˜์ฒด์ œ์—์„œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ด์šฉํ•ด ๋ช…๋ น์„ ์‹คํ–‰์‹œ์ผœ ์ฃผ๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰
  • ๋ช…๋ น์–ด ํ•ด์„๊ธฐ(interpreter)์™€ ์—ฐ๊ด€๋œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ, ์‚ฌ์šฉ์ž์™€ ์šด์˜์ฒด์ œ ๊ฐ„์˜ ๋Œ€ํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค.
  • ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ช…๋ น์„ ํ•ด์„ํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋ช…๋ น์–ด ํ•ด์„๊ธฐ์™€ ํ•จ๊ป˜ ์ œ๊ณตํ•œ๋‹ค.
  • Bourne Shell(sh), C shell(csh), Korn shell(ksh), Bourne-Again shell(bash)๊ฐ€ ๋Œ€ํ‘œ์ 

์ปค๋„(kernel)


์…ธ ์ฝ”๋“œ

์…ธ ์ฝ”๋“œ(Shell code)์˜ ๊ฐœ๋…

  • ์…ธ ์Šคํฌ๋ฆฝํŠธ(Shell Script)๋กœ ์ž‘์„ฑ๋œ ์ž‘์€ ํ”„๋กœ๊ทธ๋žจ
  • ์…ธ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜๋ฉฐ, ์…ธ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด๋“ค์˜ ์‹œํ€€์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
    • ์‚ฌ์šฉ์ž๋Š” ํ„ฐ๋ฏธ๋„์—์„œ ์ผ๋ จ์˜ ๋ช…๋ น์–ด๋ฅผ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค!

 

ํฌ๋„ˆ๋ธ”์—์„œ์˜ ์…ธ ์ฝ”๋“œ

  • ์‹œ์Šคํ…œ ํ•ดํ‚น์˜ ๋ชฉํ‘œ : ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ์–ป๊ธฐ == ๊ด€๋ฆฌ์ž์˜ ์…ธ์„ ์–ป๋Š” ๊ฒƒ!
  • ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ์–ป๊ธฐ ์œ„ํ•ด ๊ด€๋ฆฌ์ž์˜ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์…ธ์„ ์—ด์–ด์•ผ ํ•˜๊ณ , ์ด๋Ÿฌํ•œ ์…ธ์„ ์—ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•จ์ˆ˜๋“ค์ด ํ•„์š”ํ•˜๋‹ค
    • ํ•ด๋‹น ํ•จ์ˆ˜๋“ค์„ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธด ๊ฒƒ์ด ์…ธ ์ฝ”๋“œ์ด๋‹ค
  • ์ž‘์€ ํฌ๊ธฐ์˜ ์ฝ”๋“œ๋กœ ์†Œํ”„ํŠธ์›จ์–ด ์ทจ์•ฝ์ ์„ ์ด์šฉํ•˜์—ฌ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ํƒˆ์ทจํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ
  • ์…ธ ์ฝ”๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ์ž‘์„ฑ๋œ ํ›„ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€๊ฒฝ๋จ

์…ธ์ฝ”๋“œ(Shell code) ์˜ˆ์‹œ


 


execve ์…ธ์ฝ”๋“œ

  • ์ž„์˜์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ์…ธ์ฝ”๋“œ(์ผ๋ฐ˜์ ์ธ ์…ธ์ฝ”๋“œ)
    • ์ตœ์‹ ์˜ ๋ฆฌ๋ˆ…์Šค๋Š” ๋Œ€๋ถ€๋ถ„ sh, bash๋ฅผ ๊ธฐ๋ณธ ์…ธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
    • ๋ฆฌ๋ˆ…์Šค์˜ ๊ธฐ๋ณธ ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ๋“ค์€ /bin/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋˜์–ด ์žˆ์Œ
      • sh ์…ธ๋„ ์—ฌ๊ธฐ์— ์ €์žฅ

'E-COPS > 14th ๋น„๊ธฐ๋„ˆ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

5. ๋””์ง€ํ„ธ ํฌ๋ Œ์‹  (2) 2024.09.12
3. ์•”ํ˜ธ  (2) 2024.09.07
2. ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ  (2) 2024.09.01
1. ์›น ๋ณด์•ˆ  (0) 2024.08.29

+ Recent posts