**โ ๏ธ ์์ค ํ์ผ ์ฃผ์**: ์์ค ํ์ผ๋ช ์ "The Shellcoder's Handbook (Chris Anley)"์ผ๋ก ๋์ด ์์ผ๋, ์ค์ ๋ด์ฉ์ ์ด ์ฑ ์ ๋๋ค.
์ด ๋งํฌ๋ฅผ ํตํด ๊ตฌ๋งคํ๋ฉด ์ด์์์๊ฒ ์์ ์ ์์๋ฃ๊ฐ ์ง๊ธ๋ ์ ์์ต๋๋ค.
YES24์์ ๊ตฌ๋งคํ๊ธฐRootkits: Subverting the Windows Kernel โ Greg Hoglund & James Butler (2005)
โ ๏ธ ์์ค ํ์ผ ์ฃผ์: ์์ค ํ์ผ๋ช ์ "The Shellcoder's Handbook (Chris Anley)"์ผ๋ก ๋์ด ์์ผ๋, ์ค์ ๋ด์ฉ์ ์ด ์ฑ ์ ๋๋ค.
ํต์ฌ ์ฌ์ค
- ์ ์: Greg Hoglund (HBGary CEO, rootkit.com ์ฐฝ๋ฆฝ์) + James Butler (VICE ํ์ง๋๊ตฌ ๊ฐ๋ฐ์)
- ์ถํ: Addison-Wesley Professional, 2005 / ISBN: 0-321-29431-9 / 352ํ์ด์ง
- ํต์ฌ ๋ช ์ : ๋ฃจํธํท์ "์์์ ยทํ์ง๋ถ๊ฐ ์ ๊ทผ"์ ์ ๊ณตํ๋ ์ฝ๋ ์งํฉ์ด๋ฉฐ, ์ปค๋์ ์กฐ์ํ๋ ์๊ฐ OS๊ฐ ๋ณด๊ณ ํ๋ ๋ชจ๋ ๊ฒ์ด ๊ฑฐ์ง์ด ๋๋ค
- ๊ด์ : ๊ณต๊ฒฉ์ ์์ ์ผ๋ก ๊ธฐ๋ฒ์ ์ค๋ช ํ ๋ค, ๋ง์ง๋ง ์ฑํฐ์์ ๋ฐฉ์ด๋ก ์ ํ
๋ฃจํธํท์ด๋ ๋ฌด์์ธ๊ฐ
์ ์
๋ฃจํธํท = "root(์ต๊ณ ๊ถํ)" + "kit(๋๊ตฌ ๋ชจ์". ์์คํ ์ ์์์ ์ด๊ณ ํ์ง ๋ถ๊ฐ๋ฅํ ์กด์ฌ๊ฐ์ ์ ์งํ๋ ํ๋ก๊ทธ๋จ ์งํฉ.
ํต์ฌ ํค์๋๋ "ํ์ง ๋ถ๊ฐ๋ฅ(undetectable)" โ ๋ชจ๋ ๊ธฐ์ ๊ณผ ํธ๋ฆญ์ด ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ์จ๊ธฐ๊ธฐ ์ํ ๊ฒ.
๋ ๊ฐ์ง ํต์ฌ ๊ธฐ๋ฅ
- ์๊ฒฉ ๋ช ๋ นยท์ ์ด(Remote C&C): ํ์ผ ์ ๊ทผ, ๊ฐ์ ์ฌ์์, ์ปค๋งจ๋ ์ ธ(/bin/sh, cmd.exe) ํ๋
- ์ํํธ์จ์ด ๋์ฒญ(Software Eavesdropping): ํค์คํธ๋กํฌ ๊ฐ๋ก์ฑ๊ธฐ, ํจํท ์ค๋ํ, ์ด๋ฉ์ผ ์ด๋, ์ํธํ ํค ํ์ทจ
๊ณต๊ฒฉ์ ๋๊ธฐ
- ์ด๊ธฐ ์นจํฌ ๋น์ฉ์ด ํฌ๋ฏ๋ก ํ๋ํ ๊ฑฐ์ ์ ์ ์งํ๋ ค ํจ
- ๋ด๋ถ ๋คํธ์ํฌ ๊น์์ด ์ถ๊ฐ ๊ณต๊ฒฉ ๊ฑฐ์ ํ๋ณด
- ์ ๋ณด ์์ง(์ธํ ๋ฆฌ์ ์ค) โ ์ฅ๊ธฐ ๋ชจ๋ํฐ๋ง
- ๋ ผ๋ฆฌ ํญํ(Logic Bomb) ์ฌ๊ธฐ โ ํน์ ์๊ฐ์ ์์คํ ํ๊ดด
๊ธฐ์ ๊ตฌ์กฐ โ 10๊ฐ ์ฑํฐ ํต์ฌ
1์ฅ. ํ์ ๋จ๊ธฐ์ง ์๊ธฐ (Leave No Trace)
- ๋ฐฉ์ด์๋ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ๋ง์์ผ ํ๋, ๊ณต๊ฒฉ์๋ ํ๋๋ง ์ฐพ์ผ๋ฉด ๋๋ค โ ์ซ์๋ ๊ณต๊ฒฉ์ ํธ
- ๋ฃจํธํท ์ข ๋ฅ: 1์ธ๋(์ผ๋ฐ ํ๋ก๊ทธ๋จ) โ ํ์ฌ(๋๋ฐ์ด์ค ๋๋ผ์ด๋ฒ) โ ๋ฏธ๋(๋ง์ดํฌ๋ก์ฝ๋/FPGA ํ์จ์ด)
- ํ์ง ๋์: HIPS(Host Intrusion Prevention System) vs NIDS(Network IDS) ์ฐํ ์ ๋ต
2์ฅ. ์ปค๋ ์ ๋ณต (Subverting the Kernel)
- OS๋ฅผ ๋ณ์กฐํ๋ฉด OS๊ฐ ๋ณด๊ณ ํ๋ ๋ชจ๋ ์ ๋ณด๊ฐ ๊ฑฐ์ง์ด ๋๋ค โ ์ด๊ฒ์ด ์ปค๋ ๋ฃจํธํท์ ํต์ฌ ๋ ๋ฒ๋ฆฌ์ง
- ์ปค๋ ์ฃผ์ ๊ตฌ์ฑ ์์์ ๊ณต๊ฒฉ ํฌ์ธํธ:
| ์ปค๋ ๊ธฐ๋ฅ | ๊ณต๊ฒฉ ์ ํจ๊ณผ |
|---|---|
| ํ๋ก์ธ์ค ๊ด๋ฆฌ | ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์กฐ์ โ ํ๋ก์ธ์ค ์๋ |
| ํ์ผ ์ ๊ทผ | ์ฝ๋ ์กฐ์ โ ํ์ผยท๋๋ ํ ๋ฆฌ ์๋ |
| ๋ณด์ ์์คํ | ๊ถํ ์ ํ ์์ ๋ฌด๋ ฅํ |
| ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ | ๊ฐ์-๋ฌผ๋ฆฌ ๋งคํ ์ ์ฉ โ ๋๋ฒ๊ฑฐยทํฌ๋ ์ ํํผ |
- ๋ฃจํธํท ๋ถํ ์ ์์กด ๋ฐฉ๋ฒ (์ฌ๋ถํ ํ์๋ ์ ์ง):
- Run ๋ ์ง์คํธ๋ฆฌ ํค (๊ณ ์ํ, ๋ชจ๋ ๋ฐ์ด๋ฌ์ค ์ค์บ๋ ์ฒดํฌ)
- ๊ธฐ์กด .sys/.exe ํ์ผ Trojanํ โ ๋ณด์ ์ํํธ์จ์ด ๊ฐ์ผ์ด ์ญ์ค์ ์ผ๋ก ๊ฐ์ฅ ํจ๊ณผ์
- ๋๋ผ์ด๋ฒ๋ก ๋ฑ๋ก
- on-disk ์ปค๋ ์ง์ ์์
- ๋ถํธ๋ก๋ ์์
3์ฅ. ํ๋์จ์ด ์ฐ๊ฒฐ โ Ring 0์ ์ธ๊ณ
- Ring 0 (์ปค๋ ๋ชจ๋): CPU ์ต๊ณ ํน๊ถ ์์ค โ ํ๋์จ์ด ์ง์ ์ ๊ทผ ๊ฐ๋ฅ
- Ring 3 (์ฌ์ฉ์ ๋ชจ๋): ์ผ๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ ์์ค, ์ปค๋ ์๋น์ค ๊ฒฝ์ ๊ฐ์
- ํต์ฌ ํ ์ด๋ธ:
- SSDT (System Service Descriptor Table): ์ฌ์ฉ์ ๋ชจ๋ API ํธ์ถ์ ์ปค๋ ํจ์๋ก ์ฐ๊ฒฐํ๋ ๋์คํจ์น ํ ์ด๋ธ โ ํํน์ ํต์ฌ ํ์
- IDT (Interrupt Descriptor Table): ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ํ ์ด๋ธ
- MDT (Memory Descriptor Tables): ๊ฐ์-๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๋งคํ
- CR0 ๋ ์ง์คํธ: ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๋นํธ ํฌํจ โ ๋ฃจํธํท์ด ์ด๋ฅผ ๋๋ฉด ์ฝ๊ธฐ์ ์ฉ ๋ฉ๋ชจ๋ฆฌ์๋ ์ฐ๊ธฐ ๊ฐ๋ฅ
4์ฅ. ํํน ๊ธฐ๋ฒ (Hooking)
๊ฐ์ฅ ๊ณ ์ ์ ์ด๊ณ ๊ด๋ฒ์ํ๊ฒ ์ฐ์ด๋ ๋ฃจํธํท ๊ธฐ๋ฒ.
์ ์ ๋๋ ํํน:
- DLL ์ธ์ ์ : ๋์ ํ๋ก์ธ์ค์ ์์ ์ DLL ์ฃผ์ โ ํจ์ ํฌ์ธํฐ ๊ต์ฒด
- CreateRemoteThread() ํ์ฉ
์ปค๋ ํํน:
- SSDT ํํน: NtQuerySystemInformation ๊ฐ์ syscall ๊ต์ฒด โ ํ๋ก์ธ์ค ๋ชฉ๋ก์์ ์ญ์
- netstat.exe๋ก ํฌํธ๊ฐ ๋ณด์ด๋ฉด ์จ๊ฒจ์ง ํ๋ก์ธ์ค๊ฐ ๋ ธ์ถ๋๋ ์ฝ์ ์กด์ฌ
ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ: ํ์ง ์ฐํ๋ฅผ ์ํด ์ ์ ๋๋ + ์ปค๋ ํผํฉ
5์ฅ. ๋ฐํ์ ํจ์นญ (Runtime Patching)
- Detour Patching: ํจ์ ํ๋ฆฌ์ฐ๋ธ์ 5๋ฐ์ดํธ ๋ฌด์กฐ๊ฑด ์ ํ(JMP) ์ฝ์ โ ์์ ์ ํจ์๋ก ์คํ ํ๋ฆ ์ ํ
- Jump Templates: ์ฌ๋ฌ ํจ์นญ ๋ณํ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ ํ๋ฆฟ์ผ๋ก ๊ด๋ฆฌ
- Cavern Infection: ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง ํ๋จ์ ์ฌ์ฉ๋์ง ์๋ ๊ณต๊ฐ์ ์ฝ๋ ์ฝ์
- ํ์ง๊ฐ ๋น๊ต์ ์ด๋ ต๊ณ ๊ฐ๋ ฅ โ "๊ฐ์ฅ ๊ฐํ ํ๋ก๊ทธ๋จ ๋ก์ง ๋ณ์กฐ ๋ฐฉ๋ฒ"
6์ฅ. ๋ ์ด์ด๋ ๋๋ผ์ด๋ฒ (Layered Drivers)
- Windows ๋๋ผ์ด๋ฒ ์ฒด์ธ: ํ๋์จ์ด ๋๋ผ์ด๋ฒ ์์ ๋ ์ด์ด ๋๋ผ์ด๋ฒ๋ฅผ ์ฝ์ ํด ๋ฐ์ดํฐ ๊ฐ๋ก์ฑ๊ธฐ
- KLOG ๋ฃจํธํท: ํค๋ณด๋ ๋๋ผ์ด๋ฒ ์์ ๋ ์ด์ด ์ฝ์ โ ๋ชจ๋ ํค์คํธ๋กํฌ ๋ก๊น
- ํ์ผ ํํฐ ๋๋ผ์ด๋ฒ: ์ ์ฅ/์ฝ๊ธฐ ๊ณผ์ ์์ ๋ฐ์ดํฐ ์กฐ์ยท์๋ ๊ฐ๋ฅ
7์ฅ. DKOM โ ์ง์ ์ปค๋ ์ค๋ธ์ ํธ ์กฐ์ (Direct Kernel Object Manipulation)
ํํน ์์ด ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์์ฒด๋ฅผ ์ง์ ๋ณ์กฐํ๋ ๋ฐฉ์. ํ์ง ์ฐํ์ ๋ ํจ๊ณผ์ .
ํ๋ก์ธ์ค ์๋ ๋ฉ์ปค๋์ฆ:
KPRCB โ fs:0x124 โ ETHREAD โ KTHREAD โ EPROCESS
โ
EPROCESS โ EPROCESS โ EPROCESS (์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ)
โ
์ด ๋
ธ๋์ FLINK/BLINK๋ฅผ ์กฐ์ํ๋ฉด ํ๋ก์ธ์ค๊ฐ ๋ชฉ๋ก์์ ์ฌ๋ผ์ง
- PsGetCurrentProcess() โ EPROCESS ๊ตฌ์กฐ์ฒด ํ์ โ LIST_ENTRY ์กฐ์
- OS ๋ฒ์ ๋ณ ์คํ์ ์ด ๋ค๋ฆ (NT:0x108 / 2000:0x12c / XP:0xc8)
ํ ํฐ ๊ถํ ์์น:
- EPROCESS ๋ด ํ ํฐ ์คํ์ ์ ์ง์ ์ ๊ทผ โ ๊ถํ ๊ทธ๋ฃน/SID ์์
- Win32 API ์์ด ์ปค๋์์ ์ง์ ์ฒ๋ฆฌ โ ํน๊ถ ๊ฒ์ฌ ์ฐํ
8์ฅ. ํ๋์จ์ด ์กฐ์
- ์ฅ์ : ์ํํธ์จ์ด ๊ณ์ธต ์๋์ ์์น โ ์ต์์ ์คํ ์ค
- ๋จ์ : ํ๋ซํผ ํน์ด์ โ ๋ฒ์ฉ ๋ฃจํธํท ๋ถ๊ฐ๋ฅ
- ํ์จ์ด ์์ : BIOS๋ฅผ IDA-Pro๋ก ์ญ๊ณตํ โ ์คํ ๊ฒฝ๋ก ํจ์นญ
- ์ํํธ์จ์ด ๋ก๋๋ก ํ์จ์ด ๋ฉ๋ชจ๋ฆฌ ์นฉ์ ์ฐ๊ธฐ (๋ฌผ๋ฆฌ ์ ๊ทผ ๋ถํ์)
- ๋ผ์ฐํฐยท์๋ฒ ๋๋ ์์คํ ์ ๊ฒฝ์ฐ ํ์จ์ด ์ ๊ทธ๋ ์ด๋ ๊ธฐ๋ฅ ์ ์ฉ
- x86 ํฌํธ ์ ๊ทผ:
in/out๋ช ๋ น์ผ๋ก ํ๋์จ์ด ์ปจํธ๋กค๋ฌ ์ง์ ์ ์ด
9์ฅ. ์ปค๋ฒํธ ์ฑ๋ (Covert Channels)
ํ์ง ์์ด ์ธ๋ถ์ ํต์ ํ๊ธฐ ์ํ ๊ธฐ๋ฒ.
ํต์ฌ ์์น: "์ด๋ฏธ ์กด์ฌํ๋ ํธ๋ํฝ ์์ ์จ์ด๋ผ"
ํ๋กํ ์ฝ ์์ฅ:
- DNS ํฌํธ 53 (UDP/TCP): ๋ฐฉํ๋ฒฝ๋ ํ์ฉ, ํจํท์ ๋ฐ์ดํฐ ์ฝ์
- HTTP ํฌํธ 80 / HTTPS ํฌํธ 443 (์ํธํ): IDS ๋ถ์ ํํผ
- ์ฃผ์: ์ํธํ๋ ๊ณ ์ํธ๋กํผ ๋ฐ์ดํฐ๋ ์คํ๋ ค ๋์ ๋ ์ ์์
ํธ๋ํฝ ํจํด:
- ์๋ฒฝ 3์ ๊ฐ์์ค๋ฌ์ด ์คํ์ดํฌ = ์ฆ๊ฐ ์์ฌ
- ๋ณด์์ ํธ๋ํฝ ์ ์ง + ํ์ด๋ก๋ ์คํ ๊ฐ๋ ธ๊ทธ๋ํผ/์ํธํ
์ปค๋ ๋ชจ๋ ๋คํธ์ํน:
- TDI (Transport Data Interface): ๊ธฐ์กด TCP/IP ์คํ ํ์ฉ โ ์ฝ์ง๋ง ๋ฐ์คํฌํ ๋ฐฉํ๋ฒฝ์ ํ์ง ๊ฐ๋ฅ
- NDIS: raw ํจํท ์ง์ ์ฝ๊ธฐยท์ฐ๊ธฐ โ ๋ฐฉํ๋ฒฝ ์ฐํ ๊ฐ๋ฅํ๋ ์์ฒด TCP/IP ์คํ ๊ตฌํ ํ์
- Raw ํจํท ์กฐ์: MAC ์ฃผ์ยท์์ค IPยท์์ค ํฌํธ ์์ ์ ์ด ๊ฐ๋ฅ
10์ฅ. ๋ฃจํธํท ํ์ง
ํ์ง๋ OS์๊ฒ "๊ฑฐ์ง๋ง"์ ์ก์๋ด๋ ๊ฒ โ ์ง์ค์ API ์์ด ์ง์ ํ์ธํด์ผ ํ๋ค.
์กด์ฌ ํ์ง (Presence Detection):
- SSDT ๋ณ์กฐ ์ฌ๋ถ ํ์ธ (์ฒดํฌ์ฌ, ํฌ์ธํฐ ๋น๊ต)
- ๋๋ผ์ด๋ฒ ๋ชฉ๋ก๊ณผ ์ค์ ๋ก๋๋ ๋ชจ๋ ๋น๊ต
- ๋ ์ง์คํธ๋ฆฌ API vs. ํ์ผ ์ง์ ํ์ฑ ๋น๊ต (RootkitRevealer ๋ฐฉ์)
ํ๋ ํ์ง (Behavior Detection):
- RootkitRevealer (Mark Russinovich & Bryce Cogswell, Sysinternals): ๋ ์ง์คํธ๋ฆฌยทํ์ผ์์คํ ์ API ์์ด ์ง์ ํ์ฑ โ API ๊ฒฐ๊ณผ์ ๋น๊ตํด ๋ถ์ผ์น ํ์ง
- SwapContext ํํน: ์ปค๋ ์ค์ผ์ค๋ฌ ์ปจํ ์คํธ ์ค์ ์ EPROCESS ๋ฆฌ์คํธ ์ฐ๊ฒฐ ์ฌ๋ถ ๊ฒ์ฆ โ DKOM์ผ๋ก ์จ๊ฒจ์ง ํ๋ก์ธ์ค๋ ํ์ง ๊ฐ๋ฅ
- "์ค์ผ์ค๋ฌ๋ ์จ๊ฒจ์ง ์ค๋ ๋๋ ์คํํด์ผ ํ๋ค" โ ์ด๊ฒ์ด DKOM ์ฐํ์ ์ฝ์
๊ฒ์ถ์ ํ๊ณ:
- ํ์ง ์ฝ๋๊ฐ ๊ณต๊ฐ๋๋ ์๊ฐ ๊ณต๊ฒฉ์๊ฐ ์ฐํ๋ฒ์ ๊ฐ๋ฐ โ ๋์๋ ๊ตฐ๋น ๊ฒฝ์
- ํ๋์จ์ด ๊ธฐ๋ฐ ๋ฃจํธํท vs. ํ๋์จ์ด ๊ธฐ๋ฐ ํ์ง ๋๊ตฌ(Copilot, University of Maryland) โ ์ต์ ์
์ค์ ์ธ์ฌ์ดํธ
๋ฐฉ์ด์์๊ฒ ๋ถ๋ฆฌํ ์ํ์ ๊ตฌ์กฐ
"๊ณต๊ฒฉ์๋ ๋ฐฉ์ด์๊ฐ ์๊ฐํ์ง ๋ชปํ ํ ๊ฐ์ง๋ง ์ฐพ์ผ๋ฉด ๋๋ค. ๋ฐฉ์ด์๋ ๊ณต๊ฒฉ์๊ฐ ํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ์๊ฐํด์ผ ํ๋ค."
๋ฃจํธํท ์ค๊ณ ์์น (๊ณต๊ฒฉ์ ์์ )
- ์ต์ ๋ฐ์๊ตญ: ํ์ผ์์คํ ๋ฏธ์ฌ์ฉ โ ํ์ง ์ต์ํ
- ๊ณ ์ ๊ตฌ์กฐ: ์๋ ค์ง ํจํด ํํผ โ ๋ฐ์ด๋ฌ์ค ์ค์บ๋๋ ์๋ ค์ง ๊ฒ๋ง ์ฐพ๋๋ค
- ์คํ ์ค ์ฐ์ : ๋ถํ์ํ ๊ธฐ๋ฅ ์ ๊ฑฐ (Back Orifice์ฒ๋ผ CD ํธ๋ ์ด ์ฌ๋ ๊ธฐ๋ฅ์ ์ํ)
- ๋ถํ ์์กด: ์ฌ๋ถํ ํ์๋ ์ง์ โ ๊ฐ์ฅ ๊น๋ค๋ก์ด ์๊ตฌ์ฌํญ
๋ฒํผ ์ค๋ฒํ๋ก์ฐ์ ๋ฏธ๋
์ ์ ์์ธก (2005๋ ๊ธฐ์ค): "ํฅํ ์์ญ ๋ ์์ ๋ฒํผ ์ค๋ฒํ๋ก์ฐ๋ ์ฌ๋งํ ๊ฒ โ ํ์ ์์ ์ธ์ดยท์ปดํ์ผ๋ฌยทVM ๊ธฐ์ ์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ. ๊ทธ๋ฌ๋ ๋ฃจํธํท์ ์ฌ๋ผ์ง์ง ์๋๋ค. ์ฌ๋๋ค์ ํญ์ ๋ค๋ฅธ ์ฌ๋๋ค์ ๊ฐ์ํ๊ณ ์ถ์ดํ๋ค."
์ ์
- Greg Hoglund: Windows NT ๋ฃจํธํท ์ต์ด ๋ฌธ์ํ, rootkit.com ์ฐฝ๋ฆฝ, Black Hat ์ฐ์ฌ, HBGary CEO
- James Butler: VICE (๋ฃจํธํท ํ์งยทํฌ๋ ์ ์์คํ ) ๊ฐ๋ฐ์, ์ NSA ์ปดํจํฐ ๊ณผํ์, ๅ Enterasys ๋ณด์ ์์ ์์ง๋์ด