์ƒˆ์†Œ์‹

IT & Security/Reversing

[๋ฆฌ๋ฒ„์‹ฑ] ํŒจํ‚น | ํŒจ์ปค | ์‹คํ–‰์••์ถ•

  • -
๋ฐ˜์‘ํ˜•

oopsys.tistory.com/177

 

[๋ฆฌ๋ฒ„์‹ฑ] ํŒจํ‚น

ํŒจํ‚น์ด๋ž€? ํŒจํ‚น์€ ์‹คํ–‰์••์ถ•์ด๋ผ๋Š” ๋œป์„ ๊ฐ€์ง„๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ZIP, RAR๊ณผ ๊ฐ™์€ ์••์ถ•์€ ๊ทธ ์••์ถ•์„ ํ•ด์ œ ์‹œ์ผœ์•ผ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํŒจํ‚น์€ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ์ฒ˜๋Ÿผ ์‹ค

oopsys.tistory.com

 

 

ํŒจํ‚น์ด๋ž€?

 

ํŒจํ‚น์€ ์‹คํ–‰์••์ถ•์ด๋ผ๋Š” ๋œป์„ ๊ฐ€์ง„๋‹ค.

 

์ผ๋ฐ˜์ ์œผ๋กœ ZIP, RAR๊ณผ ๊ฐ™์€ ์••์ถ•์€ ๊ทธ ์••์ถ•์„ ํ•ด์ œ ์‹œ์ผœ์•ผ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 

 

ํ•˜์ง€๋งŒ ํŒจํ‚น์€ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ์ฒ˜๋Ÿผ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์‹คํ–‰(PE) ํŒŒ์ผ์„ ๋Œ€์ƒ์œผ๋กœ ํŒŒ์ผ ๋‚ด๋ถ€์— ์••์ถ•ํ•ด์ œ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด์„œ ์‹คํ–‰๋˜๋Š” ์ˆœ๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์••์ถ•์„ ํ•ด์ œ ์‹œํ‚จ ํ›„ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ธฐ์ˆ ์ด๋‹ค.

 

๋‹ค์‹œ ๋งํ•˜๋ฉด ์••์ถ•์„ ํ‘ธ๋Š” ๊ณผ์ •์—†์ด ๋ฐ”๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์‹คํ–‰์••์ถ•์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 

ํŒจํ‚น์„ ํ•˜๋Š” ์ด์œ 

 

- ๋ฐ์ดํ„ฐ ์••์ถ•(ํ”„๋กœ๊ทธ๋žจ ํฌ๊ธฐ ์ค„์ด๊ธฐ)

 

- ์•…์„ฑ์ฝ”๋“œ์—์„œ๋Š” ์ž‘์€ ์šฉ๋Ÿ‰์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋งŽ์ด ํผ์ง€๊ฒŒ ํ•˜๋ฉฐ, ๋ถ„์„์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ 

 

- ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ : anti-reversing, anti-disassembling, anti-dumping

 

- ์ทจ์•ฝํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋Š” ์ค‘์š”์ •๋ณด๋ฅผ ํฌํ•จํ•œ ์–ดํ”Œ๋ ˆํ‚ค์—์…˜์— ๋Œ€ํ•œ ๋…ธ์ถœ ์ตœ์†Œํ™”

 

-->๋ฆฌ๋ฒ„์‹ฑ ๋ฐฉํ•ด ๋ชฉ์ , ์•ˆํ‹ฐ ๋ฆฌ๋ฒ„์‹ฑ! ๋ชฉ์ ์ž„

 

๋น„์†์‹ค ์••์ถ• vs ์†์‹ค ์••์ถ•

 

๋น„์†์‹ค ์••์ถ•

 

์›๋ณธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ธˆ๋„ ํ›ผ์†ํ•˜์ง€ ์•Š๊ณ  ์šฉ๋Ÿ‰์„ ์ค„์ด๋Š” ๊ฒƒ์„ ๋น„์†์‹ค(๋˜๋Š” ๋ฌด์†์‹ค) ์••์ถ•์ด๋ผ ํ•œ๋‹ค.

 

ํŒŒ์ผ(๋ฐ์ดํ„ฐ)ํฌ๊ธฐ๋ฅผ ์ค„์—ฌ์„œ ๋ณด๊ด€ ๋ฐ ์ด๋™์— ์šฉ์ดํ•˜๋„๋ก ํ•˜๋ ค๋Š” ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

 

ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํ•ด๋‹น ์••์ถ•์„ ํ•ด์ œํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค(์ด ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์ด ๋ณด์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค.)

 

์†์‹ค ์••์ถ•

 

ํŒŒ์ผ(๋ฐ์ดํ„ฐ)์— ์˜๋„์ ์œผ๋กœ ์†์ƒ์„ ์ฃผ์–ด ์••์ถ•๋ฅ ์„ ๋†’์ด๋Š” ๊ฒƒ์„ ์†์‹ค ์••์ถ•์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์ฃผ๋กœ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํŒŒ์ผ๋“ค์—์„œ ์ธ๊ฐ„์ด ์ง€๊ฐํ•˜๊ธฐ ํž˜๋“  ๋ฒ”์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ์••์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. 

 

