728x90

PEํŒŒ์ผ ๊ฐœ์š”

PEํŒŒ์ผ์ด๋ž€?

  • ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์‹คํ–‰ํŒŒ์ผ ํ˜•์‹
  • ๊ทธ๋ƒฅ PEํŒŒ์ผ์€ 32bit, 64bit ํ˜•ํƒœ์˜ ์‹คํ–‰ํŒŒ์ผ์€ PE+, PE32+๋กœ ๋ถˆ๋ฆฐ๋‹ค.
  • OBJ ํŒŒ์ผ์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋‘ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํŒŒ์ผ
  • DLL, SYS ๊ฐ™์€ ํŒŒ์ผ์€ ์…ธ์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•  ์ˆœ ์—†์ง€๋งŒ ์„œ๋น„์Šค, ๋””๋ฒ„๊ฑฐ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค.
๊ตฌ๋ถ„ ์ข…๋ฅ˜
์‹คํ–‰ ๊ณ„์—ด EXE, SCR
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ณ„์—ด DLL, OCX, CPL, DRV
๋“œ๋ผ์ด๋ฒ„ ๊ณ„์—ด SYS, VXD
์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ ๊ณ„์—ด OBJ

PEํŒŒ์ผ ๊ฐœ์š”

  • PEํŒŒ์ผ์˜ ํ—ค๋” ๋ถ€๋ถ„์—๋Š” PEํŒŒ์ผ์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์ ํ˜€์žˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ์— ์–ด๋–ป๊ฒŒ ์ ์žฌ๋˜๋Š”์ง€, ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹คํ–‰๋ ์ง€, ์‹คํ–‰์—๋Š” ์–ด๋–ค DLL์ด ํ•„์š”ํ•˜๊ณ , ํ•„์š”ํ•œ ์Šคํƒ, ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๊ฐ€ ์–ผ๋งˆ์ธ์ง€ ๋“ฑ์ด PE ํ—ค๋”์— ๊ตฌ์กฐ์ฒด ํ˜•์‹์œผ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์Œ
  • ๋™์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ •๋ณด, API ์ต์ŠคํฌํŠธ ๋ฐ ์ž„ํฌํŠธ ์ •๋ณด, ์‹คํ–‰์„ ์œ„ํ•œ ์ฝ”๋“œ, ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ์ •๋ณด ๋“ฑ์„ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๊ณ  ์žˆ์Œ
  • PEํŒŒ์ผ ํฌ๋งท์„ ๊ณต๋ถ€ํ•œ๋‹ค = ์ธ๊ณต์ง€๋Šฅ ์ฃผ์š” feature๋กœ ์‚ฌ์šฉ๋  PEํ—ค๋” ๊ตฌ์กฐ์ฒด๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค
  • Feature: ๋จธ์‹ ๋Ÿฌ๋‹์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋ณ„์ ์ธ ๋…๋ฆฝ๋ณ€์ˆ˜.
    • feature๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•…์„ฑ์ฝ”๋“œ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ๊ฐ€๋ฆฌ๋Š” ์ธ๊ณต์ง€๋Šฅ์ด ์•…์„ฑ์ฝ”๋“œ์ธ์ง€ ํŒ๋ณ„ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ •๋ณด, ํ˜น์€ ๊ฑฐ๊ธฐ์— ๋„์›€์ด ๋˜๋Š” ์ •๋ณด
  • ๊ตฌ์กฐ์ฒด: ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ณ€์ˆ˜(ํฌ์ธํ„ฐ ๋ณ€์ˆ˜, ๋ฐฐ์—ด ํฌํ•จ)๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ๋Š” ๋ณตํ•ฉ ์ž๋ฃŒํ˜•์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ์ž๋ฃŒํ˜•์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ

PE์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ

