Shiny Lime Green Star J, [SKS! ์—ฐํ•ฉ์Šคํ„ฐ๋””] 1์ฃผ์ฐจ. broken-png / forensics 101 / png ํŒŒ์ผ ๊ตฌ์กฐ ์ •๋ฆฌ

· broken-png

์Šคํ„ฐ๋””์—์„œ ์•Œ๊ฒŒ๋œ 010 Editor๋กœ ์‚ฌ์ง„์„ ์—ด์–ด๋ดค๋‹ค. ์„ค๋ช…์—์„œ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์™€์•ผ ํ•  ์ด๋ฏธ์ง€๊ฐ€ ๋ฐ˜๋ฐ–์— ์•ˆ์™”๋‹ค๊ณ  ํ•œ๋‹ค. ์‚ฌ์ง„๋„ ๋ณด๋‹ˆ๊นŒ ๋ฐ˜์ฏค ์ž˜๋ ค์žˆ์–ด์„œ ์ด ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์•˜๋‹ค. 

sig๋ž‘ chunk0, 1, 2, 3 ์œผ๋กœ ์ด๋ฏธ์ง€๊ฐ€ ๋ถ„๋ฅ˜๋œ ๊ฒƒ ๊ฐ™์•˜๊ณ  ์ด๊ฒƒ ์ €๊ฒƒ ๋ˆŒ๋Ÿฌ๋ณด๋‹ค๊ฐ€ ์ด๋ฆ„ ์•ž์— ์žˆ๋Š” > ๋ฅผ ๋ˆ„๋ฅด๋‹ˆ ์ด๋ฆ„ ๋ณ„๋กœ ์„ค์ •ํ•˜๋Š” ์นธ์ด ๋‚˜์™”๋‹ค. ๊ทธ ์ค‘์—์„œ ํŒŒ์ผ ํฌ๊ธฐ? ํ•ด์ƒ๋„ ๊ฐ™์€ ๊ฑธ ์กฐ์ ˆ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด chunk 0์— ์žˆ๋Š” ihdr ์ธ๊ฑฐ ๊ฐ™์•„์„œ ์กฐ์ ˆ์„ ํ•ด์คฌ๋‹ค. 

์•„๊นŒ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์™€์•ผ ํ•œ๋‹ค๊ณ  ํ–ˆ์œผ๋‹ˆ ๊ฐ€๋กœ ์„ธ๋กœ ๋ชจ๋‘ 512๋กœ ์„ค์ •ํ•˜๊ณ  ์ €์žฅํ•œ ํ›„ ๋‹ค์‹œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์—ด์–ด๋ดค๋”๋‹ˆ ํ”Œ๋ž˜๊ทธ ์ „์ฒด๊ฐ€ ๋‚˜์™”๋‹ค.

 DH{image_height_property} 

 

· Forensics 101

์„ค๋ช…์— ์žˆ๋Š” ๋งํฌ๋กœ ๋“ค์–ด๊ฐ€๋‹ˆ ๊ท€์—ฌ์šด ๋ฏธ๋‹ˆ์–ธ์ฆˆ ์‚ฌ์ง„์ด ๋‚˜์˜จ๋‹ค. 010 Editor๋กœ ์—ด์–ด๋ดค๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์•ž ๋ฌธ์ œ๋ž‘ ๋‹ค๋ฅด๊ฒŒ png๊ฐ€ ์•„๋‹ˆ๋ผ jpg์—ฌ์„œ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด์•ผ ๋˜๋‚˜? ์‹ถ์—ˆ๋‹ค.

