Hack The Planet

๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค, cyalume์˜ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.

reverse engineering/CodeEngn

[CodeEngn] Basic RCE L03 ๋ฌธ์ œํ’€์ด

cyalume 2020. 12. 3. 23:34

๋ฌธ์ œ๋Š” ์—ฌ๊ธฐ์„œ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์••์ถ•ํ•ด์ œ ์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” codeengn ์ž…๋‹ˆ๋‹ค.)

 

 

๋ชฉํ‘œ๊ฐ’ : ๋น„์ฃผ์–ผ๋ฒ ์ด์ง์—์„œ์˜ ์ŠคํŠธ๋ง (๋ฌธ์ž์—ด) ๋น„๊ต ํ•จ์ˆ˜ ์ด๋ฆ„

 

์•„๋งˆ ๋ถ„์„ํ•ด์•ผ ํ•  ํ”„๋กœ๊ทธ๋žจ์€ ๋น„์ฃผ์–ผ๋ฒ ์ด์ง์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์„๊ฒ๋‹ˆ๋‹ค.

์‹คํ–‰์„ ์‹œ์ผœ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

๋…์ผ์–ด๋กœ ์“ฐ์ธ ๋ฉ”์„ธ์ง€๋ฐ•์Šค๊ฐ€ ํ•˜๋‚˜ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

nag ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์˜ฌ๋ฐ”๋ฅธ ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ์ด์•ผ๊ธฐ์ž…๋‹ˆ๋‹ค.

ํ™•์ธ์„ ๋ˆŒ๋Ÿฌ์ค์‹œ๋‹ค.

 

 

 

 

๋“ฑ๋ก ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ์ฐฝ์ด ๋œน๋‹ˆ๋‹ค. 

 

 

 

 

์‹œํ—˜์‚ผ์•„ test1234 ๋ผ๊ณ  ์ž…๋ ฅํ•œ ๋’ค Registrieren ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์Šต๋‹ˆ๋‹ค.

 

 

 

 

์˜ฌ๋ฐ”๋ฅธ ์•”ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํŒจ์Šค์›Œ๋“œ์™€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์„ ๋น„๊ตํ•ด ์„ฑ๊ณต/์‹คํŒจ๋กœ ๋ถ„๊ธฐํ•˜๋Š” ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.

๋””๋ฒ„๊ฑฐ๋กœ ์—ด์–ด๋ด…์‹œ๋‹ค.

 

 

 

 

์•„๊นŒ ๋ณด์•˜๋˜ ์‹คํŒจ ๋ฌธ์ž์—ด์„ ์ฐพ์•„๊ฐ€๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งˆ์šฐ์Šค ์šฐํด๋ฆญ -> Search for -> All referenced text strings ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์˜ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•ด์ค๋‹ˆ๋‹ค.

 

 

 

 

์Šคํฌ๋กค์„ ์กฐ๊ธˆ ๋‚ด๋ฆฌ๋‹ค ๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ์—๋Ÿฌ ๋ฌธ์ž์—ด์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ž์—ด์„ ๋”๋ธ”ํด๋ฆญํ•ด ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ์žˆ๋Š” ์ฃผ์†Œ๋กœ ์ด๋™ํ•ด์ค๋‹ˆ๋‹ค.

 

 

 

 

์—๋Ÿฌ ๋ฌธ์ž์—ด์ด ์žˆ๋Š” ์ฃผ์†Œ๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ž์„œ ์˜ˆ์ธกํ–ˆ๋˜ ๋Œ€๋กœ ์‹คํŒจ ๋ฌธ์ž์—ด ์ „ํ›„์— ์„ฑ๊ณต ๋ฌธ์ž์—ด์ด ์žˆ์„ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋กค์„ ์˜ฌ๋ฆฌ๋‹ค ๋ณด๋ฉด ์ด์™€ ๊ฐ™์ด ์„ฑ๊ณต ์‹œ ์ถœ๋ ฅ๋  ๊ฒƒ์œผ๋กœ ์ถ”์ •๋˜๋Š” ๋ฌธ์ž์—ด์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

