Notice
Recent Posts
Recent Comments
Link
ยซ   2024/10   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

R136A1

[REVERSING] ์•ˆํ‹ฐ ๋””๋ฒ„๊น… Static & Dynamic Anti-Debugging ๋ณธ๋ฌธ

REVERSING/๐™ง๐™š๐™ซ๐™š๐™ง๐™จ๐™ž๐™ฃ๐™œ ๐™จ๐™ฉ๐™ช๐™™๐™ฎ

[REVERSING] ์•ˆํ‹ฐ ๋””๋ฒ„๊น… Static & Dynamic Anti-Debugging

r136a1x27 2021. 2. 20. 18:38

๋””๋ฒ„๊น… ๋ฐฉ์ง€ ๋˜๋Š” ๋ถ„์„์„ ์–ด๋ ต๊ฒŒ ํ•จ

 

๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์ด์œ 

์•…์„ฑ์ฝ”๋“œ ์ œ์ž‘์ž๋“ค์ด ๋ณด์•ˆ ์ „๋ฌธ๊ฐ€๋ฅผ ์–ด๋ ค์›€์— ๋น ํŠธ๋ฆฌ๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜์—ฌ

๋ณด์•ˆ ์ „๋ฌธ๊ฐ€๋“ค์€ ์•ˆํ‹ฐ ๋””๋ฒ„๊น…์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ํŒŒ์•…ํ•œ ํ›„ ํšŒํ”ผํ•˜๊ธฐ ์œ„ํ•จ๋„ ์žˆ์ง€๋งŒ

 

์ผ๋ฐ˜ ๊ฐœ๋ฐœ์ž๋“ค๋„ ํ•ด์ปค๋“ค์˜ ๋””๋ฒ„๊น…์œผ๋กœ๋ถ€ํ„ฐ ์ž์‹ ์˜ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ณด์•ˆ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ์•ˆํ‹ฐ ๋””๋ฒ„๊น…์„ ์•Œ์•„๋‘ฌ์•ผ ํ•จ

 

ํ•™์ƒ์€ ๊ณ ๊ธ‰ ๋ฆฌ๋ฒ„์‹ฑ ๊ธฐ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Œ

 

teamsign.tistory.com/12

 

eild(๊ฐ•์‹ ์ผ)'s ์•ˆํ‹ฐ ๋””๋ฒ„๊น…์˜ ์ข…๋ฅ˜

1. ๋จธ๋ฆฌ๋ง ์•ˆ๋…•ํ•˜์„ธ์š”? ์˜ค๋Š˜์€ ๋‹ค์–‘ํ•œ ์•ˆํ‹ฐ ๋ฆฌ๋ฒ„์‹ฑ ๊ธฐ๋ฒ•๋“ค์— ๋Œ€ํ•ด์„œ ํฌ์ŠคํŒ…ํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์ž๋“ค์€ ์ž์‹ ์˜ ๊ฐœ๋ฐœ ๊ธฐ์ˆ ์ด ๊ทธ๋Œ€๋กœ ๋“œ๋Ÿฌ๋‚˜๊ฒŒ ๋‘๊ณ  ์‹ถ์–ด ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฆฌ๋ฒ„์‹ฑ์„

teamsign.tistory.com

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

: ์ •์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋””๋ฒ„๊น…์„ ๋ง‰๋Š” ์‹œ์Šคํ…œ

๋ณดํ†ต ํ•œ ๋ฒˆ๋งŒ ์šฐํšŒํ•˜๋ฉด ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ (Dynamic ํ•œ ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋น„๊ต์  ์‰ฌ์šด ์ด์œ )

 

๋ชฉ์ 

๋ณดํ†ต ๋””๋ฒ„๊ฑฐ๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€๋ฅผ ํƒ์ง€ํ•˜๊ธฐ ์œ„ํ•จ