PEํ—ค๋”์™€ PE๋ฐ”๋””๋กœ ๋‚˜๋‰จ

  • DOS header๋ถ€ํ„ฐ Section header๊นŒ์ง€๋ฅผ PE ํ—ค๋”๋ผ๊ณ  ํ•˜๊ณ  ๊ทธ ๋ฐ‘์˜ ์„น์…˜์„ ํ•ฉ์ณ์„œ PE ๋ฐ”๋””๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ์œ„์น˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํŒŒ์ผ๊ณผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‹ค๋ฅด๋‹ค
    • ํŒŒ์ผ = offset
    • ๋ฉ”๋ชจ๋ฆฌ = ์ฃผ์†Œ(์ ˆ๋Œ€์ฃผ์†Œ)
  • ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ์‹œ์ผœ์„œ CPU ์ž์›์„ ํ• ๋‹นํ•œ๋‹ค. ์ด๋•Œ ํŒŒ์ผ์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ๋˜๋ฉด ๋ชจ์–‘(์„น์…˜ ํฌ๊ธฐ, ์œ„์น˜ ๋“ฑ)์ด ๋‹ฌ๋ผ์ง.
  • ํŒŒ์ผ ๋‚ด์šฉ์€ ๋ณดํ†ต ์ฝ”๋“œ(.txt๋กœ ๋œ ์„น์…˜), ๋ฐ์ดํ„ฐ(.data), ๋ฆฌ์†Œ์Šค(.rsrc) ์„น์…˜์œผ๋กœ ๋‚˜๋‰˜์–ด์„œ ์ €์žฅ๋˜๊ณ  ์„น์…˜๊ณผ ์†์„ฑ์ด ์œ ์‚ฌํ•œ ๋ฐ์ดํ„ฐ๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
  • ์„น์…˜ ์œ ํ˜•์ด๋‚˜ ๊ฐœ์ˆ˜, ํฌ๊ธฐ๋Š” ๊ฐœ๋ฐœ ๋„๊ตฌ์™€ ๋นŒ๋“œ ์˜ต์…˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ณ , ์ค‘์š”ํ•œ ๊ฑด ๊ฐ ์šฉ๋„๋ณ„๋กœ ์„น์…˜์ด ์—ฌ๋Ÿฌ ๊ฐœ ๋‚˜๋‰˜์–ด์„œ ์ €์žฅ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

  • ์ปดํ“จํ„ฐ์—์„œ ํŒŒ์ผ, ๋ฉ”๋ชจ๋ฆฌ, ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ๊ฐ™์€ ๊ฑธ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ตœ์†Œ ๊ธฐ๋ณธ ๋‹จ์œ„ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•จ
  • ํŒŒ์ผ/๋ฉ”๋ชจ๋ฆฌ์—์„œ ์„น์…˜์˜ ์‹œ์ž‘ ์œ„์น˜๋Š” ๊ฐ ํŒŒ์ผ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ตœ์†Œ ๊ธฐ๋ณธ ๋‹จ์œ„์˜ ๋ฐฐ์ˆ˜์— ํ•ด๋‹นํ•œ๋‹ค.
    • ๊ทธ๋ž˜์„œ ์‹œ์ž‘์ฃผ์†Œ๊ฐ€ ๋ฐฐ์ˆ˜๋กœ ๋”ฑ๋”ฑ ๋Š์–ด์ง€๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŒŒ์ผ๊ณผ ๋ฉ”๋ชจ๋ฆฌ์˜ ํŒŒ์ผ ํ• ๋‹น(alignment)์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ, ๋””์Šคํฌ์ƒ์—์„œ์™€ ๋ฉ”๋ชจ๋ฆฌ์ƒ์—์„œ ์‚ฌ์ด์ฆˆ๊ฐ€ ์กฐ๊ธˆ์”ฉ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋นˆ ๊ณต๊ฐ„์„ NULL๋กœ ์ฑ„์›Œ๋ฒ„๋ฆฐ๋‹ค.
    • ์ฆ‰, null๊ณต๊ฐ„์œผ๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•œ๋‹ค.
  • ์ฃผ์†Œ ํ• ๋‹น ๋ฐฉ์‹์ด ๋‹ค๋ฅธ ์ด์œ ๋Š”?
    • ๋ฉ”๋ชจ๋ฆฌ๋Š” VA๋ฅผ ํ™œ์šฉํ•˜๊ณ , PE๋Š” RVA๋ฅผ ํ™œ์šฉํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ.
    • ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ์ด์œ ๋Š” ๋งŒ์•ฝ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์˜ฎ๊ธฐ๋Š” ๋ฐ ๊ทธ ์œ„์น˜์— ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด ์ด๋ฏธ ์žˆ์„ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ์ž๋ฆฌ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋Š”๋ฐ ์ž๋ฆฌ๋ฅผ ๋ณ€๊ฒฝ ์•ˆ ํ•˜๋ฉด ์ •์ƒ์  ์‹คํ–‰ ๋ถˆ๊ฐ€
    • ๋”ฐ๋ผ์„œ, Relocation์ด ๊ฐ€๋Šฅํ•œ RVA๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์šด์˜ํ•ด์•ผ ํ•œ๋‹ค. 
    • ๊ธฐ์ค€์œ„์น˜๋Š” ๋ณ€ํ•ด๋„ ๊ธฐ์ค€ ์œ„์น˜์— ๋Œ€ํ•œ ์ƒ๋Œ€์  ์ฃผ์†Œ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ฌด ๋ฌธ์ œ์—†์ด ์›ํ•˜๋Š” ์ •๋ณด์— ์•ก์„ธ์Šค ๊ฐ€๋Šฅ
    • VA(Virtual Address): ํ”„๋กœ์„ธ์Šค ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ ˆ๋Œ€์ฃผ์†Œ
    • RVA(Relative Virtual Address(offset)): ์–ด๋Š ๊ธฐ์ค€ ์œ„์น˜(ImageBase)์—์„œ๋ถ€ํ„ฐ์˜ ์ƒ๋Œ€์ฃผ์†Œ

 DOS HEADER

  • Microsoft๊ฐ€ peํฌ๋งท์„ ๊ฐœ๋ฐœํ•  ๋•Œ, ๋‹น์‹œ ์“ฐ์ด๋˜ DOS ํŒŒ์ผ์— ๋Œ€ํ•œ ํ•˜์œ„ํ˜ธํ™˜์„ฑ์„ ์ข‹๊ฒŒ ์„ค๊ณ„ํ•จ
  • ๋”ฐ๋ผ์„œ PEํ—ค๋”์˜ ์ œ์ผ ์•ž๋ถ€๋ถ„์€ ๊ธฐ์กด DOS EXE header๋ฅผ ํ™•์žฅํ•œ 'IMAGE DOS HEADER'๋กœ ๋งŒ๋“ฆ
    • IMAGE DOS HEADER = ๊ธฐ์กด DOS EXE HEADER์˜ ํ™•์žฅ
  • ์—ฌ๊ธฐ์„œ ์ œ์ผ ์ค‘์š”ํ•œ ๋ฉค๋ฒ„๋Š” e_magic๊ณผ e_ifanew
  • ๋ชจ๋“  ํŒŒ์ผ์€ ์‹œ์ž‘ ๋ถ€๋ถ„(e_magic)์— DOS signature("MZ", ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์—์„œ DOS ์‹คํ–‰ํŒŒ์ผ์„ ์„ค๊ณ„ํ•œ ์ฃผ๋น„์ฝ”๋ธŒ์Šคํ‚ค์˜ ์˜๋ฌธ ์ด๋‹ˆ์…œ)๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  e_lfanew ๊ฐ’์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜์— NT header ๊ตฌ์กฐ์ฒด๊ฐ€ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.

