1. ๋ฐฐ๊ฒฝ/์ญ์ฌ โ ์ธ์ , ๋๊ฐ, ์ ์ ๋ช ํ๊ฐ
2001๋ 7์ 13์ผ ๋ฐฐํฌ๋๊ณ 7์ 15์ผ ์ธํฐ๋ท์์ ์ฒ์ ๊ด์ธก๋ Code Red๋ ๋ง์ดํฌ๋ก์ํํธ IIS ์น์๋ฒ๋ง์ ๊ฒจ๋ ์๊ธฐ๋ณต์ ์์ด๋ค. Morris Worm(1988)์ด '์ธํฐ๋ท์ ๋ฉ์ถ ์ต์ด์ ์'์ด๋ผ๋ฉด, Code Red๋ "์๋ฒ๋ฅผ ๋๊ท๋ชจ๋ก ์ฅ์ ํ๊ณ , ์ค์ค๋ก ์นํ์ด์ง๋ฅผ ๋ฐ๊พธ๊ณ , ํน์ ๋์์ ํฅํด DDoS๊น์ง ์์ฝํ๋" โ ์ฆ ์ ํ + ๋ณ์กฐ + ๊ณต๊ฒฉ์ ํ ๋ฉ์ด๋ฆฌ๋ก ๋ฌถ์ ์ต์ด์ ๋๊ท๋ชจ ํผํฉ ์ํ(mixed-threat)์ด์๋ค.
๋ฐ๊ฒฌ์๋ eEye Digital Security์ Marc Maiffret๊ณผ Ryan Permeh, ์ทจ์ฝ์ ์์ฒด๋ฅผ ์ฐพ์ ์ฌ๋์ ๊ฐ์ ํ์ฌ์ Riley Hassell๋ค. ์ด๋ฆ์ ์ ๋๋ ๋ค์ ์๋ฑํ๋ค โ ๋ฐ๊ฒฌ ๋น์ ๊ทธ๋ค์ด ๋ง์๋ ๋ง์ดํด๋ 'Code Red'์์ ๋ฐ์๋ค. ์์ด ์ ์ฉํ ๊ฒฐํจ์ ๋ง์ดํฌ๋ก์ํํธ ๋ณด์ ๊ณต์ง MS01-033 / CVE-2001-0500, ์ฆ IIS์ ๋ธ๋ ค ์ค๋ Index Server ISAPI ํ์ฅ(idq.dll)์ ๊ธธ์ด ๊ฒ์ฌ ์๋ ๋ฒํผ ๋ณต์ฌ๋ค. ๊ฒฐ์ ์ ์ธ ์ฌ์ค ํ๋ โ ํจ์น๋ ์๋ณด๋ค ํ ๋ฌ ๋จผ์ , 2001๋ 6์ 18์ผ์ ์ด๋ฏธ ๊ณต๊ฐ๋ผ ์์๋ค.
๊ทธ๋ผ์๋ 2001๋ 7์ 19์ผ ํ๋ฃจ์๋ง 359,000๋๊ฐ ๊ฐ์ผ๋๋ค. ์ฌํ ๋ค CRv2(๋ณ์ข )๊ฐ 7์ 31์ผ ๋ค์ 300,000๋ ๊ท๋ชจ๋ก ์ฌํ์ฐ๋๋ฉฐ "ํจ์น๋ฅผ ์ ํ๋ฉด ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๋๊ฐ"๋ฅผ ์ ์ธ๊ณ์ ์ฆ๋ช ํ๊ณ , ์ด ์์ ํธ๋ํฝ์ด ์ ์ธ๊ณ์์ ๊ด์ธก๋๋ฉด์ ๋๊ท๋ชจ ๊ฐ์ผ ๋ฐ์ดํฐ๋ฅผ ๊ทผ๊ฑฐ๋ก ํ ์ต์ด์ ์ ํ์ฐ ์ฐ๊ตฌ(CAIDA)๊ฐ ๋์๋ค. ์ ์์ฒด๋ฅผ ๋ง๋ ๋ฐฉ๋ฒ์ ์ฒ์ ์์๋ธ Kenneth D. Eichman์ ๊ทธ ๊ณต๋ก๋ก ๋ฐฑ์ ๊ด์ ์ด์ฒญ๋๊ธฐ๋ ํ๋ค.
๊ณ๋ณด๋ ๋๋ ทํ๋ค. ๋์ผํ ์ฃผ์ ๋ฒกํฐ๋ฅผ ๊ทธ๋๋ก ์ฐ๋ ํ์ด๋ก๋๋ฅผ ์์ ํ ๋ฐ๊พผ Code Red II(2001๋ 8์ 4์ผ)๊ฐ 2์ฃผ ๋ค ๋ฑ์ฅํด ์น์๋ฒ์ ๋ฐฑ๋์ด๋ฅผ ์ฌ์๊ณ , ๊ทธ๋ก๋ถํฐ 6์ฃผ ๋ค Nimda(2001๋ 9์ 18์ผ)๊ฐ .ida ๋ฒกํฐ๋ฅผ ํฌํจํ ๋ค์ค ๊ฐ์ผ ๊ฒฝ๋ก๋ก ์ด์ด์ก๋ค. ๊ด๋ฆฌ์๋ค์ด ์ด 3์ฐํ๋ฅผ ๊ฒช์ผ๋ฉฐ ํจ์น ๊ด๋ฆฌ(Patch Management)์ ์ทจ์ฝ์ ๋ ธ์ถ๋ฉด ์ถ์๊ฐ ๋ณด์์ ์ค์ฌ์ผ๋ก ์ด๋ํ๋ค.
- ์ ์ฑ์ฝ๋๋ช : Code Red (eEye ๋ช ์นญ CRv) ยท ๋ณ์ข CRvII / Code Red II(๋ณ๋ ์์ผ๋ก ๋ถ์)
- ๋ฑ์ฅ: 2001-07-13 ๋ฐฐํฌ โ 2001-07-15 ์ธํฐ๋ท ๊ด์ธก โ 2001-07-19 ์ต๋ ํ์ฐ(359,000๋) ยท CRv2 2001-07-31 ์ฌํ์ฐ ยท Code Red II 2001-08-04 ยท Nimda 2001-09-18
- ์ทจ์ฝ์ : CVE-2001-0500 (MS01-033) โ IIS Index Server ISAPI ํ์ฅ(idq.dll)์ ๊ธธ์ด ๊ฒ์ฌ ์๋ ๋ฒํผ ๋ณต์ฌ. IIS 4.0(NT 4.0)ยทIIS 5.0(Windows 2000). ํจ์น๋ 2001-06-18, ์๋ณด๋ค ํ ๋ฌ ์์ ๊ณต๊ฐ
- ์ ํ: ์๋ฒ ๋์ ์๊ธฐ๋ณต์ ์(Server Jamming Worm) โ ์ ํ + ์นํ์ด์ง ๋ณ์กฐ + ์์ฝํ DoS๋ฅผ ๊ฒธํ ํผํฉ ์ํ
- ํต์ฌ ๊ธฐ๋ฒ: ๋ฌด์์ IPv4 ์ค์บ(100๊ฐ ์ค๋ ๋)๋ก
/default.ida?NNNโฆ์์ฒญ ์ ์ก ยท ํ์ผ์ ๋์คํฌ์ ๋จ๊ธฐ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ฃผ(ํ์ผ๋ฆฌ์ค) ์คํ ยท ๋ ์ง(1~19 / 20~27 / 28~๋ง์ผ)์ ๋ฐ๋ผ ํ๋์ด ๋ฐ๋๋ ํ๋์ฝ๋ฉ ์ค์ผ์ค๋ฌ ยท ๋์์ด IIS์ธ์ง์กฐ์ฐจ ํ์ธํ์ง ์๋ ๋ฌด์ฐจ๋ณ ์ค์บ - ๊ท๋ชจ(๊ณต๊ฐ ์์น): 2001-07-19 ํ๋ฃจ 359,000๋ ๊ฐ์ผ(CAIDA ๊ด์ธก) ยท CRv2๋ 2001-07-31 ์ฌํ์ฐ ยท ์ต์ข ๋์ ์ ์์ญ๋ง~100๋ง ๋ ์์ค์ผ๋ก ์ถ์ ยท ํผํด ์ถ์ ์น๋ ๊ธฐ๊ด๋ณ ํธ์ฐจ๊ฐ ํฌ๋ฉฐ ์ฝ 24์ต ๋ฌ๋ฌ๋ผ๋ ์ถ์ ์ด ๋๋ฆฌ ์ธ์ฉ๋๋ค
- ์ ์ ๋ช ํ๊ฐ: ํจ์น๊ฐ ์ด๋ฏธ ๋์ ์์๋๋ฐ๋ ํญ๋ฐํ ์ฒซ ๋๊ท๋ชจ ์๋ฒ ์. ํ์ผ๋ฆฌ์ค ์ ์ฑ์ฝ๋์ ๋ ์ง ๊ธฐ๋ฐ ์๋ฌด ์ค์ผ์ค๋ง์ด๋ผ๋ ํ๋ ์ ์ฑ์ฝ๋์ ํ์ค ๋ฌธ๋ฒ์ 2001๋ ์ ๋จผ์ ๋ณด์ฌ์คฌ๊ณ , ์ ํธ๋ํฝ์ ์ ์ง๊ตฌ์ ๊ด์ธก ๋ฐ์ดํฐ๋ ์ธํฐ๋ท ๊ท๋ชจ ์ธก์ ยท๋์ ์ฐ๊ตฌ์ ์ถ๋ฐ์ ์ด ๋๋ค.
2. ๊ฐ์ผยท์ ํ ๊ฒฝ๋ก โ '๋ฌธ์ ๋๋๋ ค ์ด๋ฆฌ๋ฉด ๋ค์ด๊ฐ๋ค'
Code Red๋ ์ฌ๋์ ์์ด๋ ์์ด ์๋๋ค(Emotet์ ์คํผ์ดํผ์ฑํ ์ฒด์ธ๊ณผ ์ ๋ฐ๋๋ค). ์๋ฌด ๋จ๊ณ๋ ์ฌ๋ ์์ ๊ฑฐ์น์ง ์๋๋ค. ํ ๋๊ฐ ๊ฐ์ผ๋๋ ์๊ฐ ๊ทธ ํธ์คํธ๊ฐ ์ค์บ๋๋ก ๋ณํด ๋ค์ ๋์์ ์ฐพ๋๋ค.
- โ ๋ฌด์์ IP ์์ฑ: ์์ 100๊ฐ์ ์ค๋ ๋๋ฅผ ๋ง๋ค์ด ๊ฐ ์ค๋ ๋๋ง๋ค ๋ ๋ฆฝ์ ์ธ ์์ฌ๋์ IP ์ฃผ์๋ฅผ ์์ฑํ๋ค. ์ฃผ์ ๊ณต๊ฐ ์ ์ฒด๋ฅผ ๊ท ๋ฑํ๊ฒ ํ๊ธฐ ๋๋ฌธ์ ์น์๋ฒ ์กด์ฌ ์ฌ๋ถ, IIS ์ฌ๋ถ, ์ทจ์ฝ ๋ฒ์ ์ฌ๋ถ๋ฅผ ์ ํ ํ์ธํ์ง ์๋๋ค.
- โก ํฌํธ 80 ํฌ๊ฒฉ: ์ฐพ์ ์ฃผ์์ 80๋ฒ ํฌํธ๋ก
GET /default.ida?NNNNโฆํํ์ ์์ฒญ์ ๋ณด๋ธ๋ค. ๊ทธ๋์ ๋น์ Apache ์๋ฒ ๋ก๊ทธ์๋ ์ด ์์ฒญ์ด ๊ทธ๋๋ก ๋จ์๋ค โ "์ฐ๋ฆฌ๋ IIS๋ ์๋๋ฐ ์ ์ด๋ฐ ์์ฒญ์ด ๊ณ์ ๋ค์ด์ค์ง?" ํ๋ ๋ก๊ทธ๊ฐ ์ ์ธ๊ณ์ ์ผ๋ก ๊ด์ธก๋๋ค. - โข ์ต์คํ๋ก์ ์ฑ๋ฆฝ: ๋์์ด ์ทจ์ฝํ IIS๋ผ๋ฉด
.ida์ง์ ๋ฌธ์์ด์ด ๊ณ ์ ํฌ๊ธฐ ๋ฒํผ๋ฅผ ๋์ณ ํ๋ฌ ์ ์ฅ๋ ๋ณต๊ท ์ฃผ์๋ฅผ ๋ฎ์ด์ฐ๊ณ , ์ด์ด์ง๋ ๋ฌธ์์ด์ด ๊ธฐ๊ณ์ด๋ก ํด์๋๋ฉฐ ์ ๋ณธ์ฒด๊ฐ ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ์์์ ์คํ๋๋ค. ํ์ผ์ ๋จ์ด๋จ๋ฆฌ์ง ์๋๋ค. - โฃ ์ฌ๊ฐ์ผ ๋ฃจํ: ์์ ์ทจ์ฝ ๋ฒํผ๋ฅผ ๊ณ์ ์ด์ด๋ ์ํ๋ก ์ ์งํ๋ค. ๊ทธ๋์ ์ฌ๋ถํ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ผ์ ธ๋ ๊ฐ์ ์๋ฒ๊ฐ ๋ค์ ๊ฐ์ผ๋๋ค โ "์ฌ๋ถํ ํ์ผ๋ ๊ด์ฐฎ๋ค"๊ฐ ํตํ์ง ์๋ ์ ํ์ ์ธ ์ฌ๋ก๋ค.
- โค ๋ ์ง ์ค์ผ์ค๋ฌ: ์ ๋ด๋ถ์ ๋ ์ง ๊ธฐ๋ฐ 3๋จ๊ณ ์ํ ๊ธฐ๊ณ๊ฐ ํ๋์ฝ๋ฉ๋ผ ์๋ค. 1~19์ผ = ์ ํ, 20~27์ผ = ๊ณ ์ IP(๋ฐฑ์ ๊ด ์น์๋ฒ ํฌํจ)๋ก ๋๋ ์์ฒญ ํ๋ฌ๋, 28์ผ~๋ง์ผ = ํด๋ฉด. ์ฆ ์์ด ๊ณง '์์ฝ๋ ๊ณต๊ฒฉ ์์ ํ'๋ฅผ ๋ค๊ณ ์์๋ค.
- โฅ ํ๋ฌ๋์ ๊ฒฐ๋ง: 20์ผ์ด ๋๊ธฐ ์ ์ whitehouse.gov์ ์๋ฒ IP๊ฐ ์ด๋ฏธ ๋ค๋ฅธ ์ฃผ์๋ก ์ฎ๊ฒจ์ ธ ์์ด ์์๋ ํธ๋ํฝ์ ๋๋ถ๋ถ ํ๊ณต์ผ๋ก ๊ฐ๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ๊ณ ์ ์ฃผ์๋ค๋ก ํฅํ ํ๋ฌ๋๋ ๊ณ์๋๋ค.
- โฆ ๋ณ์ข
์ ์งํ(CRv2, 8์ 4์ผ): ๋์ผ ๋ฒกํฐ๋ฅผ ์ฐ๋ ์ ํ๋ฅผ ์ํด TFTP๋ก
cmd.exe/root.exe๋ฅผ ๋์ด์ ์น์๋ฒ์ ๋ฐฑ๋์ด๋ฅผ ์ค์นํ๊ณ (๊ฐ์ ๊ฒฝ๋ก/MSADC,/scripts๋ฑ),explorer.exe๋ฅผ ํธ๋ก์ด์์ผ๋ก ๊ต์ฒดํ๋ค. ๋ํ ์ค์บ ๋์์ ์๊ธฐ ์๋ธ๋ท ์ชฝ์ผ๋ก ํธํฅ์์ผ(๊ฐ์ /8 50%, ๊ฐ์ /16 37.5%, ์์ ๋ฌด์์ 12.5%) ๋ด๋ถ๋ง ์ ํ๋ ฅ์ ํฌ๊ฒ ๋์๋ค โ ์ ์ธ๊ณ ํ์ฐํ(CRv1)์์ ๋ด๋ถ ์นจํฌํ(CRv2)์ผ๋ก ์ ํํ ๊ฒ์ด๋ค.
3. ๋์ ์๋ฆฌ ์์ธ ๋ถ์ โ ์ฝ๋/๊ตฌ์กฐ ๋ ๋ฒจ
ํต์ฌ์ ๋จ ํ๋์ ์ฝ๋ฉ ์ค์๋ค. IIS์ Index Server๋ .ida(๋๋ .idq)
์์ฒญ์ด ์ค๋ฉด ์ง์ ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๋๋ฐ, ๊ทธ ๊ณผ์ ์์ ๊ณ ์ ํฌ๊ธฐ ์คํ ๋ฒํผ์ ๊ธธ์ด ๊ฒ์ฌ ์์ด ๋ณต์ฌํ๋ค.
์์ฒญ ํ๋๋ก ์คํ ํ๋ ์์ด ๋์น๊ณ , ๋์น ๋ฐ์ดํธ๊ฐ ์ ์ฅ๋ ๋ณต๊ท ์ฃผ์(Saved EIP)๋ฅผ ๋ฎ์ด์จ
์คํ ํ๋ฆ์ด ๊ณต๊ฒฉ์๊ฐ ์ง์ ํ ๊ณณ์ผ๋ก ์ ํํ๋ค. ๊ทธ ๋ค ๋ฌธ์์ด(%u ํํ์ ์ ๋์ฝ๋ ์ธ์ฝ๋ฉ)์
๊ทธ๋๋ก ๊ธฐ๊ณ์ด๋ก ํด์๋์ด ์ ์ฝ๋๊ฐ ๋๋ค โ ๊ต๊ณผ์์ ์ธ ์คํ ๋ฒํผ ์ค๋ฒํ๋ก โ ์์ ์ฝ๋ ์คํ โ ์๊ธฐ๋ณต์
์ฌ์ฌ์ด๋ค.
| ๊ตฌ๋ถ | Code Red (CRv / CRv1) | Code Red II (CRvII) |
|---|---|---|
| ์ฃผ์ ๋ฒกํฐ | GET /default.ida? + ๋ฐ๋ณต ๋ฌธ์๋ก ๋ฒํผ ์ค๋ฒํ๋ก (๋์ผ, CVE-2001-0500) | |
| ์ค๋ฒํ๋ก ์ฑ์ ๋ฌธ์ | 'N' ๋ฐ๋ณต | 'X' ๋ฐ๋ณต |
| ๋์คํฌ ํ์ | ์์(๋ฉ๋ชจ๋ฆฌ ์์ฃผ, ํ์ผ๋ฆฌ์ค) โ ์ฌ๋ถํ ์ ์๋ฉธ | ํ์ผ ์ค์น(explorer.exe ํธ๋ก์ด์) โ ์ฌ๋ถํ
ํ์๋ ๋ฐฑ๋์ด ์์กด |
| ํ์ด๋ก๋ | ์ ํ + ์นํ์ด์ง ๋ณ์กฐ + ๋ ์ง 20~27์ผ DoS | ๋ฐฑ๋์ด(TFTP โ cmd.exe/root.exe, /MSADCยท/scripts ๊ฐ์๊ฒฝ๋ก), DoS ๊ธฐ๋ฅ ์์ |
| ๋ถ๊ฐ ํ์ | ๋ณ์กฐ ๋ฌธ๊ตฌ "HELLO! Welcome to http://www.worm.com! Hacked By Chinese!" | 24~48์๊ฐ ํ ์์คํ ์ฌ๋ถํ ์๋(์๋ยท์ ํ ๋ณด์กฐ) |
| ์ค์บ ๋ถํฌ | ์ฃผ์ ๊ณต๊ฐ ์ ์ฒด์ ์ฌ์ค์ ๋ฌด์์ | ๊ฐ์ /8 50% ยท ๊ฐ์ /16 37.5% ยท ๋ฌด์์ 12.5% โ ๋ด๋ถ๋ง ํธํฅ |
๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑ์์ ๋จ์๋ก ๋ฏ์ด๋ณด๋ฉด ์ด๋ ๋ค.
- ์นจํฌ๋ถ(์ต์คํ๋ก์): ๊ณ ์ ๊ธธ์ด ๋ฌธ์์ด๋ก ๋ณต๊ท ์ฃผ์๋ฅผ ๋ฎ๊ณ , ๊ทธ ๋ค
%u์ธ์ฝ๋ฉ ํ์ด๋ก๋๋ก ์ ์ด๋ฅผ ๊ฐ์ ธ์จ๋ค. ์์ ์๋ ค์ง ํ์ ์ HTTP ์์ฒญ ์์ฒด์ ๋จ๋๋ค โ ์ด ํ์์ด ๊ทธ๋๋ก ์๊ทธ๋์ฒ๊ฐ ๋๋ค. - ํ์ฐ๋ถ(100 ์ค๋ ๋ ์ค์บ๋): ๊ฐ ์ค๋ ๋๊ฐ ์๊ธฐ๋ง์ ๋์ IP ์์ฑ๊ธฐ๋ฅผ ๋๋ฆฐ๋ค. 100๊ฐ๊ฐ ๋์์ ๋น๋๊ธฐ ํต์ ์ ํ๋ฏ๋ก ํ ๋๊ฐ ์๊ฐ๋น ์๋ง ๊ฑด์ ์๋ํ๊ณ , ์ ์ฒด ๊ฐ์ผ ๋์๊ฐ ์ง์ ํจ์๋ก ๋์ด๋๋ค.
- ์๋๋ถ(ํ์ผ๋ฆฌ์ค ์คํ): ๋์คํฌ์ ํ์ผ์ ๋ง๋ค์ง ์๊ธฐ ๋๋ฌธ์ 2001๋ ๋น์ ์๊ทธ๋์ฒ ๊ธฐ๋ฐ ๋ฐฑ์ ์ ๋์คํฌ ๊ฒ์ฌ๋ก๋ ์กํ์ง ์์๋ค. ํ์ง๋ ๋ฉ๋ชจ๋ฆฌยท๋คํธ์ํฌยท๋ก๊ทธ ์์ญ์ ๋ฌธ์ ๊ฐ ๋๋ค.
- ์์ ๋ถ(๋ ์ง ์ค์ผ์ค๋ฌ): ์ ๋ด๋ถ์ ๋ ์ง ๋น๊ต ํ๋๊ฐ ์ ํ/๊ณต๊ฒฉ/ํด๋ฉด์ ๊ฒฐ์ ํ๋ค. ๋ณ๋ C2 ์๋ฒ๊ฐ ํ์ ์๋ ์์จ ์๋ฌด ์ํ ๊ตฌ์กฐ๋ก, ์ดํ ๋์ฌ์จ์ดยท์์ดํผ์ '์์ฝ ์คํ' ์ค๊ณ์ ๊ฐ์ ๊ณ๋ณด๋ค.
- ๋ณ์ข ์ ํ์ฅ(CRv2): ๋ฐฑ๋์ด๋ฅผ ์ค์นํด ์์ด ์ง๋๊ฐ ๋ค์๋ ์ฌ๋์ด ๋ค์ ๋ค์ด์ฌ ์ ์๋ ๋ฌธ์ ๋จ๊ฒผ๋ค. ์ ํํ ์ ์ฑ์ฝ๋๊ฐ ์ง์์ ์ ๊ทผ(Persistence)์ ๊ฒฐํฉํ ์ด๊ธฐ ์๋ค.
4. ํผํด ๊ท๋ชจ/์ํฅ โ ์ซ์์ ์ค์ ์ฌ๋ก
- 2001-07-19 (CRv1 ์ต๋ ํ์ฐ): CAIDA ๋ถ์ ๊ธฐ์ค ํ๋ฃจ 359,000๋ ๊ฐ์ผ. ์ฆ 14์๊ฐ ๋จ์ง์ 35๋ง ๋๊ฐ ๋๋ ์๋ฒ๊ฐ ๊ฐ์ผ๋๋ค. ํ์ฐ ์ง์ญ์ ๋ถ๋ฏธยท์ ๋ฝยท์์์ (์ค๊ตญยท์ธ๋ ํฌํจ)์ ์ง์ค๋๋ค.
- 2001-07-31 (CRv2): ์์ด ๋ฐ๋๋ฉฐ ํด๋ฉด์์ ๊นจ์ด๋ ์์ด ์ฌํ์ฐํด ๋ค์ 30๋ง ๋ ๊ท๋ชจ๋ฅผ ๊ธฐ๋กํ๋ค. "ํจ์นํ์ง ์์ผ๋ฉด ๋งค๋ฌ ๋ฐ๋ณต๋๋ค"๋ ์ฌ์ค์ด ํ์ธ๋๋ค.
- 2001-08-04 (Code Red II): ๊ฐ์ ์ทจ์ฝ์ ์ผ๋ก ๋ ๋ฒ์งธ ์์ด ๋ฑ์ฅ. ์ ํยท๋ฐฑ๋์ด๋ก ์ฑ๊ฒฉ์ด ๋ฐ๋์๊ณ , eEye๋ ์ด ์์ ๊ธฐ์์ ํ๋ฆฌํ ๋ง์นดํฐ(2000๋ ILOVEYOU ์๊ณผ ๊ฐ์ ์ง์ญ)๋ก ์ถ์ ํ๋ค(๋ฌธ์์ ์ถ์ ํ๊ธฐ).
- 2001-09-18 (Nimda): .ida ๋ฒกํฐ๋ฅผ ํฌํจํด ์นยท์ด๋ฉ์ผยท๊ณต์ ํด๋๋ฅผ ํจ๊ป ์ฐ๋ ๋ค์ค ๋ฒกํฐ ์์ผ๋ก ์ด์ด์ง๋ฉฐ 2001๋ ์ '์์ ํด'๊ฐ ๋๋ค.
- ๊ฒฝ์ ์ ํผํด: ์ถ์ ์น๋ ๊ธฐ๊ด๋ณ๋ก ํฌ๊ฒ ๊ฐ๋ฆฐ๋ค โ ์ฝ 24์ต ๋ฌ๋ฌ๋ผ๋ ์์น๊ฐ ๊ฐ์ฅ ๋๋ฆฌ ์ธ์ฉ๋์ง๋ง, ๊ฐ์ผ ํธ์คํธ ์(์์ญ๋ง~100๋ง ๋)์ ์ฒญ์ยท์ฐจ๋จ ๋น์ฉ ์ฐ์ ๋ฐฉ์์ ๋ฐ๋ผ ํธ์ฐจ๊ฐ ํฌ๋ค. ์ซ์๋ณด๋ค ์ค์ํ ๊ฒ์ "ํจ์น๊ฐ ๋์ ์์๋๋ฐ๋ ์ด ๊ท๋ชจ๊ฐ ๋ฌ๋ค"๋ ์ ์ด๋ค.
- ์ธํฐ๋ท ์ฐจ์์ ์ํฅ: ์ ์ธ๊ณ ๋ฐฑ๋ณธ์์ ์ ์ค์บ ํธ๋ํฝ์ด ๊ด์ธก๋๊ณ , ์ด๊ฒ์ด ์ธํฐ๋ท ๊ท๋ชจ ๊ฐ์ผ ์ธก์ (CAIDA์ Code-Red ๋ถ์)๊ณผ CERT ๊ถ๊ณ CA-2001-19 ๊ฐ์ ์กฐ๊ธฐ๊ฒฝ๋ณด ์ฒด๊ณ๊ฐ ์ค์ ์์ ์๋ํ ๋ํ ์ฌ๋ก๊ฐ ๋๋ค. ๋ํ ์ ๊ณ๊ฐ IIS ๊ธฐ๋ณธ ๊ตฌ์ฑ์์ ๋ถํ์ํ ISAPI ์คํฌ๋ฆฝํธ ๋งคํ์ ์ ๊ฑฐํ๋ ๋ฐฉํฅ์ผ๋ก ์์ง์ด๋ ๊ณ๊ธฐ๊ฐ ๋๋ค.
- ๋ฐฉ์ด์ ์ธก ์ฑ๊ณผ: Kenneth D. Eichman์ด ์ฐจ๋จ ๋ฐฉ๋ฒ์ ์ฒ์ ์์๋ด ๋ฐฑ์ ๊ด์ ์ด์ฒญ๋ฐ์๊ณ , ๊ด๋ฆฌ์๋ค์ ํฌํธ 80 ์ฐจ๋จ โ ํจ์น โ ๋งคํ ์ ๊ฑฐ ์์์ ์ค์ ๋์ ์ ์ฐจ๋ฅผ ์ฒ์์ผ๋ก ๋๊ท๋ชจ๋ก ์ฐ์ตํ๊ฒ ๋๋ค.
5. PoC โ ๊ต์ก์ฉ ๋ชจ์ ์ฌํ (๋ก์ปฌ ๊ฐ์ ํ๊ฒฝ ์ ์ฉ)
%uโฆ
์ธ์ฝ๋ฉ๋ ๊ธฐ๊ณ์ด ํ์ด๋ก๋๋ ์๋์ ์ผ๋ก ๋ค๋ฃจ์ง ์์ผ๋ฉฐ, ์ฌ๊ธฐ์ ์ฌํํ๋ ๊ฒ์
โ ๊ธธ์ด ๊ฒ์ฌ ์๋ ๋ฒํผ ๋ณต์ฌ๊ฐ ์ ์ด ํ๋ฆ์ ๋ฎ์ด์ฐ๋ ๊ตฌ์กฐ(๊ฐ์ ์คํ ๊ฐ์ฒด),
โก ๋ ์ง ๊ธฐ๋ฐ 3๋จ๊ณ ์ํ ๊ธฐ๊ณ, โข ๊ด์ธก๋ ํ์ฐ ๊ณก์ ์ ์ํ์ ๋ชจ๋ธ,
โฃ ์ ์ ์๊ทธ๋์ฒ์ ํํผ ๊ฐ๋ฅ์ฑ๋ฟ์ด๋ค. ๋ชจ๋ ์ฐ์ฐ์ ๋ก์ปฌ ํ๋ก์ธ์ค ์์์ ๋๋๋ฉฐ
์ธ๋ถ ๋คํธ์ํฌ ํต์ ์ 0๊ฑด์ด๊ณ , ์ด๋ค ์๋ฒ์๋ ์์ฒญ์ ๋ณด๋ด์ง ์๋๋ค. ์ค์ต์
์ธํฐ๋ท๊ณผ ๋ถ๋ฆฌ๋ ๊ฐ์ ๋ก์ปฌ ๋ฉ VM์ ์ ์ ๋ก ํ๋ฉฐ, ์ค์ ํ๊ฒฝ์์์ ์คํยท๋ณํยท๋ฐฐํฌ๋ฅผ ๊ธ์งํ๋ค.
PoC 1 โ '๊ธธ์ด ๊ฒ์ฌ ์๋ ๋ณต์ฌ' ํ๋๊ฐ ์ ์ด ํ๋ฆ์ ๋ฐ๊พธ๋ ๊ตฌ์กฐ (๊ฐ์ ์คํ ๊ฐ์ฒด)
์ค์ ์ทจ์ฝ์ ์ ์ฌํํ์ง ์๊ณ , ๋ฒํผ ํฌ๊ธฐ๋ฅผ ๋๊ฒจ ์ฐ๋ ์๊ฐ ๋ณต๊ท ์ฃผ์๊ฐ ๋ฎ์ด๋ ๊ตฌ์กฐ๋ง ํ์ด์ฌ ๊ฐ์ฒด๋ก ๋ชจ์ฌํ๋ค. ๊ณต๊ฒฉ ์์ฒญ์ ์ฐ์ธ 4๋ฐ์ดํธ๋ ๋ฉ์์ ๋ง๋ ์์ ์ฃผ์๋ค.
# codered_lab_poc.py (๋ฐ์ท) โ ๊ฐ์ ์คํ ํ๋ ์, ๋คํธ์ํฌ ์ก์์ 0๊ฑด
class FakeStackFrame:
BUF_SIZE = 32 # ๋ชจ์ฌ์ฉ ๊ณ ์ ๋ฒํผ ํฌ๊ธฐ(๋ฐ์ดํธ)
RET_LEGIT = 0x00401000 # ์ ์ ๋ณต๊ท ์ฃผ์ (๊ฐ์)
def copy_query_into_buffer(self, query: bytes):
"""์ทจ์ฝ์ ์ ๋ณธ์ง: ๊ธธ์ด ๊ฒ์ฌ ์์ด(=bounds check ์์) ๋ณต์ฌ."""
for i, b in enumerate(query): # <-- ๊ธธ์ด ๊ฒ์ฌ๊ฐ ์๋ค
if i < self.BUF_SIZE:
self.buffer[i] = b
else: # ๋ฒํผ๋ฅผ ๋์ด '๋ณต๊ท ์ฃผ์'๋ฅผ ๋ฎ๋๋ค
off = i - self.BUF_SIZE
if off < 4:
self.saved_ret = (self.saved_ret & ~(0xFF << (8 * off))) | (b << (8 * off))
์คํ ๊ฒฐ๊ณผ(์ค์ ์ถ๋ ฅ):
[PoC 1] '.ida ์์ฒญ ํ ์ค'์ด ์ ์ด ํ๋ฆ์ ๋ฐ๊พธ๋ ๊ตฌ์กฐ (์คํ ๊ฒฐ๊ณผ)
- ์ ์ ์์ฒญ: /default.ida?NNNN (์งง์ ์ง์)
[์ ์] ์์ฒญ ๊ธธ์ด 30B
๋ฒํผ ์ 16B : b'GET /default.ida'
์ ์ฅ ๋ณต๊ท์ฃผ์: 0x00401000 (์ ์ 0x00401000)
์ ์ด ํ๋ฆ ํ์ทจ: ์๋์ค (์ ์ ๋ฐํ)
- ๊ณต๊ฒฉ ์์ฒญ: ๋ฒํผ(32B)๋ณด๋ค ๊ธด ์ง์ โ ๋ณต๊ท ์ฃผ์ 4๋ฐ์ดํธ๊ฐ ๋ฎ์ธ๋ค
[๊ณต๊ฒฉ] ์์ฒญ ๊ธธ์ด 40B
๋ฒํผ ์ 16B : b'AAAAAAAAAAAAAAAA'
์ ์ฅ ๋ณต๊ท์ฃผ์: 0x7801c4b1 (์ ์ 0x00401000)
์ ์ด ํ๋ฆ ํ์ทจ: ์ โ ๏ธ -> ๊ณต๊ฒฉ์ ์ฝ๋๋ก ์ ํ
* ์ 4๋ฐ์ดํธ๋ ๋ฉ์์ ๋ง๋ ์์ ์ฃผ์๋ค. ์ค์ Code Red๊ฐ ์ฐ๋ ๊ฐ์ ์ฎ๊ธฐ์ง ์์๋ค.
* ๊ฒฐ๊ณผ ์์ฝ: ์ ๊ฒํ 2๊ฑด ์ค ํ์ทจ ์ฑ๋ฆฝ 1๊ฑด โ ๋ฐฉ์ด์ ๊ทผ๊ฑฐ๋ '๊ธธ์ด ๊ฒ์ฌ ๋ถ์ฌ' ํ๋๋ค.
์ฝ๋ ๋ฒ: 30๋ฐ์ดํธ ์์ฒญ์ ๋ฒํผ(32B) ์์์ ๋๋ ๋ณต๊ท ์ฃผ์๊ฐ ๊ทธ๋๋ก์ง๋ง, 40๋ฐ์ดํธ ์์ฒญ์ ๋ฒํผ๋ฅผ 8๋ฐ์ดํธ ๋๊ฒจ ๋ณต๊ท ์ฃผ์ 4๋ฐ์ดํธ๊ฐ ํต์งธ๋ก ๊ต์ฒด๋๋ค. ์ค์ ์์ด ํ๋ ์ผ์ ์ฌ๊ธฐ์ '๋ฎ๋ ๊ฐ'๊ณผ '๊ทธ ๋ค์ ์ค๋ ๊ธฐ๊ณ์ด'๋ฅผ ์ ๊ตํ๊ฒ ๋ฐฐ์นํ๋ ๊ฒ๋ฟ์ด๋ค โ ์ทจ์ฝ์ ์์ฒด๋ ์ด 8๋ฐ์ดํธ ์ค๋ฒํ๋ก ํ๋๋ค.
PoC 2 โ ๋ ์ง์ ๋ฐ๋ผ ํ๋์ด ๋ฐ๋๋ 3๋จ๊ณ ์ํ ๊ธฐ๊ณ
Code Red์ ๊ฐ์ฅ ๋ ํนํ ์ค๊ณ๋ค. ์๋ฒ์์ ๋ช ๋ น์ ๋ฐ๋ C2๊ฐ ์์ด๋, ๋ ์ง ํ๋๋ก ์ ํยท๊ณต๊ฒฉยทํด๋ฉด์ด ๊ฐ๋ฆฐ๋ค.
# codered_lab_poc.py (๋ฐ์ท) โ ๋ ์ง๋ง ๋ณด๊ณ ํ๋์ ๊ฒฐ์ (์ธ๋ถ ํต์ ์์)
def codered_phase(day_of_month: int, year_ok=True):
if day_of_month <= 19:
return "PHASE-1 (์ ํ)", "100๊ฐ ์ค๋ ๋๊ฐ ๋ฌด์์ IP๋ฅผ ํฅํด ๋์ ์ค์บ"
if day_of_month <= 27:
return "PHASE-2 (ํ๋ฌ๋)", "๊ณ ์ IP(๋ฐฑ์
๊ด ์๋ฒ)๋ก ๋๋ ์์ฒญ ํญ์ฃผ"
return "PHASE-3 (ํด๋ฉด)", "์ ํยท๊ณต๊ฒฉ ๋ชจ๋ ์ค๋จ, ๋ฉ๋ชจ๋ฆฌ์๋ง ๋๊ธฐ(์ฌ๋ถํ
์ ์๋ฉธ)"
์คํ ๊ฒฐ๊ณผ(์ค์ ์ถ๋ ฅ):
[PoC 2] ๋ ์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ 3๋จ๊ณ ์ํ ๊ธฐ๊ณ (์คํ ๊ฒฐ๊ณผ)
7์ 1์ผ -> PHASE-1 (์ ํ)
ํ๋: 100๊ฐ ์ค๋ ๋๊ฐ ๋ฌด์์ IP๋ฅผ ํฅํด ๋์ ์ค์บ
7์ 13์ผ -> PHASE-1 (์ ํ)
ํ๋: 100๊ฐ ์ค๋ ๋๊ฐ ๋ฌด์์ IP๋ฅผ ํฅํด ๋์ ์ค์บ
7์ 19์ผ -> PHASE-1 (์ ํ)
ํ๋: 100๊ฐ ์ค๋ ๋๊ฐ ๋ฌด์์ IP๋ฅผ ํฅํด ๋์ ์ค์บ
7์ 20์ผ -> PHASE-2 (ํ๋ฌ๋)
ํ๋: ๊ณ ์ IP(๋ฐฑ์
๊ด ์๋ฒ)๋ก ๋๋ ์์ฒญ ํญ์ฃผ
7์ 24์ผ -> PHASE-2 (ํ๋ฌ๋)
ํ๋: ๊ณ ์ IP(๋ฐฑ์
๊ด ์๋ฒ)๋ก ๋๋ ์์ฒญ ํญ์ฃผ
7์ 27์ผ -> PHASE-2 (ํ๋ฌ๋)
ํ๋: ๊ณ ์ IP(๋ฐฑ์
๊ด ์๋ฒ)๋ก ๋๋ ์์ฒญ ํญ์ฃผ
7์ 28์ผ -> PHASE-3 (ํด๋ฉด)
ํ๋: ์ ํยท๊ณต๊ฒฉ ๋ชจ๋ ์ค๋จ, ๋ฉ๋ชจ๋ฆฌ์๋ง ๋๊ธฐ(์ฌ๋ถํ
์ ์๋ฉธ)
7์ 31์ผ -> PHASE-3 (ํด๋ฉด)
ํ๋: ์ ํยท๊ณต๊ฒฉ ๋ชจ๋ ์ค๋จ, ๋ฉ๋ชจ๋ฆฌ์๋ง ๋๊ธฐ(์ฌ๋ถํ
์ ์๋ฉธ)
ํฌ์ธํธ: 7์ 19์ผ์ด ํญ๋ฐ ์ง์ ์ธ ์ด์ ๋, 8์ 1์ผ์ด ๋๋ฉด ๋ค์ 30๋ง ๋๊ฐ ๊ฐ์ผ๋ ์ด์ ๋ ์ด ํ ํจ์์ ์๋ค. C2 ์ธํ๋ผ ์์ด๋ '์์ฝ๋ ์์ '์ด ๊ฐ๋ฅํ๋ค๋ ์ฌ์ค์ด Code Red ์ดํ ์ ์ฑ์ฝ๋ ์ค๊ณ์ ๊ธฐ๋ณธ๊ฐ์ด ๋๋ค.
PoC 3 โ '14์๊ฐ 359,000๋' ํ์ฐ ๊ณก์ ์ ๋ชจ๋ธ ์ฌํ
๊ด์ธก๋ ํญ๋ฐ ์๋๋ฅผ ๋ก์ง์คํฑ ํ์ฐ ๋ชจ๋ธ๋ก ์ฌํํ๋ค(๊ต์ก์ฉ ๋ชจ๋ธ์ด๋ฉฐ ์ค์ ๊ฐ์ผ ๋ฐ์ดํฐ๊ฐ ์๋๋ค). ์์ ์ด๊ธฐ ๊ฐ์ผ ๋์์์ ์ถ๋ฐํด ์๊ฐ๋น ๊ณ ์ ๋น์จ๋ก ๋๊ณ , 11์๊ฐ์งธ๋ถํฐ ํจ์นยท์ฐจ๋จยท์ฌ๋ถํ ์ด ์ ์ ๋๋ฉฐ ์ฆ๊ฐ์ธ๊ฐ ๊บพ์ธ๋ค๊ณ ๊ฐ์ ํ๋ค.
# codered_lab_poc.py (๋ฐ์ท) โ ๋ชจ๋ธ ์์์ ๊ณก์
def model_hosts(hours, host_pool=2_000_000, r0=0.62, n0=1000):
n = n0
for h in range(1, int(hours) + 1):
slowdown = 1.0 / (1.0 + max(0.0, h - 11.0) * 0.75) # ๋์ ์ ์
n += r0 * n * (1 - n / host_pool) * slowdown
yield h, int(n)
์คํ ๊ฒฐ๊ณผ(์ค์ ์ถ๋ ฅ):
[PoC 3] '14์๊ฐ ๋ง์ 359,000๋'์ ๋ชจ๋ธ ์ฌํ (์คํ ๊ฒฐ๊ณผ)
๊ฒฝ๊ณผ์๊ฐ | ๊ฐ์ผ ์ถ์ ๋์ | ๋์กฐ (CAIDAยทeEye ๊ด์ธก, 2001-07-19)
1์๊ฐ | 1,619๋ |
2์๊ฐ | 2,623๋ |
3์๊ฐ | 4,247๋ |
4์๊ฐ | 6,874๋ |
5์๊ฐ | 11,122๋ |
6์๊ฐ | 17,980๋ |
7์๊ฐ | 29,028๋ |
8์๊ฐ | 46,764๋ |
9์๊ฐ | 75,080๋ |
10์๊ฐ | 119,883๋ |
11์๊ฐ | 189,755๋ |
12์๊ฐ | 250,605๋ |
13์๊ฐ | 304,967๋ |
14์๊ฐ | 354,274๋ | <- ๊ด์ธก์น 359,000๋(14์๊ฐ ๋ง์ ๋๋ฌ)
15์๊ฐ | 399,460๋ |
16์๊ฐ | 441,186๋ | <- ์ฆ๊ฐ์ธ ๋ํ(ํจ์นยท์ฐจ๋จยท์ฌ๋ถํ
์ ์
)
* ๊ด์ธก ๋์กฐ: ์ค์ 2001-07-19 ํ๋ฃจ ๊ฐ์ผ์ 359,000๋(CAIDA) โ ๋ชจ๋ธ์ 14์๊ฐ ์ง์ 354,274๋ (์ค์ฐจ 1.3%)
ํด์: ์ง์ ์ฑ์ฅ ๊ตฌ๊ฐ์์๋ 3์๊ฐ๋ง๋ค ๊ฐ์ผ ๊ท๋ชจ๊ฐ 4๋ฐฐ์ฉ ๋ด๋ค. ์ฆ "1๋ง ๋๋ฅผ ์ก์ ๋"์ "30๋ง ๋๋ฅผ ์ก์ ๋"๋ ๋์ ๋์ด๋๊ฐ ์์ ํ ๋ค๋ฅด๋ค โ ์ ๋์์ ์น๋ถ๋ ๊ณก์ ์ ์๋ถ๋ถ์์ ๊ฒฐ์ ๋๋ค. ๊ทธ๋์ ์ค๋๋ ์ ๋์ ์์น๋ 'ํ์ง ์ฆ์ ๊ฒฉ๋ฆฌ(๋คํธ์ํฌ ์ฐจ๋จ ์ฐ์ )'๋ค.
PoC 4 โ ์ ์ ์๊ทธ๋์ฒ๋ 'ํ ๊ธ์'๋ง ๋ฐ๊ฟ๋ ๋ฌด๋ ฅํ๋๋ค
2001๋ ์ ํํ ๋์์ HTTP ์์ฒญ ๋ฌธ์์ด ๋งค์นญ์ด์๋ค. ๊ทธ๋ฌ๋ HTTP๋ ๋์๋ฌธ์์ ํผ์ผํธ ์ธ์ฝ๋ฉ์ ํ์ฉํ๋ฏ๋ก, ๋ฌธ์์ด ํ๋๋ฅผ ๊ทธ๋๋ก ๋งค์นญํ๋ ๊ท์น์ ์ฝ๊ฒ ์ฐํ๋๋ค.
# codered_lab_poc.py (๋ฐ์ท) โ ์ ๊ทํ ์๋ ์๊ทธ๋์ฒ vs ์ ๊ทํ ์๊ทธ๋์ฒ
SIG = b"/default.ida?" # ํํ ์ฐ๋ ์ ์ ์๊ทธ๋์ฒ(๊ต์ก์ฉ ์์)
def naive_block(req): return SIG in req # ๋์๋ฌธ์ ๊ตฌ๋ถ + ์ ๊ทํ ์์
def normalize(req): return urllib.parse.unquote(req.decode("latin-1")).lower().encode()
def norm_block(req): return SIG in normalize(req)
์คํ ๊ฒฐ๊ณผ(์ค์ ์ถ๋ ฅ):
[PoC 4] ์ ์ ์๊ทธ๋์ฒ๋ 'ํ ๊ธ์'๋ง ๋ฐ๊ฟ๋ ๋ฌด๋ ฅํ๋๋ค (์คํ ๊ฒฐ๊ณผ)
GET /default.ida?NNNN HTTP/1.0 ๋จ์์๊ทธ๋์ฒ=True ์ ๊ทํ์๊ทธ๋์ฒ=True
GET /Default.Ida?NNNN HTTP/1.0 ๋จ์์๊ทธ๋์ฒ=False ์ ๊ทํ์๊ทธ๋์ฒ=True
GET /default%2Eida?NNNN HTTP/1.0 ๋จ์์๊ทธ๋์ฒ=False ์ ๊ทํ์๊ทธ๋์ฒ=True
GET /default.ida%3fNNNN HTTP/1.0 ๋จ์์๊ทธ๋์ฒ=False ์ ๊ทํ์๊ทธ๋์ฒ=True
* Code Red II๋ ๋ค๋ฅธ ์ธ์ฝ๋ฉยท๋ค๋ฅธ ๋ฒํผ ๊ตฌ์กฐ๋ฅผ ์ผ๋ค โ ์๊ทธ๋์ฒ 1๊ฐ๋ก๋ ๋ถ์กฑํ๋ค.
* ๊ฒฐ๋ก : ํจ์น(๊ทผ๋ณธ)๊ฐ 1์์, ์๊ทธ๋์ฒ๋ ๋ณด์กฐ. ํจ์น์จ์ด ๋ฎ์ผ๋ฉด ์๊ทธ๋์ฒ๋ง์ผ๋ก๋ ๋ชป ๋ง๋๋ค.
ํต์ฌ: ๋จ์ ๋งค์นญ์ 4๊ฑด ์ค 1๊ฑด๋ง ์ก์๊ณ , URL ๋์ฝ๋ฉ + ์๋ฌธ์ ์ ๊ทํ๋ฅผ ๊ฑฐ์น์ 4๊ฑด ๋ชจ๋ ์กํ๋ค. ๊ทธ๋ฐ๋ฐ๋ ์ด๊ฒ์ '์ด๋ฏธ ์๋ ค์ง ํํ'๋ฅผ ์ก๋ ๋ฐ ๊ทธ์น๋ค โ SQL Slammer์ฒ๋ผ ๋ฐ์ดํธ ๋จ์๋ก ์์ ํ ๋ค๋ฅธ ๋ฒกํฐ๊ฐ ๋์ค๋ฉด ์๊ทธ๋์ฒ๋ ๋ฌด์๋ฏธํด์ง๋ค. ๊ทธ๋์ ์์๋ ์ธ์ ๋ โ ํจ์นยท๋ ธ์ถ๋ฉด ์ ๊ฑฐ โ โก ํ์ยท์ด์ ์งํ ํ์ง โ โข ์๊ทธ๋์ฒ๋ค.
6. ๋ฐฉ์ด ๋ฐฉ๋ฒ/๊ตํ โ ์ด๋ป๊ฒ ๋ง์๊ณ , ๋ฌด์์ ๋ฐฐ์ฐ๋
- โ ํจ์น๊ฐ 1์์ (๊ทผ๋ณธ ๋์): ์์ธ์ CVE-2001-0500 ํ๋์๋ค. MS01-033 ํจ์น๋ ์๋ณด๋ค ํ ๋ฌ ๋จผ์ ๋์๊ณ , ์ ์ฉํ์ผ๋ฉด ๊ฐ์ผ๋์ง ์์๋ค. Code Red๋ ์ดํ ๋ชจ๋ ์กฐ์ง์ '๊ณ ์ํ ํจ์น SLA(์: 24~72์๊ฐ ์ด๋ด)'๋ฅผ ์ ๋นํํ ์ฌ๋ก๋ค. ์์ฐ ๋ชฉ๋ก ์์ด๋ SLA๋ ์๋ค โ ์ธํฐ๋ท์ ๋ ธ์ถ๋ ์๋น์ค ์ธ๋ฒคํ ๋ฆฌ๊ฐ ์ถ๋ฐ์ ์ด๋ค.
- โก ๋
ธ์ถ๋ฉด ์ ๊ฑฐ (์ํ): Index Server๋ฅผ ์ฐ์ง ์๋๋ค๋ฉด ์ ๊ฑฐํ๊ณ ,
.ida/.idq๊ฐ์ ๋ถํ์ํ ISAPI ์คํฌ๋ฆฝํธ ๋งคํ์ ์ญ์ ํ๋ค. "๊ธฐ๋ณธ ์ค์น์ ๋ธ๋ ค ์จ ๊ธฐ๋ฅ"์ด ๊ณง ๊ณต๊ฒฉ๋ฉด์ด๋ค โ ์ค๋๋ ์ ๊ธฐ๋ณธ ์๊ฒฉ์ฆ๋ช ยท๊ธฐ๋ณธ ํฌํธยท๋ถํ์ ํ๋ฌ๊ทธ์ธ ์ ๋ฆฌ์ ๊ฐ์ ์์น์ด๋ค. - โข ์น์๋ฒ ์ต์ ๊ถํยท๊ฒฝ๊ณ: ์น ํ๋ก์ธ์ค ๊ถํ(IWAM ๋ฑ)์ ์ต์ํํ๊ณ , ์๋ฒ์์ ์์ ํ๋ก์ธ์ค ์คํยทํ์ผ ์ฐ๊ธฐยท์์๋ฐ์ด๋ ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํ๋ฉด ์ต์คํ๋ก์ 1๊ฑด์ด ๊ณง ์๋ฒ ์ฅ์ ์ด ๋๋ค. ์๋ฒ ๋์ญ์ ์์๋ฐ์ด๋ ์ ์ด(์ ํ ์ค์บ ์ฐจ๋จ)๋ ํ์ฐ ์๋๋ฅผ ์ง์ ๋ฎ์ถ๋ค.
- โฃ ํ์ผ๋ฆฌ์ค ์
์ฑ์ฝ๋๋ฅผ ์ ์ ๋ก ํ ํ์ง: Code Red๋ ๋์คํฌ์ ํ์ ์ ๋จ๊ธฐ์ง ์์๋ค.
๋์คํฌ ์๊ทธ๋์ฒ ์ค์บ๋ง์ผ๋ก๋ ๋ถ์กฑํ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌยท๋น์ ์ ํ๋ก์ธ์ค/์ค๋ ๋ ๊ธ์ฆ
(์ ํ ์ค๋ ๋ 100๊ฐ), ์น ๋ก๊ทธ์ ๋น์ ์ ํจํด(๊ธด ์ง์ ๋ฌธ์์ด, ์กด์ฌํ์ง ์๋
.ida๋ฐ๋ณต ์์ฒญ), ๋๋ ์์๋ฐ์ด๋ ์ฐ๊ฒฐ์ ํจ๊ป ๋ด์ผ ํ๋ค. - โค ๋ก๊ทธ ๊ธฐ๋ฐ ์กฐ๊ธฐ๊ฒฝ๋ณด: ๋น์ Apache ์๋ฒ๋ค๋
GET /default.ida?โฆ๋ฅผ ๋ก๊ทธ์ ๋จ๊ฒผ๋ค. "์ฐ๋ฆฌ ์๋ฒ๊ฐ ๋์์ด ์๋์ด๋ ๋จ์ ์์ด ์ฐ๋ฆฌ ๋ก๊ทธ์ ์ฐํ๋ค" โ ์น ๋ก๊ทธยท๋ฐฉํ๋ฒฝ ๋ก๊ทธ์ ์ด์ ์์ฒญ ํ์ง๋ ํ์ฐ ์ด๊ธฐ์ ๊ฐ์ฅ ๊ฐ์ผ ์กฐ๊ธฐ๊ฒฝ๋ณด์๋ค. - โฅ ์ฌ๋ถํ โ ๋ณต๊ตฌ: ๋ฉ๋ชจ๋ฆฌ ์์ฃผํ ์์ ์ฌ๋ถํ ์ผ๋ก ์ฌ๋ผ์ง์ง๋ง, ์ค์บ์ ๊ณ์๋ผ ์ฆ์ ์ฌ๊ฐ์ผ๋๋ค. ์์๋ ๋คํธ์ํฌ ์ฐจ๋จ โ ํจ์น/๋งคํ ์ ๊ฑฐ โ ์ฌ๋ถํ โ ๊ฒ์ฆ์ด๋ค. ์ค๋๋ ๋์ฌ์จ์ด ์ฌ๊ณ ์์๋ "์ฌ๋ถํ ยท์ฌ์ค์น"๋ง์ผ๋ก ๋๋ด๋ฉด ๊ฐ์ ์ฌ๊ณ ๊ฐ ๋ฐ๋ณต๋๋ค.
- โฆ ์๊ทธ๋์ฒ๋ ๋ณด์กฐ ์๋จ์ผ ๋ฟ: PoC 4๊ฐ ๋ณด์ฌ์ค ๋๋ก ๋์๋ฌธ์ยทํผ์ผํธ ์ธ์ฝ๋ฉ ํ๋๋ก ์ ์ ๊ท์น์ด ๋ซ๋ฆฐ๋ค. ๊ท์น์ ์ฐ๋๋ผ๋ ํ๋กํ ์ฝ ์ ๊ทํ(๋์ฝ๋ฉ ํ ๋น๊ต)๋ฅผ ๊ฐ์ ํ๊ณ , ๊ท์น 1๊ฑด์ด ์๋๋ผ ํ์(์ ํ ์๋ ํจํด) ๋จ์๋ก ํ๋จํ๋ค. CRv1๊ณผ CRv2๊ฐ ๋ค๋ฅธ ๋ฌธ์ยท๋ค๋ฅธ ์ธ์ฝ๋ฉ์ ์ด ๊ฒ๋ ๊ฐ์ ์ด์ ๋ค.
- โง ๋ ์งยท์กฐ๊ฑด๋ถ ๋ก์ง์ ๊ฐ์ ํ ์ฌ๊ณ ๋์: ํน์ ๋ ์ง์๋ง ๊ณต๊ฒฉํ๋ ์ ์ฑ์ฝ๋๋ ํ์ง ๊ณต๋ฐฑ ๊ธฐ๊ฐ์ ๋ง๋ ๋ค(ํด๋ฉด๊ธฐ์๋ ์๋ฌด ํ์ ์ด ์๋ค). '์กฐ์ฉํ ์๊ธฐ'๋ฅผ ๋ฐฉ์ด์ ์ ๋น ๊ธฐ๊ฐ์ผ๋ก ์ฐ๊ณ , ์๋ ค์ง ์กฐ๊ฑด(๋ ์งยท๋๋ฉ์ธยทC2 ์ฃผ์)์ ์ฐจ๋จ ๋ชฉ๋กยท๋ชจ๋ํฐ๋ง ๊ท์น์ผ๋ก ๋ฏธ๋ฆฌ ์ค๋นํ๋ค.
- โจ ๊ตํ โ "ํจ์น๊ฐ ๋์ ์๋๋ฐ ์ ๋ซ๋ฆฌ๋๊ฐ": Code Red์ ์ง์ง ๊ตํ์ ๊ธฐ์ ์ด ์๋๋ผ ์ด์์ด๋ค. ์ทจ์ฝ์ ๊ณต๊ฐ์ ์ค์ ๊ณต๊ฒฉ ์ฌ์ด์ ์๊ฐ(1๊ฐ์)์ด ์ด๋ ๊ฒ ์งง์ ์ ์๊ณ , ์ธํฐ๋ท์ ๋ ธ์ถ๋ ์๋ฒ์ ํจ์น์จ์ ๋ ์์๋ณด๋ค ๋ฎ๋ค. ๋ ธ์ถ ์์ฐ ํ์ โ ์ํ๋ ๊ธฐ๋ฐ ํจ์น SLA โ ๋ ธ์ถ๋ฉด ์ ๊ฑฐ โ ๋คํธ์ํฌ ๊ฒฉ๋ฆฌ์ 4๋จ๊ณ๊ฐ 2001๋ ์ ์ด๋ฏธ ๋ต์ด์๊ณ , 25๋ ์ด ์ง๋ ์ง๊ธ๋ ๊ทธ๋๋ก ์ ํจํ๋ค.
์ถ์ฒ
- Wikipedia โ Code Red (computer worm): 2001-07-15 ๊ด์ธก ยท 2001-07-19 359,000๋ ยท eEye ๋ฐ๊ฒฌ์ ยท ๋ณ์กฐ ๋ฌธ๊ตฌ ยท ๋ ์ง๋ณ 3๋จ๊ณ ํ๋ ยท Apache ๋ก๊ทธ ์์ โ en.wikipedia.org/wiki/Code_Red_(computer_worm)
- Wikipedia โ Code Red II: ๋์ผ ๋ฒกํฐยท๋ค๋ฅธ ํ์ด๋ก๋, ์๋ธ๋ท ํธํฅ ํ๋ฅ ๋ถํฌ, 'X' ์ฑ์ ๋ฌธ์, ๋ฐฑ๋์ด, ๋ง์นดํฐ ๊ธฐ์ ์ถ์ โ en.wikipedia.org/wiki/Code_Red_II
- CERT/CC Advisory CA-2001-19 โ 'Code Red' Worm Exploiting Buffer Overflow In IIS Indexing Service DLL (2001-07-17) โ cert.org/historical/advisories/CA-2001-19.cfm
- Microsoft Security Bulletin MS01-033 โ Unchecked Buffer in Index Server ISAPI Extension Could Enable Web Server Compromise (2001-06-18) โ learn.microsoft.com/โฆ/ms01-033
- NVD โ CVE-2001-0500 (IIS Index Server ISAPI ํ์ฅ ๋ฒํผ ์ค๋ฒํ๋ก) โ nvd.nist.gov/vuln/detail/CVE-2001-0500
- eEye Digital Security โ ANALYSIS: .ida "Code Red" Worm (2001-07-17) โ web.archive.org/โฆ/eeye AL20010717
- CAIDA (David Moore, Colleen Shannon) โ The Spread of the Code-Red Worm (CRv2) โ caida.org/catalog/papers/2001_code-red_spread
- CAIDA โ Code-Red ๋ถ์ ๊ฐ์(2001๋ ๊ฐ์ผ ๋ฐ์ดํฐยทํ์ฐ ๊ณก์ ) โ caida.org
- Steve Friedl (Unixwiz.net) โ Code Red II analysis (2001-08-22) โ unixwiz.net/techtips/CodeRedII.html
- NSF โ Discoveries: The Spread of the Code Red Worm (ํ์ฐ ์ ๋๋ฉ์ด์ ) โ nsf.gov/news/special_reports/cyber
โป ๋ณธ๋ฌธ์ PoC ์ฝ๋๋ ๊ตฌ์กฐ ์ดํด ๋ชฉ์ ์ ๊ต์ก์ฉ ๋ชจ์ ์ฝ๋์ด๋ฉฐ, ์ค์ Code Red/Code Red II ์ํยท์ ธ์ฝ๋ยท ์ต์คํ๋ก์ ๋ฌธ์์ด(%u ์ธ์ฝ๋ฉ ํ์ด๋ก๋ ํฌํจ)๊ณผ ์ค์ ๊ณต๊ฒฉ ๋์ ์ ๋ณด๋ ํฌํจํ์ง ์์ต๋๋ค. ๋ชจ๋ ์ค์ต์ ์ธํฐ๋ท๊ณผ ๋ถ๋ฆฌ๋ ๊ฒฉ๋ฆฌ ๋ฉ VM์ ์ ์ ๋ก ํฉ๋๋ค.
ํจ๊ป ์ฝ๊ธฐ: ๐ Morris Worm (1988) โ ์ต์ด์ ์๊ธฐ๋ณต์ ์ ยท ๐ SQL Slammer (2003) โ 376๋ฐ์ดํธ ํจํท ํ๋๋ก 10๋ถ ยท ๐ชฑ Conficker (2008) โ ์๊ฐ ๋ฐฉ์ดํ ์์ ์งํ ยท ๐ WannaCry (2017) โ EternalBlue๋ก ๋์ด์๋ ์๊ธฐ์ ํํ ๊ณต๊ฒฉ ยท ๐ฆ Mirai (2016) โ IoT๋ฅผ ๋ฌด๊ธฐ๋ก ๋ฐ๊พผ ๋ด๋ท