์ฆ‰, Static ๊ธฐ๋ฒ•์ด ์ ์šฉ๋œ ํŒŒ์ผ์€ ๋””๋ฒ„๊ฑฐ์— ์˜ฌ๋ ธ์„ ๋•Œ ์ œ๋Œ€๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋„ฃ์€ ๋””๋ฒ„๊ทธ ์ „์šฉ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋จ

 

๋ฐฉ๋ฒ•

๋””๋ฒ„๊น… ํ”„๋กœ์„ธ์Šค์—์„œ ์ž์‹ ์ด ๋””๋ฒ„๊น… ๋‹นํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ธฐ๋ฒ•

๋””๋ฒ„๊น… ์ค‘์ด๋ผ๊ณ  ํŒ๋‹จ ์‹œ ์ผ๋ฐ˜ ์‹คํ–‰๊ณผ๋Š” ๋‹ค๋ฅธ ์ฝ”๋“œ(์ฃผ๋กœ ์ข…๋ฃŒ)๋ฅผ ์‹คํ–‰ํ•จ

 

1. ๋””๋ฒ„๊ฑฐ๋ฅผ ํƒ์ง€ํ•œ๋‹ค

2. ๋””๋ฒ„๊น… ํ™˜๊ฒฝ์„ ํƒ์ง€ํ•œ๋‹ค

3. ๋””๋ฒ„๊ฑฐ๋ฅผ ๊ฐ•์ œ ๋ถ„๋ฆฌํ•œ๋‹ค

 

์ž์‹ ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋””๋ฒ„๊น… ๋‹นํ•˜๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์€ "์ง์ ‘์ ์ธ ๋””๋ฒ„๊ฑฐ ํƒ์ง€ ๋ฐฉ๋ฒ•"

๋””๋ฒ„๊น… ํ™˜๊ฒฝ์„ ์ฒดํฌํ•ด์„œ ๋””๋ฒ„๊ฑฐ์˜ ๋‚Œ์ƒˆ๊ฐ€ ์กฐ๊ธˆ์ด๋ผ๋„ ๋ณด์ด๋ฉด ์ฆ‰์‹œ ์‹คํ–‰์„ ๋ฉˆ์ถ”๋Š” ๊ฒƒ์€ "๊ฐ„์ ‘์ ์ธ ๋””๋ฒ„๊ฑฐ ํƒ์ง€ ๋ฐฉ๋ฒ•"

 

์ข…๋ฅ˜

PEP(Process Environment Block) ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์˜ ๋””๋ฒ„๊น… ์—ฌ๋ถ€

PEB ๊ตฌ์กฐ์ฒด ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์˜ ๋””๋ฒ„๊น… ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•œ๋‹ค

์ค‘์š” PEB ๋ฉค๋ฒ„0x002 BeingDebugged: Unchar0x00c Ldr                           : Ptr32 _PEB_LDR_DATA0x018 ProcessHeap      : Ptr32 Void0x068 NtGlobalFlag      : Uint4Blapislazull.tistory.com/59

 

TLS Callback ํ•จ์ˆ˜

Entry Point๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰๋˜๋Š” ํŠน์ง•์„ ์ด์šฉํ•จ

ํ•ด๋‹น ํ•จ์ˆ˜ ๋‚ด์—์„œ IsDebuggerPresent() ๋“ฑ์˜ ํ•จ์ˆ˜๋กœ ๊ฐ„๋‹จํžˆ ๋””๋ฒ„๊น… ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜์—ฌ

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

 

[API]  NtQueryInfromationProcess() ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์˜ ๋””๋ฒ„๊น… ์—ฌ๋ถ€

ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์˜ ๋””๋ฒ„๊น… ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋น„๋กฏํ•˜์—ฌ ๋งค์šฐ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ

 

[API]  NtQuerySystemInformation() ํ˜„์žฌ ํ™˜๊ฒฝ

ํ˜„์žฌ OS๊ฐ€ Debug Mode๋กœ ๋ถ€ํŒ…๋˜์—ˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•จ

 

