๐ŸŒ‡โ”‚System_Study/๐Ÿ“—โ”‚Dreamhack_Reversing

Background: Static Analysis vs. Dynamic Analysis

Jastes 2022. 5. 11. 23:09


๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง

์ •์  ๋ถ„์„(Static)๊ณผ ๋™์  ๋ถ„์„(Dynamic) ๊ตฌ๋ถ„

์ •์  ๋ถ„์„ : ์™ธ์ ์ธ ๊ด€์ฐฐ๋งŒ์„ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์ทจ๋“
๋™์  ๋ถ„์„ : ์‹คํ–‰์„ ํ†ตํ•ด ๋™์ž‘์„ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ!

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

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ •์  ๋ถ„์„๊ณผ ๋™์  ๋ถ„์„ ์ค‘ ํ•œ ๋ฐฉ๋ฒ•๋งŒ์„ ๊ณ ์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ..
์–ด๋–ค ์ƒํ™ฉ์— ์–ด๋–ค ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•  ๊ฒƒ์ด๋ƒ๊ฐ€ ์‹ค๋ ฅ์„ ์ขŒ์šฐํ•˜๋Š” ์ค‘์š”ํ•œ ์š”์†Œ์ฃ 


์ •์  ๋ถ„์„(Static Analysis)๐Ÿ”

์ •์  ๋ถ„์„(Static Analysis) : ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค์ง€ ์•Š๊ณ  ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ •์  ๋ถ„์„์˜ ์žฅ์ ๐Ÿค—

" ํ”„๋กœ๊ทธ๋žจ์˜ ์ „์ฒด๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฝ๋‹ค! "
์ •์  ๋ถ„์„ ๋„๊ตฌ๋“ค์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋„์›€์„ ์ฃผ๋Š”๋ฐ, ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ค ํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑํ•œ์ง€,
ํ•จ์ˆ˜๋“ค์€ ์„œ๋กœ ์–ด๋–ค ํ˜ธ์ถœ ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š”์ง€, ์–ด๋–ค API๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์–ด๋–ค ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜๋Š”์ง€ ๋“ฑ ์ข…ํ•ฉ์  ๋ถ„์„!

๋ถ„์„์ž๋Š” ์ด ์ •๋ณด๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ํฐ ๊ด€์ ์—์„œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
๋˜ํ•œ, ๋ถ„์„ ํ™˜๊ฒฝ์˜ ์ œ์•ฝ์—์„œ๋„ ๋น„๊ต์  ์ž์œ ๋กญ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋กœ์ฌ ์•ˆ๋“œ๋กœ์ด๋“œ apk ํŒŒ์ผ์ด ์žˆ์ฃ 

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐ”์ด๋Ÿฌ์Šค์™€ ๊ฐ™์€ ์•…์„ฑ ํ”„๋กœ๊ทธ๋žจ์˜ ์œ„ํ˜‘์œผ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ ๋ฐ”์ด๋Ÿฌ์Šค๋ฅผ ๋™์  ๋ถ„์„ํ•  ๊ฒฝ์šฐ, ๋ฐ”์ด๋Ÿฌ์Šค๋ฅผ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ž์‹ ์— ํ”ผํ•ด๋ฅผ ์ž…์„ ์ˆ˜ ์žˆ์œผ๋‚˜
์ •์  ๋ถ„์„์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ถ„์„ํ•˜๋ฏ€๋กœ ์ด๋Ÿฐ ๊ฑฑ์ • ใ„ดใ„ด


์ •์  ๋ถ„์„์˜ ๋‹จ์ ๐Ÿ˜—