DOS Header & DOS stub

  • ์‹œ์ž‘ ๋ถ€๋ถ„์— e-magic("MZ")์ด ์žˆ๊ณ  ํ—ค๋”์˜ ๋๋ถ€๋ถ„์— 00 00 00 E0์œผ๋กœ e-lfanew๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
    • NT header ๊ตฌ์กฐ์ฒด๊ฐ€ 0x00 00 00 E0์— ์กด์žฌํ•œ๋‹ค๋Š” ๋œป
  • DOS Stub์€ ํ—ค๋” ๋ฐ”๋กœ ๋ฐ‘์— ์กด์žฌํ•˜๋Š” ๋ถ€๋ถ„์ธ๋ฐ, ์—†์–ด๋„ ํŒŒ์ผ ์‹คํ–‰์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.
  • ์œˆ๋„์šฐ์—์„œ 40~4D ์˜์—ญ๊นŒ์ง€, ์ฆ‰ DOS Stub ์ฒซ ์ค„ 21๊นŒ์ง€๋Š” 16๋น„ํŠธ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ช…๋ น์–ด
  • ์œˆ๋„์šฐ์—์„œ๋Š” ์•„์˜ˆ ์ด์ชฝ ์ฝ”๋“œ๋ฅผ ๋ฌด์‹œ(32๋น„ํŠธ ๊ธฐ๋„ ํ•˜๊ณ , PE์—์„œ๋Š” ์‹คํ–‰ ์•ˆ๋จ), ๊ทผ๋ฐ DOS ๋””๋ฒ„๊ฑฐ๋กœ ์‹คํ–‰ํ•˜๋ฉด ์ € ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ์ € ๋ฌธ์žฅ์ด ์ถœ๋ ฅ๋˜๋Š” ๊ตฌ์กฐ