[API]  NtQueryObject() ํ˜„์žฌ ํ™˜๊ฒฝ?

์‹œ์Šคํ…œ์˜ ์ปค๋„ ๊ฐ์ฒด ์ •๋ณด๋ฅผ ๊ตฌํ•ด์˜ค๋Š” ํ•จ์ˆ˜

์‹œ์Šคํ…œ - ์–ด๋–ค ๋””๋ฒ„๊ฑฐ๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋””๋ฒ„๊น… ์ค‘์ผ ๋•Œ DebugObject ํƒ€์ž…์˜ ์ปค๋„ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ

์ด ๊ฐ์ฒด์˜ ์กด์žฌ๋ฅผ ํ™•์ธํ•จ

 

[API] ZwSetInformationThread() ๋””๋ฒ„๊ฑฐ ๊ฐ•์ œ ๋ถ„๋ฆฌ

thread์— ์ •๋ณด๋ฅผ ์„ธํŒ…ํ•˜๋Š” System Native API

ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฐ•์ œ๋กœ ๋””๋ฒ„๊ฑฐ๋ฅผ ๋–ผ์–ด๋‚ผ ์ˆ˜ ์žˆ์Œ(Detach)

 

TEB(Thread Environment Block)

๊ฐ์ข… API๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•

Targeting ์ด์šฉํ•œ ๋ฐฉ๋ฒ•

...

 

codeEngine basic 4๋ฒˆ ๋ฌธ์ œ

์ผ๋ฐ˜ ์‹คํ–‰ ์‹œ ์ •์ƒ์ด๋ผ๊ณ  print๋ฌธ์„ ๋ณด๋‚ด๋Š” ํŒŒ์ผ๋””๋ฒ„๊น… ์‹œ๋„ ์‹œ ์ •์ƒ์‹คํ–‰๋˜์ง€ ์•Š๊ณ 

๋””๋ฒ„๊น… ๋ชจ๋“œ์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋น ์ง€๊ฒŒ ๋จ→ IsDebuggerPresent() ๋ผ๋Š” PEB๋ฅผ ์ฐธ๊ณ ํ•˜๋Š” API ๋•Œ๋ฌธ

 

์šฐํšŒ

ํƒ์ง€ ์ฝ”๋“œ์—์„œ ์–ป์–ด์˜ค๋Š” ์ •๋ณด๋ฅผ ํŒŒ์•…ํ•˜์—ฌ, ๊ทธ ์ •๋ณด ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•ด๋ฒ„๋ฆฐ๋‹ค

API hooking์ด๋‚˜ ๋””๋ฒ„๊ฑฐ ์ž์ฒด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉ

 

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

Static๋ณด๋‹ค ํ›จ์”ฌ ๋ฒˆ๊ฑฐ๋กœ์šฐ๋ฉฐ ์šฐํšŒ๊ฐ€ ๊นŒ๋‹ค๋กœ์›€

๋””๋ฒ„๊ฑฐ ํƒ์ง€๋ฅผ ํ†ตํ•ด ๋ง‰๋Š” Static๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋‚ด๋ถ€ ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•ด ๋””๋ฒ„๊น… ๋„์ค‘ ์ˆ˜์‹œ๋กœ ๋‚˜์™€ ๋” ๊นŒ๋‹ค๋กœ์›€

 

๋””๋ฒ„๊น…์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์•ˆํ‹ฐ ๋””๋ฒ„๊น…์„ ๋งŒ๋‚  ๋•Œ ๋งˆ๋‹ค ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋ฒ•

๋””๋ฒ„๊ฑฐ ํŠธ๋ ˆ์ด์‹ฑ์„ ๋ฐฉํ•ดํ•˜์—ฌ ์›๋ณธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“ฆ