์ •์  ๋ถ„์„์€ ํ”„๋กœ๊ทธ๋žจ์— ๋‚œ๋…ํ™”(Obfuscation)๊ฐ€ ์ ์šฉ๋˜๋ฉด ๋ถ„์„์ด ๋งค์šฐ ์–ด๋ ค์›Œ์ง€์ฃ 
์ตœ๊ทผ์—” ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ๋‚œ๋…ํ™” ๊ธฐ๋ฒ•์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๊ฐ€ ์‹ฌํžˆ ๋ณ€ํ˜•๋˜์–ด ์ด๋ฅผ ์ฝ๊ณ , ์‹คํ–‰ ํ๋ฆ„์„ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.
์ด๋ฅผ ํ•ด์ œ(Deobfuscation)ํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ์—ฐ๊ตฌ๊ฐ€ ์ง„ํ–‰๋˜๋‚˜, ์—ฌ์ „ํžˆ ๋งŽ์€ ์„œ๋น„์Šค ๋ฌด๋ ฅํ™” ๋ฐฉ๋ฒ• ์•Œ๋ ค์ง X

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

 

์˜ˆ์‹œ๋ก  IDA๋กœ ๋ณด์—ฌ์ฃผ๋˜๋ฐ.. ์ด๊ฑด ๊ท€์ฐฎ๊ธฐ๋•Œ๋ฌธ์— ๋‚˜์ค‘์— IDA ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์—์„œ ์„ค๋ช…ํ• ๊ป˜์š”
์–ด์งœํ”ผ ๋’ค์— ๋ฌธ์ œ 4๊ฐœ์—์„œ ๊ทธ๋ฆฌ๊ณ  ์•ž์œผ๋กœ๋„ ์•Œ์ฐจ๊ฒŒ ์“ธ๊ฑฐ๋‹ˆ๊นŒ์š” 

์ •์  ๋ถ„์„ IDA

 


๋™์ ๋ถ„์„(Dynamic Analysis)๐Ÿ”

๋™์  ๋ถ„์„(Dynamic Analysis) : ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋ฉด์„œ ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋™์  ๋ถ„์„์˜ ์žฅ์ ๐Ÿค—

" ์ฝ”๋“œ๋ฅผ ์ž์„ธํžˆ ๋ถ„์„ํ•ด๋ณด์ง€ ์•Š๊ณ ๋„ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐœ๋žต์ ์ธ ๋™์ž‘์„ ํŒŒ์•… ๊ฐ€๋Šฅ! "
๋Œ€๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋งŽ์€ ํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๊ธฐ์— ์ •์ ์œผ๋กœ๋งŒ์€ ์ดํ•ดํ•˜๊ธฐ ํž˜๋“ค์ฃ 

๊ทธ๋Ÿฌ๋‚˜ ๋™์ ์€ ์–ด๋–ค ์ž…๋ ฅ์— ๋Œ€ํ•œ ๊ฐœ๋ณ„ ํ•จ์ˆ˜ ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ์„ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ,
์ด ์ถœ๋ ฅ๊ฐ’๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘์„ ์ถ”๋ก ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ์˜ˆ์‹œ๋กœ์จ๋Š” md5๊ฐ€ ์žˆ์ฃ (์•”ํ˜ธํ•™)


๋™์  ๋ถ„์„์˜ ๋‹จ์ ๐Ÿ˜—

 " ๋ถ„์„ ํ™•๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์–ด๋ ต๋‹ค. "
๋™์  ๋ถ„์„์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด์„œ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ X → ๋ถ„์„ X
๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋™์  ๋ถ„์„ํ•  ๋• VM ๊ตฌ์ถ• ํ˜น์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์žฅ๋น„ ๊ตฌ๋งค ๋“ฑ ๊ณผ์ •์ด ๋ฒˆ๊ฑฐ๋กœ์›€

๋˜ํ•œ, ์•ž์„œ ์ •์  ๋ถ„์„์— ์†Œ๊ฐœํ•œ '๋‚œ๋…ํ™”'์ฒ˜๋Ÿผ ๋™์  ๋ถ„์„์„ ์–ด๋ ต๊ฒŒ ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋ฒ•๋“ค์ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์ด ๋™์  ๋ถ„์„์˜ ์ผ์ข…์ธ ๋””๋ฒ„๊น…์„ ๋ฐฉํ•ดํ•˜๋Š” ์•ˆํ‹ฐ ๋””๋ฒ„๊น…(Anti Debugging)์ž…๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋งํฌ์— ์ž์„ธํžˆ ์ •๋ฆฌ๋˜์–ด ์žˆ๋”๋ผ๊ณ ์š” ๊ฐ„๋‹จ ์ •๋ฆฌํ•˜์ž๋ฉด