DOS STUB - Rich Header

  • Rich Header๋Š” DOS Stub ๋ถ€๋ถ„์— ๋‹ด๊ฒจ์ ธ ์žˆ๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ๋‚˜ ๋ง์ปค ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ์Œ.
  • ์‹คํ–‰ํŒŒ์ผ์˜ ์•…์„ฑ ์œ ๋ฌด๋ฅผ ํŒ๋‹จํ•  ๋•Œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋‚˜, ์ปดํŒŒ์ผ๋Ÿฌ๋‚˜ ๋ง์ปค๋ฅผ ํ†ตํ•ด ๊ณต๊ฒฉ๊ทธ๋ฃน์„ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Œ
  • Rich identifier ์ด์ „๊นŒ์ง€์˜ ๋ถ€๋ถ„์„ checksum๊ณผ XOR ์—ฐ์‚ฐ ์‹œ ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ

https://wogh8732.tistory.com/212

 

Rich header ๊ตฌ์กฐ

1. RICH header ๋ž€? Rich ํ—ค๋”๋ž€ ๋ฌธ์„œํ™” ๋˜์ง€ ์•Š์€ ๊ตฌ์กฐ์ด๋ฉฐ ์ปดํŒŒ์ผ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค. ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ •๋ณด๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์œ ์‚ฌ๋„ ์ธก์ •์— ์•„์ฃผ ํฐ ๋„์›€์ด ๋˜๋Š” ํŠน์ง•๋“ค์€ ์•„๋‹ˆ์ง€๋งŒ, ๋ถ€์ˆ˜์ ์œผ๋กœ ํŒ๋‹จ์„

wogh8732.tistory.com

 https://swpose.tistory.com/4

 

About Rich Header

๋ธ”๋กœ๊ทธ ์ด์ „์œผ๋กœ ์ž‘์„ฑ์‹œ๊ฐ„ ๋ณ€๊ฒฝ๋จ - ๊ธฐ์กด [2019.01.03 00:47] ์ž‘์„ฑ 1. OverviewKaspersky lab์˜ GReAT ํŒ€์€ Rich Header ๋ถ„์„์„ ํ†ตํ•ด ๊ณต๊ฒฉ ๊ทธ๋ฃน์„ ๋ฐํ˜€๋‚ธ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋‹ค. ํ•ด๋‹น ๋‚ด์šฉ์„ ๋‹ด์€ ๋ณด๊ณ ์„œ๊ฐ€ ๊ณต๊ฐœ๋˜์–ด ์žˆ์œผ๋ฉฐ

swpose.tistory.com


NT HEADER

  • ๋ณธ๊ฒฉ์ ์ธ PE Header๋กœ PE Header๋Š” IMAGE_NT_HEADER ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ์ด 3๊ฐœ์˜ ๋ฉค๋ฒ„๋กœ ๋˜์–ด ์žˆ๋‹ค.
    • ์‹œ๊ทธ๋‹ˆ์ฒ˜
    • File Header
    • Optional Header
  • ์‹œ๊ทธ๋‹ˆ์ฒ˜๋Š” "PE00"์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” 4๋ฐ”์ดํŠธ ๊ธธ์ด์˜ ๋ฌธ์ž์—ด

NT HEADER(File Header)

 

1. Machine

  • CPU๋ณ„๋กœ ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  Intel 386 ํ˜ธํ™˜ ์นฉ์€ 014c์˜ ๊ฐ’์ด๋‹ค.
  • ๋ฆฌํ‹€ ์•ค๋””์•ˆ ๋ฐฉ์‹: ์ €์žฅํ•  ๋•Œ ํ•˜์œ„ ๋ฐ”์ดํŠธ, ์ฆ‰ ์ž‘์€ ์ชฝ์„ ๋จผ์ € ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹
  • ์ปดํ“จํ„ฐ์— intํ˜• 4๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ 0x01 02 03 04๋ฅผ ์ €์žฅํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด, ๋ฆฌํ‹€ ์•ค๋””์•ˆ ๋ฐฉ์‹์œผ๋กœ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— 04 03 02 01 ์ˆœ์œผ๋กœ ์ €์žฅ๋œ๋‹ค.
  • Intel ๊ธฐ๋ฐ˜ ์œˆ๋„์šฐ๋Š” ๋ฆฌํ‹€ ์•ค๋””์•ˆ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ๋ฐ”๊พธ์„œ 4C 01 ์ด๋ ‡๊ฒŒ ๋˜์–ด์žˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฏ€๋กœ, Intel 386 ํ˜ธํ™˜ ์นฉ์— ๋งž๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

 