ใ„ด๋ถ„์„ํ–‰์œ„; ํ”„๋กœ๊ทธ๋žจ์˜ ๋‚ด๋ถ€ Instruction์„ ํ•˜๋‚˜์”ฉ ์‹คํ–‰ํ•˜๋ฉด์„œ ๋ ˆ์ง€์Šคํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ(์Šคํƒ) ๋“ฑ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•˜๋Š” ๊ฒƒ.

 

 

 

์ข…๋ฅ˜

SEH(Structured Exception Handling) ๋ฉ”์ปค๋‹ˆ์ฆ˜

์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋œ ํ”„๋กœ์„ธ์Šค์—์„œ ์˜ˆ์™ธ(Exception)๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด OS์—์„œ ์˜ˆ์™ธ๋ฅผ ๋ฐ›์•„ ํ”„๋กœ์„ธ์Šค์— ๋“ฑ๋ก๋œ SEH๋ฅผ ํ˜ธ์ถœํ•ด์คŒ

๋””๋ฒ„๊ธฐ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋””๋ฒ„๊ฑฐ์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋Ÿฐ ํŠน์ง•์„ ์ด์šฉํ•˜์—ฌ

์ •์ƒ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ์™€ ๋””๋ฒ„๊น… ๋‹นํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ํŒ๋ณ„ํ•ด์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

(์•„์ง ์ดํ•ด๊ฐ€ ์ž˜...)

 

Timing Check

๋””๋ฒ„๊ฑฐ๋ฅผ ์ด์šฉํ•ด ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ํŠธ๋ ˆ์ด์‹ฑํ•˜๋ฉฐ ์ง„ํ–‰ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋  ๋•Œ ๋ณด๋‹ค ๋น„์ •์ƒ์ ์œผ๋กœ ์˜ค๋žœ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ

์ด๋Ÿฐ ์‹คํ–‰ ์‹œ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ์ธก์ •ํ•˜์—ฌ ๋””๋ฒ„๊น… ์—ฌ๋ถ€๋ฅผ ํŒ๋ณ„ํ•จ

 

0xCC(Breakpoint) Detection

ํ”„๋กœ๊ทธ๋žจ์„ ๋””๋ฒ„๊น…ํ•  ๋•Œ Software BP(BreakPoint)๋ฅผ ๋งŽ์ด ์„ค์น˜ํ•จ

BP์˜ x86 Instruction 0xCC๋ฅผ ๋ฐœ๊ฒฌํ•˜์—ฌ ๋””๋ฒ„๊น… ์—ฌ๋ถ€๋ฅผ ํŒ๋ณ„ํ•œ๋‹ค

 

 

๋””๋ฒ„๊ฑฐ์˜ ํŠน์ง•์„ ์—ญ์ด์šฉํ•ด INT 3 ๋“ฑ์„ ์จ์„œ Break Points๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•

TF๊ฐ’์„ 1๋กœ ์กฐ์ž‘ํ•ด์„œ CPU๋ฅผ Single Step์œผ๋กœ ์ „ํ™˜์‹œ์ผœ์„œ EXCEPTIONS SINGLE STEP ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ ์‹œํ‚ด

์ž์ฃผ ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ๋ถ„์„ํ•˜๋Š” API์˜ ์ฒซ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๊ฐ€ CC(Break Point)์ผ ๋•Œ ๋””๋ฒ„๊น…์„ ํƒ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

์•ˆํ‹ฐ ๋””๋ฒ„๊น…์˜ ์ข…๋ฅ˜

www.openrce.org/reference_library/anti_reversing

์šฐํšŒ

API hooking์ด๋‚˜ ๋””๋ฒ„๊ฑฐ ์ž์ฒด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉ

 

 

 


 

์šฐํšŒ ์‹ค์Šต

1. dakuo.tistory.com/40

2. blog.naver.com/PostView.nhn?blogId=wwwkasa&logNo=220363504263&parentCategoryNo=&categoryNo=62&viewDate=&isShowPopularPosts=false&from=postView

3. iforint.tistory.com/51

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Comments