<์•ˆํ‹ฐ ๋””๋ฒ„๊น…>

static : ๋””๋ฒ„๊น… ์‹œ์ž‘ํ•  ๋•Œ ํ•œ ๋ฒˆ๋งŒ ํ•ด์ฒด๋ฅผ ํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ๋˜๋Š” ๊ธฐ๋ฒ•
- ์ฃผ๋กœ ๋””๋ฒ„๊ฑฐ๋ฅผ ํƒ์ง€ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์ด ์ •์ƒ์  ์‹คํ–‰ ์•ˆ๋˜๊ฒŒ ํ•˜๋Š” ํ˜•์‹

dynamic : ๋””๋ฒ„๊น…์„ ์ง„ํ–‰ํ•˜๋ฉฐ, ํ•ด๋‹น ๊ธฐ๋ฒ•์„ ๋งŒ๋‚  ๋•Œ๋งˆ๋‹ค ํ•ด๊ฒฐํ•ด์•ผํ•จ
- ๋””๋ฒ„๊ฑฐ ํŠธ๋ ˆ์ด์‹ฑ์„ ๋ฐฉํ•ดํ•˜์—ฌ ์›๋ณธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๊ฒŒ ํ•˜๋Š” ๋ฒ•
๋””๋ฒ„๊ฑฐ ํŠธ๋ ˆ์ด์‹ฑ : ๋””๋ฒ„๊ธฐ(๋””๋ฒ„๊น… ๋‹นํ•˜๋Š” ์ชฝ)์˜ ๋‚ด๋ถ€ ์‹คํ–‰์„ ํ•˜๋‚˜์”ฉ ์‹คํ–‰ํ•ด ์ •๋ณด๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ
ํ™•์ธ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ•œ ์ค„์”ฉ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐฉ์‹

๋‹จ์ˆœํ•œ ์•ˆํ‹ฐ ๋””๋ฒ„๊น…์˜ ์˜ˆ๋กœ, ์•„๋ž˜์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ž์‹ ์ด ๋””๋ฒ„๊น… ๋‹นํ•˜๊ณ  ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๊ณ , ๋””๋ฒ„๊น… ์ค‘์ด๋ฉด
ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 ๋™์  ๋ถ„์„์„ ํ•˜๋Š” ๋ชจ์Šต์€ ์•ž์œผ๋กœ ํ’€ War_Game์—์„œ ์นœ์ ˆํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋“œ๋ฆด ๊ฒƒ์ด๊ธฐ์—
๋‚˜์ค‘์— ๋งํฌ ๋‹ฌ์•„๋“œ๋ฆด๊ป˜์š” ํ•œ๋ฒˆ ํ•ด๋ณด์‹ค ๋ถ„์€ ์ฝ”๋“œ ์˜ฌ๋ ค๋“œ๋ฆด๊ป˜์š”

1
2
3
4
5
6
7
8
9
//helloworld.c
#include <stdio.h>
 
int main(){
  int n = 0x31337;
  printf("Hello World 0x%x\n", n);
 
  return 0;
}
cs

 

์ฐธ๊ณ  ์ž๋ฃŒ

 

Background: Static Analysis vs. Dynamic Analysis

์†Œํ”„ํŠธ์›จ์–ด ๋ถ„์„ ๊ธฐ๋ฒ•์˜ ๊ฐˆ๋ž˜์ธ ์ •์  ๋ถ„์„๊ณผ ๋™์  ๋ถ„์„์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์ฐจ์ด์ ์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

dreamhack.io

์ฐธ๊ณ  ์ด๋ฏธ์ง€

 

Background: Static Analysis vs. Dynamic Analysis

์†Œํ”„ํŠธ์›จ์–ด ๋ถ„์„ ๊ธฐ๋ฒ•์˜ ๊ฐˆ๋ž˜์ธ ์ •์  ๋ถ„์„๊ณผ ๋™์  ๋ถ„์„์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์ฐจ์ด์ ์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

dreamhack.io