ctrl f๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ฒ€์ƒ‰์ฐฝ์ด ๋œจ๋Š”๋ฐ ์‚ฌ์ดํŠธ์—์„œ ์•Œ๋ ค์ค€ ํ”Œ๋ž˜๊ทธ ํ˜•์‹์ด CTFlearn{} ์ด๊ธธ๋ž˜ CTF๋ฅผ ๊ฒ€์ƒ‰ํ•ด๋ดค๋Š”๋ฐ ์•„๋ฌด๊ฒƒ๋„ ์•ˆ๋‚˜์™€์„œ flag๋„ ๊ฒ€์ƒ‰ํ–ˆ๋Š”๋ฐ ๋‚˜์˜ค๋Š” ๊ฑด ์—†์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•œ์ฐธ ์ฐพ์•„๋ณด๊ณ  ๊ทธ๋žฌ๋Š”๋ฐ ๊ฒ€์ƒ‰ ์นดํ…Œ๊ณ ๋ฆฌ๋ผ๊ณ  ํ•ด์•ผ๋˜๋‚˜ ์ € ๋ถ€๋ถ„์ด Hex Bytes๋กœ ๋˜์–ด์žˆ์–ด ๊ฒ€์ƒ‰์ด ์ œ๋Œ€๋กœ ์•ˆ๋œ ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋ณด๋‹ˆ Text๋„ ์žˆ์–ด์„œ ๋‹ค์‹œ ๊ฒ€์ƒ‰์„ ํ•ด๋ดค๋‹ค.

๊ฒ€์ƒ‰์„ ํ•˜๋‹ˆ flag ๋ถ€๋ถ„์ด ๋”ฑ ๋‚˜์™”๋‹ค.

 flag{wow!_data_is_cool} 

 

· PNG ํŒŒ์ผ ๊ตฌ์กฐ ์ •๋ฆฌ

PNG ํŒŒ์ผ์€ Portable Network Graphics๋กœ ๋ฌด์†์‹ค ์••์ถ• ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฏธ์ง€ ํŒŒ์ผ ํฌ๋งท์ด๋‹ค. PNG ํŒŒ์ผ์˜ ๊ตฌ์กฐ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฒญํฌ(chunk)๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ๊ฐ ์ฒญํฌ๋Š” ๊ณ ์œ  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์•„๊นŒ 010 Editor๋กœ ๋ดค๋˜ chunk[0] ์ด๊ฒŒ ์ฒญํฌ์ธ ๊ฒƒ์ด๋‹ค.

 

 

[ ์‹œ๊ทธ๋‹ˆ์ฒ˜ (Signature) ]

  • PNG ํŒŒ์ผ์€ 8 ๋ฐ”์ดํŠธ์˜ ๊ณ ์œ  ์‹œ๊ทธ๋‹ˆ์ฒ˜๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
  • 89 50 4E 47 0D 0A 1A 0A

 

[ ์ฒญํฌ (Chunks) ]

  • PNG ํŒŒ์ผ์€ ์—ฌ๋Ÿฌ ์ฒญํฌ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  • ๊ฐ ์ฒญํฌ๋Š” ๊ธธ์ด(Length), ์œ ํ˜•(Type), ๋ฐ์ดํ„ฐ(Data), CRC(Cyclic Redundancy Check)๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌธ์ œ ํ’€๋•Œ ์ฒญํฌ ์„ค์ •์„ ํ•ด์„œ ๊ธธ์ด๋ฅผ ์กฐ์ ˆํ•ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ์ด๋‹ค.

 

- IHDR

  • ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ฒญํฌ๋กœ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ : ํญ (4 ๋ฐ”์ดํŠธ), ๋†’์ด (4 ๋ฐ”์ดํŠธ), ๋น„ํŠธ ๊นŠ์ด (1 ๋ฐ”์ดํŠธ), ์ƒ‰์ƒ ์œ ํ˜• (1 ๋ฐ”์ดํŠธ), ์••์ถ• ๋ฐฉ๋ฒ• (1 ๋ฐ”์ดํŠธ), ํ•„ํ„ฐ ๋ฐฉ๋ฒ• (1 ๋ฐ”์ดํŠธ), ์ธํ…Œ๋ ˆ์ด์Šค ๋ฐฉ๋ฒ• (1 ๋ฐ”์ดํŠธ)

 

