๋ฌธ์ ๋ ์ฌ๊ธฐ์ ๋ค์ด๋ฐ์ ์ ์์ต๋๋ค. (์์ถ ํด์ ์ ๋น๋ฐ๋ฒํธ๋ codeengn ์ ๋๋ค.)
๋ชฉํ๊ฐ : ํ๋ก๊ทธ๋จ์ stolenbyte
stolenbyte ๋?
ํ์ณ์ง ๋ฐ์ดํธ๋ผ๋ ์๋ฏธ๋ก, ์๋ณธ ํ๋ก๊ทธ๋จ ์ฝ๋์ ์ผ๋ถ๋ถ์ ํจ์ปค๊ฐ ์์ฑํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ผ๋ก ์ฎ๊ฒจ ์คํํ๋ ๊ธฐ๋ฒ.
๋ง์ฝ ์ด๋ฅผ ๋ณต๊ตฌํ์ง ์๊ณ ๋คํ๋ฅผ ๋ ๋ฒ๋ฆฌ๋ฉด OEP ์ฝ๋ ์ผ๋ถ๊ฐ ์ ๊ฑฐ๋์ด ์ ์์ ์ธ ์คํ์ด ๋์ง ์๋๋ค.
POPAD ์ OEP๋ก์ ์ ํ๋ฌธ ์ฌ์ด์ ์ฐ์๋ PUSH ๋ช ๋ น์ด๊ฐ ์ด stolenbyte ์ด๋ค.
์คํ์ ์์ผ๋ด
๋๋ค.
OK๋ฅผ ๋๋ฌ์ค์๋ค.
ํค ํ์ผ์ด ์๋์ง ํ์ธ์ ํ ํ ์ฑ๊ณต/์คํจ๋ก ๋ถ๊ธฐํ๋ ๋ฏ ํฉ๋๋ค.
์ฐพ์์ผ ํ ๊ฐ์ stolenbyte ์ด๋ ํฌ๋์ ์๋ตํ๋๋ก ํ๊ฒ ์ต๋๋ค.
stolenbyte ์ด์ผ๊ธฐ๊ฐ ๋์ค๋ ๊ฑธ ๋ณด๋ ํจํน์ด ๋์ด์๊ฒ ๊ตฐ์.
PEid๋ก UPX ํจํน์ด ๋์ด์๋ค๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
PUSHAD ๋ช ๋ น์ด๊ฐ ์์ต๋๋ค.
์ฐํด๋ฆญ -> Search for -> All comands ๊ธฐ๋ฅ์ ์ฌ์ฉํด POPAD ๋ช ๋ น์ด๋ฅผ ์ฐพ์๋ด ์๋ค.
์ด๋ ต์ง ์๊ฒ OEP ๋ก ์ด๋ํด์ค์๋ค.
POPAD ๋ฐ OEP๋ก ์ ํํ๋ ๊ตฌ๋ฌธ์ [F2] ๋ก BP๋ฅผ ๊ฑธ๊ณ , [F9] ์ผ๋ก BP๊น์ง ์คํ์ ํด์ค๋๋ค.
๊ทธ ๋ค [F8] ๋ก JMP ๋ช ๋ น์ ์คํํด OEP ๋ก ์ด๋ํฉ๋๋ค.
์ด๋ ๊ฒ OEP ์ ๋์ฐฉํ์ต๋๋ค.
OEP ์ ๋ฐ๋ก ๋ฐ์์ MessageBoxA ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
์๋ง ์ด ๋ถ๋ถ์ด ์ฐ๋ฆฌ๊ฐ ๋ดค๋ 'ํคํ์ผ ํ์ธํ๋ ค๋ฉด OK๋ฅผ ๋๋ฌ๋ผ' ๋ฅผ ์ถ๋ ฅํ๋ ๋ถ๋ถ์ผ ๋ฏ ํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ธ์๋ก 0 ํ๋๋ง์ด ์ ๋ฌ๋๋ค์.
๋ญ๊ฐ ์ด์ํ์ฃ ?
MSDN ์์ MessageBoxA ํจ์๋ฅผ ํ ๋ฒ ์ฐพ์๋ด ์๋ค.
MessageBox ํจ์?
MessageBox ํจ์์ ์ธ์ :
hWnd
์ ํ: HWND
๋ฉ์์ง ์์์ ์์ ์ ์ฐฝ์ ๋ํ ํธ๋ค. ์ด ๋งค๊ฐ ๋ณ์๊ฐ NULL์ธ๊ฒฝ์ฐ ๋ฉ์์ง ์์์ ์์ ์ ์ฐฝ์ด ์์.
lpText
์ ํ: LPCTSTR
ํ์ํ ๋ฉ์ธ์ง. ๋ฌธ์์ด์ด ๋ ์ด์์ ์ค๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๊ฐ ์ค ๊ฐ์ ์บ๋ฆฌ์ง ๋ฆฌํด ๋ฐ/๋๋ ๋ผ์ธํผ๋ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ๋ถ๋ฆฌํ ์ ์์.
lpCaption
์ ํ: LPCTSTR
๋ํ ์์ ์ ๋ชฉ. ์ด ๋งค๊ฐ ๋ณ์๊ฐ NULL์ธ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ ๋ชฉ์ ์ค๋ฅ.
uType
์ ํ: UINT
๋ํ ์์์ ๋ด์ฉ ๋ฐ ๋์. ์ด ๋งค๊ฐ ๋ณ์๋ ๋ค์ ํ๋๊ทธ ๊ทธ๋ฃน์์ ํ๋๊ทธ๋ฅผ ์กฐํฉํ ์ ์์.
๋ฉ์์ง ์์์ ํ์๋ ๋จ์ถ๋ฅผ ๋ํ๋ด๋ ค๋ฉด ๋ค์ ๊ฐ ์ค ํ๋๋ฅผ ์ง์ ํจ.
-์ถ์ฒ MSDN-
๋ถ๋ช ์ด ํจ์๋ 4๊ฐ์ ์ธ์๋ฅผ ๋ฐ๋๋ฐ, MessageBox ํจ์ ํธ์ถ ์ ์คํ์ผ๋ก 0์ด๋ผ๋ ๊ฐ ๋ง์ ์ ๋ฌํ์ฃ ?
OEP์์๋ถํฐ ์ฝ์ด๋ณด๋ฉด ์ธ์ ์ธ ๊ฐ๊ฐ ๋ชจ์๋๋๋ค.
์๋ง ๋๋จธ์ง ์ธ ๊ฐ์ PUSH๋ ์ธ์๋ค์ด stolenbyte ์ผ ๊ฒ์
๋๋ค.
์ธ ๊ฐ์ PUSH ๋ช
๋ น์ ๋ชจ๋ 12 byte ์
๋๋ค.
OEP์ ์์๋ 12๊ฐ์ NOP ๋ช
๋ น์ด ์๊ณ , ์ด๋ ์ด 12 byte ์
๋๋ค.
์ฌ๋ผ๊ฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์์ด ๊ฐ์ฃ ?
์ฌ๊ธฐ๊ฐ stolenbyte ๊ฐ ๋ค์ด๊ฐ ์๋ฆฌ์ผ ๊ฒ ์ ๋๋ค.
๋ค์ ๋๋ฒ๊ฑฐ๋ฅผ ์ฌ์์ํด POPAD ์ OEP๋ก์ JMP๋ฌธ ์ฌ์ด์ PUSH ๋ ๊ฐ๋ค์ ์ฐพ์๋ด ์๋ค.
์๋ง ๊ทธ ๊ฐ๋ค์ด MessageBox ํจ์์ ์ธ์์ผ ๊ฒ๋๋ค.
์ด๋ ๊ฒ POPAD ์ JMP ์ฌ์ด์ ์ธ ๊ฐ์ ๊ฐ์ด PUSH ๋๋ค์.
์ด๋ค์ด MessageBox ํจ์์ ์ธ์์ด์ stolenbyte ์ ๋๋ค.
ํ ๋ฒ ํจ์นํด๋ณผ๊น์?
๊ทธ๋๋ก ๋คํ๋ฅผ ๋ ๋ฒ๋ฆฌ๋ฉด MessageBox ํจ์์ ์ ๋ฌ๋๋ ์ธ์๊ฐ ๋ชจ์๋ผ ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์ ๊ฒ ์ ๋๋ค.
์ PUSH ๋ช ๋ น๋ค์ OEP ์์ ์ฎ๊ฒจ์ ์ค๋๋ค.
00401000 ์ฃผ์๋ถํฐ [Space] ํค๋ก ๋ช ๋ น์ ์์ ํ ๋ค ์ด์ ๋ธ์ ํด ์ค๋๋ค.
์ฐจ๋ก๋๋ก PUSH 0, PUSH 00402000, PUSH 00402012 ์ผ๋ก ์์ ํฉ์๋ค.
์ฒ์ ์ฐ๋ฆฌ๊ฐ ๋ณด์๋ ๋ฉ์ธ์ง๋ฐ์ค์ ์ถ๋ ฅ๋๋ ๋ฌธ์๊ฐ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋๋ ๋ชจ์ต์ ํ์ธํ ์ ์์ต๋๋ค.
์ด์ ๋คํ๋ฅผ ๋ฐ ๊ฒ๋๋ค.
OEP ๊ฐ 0040100C ์ด์์ง๋ง ์์ ์ ํตํด 00401000 ์ฃผ์๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
Ollydump ์ ํ๋ฌ๊ทธ์ธ์ ์ด์ฉํ ๋, Entry Point ์ Modify ๊ฐ์ 100C ์์ 1000 ์ผ๋ก ๋ฐ๊ฟ์ค ๋ค Dump ๋ฒํผ์ ๋๋ฆ ๋๋ค.
์ด ํ์ผ์ ๋๋ฒ๊ฑฐ๋ก ์ด์ด๋ด ์๋ค.
์ ์์ ์ผ๋ก ํจ์น๋์ด ์คํํด๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด๋ ๊ฒ POPAD ๋ค์์ OEP ์์ผ๋ก ์ฎ๊ธด ์ฝ๋๊ฐ ํจ์ปค์ ์ํด ์ด๋๋ ์ฝ๋๋ผ๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
Stolenbyte ๋ ์์ ๋ถ์์ ๋ฐ์ค ์์ ๋ค์ด์๋ ๊ฐ์ธ 6A0068002040006812204000 ์ ๋๋ค.
Stolenbyte = 6A0068002040006812204000
์ฝ๋์์ง์ Auth ๋ฅผ ์ด์ฉํด ์ธ์ฆํด๋ด ์๋ค.
'reverse engineering > CodeEngn' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CodeEngn] Basic RCE L11 ๋ฌธ์ ํ์ด (2) | 2020.12.11 |
---|---|
[CodeEngn] Basic RCE L10 ๋ฌธ์ ํ์ด (0) | 2020.12.11 |
[CodeEngn] Basic RCE L08 ๋ฌธ์ ํ์ด (0) | 2020.12.08 |
[CodeEngn] Basic RCE L07 ๋ฌธ์ ํ์ด (5) | 2020.12.07 |
[CodeEngn] Basic RCE L06 ๋ฌธ์ ํ์ด (3) | 2020.12.06 |