2. NumberOfSections

์„น์…˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถ€๋ถ„

 

3. SizeOfOptionalHeader

  • IMAGE_NT_HEADERS์˜ ๋งˆ์ง€๋ง‰ ๋ฉค๋ฒ„์ธ IMAFE_OPTIONAL_HEADER ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถ€๋ถ„
  • PEํŒŒ์ผ์€ ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ๋ฆฌ์†Œ์Šค ๊ฐ™์€ ๊ฒƒ๋“ค์ด ๊ฐ๊ฐ ์„น์…˜์— ๋‚˜๋‰˜์–ด์„œ ์ €์žฅ๋˜๋Š”๋ฐ ์ด ๋ถ€๋ถ„์€ ๊ทธ ์„น์…˜์ด ๋ช‡ ๊ฐœ์ธ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถ€๋ถ„
  • ์ด ๋ถ€๋ถ„์€ 0๋ณด๋‹ค ์ปค์•ผ ํ•˜๊ณ  ์ •์˜๋œ ์„น์…˜ ๊ฐœ์ˆ˜๋ž‘ ์‹ค์ œ ์„น์…˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.
    • 0๋ณด๋‹ค ์ž‘์œผ๋ฉด ์‹คํ–‰์ด ์•ˆ๋จ, ์„น์…˜์ด ์—†๋Š” ๊ฒƒ
    • ํ˜น์€ ์ •์˜๋œ ์„น์…˜ ๊ฐœ์ˆ˜๊ฐ€ ์‹ค์ œ ์„น์…˜ ๊ฐœ์ˆ˜๋ณด๋‹ค ์ ์œผ๋ฉด ๋’ท๋ถ€๋ถ„ ์„น์…˜์ด ์ธ์‹๋˜์ง€ ์•Š๊ธฐ๋„ ํ•จ
  • SizeOfOptionalHeader์˜ ๊ฒฝ์šฐ๋Š” optional header์˜ ํฌ๊ธฐ๋ฅผ ๋ช…์‹œํ•˜๋Š” ๋ถ€๋ถ„์ธ๋ฐ, 32๋น„ํŠธ ํŒŒ์ผ์ธ์ง€, 64๋น„ํŠธ ํŒŒ์ผ์ธ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„

4. Characteristics

  • ํŒŒ์ผ์˜ ์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’. 
  • ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•œ์ง€, DLL ํŒŒ์ผ์ธ์ง€ ๋“ฑ์˜ ์ •๋ณด๋“ค์ด bit OR ํ˜•์‹์œผ๋กœ ์ €์žฅ๋จ
  • DLL์ด๋‚˜ OBJ ํŒŒ์ผ์ฒ˜๋Ÿผ ์…ธ์—์„œ ์‹คํ–‰์ด ๋˜์ง€ ์•Š๊ณ  ์„œ๋น„์Šค๋‚˜ ๋””๋ฒ„๊ฑฐ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ
    • 0002h, ์ฆ‰ IMAGE_FILE_EXECUTABLE์ด ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ
  • TIMESTAMP๋ผ๋Š” ๋ฉค๋ฒ„๋Š” ํ•ด๋‹น ํŒŒ์ผ์ด ๋นŒ๋“œ๋œ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ด๊ณ , ํŒŒ์ผ ์‹คํ–‰์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ
  • ์‹ค์ œ ์นจํ•ด์‚ฌ๊ณ ์—์„œ ํŒŒ์ผ์˜ ์ƒ์„ฑ์‹œ์ ์ด๋‚˜ ์นจํˆฌ์‹œ์ ์œผ๋กœ ์‹œ๊ฐ„์„ ์ถ”์ ํ•  ๋•Œ๋Š” ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ธ๊ณต์ง€๋Šฅ ์ œ์ž‘์—๋Š” ๋ณ„๋‹ฌ๋ฆฌ feature๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ

          • Machine: 4byte → 01 4C(32bit Intel 386 ํ˜ธํ™˜ ์นฉ)
          • NumberOfsctions: 4byte → 00 03(3๊ฐœ)
          • Timestamp: 8byte → 41 10 7C C3
          • Offset to Symbol table: 8byte → 00 00 00 00
          • Number of Symbols: 8byte → 00 00 00 00
          • Size of Optional Header: 4byte → 00 E0
          • Characheristics: 4byte → 01 0F
            • IMAGE_FILE_RELOCS_STRIPPED  0x0001
            • IMAGE_FILE_EXECUTABLE_IMAGE  0x0002
            • IMAGE_FILE_LINE_NUMS_STRIPPED  0x0004
            • IMAGE_FILE_LOCAL_SYMS_STRIPPED  0x0008
            • IMAGE_FILE_32BIT_MACHINE  0x0100
            • → 1+2+4+8+=15 (16์ง„์ˆ˜ ๋ณ€ํ™˜ ์‹œ 0F๋กœ ๋ณ€ํ™˜๋จ)