- PLTE (palette)

  • ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ๋ฅผ ์ •์˜ํ•˜๋Š” ์ฒญํฌ์ด๋‹ค.
  • ๋ฐ์ดํ„ฐ๋Š” 3 ๋ฐ”์ดํŠธ ์”ช RGB๋กœ ์ด๋ฃจ์–ด์ง„ ์—ฌ๋Ÿฌ ์ƒ‰์ƒ ๊ฐ’๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

- IDAT (Image Data)

  • ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋ฉฐ Zlib๋กœ ์••์ถ•๋œ๋‹ค.
  • ์—ฌ๋Ÿฌ IDAT ์ฒญํฌ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ์˜ฌ ์ˆ˜ ์žˆ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๊ฒฐํ•ฉํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋””์ฝ”๋”ฉํ•œ๋‹ค.
  • ์ธ์ฝ”๋”ฉ ๊ณผ์ • : ํ”ฝ์…€ ๋ฐ์ดํ„ฐ ใ…ก> Filter ใ…ก> compression ใ…ก> IDAT chunk data
  • ๋””์ฝ”๋”ฉ ๊ณผ์ • : IDAT chunk data ใ…ก> Decompression ใ…ก> Unfilter ใ…ก> Pixel data

 

- IEND (Image End) 

  • ํŒŒ์ผ์˜ ๋์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ ํ•„๋“œ๋Š” ๋น„์–ด์žˆ๋‹ค.

 

[ ๊ธฐํƒ€ ์ฒญํฌ ]

  • tEXt, zTXt, iTXt : ํ…์ŠคํŠธ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ์ฒญํฌ
  • bKGD : ๊ธฐ๋ณธ ๋ฐฐ๊ฒฝ ์ƒ‰์ƒ์„ ์ง€์ •ํ•˜๋Š” ์ฒญํฌ
  • pHYs : ์ด๋ฏธ์ง€์˜ ๋ฌผ๋ฆฌ์  ํ”ฝ์…€ ํฌ๊ธฐ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ์ฒญํฌ
  • tIME : ๋งˆ์ง€๋ง‰ ์ˆ˜์ • ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ฒญํฌ

 

[ ๋ฐ์ดํ„ฐ (Data) ]

  • ๊ฐ€๋ณ€ ๊ธธ์ด, ์ฒญํฌ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

 

[ CRC (Cyclic Redundancy Check) ]

  • 4 ๋ฐ”์ดํŠธ๋กœ ์ฒญํฌ ์œ ํ˜•๊ณผ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆํ•œ๋‹ค.

 

 

< ๋Š๋‚€ ์  >

์•„์ง 1์ฃผ์ฐจ ์ฒซ๋‚ ์ด์—ฌ์„œ ๊ทธ๋ ‡๊ฒ ์ง€๋งŒ ํฌ๋ Œ์‹์ด๋ผ๊ณ ๋งŒ ๋“ค์—ˆ์„ ๋• ๋ญ”๊ฐ€ ๋˜๊ฒŒ ์–ด๋ ต๊ณ  ๋‹ค๊ฐ€๊ฐ€๊ธฐ ํž˜๋“ ..? ๋ฉ€๊ฒŒ๋งŒ ๋Š๊ปด์กŒ๋Š”๋ฐ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ ํ’€์ด๋กœ ์ ‘๊ทผํ•˜๋‹ˆ ์‰ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ๋„ ์ˆ˜์›”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ์‚ฌ์ง„ ๊ตฌ์กฐ๋ฅผ ๋‚ด๊ฐ€ ๋œฏ๊ณ  ๊ณ ์น˜๊ณ  ์—ด์–ด๋ณด๋Š”๊ฒŒ ๋˜๊ฒŒ ํฅ๋ฏธ๋กœ์› ๋‹ค.

user-img J
wogml
ํ˜„์žฌ๊ธ€
[SKS! ์—ฐํ•ฉ์Šคํ„ฐ๋””] 1์ฃผ์ฐจ. broken-png / forensics 101 / png ํŒŒ์ผ ๊ตฌ์กฐ ์ •๋ฆฌ
ํ•จ๊ป˜ ๋ณด๋ฉด ์ข‹์„ ํฌ์ŠคํŠธ