์ƒˆ์†Œ์‹

IT & Security/Reversing

๋ฆฌ๋ฒ„์‹ฑ ๊ธฐ์ดˆ

  • -
๋ฐ˜์‘ํ˜•

๋ชจ๋“ ๋‚ด์šฉ์˜ ์ถœ์ฒ˜๋Š” ๊ตฌ๊ธ€, ๊ตฌ๊ธ€ ์œ„ํ‚ค๋ฐฑ๊ณผ, ๊ทธ์™ธ์˜ ๋ธ”๋กœ๊ทธ ๋“ฑ์„ ์ฐธ๊ณ  ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ํ•™๊ต ์ˆ˜์—…์‹œ๊ฐ„์˜ ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๊ธ€์„ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ฒ„์‹ฑ ๊ธฐ์ดˆ์— ๋Œ€ํ•œ ๋„์›€์ด ๋  ๋“ฏ ํ•˜์—ฌ ์˜ฌ๋ ค ๋†“์€ ๊ฒƒ์ด๋ฉฐ,์ƒ์šฉ๋ชฉ์ ์ด ์•„๋‹™๋‹ˆ๋‹ค.

 


 

1-1. ๋ฆฌ๋ฒ„์‹ฑ ์—”์ง€๋‹ˆ์–ด๋ง

 

๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง(reverse engineering, RE) ๋˜๋Š” ์—ญ๊ณตํ•™(้€†ๅทฅๅญธ)์€ ์žฅ์น˜ ๋˜๋Š” ์‹œ์Šคํ…œ์˜ ๊ธฐ์ˆ ์ ์ธ ์›๋ฆฌ๋ฅผ ๊ทธ ๊ตฌ์กฐ๋ถ„์„์„ ํ†ตํ•ด ๋ฐœ๊ฒฌํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. ์ด๊ฒƒ์€ ์ข…์ข… ๋Œ€์ƒ(๊ธฐ๊ณ„ ์žฅ์น˜, ์ „์ž ๋ถ€ํ’ˆ, ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ๊ทธ๋žจ ๋“ฑ)์„ ์กฐ๊ฐ๋‚ด์„œ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ์œ„ํ•ด, ๋˜๋Š” ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ์ƒˆ ์žฅ์น˜๋ฅผ ์›๋ณธ์˜ ์ผ๋ถ€๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋Œ€์ƒ์˜ ์„ธ๋ถ€์ ์ธ ์ž‘๋™์„ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•œ๋‹ค.

 

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

 

 

1-2. ๋ฐ”์ด๋„ˆ๋ฆฌ

 

-  ๋ฐ”์ด๋„ˆ๋ฆฌ๋ž€ 2์ง„์ˆ˜ ๋ผ๋Š” ์˜๋ฏธ๋กœ์„œ, ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์€ 0๊ณผ1, ์ฆ‰ 2์ง„์ˆ˜๋กœ ์ด๋ค„์ง„ ํŒŒ์ผ์„ ์˜๋ฏธํ•œ๋‹ค. ํ•˜์ง€๋งŒ '๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„'์—์„œ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ์ด๊ฒƒ๋ณด๋‹ค ์ œํ•œ์ ์ธ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค. ์ข‹์€ ์˜๋ฏธ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ๋งํ•œ๋‹ค. ํ˜•์‹์œผ๋กœ๋Š” ์œˆ๋„์šฐ์˜ PE๋‚˜ ๋ฆฌ๋ˆ…์Šค์˜ ELF๊ฐ™์€ ๊ฒƒ์ด ์žˆ๋‹ค. 

 

-  ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๋ถ„์„ํ•  ๋•Œ, ์šฐ์„  ์‹ค์ œ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ด ๋ณด๋ฉด ์–ด๋–ค ๋™์ž‘์„ ํ•˜๋Š”์ง€ ๋Œ€๋žต์ ์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋”์šฑ ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ์ฝ”๋“œ๋ฅผ ์ฝ์–ด์•ผ ํ•œ๋‹ค. ๋™์ž‘์„ ํ™•์ธํ•ด๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  ์‹คํ–‰ํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ œ์ผ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ด๊ฒƒ๋งŒ์œผ๋กœ๋Š” ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ์ด์ƒ์˜ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ „์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•ด ๋„์›€์„ ๋ฐ›๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š”๋‹ค. ๋‹จ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์ฝ”๋“œ๋Š” ํ•œ๋ฒˆ ์ปดํŒŒ์ผ๋œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ disassemble์ด๋ผ๋Š” ์ฒ˜๋ฆฌ ๊ณผ์ •์œผ๋กœ ์–ป์–ด์ง„ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ฝ๊ฒŒ ๋˜๋Š”๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์ด mov add์™€๊ฐ™์€ assembly์–ด์ด๋‹ค. disassemble์ด๋ž€ ๊ธฐ๊ณ„์–ด๋กœ ๋œ ์ฝ”๋“œ๋ฅผ ์‚ฌ๋žŒ์ด ํ•ด์„ํ•˜๊ธฐ ์‰ฌ์šด ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

1-3. ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„

 

๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„(Binary Analysis) ํˆด์€ ์–ด๋–ค ํŒจ์ปค๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ํŒจํ‚นํ–ˆ๋Š”์ง€, ์–ด๋–ค ์–ธ์–ด๋กœ ์ œ์ž‘๋œ ํ”„๋กœ๊ทธ๋žจ์ธ์ง€๋ฅผ ์•Œ์•„๋‚ผ ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ํŒŒ์ผ์„ ์—ด์–ด๋„ ๋˜๊ณ  ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์„ ํ•˜์—ฌ ํŒŒ์ผ์„ ๋„ฃ์„ ์ˆ˜๋„ ์žˆ๋‹ค.

์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•ด์„œ๋Š” ์ด๋Ÿฌํ•œ ์„ ์ฒœ์  ์ทจ์•ฝ์ ๊ณผ ๊ฐ™์€ ๊ฒฐํ•จ์ด ์žˆ๋Š”์ง€ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†์ง€๋งŒ ์ด๋ฅผ ์ฐพ์•„๋‚ผ ๊ธธ์€ ์—„์—ฐํžˆ ์กด์žฌํ•œ๋‹ค. ๋ฐ”๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ๋ถ„์„์€ ์†Œํ”„ํŠธ์›จ์–ด ์‹คํ–‰ ํŒŒ์ผ ์ž์ฒด๋ฅผ ๋ถ„์„ํ•˜๋ฏ€๋กœ ๋” ์ง์ ‘์ ์ด๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๊ธฐ๋„ ํ•˜๋‹ค.(์ถœ์ฒ˜ : https://gnu-cse.tistory.com/22?category=601172)

 

 

 

 

1-4. ๊ณต๊ฒฉ์ข…๋ฅ˜(ํƒ€์ž…)

 

 

 

 

 

1-5. ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„ ๋„๊ตฌ

 

 

- showString

 

๊ณต๊ฒฉํƒ€์ž…์€ Binary Analyysis๋กœ ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€ ์ŠคํŠธ๋ง์„ ๋ณด์—ฌ์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค.

 

 

 

- Resource Hacker Plus

 

 

๊ณต๊ฒฉํƒ€์ž…์€ Binary Analyysis๋กœ ์†Œํ”„ํŠธ์›จ์–ด ๋ฆฌ์†Œ์Šค๋ฅผ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๋‹ค.

 

 

 

 

- Windbg

 

 

๊ณต๊ฒฉํƒ€์ž…์€ Debugger ๋กœ ๋””๋ฒ„๊น…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๋‹ค.

 

 

- Ollydbg

 

 

๊ณต๊ฒฉํƒ€์ž…์€ Debugger, Disassembler ๋กœ, ๊ฐ€์žฅ ๋ฒ”์šฉ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋””๋ฒ„๊ทธ, ๋””์Šค์–ด์…ˆ๋ธ”๋Ÿฌ ํˆด์ด๋‹ค.

 

OllyDbg (๋งŒ๋“ ์ด์ธ Oleh Yuschuk์˜ ์ด๋ฆ„์„ ๋”ด)๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ ๋ถ„์„์„ ์œ„ํ•œ x86 ๋””๋ฒ„๊ฑฐ๋กœ์„œ, ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์—†์„ ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค. ์ด๊ฒƒ์€ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ถ”์ ํ•˜๊ณ , ํ•จ์ˆ˜API ํ˜ธ์ถœ, Switch ๋ฌธํ‘œ (table)์ƒ์ˆ˜ ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ž์—ด์„ ์ธ์‹ํ•˜๋ฉฐ, ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋ฃจํ‹ด๋“ค์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„์ค€๋‹ค.

 

 

- VBDE

 

 

 

๊ณต๊ฒฉํƒ€์ž…์€ Decompiler ๋กœ, ๋น„์ฃผ์–ผ๋ฒ ์ด์ง์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœ๊ทธ๋žจ ๋ถ„์„ ํˆด์ด๋‹ค.

 

 

 

- W32dsm9b

 

 

 

๊ณต๊ฒฉํƒ€์ž…์€ Desassembler๋กœ, ๊ธฐ๊ณ„์–ด๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ๋ฒˆ์—ญํ•ด์ฃผ๋Š” ํˆด์ด๋‹ค.

 

 

- WinHex

 

 

 

๊ณต๊ฒฉํƒ€์ž…์€ Hex Editor๋กœ ์ด์ง„ ํŒŒ์ผ์„ ์ฝ๋Š” ํˆด์ด๋‹ค.

 

 

 

- Procexp

 

 

๊ณต๊ฒฉํƒ€์ž…์€ Monitoring ์œผ๋กœ, ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํˆด์ด๋‹ค.

 

 

 

 

- Exeinfo PE & VMUnpacker

 

 

 

 

 

๋‘˜๋‹ค ๊ณต๊ฒฉํƒ€์ž…์€ Unpacker์ด๋ฉฐ, ์–ธํŒจํ‚น์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํˆด์ด๋‹ค.

๊ทธ ์™ธ์—๋„ ํƒ€์ž…์— ๋”ฐ๋ผ์„œ, ๋งŽ์€ ํˆด๋“ค์ด ์กด์žฌํ•œ๋‹ค.

(์ถœ์ฒ˜ : https://myeonguni.tistory.com/1672)

๋ฐ˜์‘ํ˜•
Contents

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

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