์••์ถ•์„ ํ•˜๋Š” ๊ณผ์ •์—์„œ ์›๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜๊ธฐ ๋•Œ๋ฌธ์— ์›๋ณธ์œผ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์—†๋‹ค.

 

๋ฐ์ดํ„ฐ ์ธก๋ฉด์—์„œ ๋ณผ ๋•Œ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

 

ํ•˜์ง€๋งŒ ์‚ฌ๋žŒ์ด ๋ณด๊ธฐ์—๋Š” ๊ทธ ์ฐจ์ด๊ฐ€ ๊ฑฐ์˜ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†๋Š” ์ˆ˜์ค€์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์••์ถ• ๋ฐฉ๋ฒ•์ด๋‹ค.

 

 

 

์ผ๋ฐ˜ ์••์ถ• vs ์‹คํ–‰ ์••์ถ•

 

์ผ๋ฐ˜ ์••์ถ•์€ ์œ„์—์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋น„์†์‹ค ์••์ถ•๊ณผ ์†์‹ค ์••์ถ•์œผ๋กœ ๋‚˜๋‰˜์–ด์ง„๋‹ค.

 

๋”ฐ๋กœ ์„ค๋ช…ํ•  ํ•„์š”๋Š” ์—†์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

์‹คํ–‰ ์••์ถ•์€ ์‹คํ–‰(PE : Portable Executable)ํŒŒ์ผ์„ ๋Œ€์ƒ์œผ๋กœ ํŒŒ์ผ ๋‚ด๋ถ€์— ์••์ถ•ํ•ด์ œ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด ์‹คํ–‰๋˜๋Š” ์ˆœ๊ฐ„์— ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์••์ถ•์„ ํ•ด์ œ ์‹œํ‚จ ํ›„ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ธฐ์ˆ ์ด๋‹ค.

 

์ถœ์ฒ˜ : ๋ฆฌ๋ฒ„์‹ฑ ํ•ต์‹ฌ ์›๋ฆฌ

 

 

ํŒจ์ปค

 

PE ํŒจ์ปค(Packer)๋ž€ ์‹คํ–‰ ํŒŒ์ผ ์••์ถ•๊ธฐ๋ฅผ ๋งํ•œ๋‹ค.

 

์ •ํ™•ํ•œ ๋ช…์นญ์€ Run-Time ํŒจ์ปค๋กœ, PE ํŒŒ์ผ ์ „๋ฌธ ์••์ถ•๊ธฐ์ด๋‹ค.

 

์‚ฌ์šฉ๋ชฉ์ 

 

- PE ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ ์ž ํ•˜๋Š” ๋ชฉ์ 

 

- PE ํŒŒ์ผ์˜ ๋‚ด๋ถ€ ์ฝ”๋“œ์™€ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ์ถ”๊ธฐ ์œ„ํ•œ ๋ชฉ์ 

 

 

ํŒจ์ปค ์ข…๋ฅ˜

 

ํŒจ์ปค๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

 

ํ‰๋ฒ”ํ•œ PEํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ์ˆœ์ˆ˜ํ•œ ์˜๋„์˜ ํŒจ์ปค์™€ ์›๋ณธ ํŒŒ์ผ์„ ํฌ๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ณ , PE ํ—ค๋”๋ฅผ ์‹ฌํ•˜๊ฒŒ ํ›ผ์†์‹œํ‚ค๋Š” ์•ฝ๊ฐ„ ๋ถˆ์ˆœํ•œ ์˜๋„์˜ ํŒจ์ปค๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

 

์ˆœ์ˆ˜ํ•œ ์˜๋„์˜ ํŒจ์ปค(VirusTotal์—์„œ ์ง„๋‹จ ์•ˆ ๋จ) : UPX, ASPack ๋“ฑ

 

๋ถˆ์ˆœํ•œ ์˜๋„์˜ ํŒจ์ปค(VirusTotal์—์„œ ์ง„๋‹จ๋จ) : UPack, PESpin, NSAnti ๋“ฑ

 

 

ํŒจํ‚น๋œ ํŒŒ์ผ์˜ ํŠน์ง•

 

Section Name์ด ์ผ๋ฐ˜์ ์ด์ง€ ์•Š๊ฑฐ๋‚˜ ํŒจ์ปค์˜ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

 

Code Section์€ ๋ณดํ†ต ์ฒซ๋ฒˆ์งธ Section์ด์ง€๋งŒ, ํŒจํ‚น ์‹œ ์ฒซ์งธ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค.

 

Code Section์€ ๋ณดํ†ต EP๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฏ€๋กœ MEM_Excute๊ถŒํ•œ์„ ๊ฐ€์ง€์ง€๋งŒ, ํŒจํ‚น ์‹œ ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

 

Unpacking ์‹œ, Packing๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋˜ ์„ธ์…˜์ด ๋น„์–ด์žˆ๊ฑฐ๋‚˜ Raw Size์™€ Virtual Size์˜ ์ฐจ์ด๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ํฐ ์„ธ์…˜์ด ์กด์žฌํ•œ๋‹ค.

 

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.