์•„๋งˆ ์ด ๋ฌธ์ž์—ด ์ „์— ์กฐ๊ฑด ๋ถ„๊ธฐ๋ฌธ์ด ์žˆ์„ ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

์—ญ์‹œ ๋ฐ”๋กœ ์œ„์— ์กฐ๊ฑด ๋ถ„๊ธฐ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

CMP DI, SI ๋ช…๋ น์„ ํ†ตํ•ด ๋‘ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๋น„๊ตํ•˜๊ณ , ๋‘ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด JE ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ JE 03.004029DC ๋ช…๋ น์„ ํ†ตํ•ด ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜๋‰  ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

JE ๋ฌธ์ด ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ ์ด๋™ํ•˜๋Š” 004029DC ์ฃผ์†Œ๊ฐ€ ์‹คํŒจ ๋ฌธ์ž์—ด ์œ„์ชฝ ์ฃผ์†Œ์ธ ๊ฒƒ์œผ๋กœ ๋ฏธ๋ฃจ์–ด๋ณด์•„, ์ด JE ๋ช…๋ น์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’๊ณผ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋‹ค๋ฅผ ๋•Œ ์‹คํ–‰๋œ๋‹ค๊ณ  ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

JE ๋ช…๋ น (004028E3 ์ฃผ์†Œ) ์— [F2] ํ‚ค๋กœ BP๋ฅผ ๊ฑด ๋‹ค์Œ [F9] ํ‚ค๋กœ BP๊นŒ์ง€ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

์ด๋Ÿฐ ๋ฉ”์„ธ์ง€๊ฐ€ ๋œจ๋ฉด ํ™•์ธ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

 

 

๊ทธ ํ›„ ์•„๊นŒ ์‹คํŒจํ–ˆ๋˜ test1234 ๋ผ๋Š” ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ž…๋ ฅํ•˜๊ณ  Registrieren ๋ฒ„ํŠผ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

 

 

 

 

๋ ˆ์ง€์Šคํ„ฐ ์ฐฝ์—์„œ DI ์™€ SI ๊ฐ€ ๋ชจ๋‘ 0์œผ๋กœ ๊ฐ™์€ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BP๋ฅผ ๊ฑด ์กฐ๊ฑด ๋ถ„๊ธฐ๋ฌธ์—์„œ ๋ฉˆ์ถ”๋Š”๋ฐ,  ๋‘ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์„ ํ™•์ธํ–ˆ์œผ๋ฉด ๊ทธ๋Œ€๋กœ ์‹คํ–‰์‹œ์ผœ์ค๋‹ˆ๋‹ค.

(CMP๋กœ DI ์™€ SI๋ฅผ ๋น„๊ตํ•œ ํ›„ ๋‘ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด ์กฐ๊ฑด๋ถ„๊ธฐ๋ฌธ ์‹คํ–‰)

 

 

 

 

์ด๋ ‡๊ฒŒ ์‹คํŒจ ๋ฉ”์„ธ์ง€๋ฐ•์Šค๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ JE ๋ช…๋ น์€ ์„ฑ๊ณต/์‹คํŒจ๋ฅผ ๊ฐ€๋กœ์ง“๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

 

 

 

 

๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ ์œ„์— ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’๊ณผ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋น„๊ตํ•  ๋ฌธ์ž์—ด ๋น„๊ต ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CALL ๋ช…๋ น์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ, ์Šคํƒ์„ ์ด์šฉํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฌธ์ž์—ด ๋น„๊ต ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ „์— ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์€ PUSH ๋ช…๋ น์œผ๋กœ ์Šคํƒ์— ์ €์žฅ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

JE ๋ฌธ ์œ„ ๋‘ ๊ฐœ์˜ PUSH ๋ช…๋ น์— ์ฃผ๋ชฉํ•ฉ์‹œ๋‹ค.

์ด๋Š” ๋ฐ”๋กœ ๋ฐ‘์—์„œ ํ˜ธ์ถœ๋˜๋Š” vbaStrCmp ํ•จ์ˆ˜์˜ ์ธ์ž๋“ค์„ ์Šคํƒ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