NT HEADER(Optional Header)

์ ˆ๋Œ€์ฃผ์†Œ์™€ ํฌ๊ธฐ

  • Magic ๋„˜๋ฒ„๋Š” 32๋น„ํŠธ๋Š” 10B์˜ ๊ฐ’์„, 64๋น„ํŠธ๋Š” 20B์˜ ๊ฐ’์„ ๊ฐ€์ง
  • AddressOfEntryPoint์˜ ๊ฒฝ์šฐ, EP์˜ RVA(์ƒ๋Œ€์ฃผ์†Œ)๋ฅผ ๋‚˜ํƒ€๋‚ธ ๊ฑด๋ฐ, EP๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ตœ์ดˆ๋กœ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ์˜ ์‹œ์ž‘ ์ฃผ์†Œ์ž„.
    • ๋”ฐ๋ผ์„œ, ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘์ ์œผ๋กœ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ฐ’

  • EXE, DLL ํŒŒ์ผ์€ user memory ์˜์—ญ์ธ 0~7FFFFFFF ๋ฒ”์œ„์— ๋กœ๋”ฉ
  • SYS๋Š” ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ธ 80000000~FFFFFFFF ๋ฒ”์œ„์— ๋กœ๋”ฉ
  • PE ๋กœ๋”๋Š” PEํŒŒ์ผ์„ ๋กœ๋”ฉํ•  ๋•Œ, ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉํ•œ ๋‹ค์Œ EIP ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์„ ImageBase+AddressOfEntryPoint ๊ฐ’์œผ๋กœ ์„ธํŒ…ํ•จ
  • ImageBase๋Š” PEํŒŒ์ผ์ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋กœ๋”ฉ๋˜๋Š” ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ„
    • ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ๋„๊ตฌ๊ฐ€ ๋งŒ๋“  exe ํŒŒ์ผ์˜ ImageBase๋Š” 00400000์ด๊ณ , DLL์€ 10000000 ์ž„.
  • EIP ๋ ˆ์ง€์Šคํ„ฐ: Extended Insturction Pointer
    • CPU๊ฐ€ ์ฒ˜๋ฆฌํ•  ๋ช…๋ น์˜ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ„
    • ๋‹ค์Œ์—” ์–ด๋”œ ๊ฐ€์„œ ๋ญ˜ ํ•˜์ง€?๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ ˆ์ง€์Šคํ„ฐ
    • ํ•ด๋‹น PE๊ฐ€ ์‹œ์ž‘๋˜๋„๋ก CPU์˜ ๋‹ค์Œ ์ฒ˜๋ฆฌ์ง€์ ์„ PEํŒŒ์ผ์˜ ์‹œ์ž‘์ ์œผ๋กœ ์˜ฎ๊ฒจ์ฃผ๋Š” ๊ฒƒ

  • ํŒŒ์ผ์—์„œ ์„น์…˜์˜ ์ตœ์†Œ๋‹จ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฑด FileAlignment
  • ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์„น์…˜์˜ ์ตœ์†Œ๋‹จ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฑด SectionAlignment
  • ๋‘ ๊ฐ’์€ ๊ฐ™์„ ์ˆ˜๋„, ๋‹ค๋ฅผ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ ํŒŒ์ผ/๋ฉ”๋ชจ๋ฆฌ์˜ ์„น์…˜ ํฌ๊ธฐ๋Š” ๋ฐ˜๋“œ์‹œ FileAlignment / SectionAlignment์˜ ๋ฐฐ์ˆ˜์—ฌ์•ผ ํ•จ

  • SizeOfImage: PE ํŒŒ์ผ์ด ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ๋˜์—ˆ์„ ๋•Œ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์—์„œ PE Image๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ํฌ๊ธฐ
    • ์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ผ ํฌ๊ธฐ(size)์™€ PE ์ด๋ฏธ์ง€๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ๋œ ํฌ๊ธฐ(SizeOfImage)๋Š” ๋‹ค๋ฆ„
  • SizeOfHeaders: PE ํ—ค๋”์˜ ์ „์ฒด ํฌ๊ธฐ, FileAlignment์˜ ๋ฐฐ์ˆ˜
    • ํŒŒ์ผ ์‹œ์ž‘์ง€์ ์—์„œ SizeOfHeader์˜ ๊ธธ์ด๋งŒํผ ๋–จ์–ด์ง„ ์ง€์ ์— ์ฒซ ๋ฒˆ์งธ ์„น์…˜์ด ์œ„์น˜ํ•จ
    • ํ—ค๋” ๋‹ค์Œ์— ์„น์…˜์ด ๋‚˜์˜จ๋‹ค๋Š” ๊ฑธ ์ƒ๊ฐํ•ด ๋ณด๋ฉด ๋จ

  • Subsystem: ์ด subsystem์˜ ๊ฐ’์œผ๋กœ ์‹œ์Šคํ…œ ๋“œ๋ผ์ด๋ฒ„ ํŒŒ์ผ(.sys)์ธ์ง€ ์ผ๋ฐ˜ ์‹คํ–‰ ํŒŒ์ผ(.exe, .dll)์ธ์ง€ ๊ตฌ๋ถ„ ๊ฐ€๋Šฅ
    • ํ‘œ๋Š” sybsystem ๊ฐ’์— ๋”ฐ๋ผ ๊ตฌ๋ถ„๋˜๋Š” ๊ฒƒ๋“ค
      • 1์ด๋ฉด ์‹œ์Šคํ…œ ๋“œ๋ผ์ด๋ฒ„์™€ ๊ฐ™์€ sysํŒŒ์ผ
      • 2๋ฉด ๋ฉ”๋ชจ์žฅ ๊ฐ™์€ ์ฐฝ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
      • 3์ด๋ฉด cmd ๊ฐ™์€ ์ฝ˜์†” ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • NumberOfRvaAndSizes: ๋ฐ”๋กœ ๋‹ค์Œ ๋ฉค๋ฒ„์ธ DataDirectory ๋ฐฐ์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ„
    • ๋งจ ์œ„์— Define์œผ๋กœ ๊ฐœ์ˆ˜๊ฐ€ 16์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ์ง€๋งŒ, ๋กœ๋”๋Š” ์ด ๋ณ€์ˆ˜๋กœ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ์ธ์‹ํ•จ.

 

  • DataDirectory: IMAGE_DATA_DIRECTORY ๊ตฌ์กฐ์ฒด์˜ ๋ฐฐ์—ด
    • ๋ฐฐ์—ด์˜ ๊ฐ ํ•ญ๋ชฉ๋งˆ๋‹ค ์ •์˜๋œ ๊ฐ’์„ ๊ฐ€์ง
    • ์—ฌ๊ธฐ์„œ EXPORT, IMPORT, RESOURCE, TLS Directory๊ฐ€ ์ค‘์š”ํ•œ๋ฐ, ๊ทธ์ค‘์—์„œ๋„ EXPORT, IMPORT DIRECTORY๊ฐ€ ํŠนํžˆ ์ค‘์š”ํ•˜๋‹ค!

 

'EVI$ION > ์ธ๊ณต์ง€๋Šฅ ์•…์„ฑ์ฝ”๋“œ ๋ถ„๋ฅ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[STUDY] #WEEK3 - QUIZ  (0) 2024.10.04
[SESSION] 3. PEํŒŒ์ผ(2)  (1) 2024.10.04
[STUDY] #WEEK2 - QUIZ  (0) 2024.09.24
[SESSION] 1. ๋ฆฌ๋ฒ„์‹ฑ ๊ธฐ์ดˆ  (0) 2024.09.22
[SESSION] OT  (1) 2024.09.21

+ Recent posts