728x90
1. ์ธ๋ถํต์ ๊ด๋ จ ์ฝ๋
- ์ธ๋ถ์ ํต์ ํ ๋, Win32 Internet API ๋ฐ Win32 Socket API๋ฅผ ์ฌ์ฉ
- ๊ทธ ๊ณผ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋์์ ์ํ
- UDP ํต์ : ๋จ๋ฐฉํฅ ํต์
- TCP ํต์ : ์๋ฐฉํฅ ํต์
1.1 ๋์ ํ์ธ
- Sample 07.exe๋ Internet API๋ฅผ ์ฌ์ฉํด์ procexp.exe๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์คํ.
- procexp.exe๋ MS์์ ์ ๊ณตํ๋ ํ๋ก์ธ์ค ๋ชจ๋ํฐ๋ง Tool
- TCPView.exe(sysinternals์์ ์ ๊ณตํ๋ ๋คํธ์ํฌ ๋ชจ๋ํฐ๋ง Tool)๋ฅผ ์ฌ์ฉํ๋ฉด Sample 07.exe๊ฐ "live.sysinternals.com"์ผ๋ก ์ ์ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
- ๊ทธ ๊ฒฐ๊ณผ "%temp%" ๊ฒฝ๋ก์ procexp.exe๊ฐ ๋ค์ด๋ก๋๋๊ณ ๋ค์ด๋ก๋ ์๋ฃ๋ procexp.exe๋ฅผ ์คํํ๊ณ ๋๋ฉด Sample 07.exe์ ๋์์ด ๋๋๋ค.
1.2 ์ฝ๋ ํ์ต
- procexp.exe๋ฅผ ๋ค์ด๋ก๋ ํ๋ค๊ณ ํ์ ๋, ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ด ์์ด์ผ ํ๋ค.
- "%temp%" ๊ฒฝ๋ก์ procexp.exe๋ผ๋ ์ด๋ฆ์ผ๋ก ํ์ผ์ ๋ฏธ๋ฆฌ ์์ฑํ๋ค.
- InternetOpen() API๋ฅผ ์ฌ์ฉํด์ WinINet ํจ์๋ฅผ ์ด๊ธฐํํ๋ค.(Internet API๋ฅผ ์ํ ์ค๋น ์์ )
- InternetOpenUrl() API๋ฅผ ์ฐ๋ฉด URL์ ์ง์ ๋ ๋ฆฌ์์ค๋ฅผ ์ด ์ ์๋ค.
- ๋ ๋ฒ์งธ ์ธ์ ๊ฐ 'IpUrlPath'์๋ URL("http://live.sysinternals.com/procexp.exe")๊ฐ ๋ค์ด๊ฐ๋ค.
- InternetReadFile() API๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ์ ์๋ค.
- InternetReadFile()์ ์ธ ๋ฒ์งธ ์ธ์์๋ ํฌ๊ธฐ ๊ฐ์ด ๋ค์ด๊ฐ๋ฏ๋ก ๋จผ์ ํฌ๊ธฐ๋ฅผ ๋ฌผ์ด๋ด์ผ ํ๋ค.
- ํฌ๊ธฐ๋ฅผ ๋ฌผ์ด๋ณด๊ธฐ ์ํด์๋ InternetQueryDataAvailable() API๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ ๊ฒฐ๊ณผ ์๋ฒ์์ ๋ฐ์ ์ ์๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ 'dwSize'๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ ๋๋ฉด "%temp%" ๊ฒฝ๋ก์ ์๋ procexp.exe์ ์ฑ์ ๋ฃ๊ณ ์ด ์์ ์ procexp.exe ๋ค์ด๋ก๋๊ฐ ์๋ฃ๋ ๋๊น์ง ๋ฐ๋ณต๋๋ค.
- ๋ค์ด๋ก๋ ์ฌ๋ถ๋ 'dwRead'๊ฐ์ผ๋ก ํ์ธํ ์ ์๊ณ 'dwRead'์๋ ์ฝ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ณ์์ ํฌ์ธํฐ๊ฐ ๋ค์ด๊ฐ๋๋ค.
- ๋ง์ฝ ๋ค์ด๋ก๋๊ฐ ๋๋๊ฑฐ๋ Error ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ 0์ด ๋ค์ด๊ฐ๊ณ , ์ด๋ ๋ค์ด๋ก๋ ๋์์ด ์ข ๋ฃ๋๋ค.
- ๋ค์ด๋ก๋๊ฐ ๋๋๋ฉด ํธ๋ค์ ๋ฐํ์ด ๋๊ณ ๋ง์ง๋ง์ผ๋ก procexp.exe๋ฅผ ์คํํ๊ณ Sample 07.exe๋ ์ข ๋ฃ๋๋ค.
1.3 ํ์ผ ๋ถ์
- Sample 07.exe๋ "%temp%" ๊ฒฝ๋ก๋ฅผ ์์๋ธ ๋ค์ procexp.exe ํ์ผ์ ๋ง๋ ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์์ ๋ฐ๊ธฐ ์ํด์๋ InternetOpenUrlA() ํธ์ถํด์ "https://live.sysinternals.com/procexp.exe"๋ก ์ฐ๊ฒฐ์ ์๋ํ๋ค.
- ์ฐ๊ฒฐ ์๋ฆฝ ์ฌ๋ถ๋ InternetOpenUrlA() ๋ฆฌํด ๊ฐ์ผ๋ก ํ์ธํ ์ ์๋ค.
- InternetQueryDataAvailable() API๋ฅผ ์ฌ์ฉํ๋ฉด ํ ๋ฒ์ ์ผ๋ง๋งํผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์๋์ง ์ ์ ์๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ทธ๋งํผ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ํ์ผ์ ๋ด์ผ๋ฉด ๋๋ค. InternetReadFile() API๋ฅผ ํธ์ถํ๋ฉด 'IpBuffer'๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์์ ํ์ผ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์จ๋ค.
- 'DWORD PTR SS:[ESP+10]'์ 'dwRead'๊ฐ์ ๊ฐ๋ฆฌํจ๋ค. ์ด ๊ฐ์ด 0์ด ์๋๋ฉด ๋ฐ์ดํฐ ์์ ๋์์ด ๊ณ์ ๋ฐ๋ณต๋๊ณ 'dwRead'๊ฐ์ด 0์ด ๋ ๋, ๋ค์ด๋ก๋ ๋์์ด ๋๋๊ณ ํธ๋ค ๊ฐ์ ๋ฐํํ๋ค.
- ๋ค์ด๋ก๋ํ procexp.exe๋ฅผ ์คํ์ํค๋ฉด Sample 07.exe ๋์์ ๋ง๋ฌด๋ฆฌ๋๋ค.
2. Window ์ ์ด ์ฝ๋ ํ์ต ๋ฐ ๋ถ์
- Windows ์ด์์ฒด์ ๋ ๋ค์ค ์คํ ํ๊ฒฝ์ ์ ๊ณตํ๋ ๋ฐ ์ด๋ฌํ ํ๊ฒฝ ์์ ์๋์ฐ๋ค ๊ฐ์ ๋๊ธฐํ๋ ๋ฐ์ดํฐ ๊ตํ์ ํ๊ธฐ ์ํด์๋ ์๋ก๋ฅผ ์์๋ด๋ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
2.1 ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์๋์ฐ ์ ์ด
- FindWindow() API๋ ํด๋์ค ์ด๋ฆ๊ณผ Caption ์ด๋ฆ์ ์ฌ์ฉํด์ ์ํ๋ ์๋์ฐ์ ํธ๋ค ๊ฐ์ ์ป์ ์ ์๋ค.
- ์๋์ฐ๋ฅผ ์ฐพ์ง ๋ชปํ์ ๋, NULL ๊ฐ์ ๋ฐํํ๋ค.
- ์ฒซ ๋ฒ์งธ ์ธ์์ธ lpClassName์ ํด๋์ค๋ช , ๋ ๋ฒ์งธ ์ธ์์ธ lpszWindowName์ ์๋์ฐ ์บก์ ๋ช ์ ์๋ฏธํ๋ค.
- ๋ ๋ค ์ต์ ์ด๊ธฐ ๋๋ฌธ์ ํ์์ ๋ฐ๋ผ ๋ฃ๊ฑฐ๋ NULL ๊ฐ์ ์ค ์ ์๋ค.(๊ฒ์์ ์ ํ๋๋ฅผ ๋์ด๊ธฐ ์ํด์ ๊ฐ์ ๋ชจ๋ ๋ฃ์ด์ค๋ ๋๋ค.)
- FindWindow()๋ ์ต์์ ์๋์ฐ๋ฅผ ์ฐพ์ ๋ ์ฌ์ฉํ๋ API๋ก ์ด๋ค ์๋์ฐ์ ์ข ์๋ ์๋์ฐ๋ฅผ ์ฐพ๊ณ ์ ํ ๋๋ FindWindowEx()๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- FindWindowEX() API๋ FindWindow()์ ๊ธฐ๋ฅ์ ๋ชจ๋ ํฌํจํ๊ณ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ์ฒซ ๋ฒ์งธ ์ธ์์ธ hwndParent๋ ์์ ์ด ์ฐพ๋ ์๋์ฐ์ ์ต์์ ์๋์ฐ ํธ๋ค์ด๋ค. ์ฌ๊ธฐ์ NULL ๊ฐ์ ์ฃผ๋ฉด FindWindow()์ ๋์ผํ๊ฒ ๋์.
- ๋ ๋ฒ์งธ ์ธ์์ธ hwndChildAfter๋ ๋์ผํ level์ ์๋์ฐ๋ค ์ค์์ ๊ฒ์ ์์ ์ ๊ฒฐ์ ํ๋ ์์์ด๋ค. ๋ณดํต NULL ๊ฐ์ ์ฌ์ฉํ๋ค.
*P13~20
FindWindow()๋ฅผ ์ฌ์ฉํด์ notepad.exe์ ๋ฌธ์์ด ์ถ๋ ฅ์ํค๋ ์ฐ์ต์ ๋ค์์ ์ด์ด์....
2.2 ๋์ ํ์ธ
:Sample 08.exe๋ InternetExplorer.exe๋ฅผ ์คํํ๊ณ ํน์ ์น ํ์ด์ง์ ์ ์ํ๋๋ก ๋ง๋ ๋ค.
- InternetExploer๋ฅผ ์คํํ๋ค.
- ์ฃผ์ ์ ๋ ฅ์ฐฝ์ ์ฐพ๊ณ ํธ๋ค์ ํ๋ํ๋ค.
- ์ฃผ์ ์ ๋ ฅ์ฐฝ์ "www.naver.com" ๋ฌธ์์ด์ ์ ๋ ฅํ๊ณ ENTER ๋ฉ์์ง๋ฅผ ์ ์กํ๋ค.
2.3 ์ฝ๋ ํ์ต
- FindWindow() API๋ฅผ ์ฌ์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํ ๋๋ "์ด๋ค ์๋์ฐ์ ๋ฌด์จ ๋ฉ์์ง๋ฅผ ๋์ง ๊ฒ์ธ๊ฐ?"๊ฐ ๊ฐ์ฅ ์ค์.
- ๋ด๊ฐ ์ฐพ์ ์๋์ฐ๊ฐ ๋ฉ์์ง ์ ๋ฌ ๋์์ด ์๋ ๊ฒฝ์ฐ
- ์๋ชป๋ ๋ฉ์์ง๋ฅผ ์ ๋ฌํด์ ์ ๋๋ก ๋์ํ์ง ์๋ ๊ฒฝ์ฐ
- ๋ง์ ํ์ธ ๊ณผ์ ํ์
- Spy++์ Find๊ธฐ๋ฅ์ ์ฌ์ฉํด์ ์ฃผ์๊ฐ ์ ๋ ฅ๋๋ ์๋์ฐ๋ฅผ ํ์ธ
- ํ๊น์ผ๋ก ์ผ์ ์๋์ฐ InternetExplorer.exe์ ์ฃผ์ ์ ๋ ฅ์ฐฝ์ URL ์ ๋ ฅํ๊ณ Enter ํค๋ฅผ ์ ๋ฌํ๋ฉด ์ํ๋ ์ฃผ์๋ก ์ ์
- ์ค์ ํ๊น ์๋์ฐ์ ์ผ์นํ์ง ์์
- InternetExplorer.exe๋ Windows์์ ๊ธฐ๋ณธ์ผ๋ก ์ค์น๋๋ ์ํํธ์จ์ด์ด๊ธฐ ๋๋ฌธ์ ์ค์น ๊ฒฝ๋ก๊ฐ ์ ํด์ ธ ์๋ค. ์ด ์ ์ ์ด์ฉํด์ InternetExplorer.exe ๊ฒฝ๋ก๋ฅผ ๋ง๋ค๊ณ ์คํํ๋ค.
- FindWindow()์ FindWindowEx() API๋ฅผ ์ฌ์ฉํด์ InternetExplorer.exe์ Edit ์๋์ฐ ํธ๋ค์ ์ป์ผ๋ฉด ๋๋ค.
- Edit ์๋์ฐ์ URL์ ์ ๋ ฅํ๊ณ Enter ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋๋ก ๊ฐ์ํค ์ฝ๋๋ฅผ ์ ๋ฌํ๋ฉด ๋๋ค.
2.4 ํ์ผ ๋ถ์
- Sample 08.exe ํ์ผ์ ๋ถ์ํ๊ธฐ ์ํด ExpandEnvironmentStrings() API๋ฅผ ์ฌ์ฉ
- ExpandEnvironmentString() API๋ ํน์ ํ๊ฒฝ ๋ณ์์ ๋ํ ๊ฒฝ๋ก ๊ฐ์ ์ป์ ์ ์๋ค.
- ์ด๋ฅผ ์ด์ฉํด "%ProgramFiles%" ๊ฒฝ๋ก๋ฅผ ์์๋ผ ์ ์๋ค.
- "\Internet Explorer\iexplore.exe" ๋ฌธ์์ด์ ๋ํ๊ณ WinExec() API๋ฅผ ํธ์ถํด์ Internet Explorer.exe๋ฅผ ์คํํ๋ค.
- ๋ฌธ์์ด์ ํฉ์น๋ ๊ณผ์ ์์ ์ด์ ๋ธ๋ฆฌ ์ฝ๋๋ค์ ์ญํ
- InternetExplore.exe๊ฐ ์์ ํ ์คํ๋ ๋๊น์ง ์ผ์ ์๊ฐ์ ๋๊ธฐํ ๋ค์, FindWindow()์ FindWindowEx() API๋ฅผ ์ฌ์ฉํด์ ํ๊น ์๋์ฐ๋ฅผ ์ฐพ๋๋ค.
- IEFrame๋ถํฐ ์ฐจ๋ก๋ก ์์ ์๋์ฐ๋ฅผ ์ฐพ์๊ฐ๋ค ๋ณด๋ฉด Edit ์๋์ฐ์ ํธ๋ค ๊ฐ์ ์ป์ ์ ์๋ค.
- Edit ์๋์ฐ์ URL ์ ๋ณด๋ฅผ ์ ๋ ฅํ๋๋ก ์ค์ ํ๋ค. SendMessage()๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ฐ์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ ์ ์๋ค.
- WM_KEYDOWN ๋ฉ์์ง๋ฅผ ์ ๋ฌํด์ ์ํฐํค๋ฅผ ๋๋ฅด๋ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๊ฐ ๋ฐ์ํ๋๋ก ํ๋ค.
- ๊ทธ ๊ฒฐ๊ณผ ํน์ ์น ํ์ด์ง๋ก ์ ์ํ๊ฒ ๋๋ค. ์ธ ๋ฒ์งธ ์ธ์๋ก ๋ค์ด๊ฐ๋ 0x0D๋ ๊ฐ์ํค ๊ฐ์ผ๋ก VK_RETURN์ ์๋ฏธํ๋ค.
3. TEB & PEB
- Windows์์ API๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ ์ง์ ํธ์ถ๊ณผ ๊ฐ์ ํธ์ถ๋ก ๋๋ ์ ์๋ค.
- ํธ์ถ ์ฃผ์ ์ ๋ณด๋ฅผ IAT์ ๊ธฐ๋กํด๋๊ณ ์ฐธ์กฐํ๋์ง, ์๋๋ฉด ์ง์ ์์๋ด๋์ง์ ์ฐจ์ด๊ฐ ์๋ค๊ณ ๋ณด๋ฉด ๋๋ค.(์ง๊ธ๊น์ง๋ ๋ชจ๋ API ๊ฐ์ ํธ์ถ ์ฌ์ฉ)
- ์ฌ๊ธฐ์ 'CALL DWORD PTR DS:[0x00405000]'์ 0x00405000 ์ฃผ์์ ์๋ 4๋ฐ์ดํธ๋ฅผ ํธ์ถํ๋ค๋ ์๋ฏธ
- 0x00405000 ์ฃผ์๋ Import Address Table์ด๊ณ WinExec() API ์ฃผ์๊ฐ ๊ธฐ๋ก๋์ด ์๋ค. ๊ทธ ๊ฒฐ๊ณผ WinExec() API๋ฅผ ํธ์ถํ๋ค.
- ์ง์ ํธ์ถ์ WinExec()๋ Kernel32.dll์์ Export ํ๋ API๋ค.
- ํธ์ถ ์ฃผ์๋ ๋น์ฐํ Kernel32.dll์ Export Table์ ๊ธฐ๋ก๋์ด ์๋ค. Export Table์ ์์น ์ ๋ณด๋ PE Header์ ์๋ค.
- Kernel32.dll์ ๋ก๋๋์ด ์๋ ์ฃผ์๋ฅผ ์์๋ธ๋ค.(= ImageBase)
- ImageBase๋ฅผ ๊ธฐ์ค์ผ๋ก +0x0000008D ์ฃผ์์๋ EXPORT Table์ RVA๊ฐ ๊ธฐ๋ก๋์ด ์๋ค.
- EXPORT Table๋ก ์ด๋ํด์ WinExec() API์ ํธ์ถ ์ฃผ์๋ฅผ ์ป๋๋ค.
- WinExec() API๋ฅผ ํธ์ถํ๋ค.
** ๋ค์์ ๋ ์ด์ด์....
'EVI$ION > ์ธ๊ณต์ง๋ฅ ์ ์ฑ์ฝ๋ ๋ถ๋ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฆฌ๋ฒ์ฑ ์ด ์ ๋๋ ์์์ผ์ง] #3. Windows ๋ฆฌ๋ฒ์ฑ ๊ธฐ๋ฅ ๋ถ์(1) (1) | 2024.11.21 |
---|---|
[STUDY] #WEEK3 - QUIZ (0) | 2024.10.04 |
[SESSION] 3. PEํ์ผ(2) (1) | 2024.10.04 |
[STUDY] #WEEK2 - QUIZ (0) | 2024.09.24 |
[SESSION] 2. PEํ์ผ (0) | 2024.09.24 |