ํ™•์ธ์„ ํ•ด๋ณด๊ธฐ ์œ„ํ•ด ๋‘ PUSH ๋ช…๋ น ๋ชจ๋‘์— BP๋ฅผ ๊ฑธ๊ณ  ์‹คํ–‰ํ•œ ๋’ค ํ…Œ์ŠคํŠธ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

004028BA ์ฃผ์†Œ์˜ PUSH ๋ช…๋ น์œผ๋กœ ํ•จ์ˆ˜์˜ ์ธ์ž๊ฐ€ ์Šคํƒ์˜ EBP-58 ์ฃผ์†Œ์— ๋“ค์–ด๊ฐ”์„ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

 

 

 

 

EBP ์˜ ํ˜„์žฌ ๊ฐ’์€ 0019F1C8 ์ž…๋‹ˆ๋‹ค. 

๊ณ„์‚ฐ๊ธฐ๋ฅผ ์ด์šฉํ•ด ๊ตฌํ•œ EBP-58 ๊ฐ’์€ 0019F170 ์ž…๋‹ˆ๋‹ค.

 

 

๊ธฐ๋ณธ ๊ณ„์‚ฐ๊ธฐ -> ํ”„๋กœ๊ทธ๋ž˜๋จธ -> HEX ํด๋ฆญํ•ด ๊ณ„์‚ฐ

 

 

์Šคํƒ์˜ EBP-58 (0019F170) ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฌธ์ž์—ด์ด ์Œ“์—ฌ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

๋งŒ์•ฝ vbaStrCmp ํ•จ์ˆ˜๊ฐ€ ๋ฌธ์ž์—ด ๋น„๊ต ํ•จ์ˆ˜๋ผ๋ฉด ์Šคํƒ์„ ํ†ตํ•ด ์ „๋‹ฌ๋œ ์ฒซ ๋ฒˆ์งธ ์ธ์ž์™€ ๋‘ ๋ฒˆ์งธ ์ธ์ž๋ฅผ ๋น„๊ตํ•˜๊ฒ ์ฃ ?

์—ฌ๊ธฐ์„œ ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋‘ ๋ฒˆ์งธ ์ธ์ž๋Š” ์ž…๋ ฅํ•œ ๋ฌธ์ž์—ด๊ณผ ๋น„๊ตํ•  ๋ฌธ์ž์—ด, ์ฆ‰ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ ๋ฒˆ ์ถ”์ธก์ด ๋งž๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค. 

๋‘ ๋ฒˆ์งธ PUSH ๋ช…๋ น์œผ๋กœ ์Šคํƒ์— ์œ ๋‹ˆ์ฝ”๋“œ 2G83G35Hs2 ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๋””๋ฒ„๊ฑฐ๋ฅผ ์žฌ์‹œ์ž‘ํ•ด์„œ ์ด๋ฅผ ํŒจ์Šค์›Œ๋“œ ์ฐฝ์— ์ž…๋ ฅํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

Registrieren ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๋ฌธ์ž์—ด์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

vbaStrCmp ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ๋‘ ๋ฒˆ์งธ ๊ฐ’์ด ํŒจ์Šค์›Œ๋“œ์ธ ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

(vbaStrCmp ์˜ ์ธ์ž : ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฌธ์ž์—ด, ํ•˜๋“œ์ฝ”๋”ฉ๋œ ํŒจ์Šค์›Œ๋“œ ๊ฐ’)

์ด๋ ‡๊ฒŒ vbaStrCmp ์ด ๋ฌธ์ž์—ด ๋น„๊ต ํ•จ์ˆ˜๊ฐ€ ๋งž๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ๋น„์ฃผ์–ผ๋ฒ ์ด์ง์˜ ์ŠคํŠธ๋ง ๋น„๊ต ํ•จ์ˆ˜ ์ด๋ฆ„์€ vbaStrCmp ์ž…๋‹ˆ๋‹ค.

vb = visual basic
Str = string
Cmp = compare