๐Ÿ’Œ Melissa (W97M.Melissa.A, 1999) โ€” '์ค‘์š”ํ•œ ๋ฉ”์‹œ์ง€'๋ผ๋Š” ์ œ๋ชฉ ํ•œ ์ค„์ด 100๋งŒ ๋ฉ”์ผํ•จ์„ ์‚ผํ‚ค๋‹ค

2026-10-03 ยท Malware Deep-Dive (Macro Virus / Mass-mailing Worm / Social Engineering)
๊ธฐ์ˆ  ์ •๋ณด
  • ๊ธฐ์ˆ ๋ช…: W97M.Melissa.A (Symantec) ยท Virus:W32/Melissa (F-Secure)
  • ๋ถ„๋ฅ˜: ๋งคํฌ๋กœ ๋ฐ”์ด๋Ÿฌ์Šค + ๋Œ€๋Ÿ‰ ๋ฉ”์ผ ์›œ(mass-mailing macro virus)
  • ์ œ์ž‘ยท์œ ํฌ: David L. Smith (๋ฏธ๊ตญ ๋‰ด์ €์ง€์ฃผ Aberdeen Township)
  • ์ตœ์ดˆ ์œ ํฌ: 1999-03-26 (alt.sex ์œ ์ฆˆ๋„ท ๋‰ด์Šค๊ทธ๋ฃน์— ๊ฐ์—ผ ๋ฌธ์„œ ๊ฒŒ์‹œ)
  • ๊ฐ์—ผ ํ”Œ๋žซํผ: Windows 95/98/Me/NT/2000/XP + Microsoft Word 97 / Word 2000 (Outlook ํ™˜๊ฒฝ์—์„œ ๋ฉ”์ผ ๋ฐœ์†ก)
  • ๊ฐ์—ผ ๋ฒกํ„ฐ: ๊ฐ์—ผ๋œ .doc ์ฒจ๋ถ€๋ฅผ '์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์—ฐ๋‹ค'๋Š” ์‹ ๋ขฐ ๊ธฐ๋ฐ˜ (์ž๋™์‹คํ–‰ ๋งคํฌ๋กœ)

1. ๋ฐฐ๊ฒฝ/์—ญ์‚ฌ โ€” '๋งคํฌ๋กœ'๊ฐ€ ๋ฌด๊ธฐ๊ฐ€ ๋œ ๋‚ 

1999๋…„, ๋ฌธ์„œ ํŒŒ์ผ์€ ์—ฌ์ „ํžˆ '๊ธ€'์ด์—ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ .doc ์ฒจ๋ถ€๋ฅผ ์—ด ๋•Œ ๊ทธ๊ฒƒ์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ํ’ˆ๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ฑฐ์˜ ์ธ์‹ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. Melissa๋Š” ๋ฐ”๋กœ ๊ทธ ์ธ์‹์˜ ํ‹ˆ์„ ์ฐ”๋ €๋‹ค. Word 97ยท2000์˜ VBA(Visual Basic for Applications) ๋งคํฌ๋กœ๋Š” ๋ฌธ์„œ๋ฅผ ์—ด ๋•Œ AutoOpen ๊ฐ™์€ ์•ฝ์†๋œ ์ด๋ฆ„์˜ ๋ฃจํ‹ด์„ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ–ˆ๊ณ , ๋‹น์‹œ ๊ธฐ๋ณธ๊ฐ’์€ '๋งคํฌ๋กœ ๋ณดํ˜ธ ๊บผ์ง'์— ๊ฐ€๊นŒ์› ๋‹ค. ๋ฌธ์„œ๋ฅผ ์—ฐ๋‹ค๋Š” ๊ฑด, ๊ณง ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๋Š” ๋œป์ด์—ˆ๋‹ค.

์œ ํฌ์ž David L. Smith๋Š” 1999๋…„ 3์›” 26์ผ, ๋„๋‚œ๋‹นํ•œ AOL ๊ณ„์ •์œผ๋กœ ์„ฑ์ธ ์ฝ˜ํ…์ธ  ์‚ฌ์ดํŠธ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋“ค์–ด ์žˆ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ๋ฌธ์„œ๋ฅผ alt.sex ์œ ์ฆˆ๋„ท ๋‰ด์Šค๊ทธ๋ฃน์— ๊ฒŒ์‹œํ–ˆ๋‹ค. ํด๋ฆญ์„ ๋ถ€๋ฅด๋Š” ๋ฏธ๋ผ, ๊ทธ ์ž์ฒด์˜€๋‹ค. Melissa๋Š” ์Šค์Šค๋กœ๋ฅผ '์›œ'์ด๋ผ ๋ถ€๋ฅด์ง€ ์•Š์•˜์ง€๋งŒ, ๊ฐ์—ผ๋œ ๋ฌธ์„œ๋ฅผ ์—ฐ ์ปดํ“จํ„ฐ๋Š” ์ž์‹ ์˜ Outlook ์ฃผ์†Œ๋ก์„ ์ด์šฉํ•ด ๋‹ค์‹œ ๋ฉ”์ผ์„ ๋ฟŒ๋ ธ๋‹ค. ์ด๋ฉ”์ผ์ด ์›œ์˜ ์šด๋ฐ˜์ฒด๊ฐ€ ๋œ ์ˆœ๊ฐ„์ด์—ˆ๋‹ค.

2. ๊ฐ์—ผยท์ „ํŒŒ ๊ฒฝ๋กœ โ€” ์ฃผ์†Œ๋ก์ด ๊ณง ๋ฏธ์‚ฌ์ผ ๋ฐœ์‚ฌ๋Œ€

Melissa์˜ ์ „ํŒŒ๋Š” ์„ธ ๋‹จ๊ณ„๋ฅผ ๋™์‹œ์— ๋ฐŸ์•˜๋‹ค. ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” '์ง€์ธ์—๊ฒŒ์„œ ์˜จ ๋ฌธ์„œ'๋ผ๋Š” ์‹ ๋ขฐ๊ฐ€ ๋ชจ๋“  ๋ฐฉ์–ด์„ ์„ ๋ฌด๋ ฅํ™”ํ–ˆ๋‹ค.

์ฆ‰ Melissa๋Š” '์ทจ์•ฝ์ '์„ ์•…์šฉํ•œ ๊ฒŒ ์•„๋‹ˆ๋ผ '์ •์ƒ ๊ธฐ๋Šฅ(์ฃผ์†Œ๋กยท๋ฉ”์ผ)ยท์ •์ƒ ํ–‰๋™(๋ฌธ์„œ ์—ด๊ธฐ)'์„ ๋ฌด๊ธฐํ™”ํ–ˆ๋‹ค. ์ด๊ฒƒ์ด ์ดํ›„ EmotetยทILOVEYOU ๋“ฑ ์ˆ˜๋งŽ์€ ๋ฉ”์ผ ๊ธฐ๋ฐ˜ ์•…์„ฑ์ฝ”๋“œ์˜ ๊ณตํ†ต ์กฐ์ƒ์ด์—ˆ๋‹ค.

3. ๋™์ž‘ ์›๋ฆฌ ์ƒ์„ธ ๋ถ„์„ โ€” ๊ตฌ์กฐ ๋ ˆ๋ฒจ์—์„œ

Melissa์˜ ์‹ฌ์žฅ์€ Word ๋ฌธ์„œ ์•ˆ์— ์‹ฌ๊ธด VBA ๋งคํฌ๋กœ๋‹ค. Word๋Š” ๋ฌธ์„œ๋ฅผ ์—ด ๋•Œ ์ •ํ•ด์ง„ ์ด๋ฆ„์˜ ๋ฃจํ‹ด์„ ์ž๋™ ์‹คํ–‰ํ•˜๋Š”๋ฐ, Melissa๋Š” ์ด ํ›…์„ ์ง„์ž…์ ์œผ๋กœ ์“ด๋‹ค.

์•„๋ž˜๋Š” ์œ„ ๋™์ž‘์„ ์‹ค์ œ ์•…์„ฑ์ฝ”๋“œ ์—†์ด ์žฌํ˜„ํ•œ ๋ชจ์˜ ๋งคํฌ๋กœ ๊ตฌ์กฐ(์˜์‚ฌ์ฝ”๋“œ)๋‹ค. ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฉฐ, ๊ตฌ์กฐ ์ดํ•ด๋งŒ์„ ์œ„ํ•œ ์„ค๋ช…์šฉ์ด๋‹ค.

' ---- ๋ชจ์˜ ๋งคํฌ๋กœ ๊ตฌ์กฐ (์‹คํ–‰ ๋ถˆ๊ฐ€ ์˜์‚ฌ์ฝ”๋“œ ยท ์‹ค์ œ ์•…์„ฑ์ฝ”๋“œ ์•„๋‹˜) ----
Sub AutoOpen()                                   ' ๋ฌธ์„œ๋ฅผ ์—ด๋ฉด ์ž๋™ ์‹คํ–‰๋˜๋Š” ์ง„์ž…์ 
    If MarkerExists("kwyjibo") Then Exit Sub      ' ํ˜ธ์ŠคํŠธ๋‹น 1ํšŒ๋งŒ ๊ฐ์—ผ(์ค‘๋ณต ๋ฐฉ์ง€)
    SetMarker "kwyjibo"

    LowerMacroSecurity 0                         ' ๋งคํฌ๋กœ ๊ฒฝ๊ณ /๋ณดํ˜ธ๋ฅผ ๋” (์ž๊ธฐ๋ฐฉ์–ด)
    CopySelfTo "Normal.dot"                       ' ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ ๋ณต์ œ โ†’ ์ดํ›„ ๋ฌธ์„œ ์ „๋ถ€ ๊ฐ์—ผ

    If OutlookPresent() Then
        For Each addr In OutlookAddressBook(1 To 50)   ' ์ฃผ์†Œ๋ก ์ƒ์œ„ 50๋ช…
            SendMail addr, Subject:="Important Message From " + UserName(), _
                       Attachment:=ThisDocument                 ' ๊ฐ์—ผ ๋ฌธ์„œ ์ž๋™ ์ฒจ๋ถ€
        Next
    End If

    If Minute(Now) = Day(Now) Then ShowScrabbleJoke   ' ๋“œ๋ฌผ๊ฒŒ ์ฐธ์ด ๋˜๋Š” ์ง€์—ฐ ํŽ˜์ด๋กœ๋“œ
End Sub

4. ํ”ผํ•ด ๊ทœ๋ชจ/์˜ํ–ฅ โ€” ์‹ค์ œ ์ˆ˜์น˜

Melissa๋Š” ํŒŒ์ผ์„ ์ง€์šฐ์ง€๋„, ๋ˆ์„ ์š”๊ตฌํ•˜์ง€๋„ ์•Š์•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ๋„ '๊ฐ€์žฅ ๋น ๋ฅธ ๊ฐ์—ผ'์œผ๋กœ ๊ธฐ๋ก๋๋‹ค. ์ด ์‚ฌ๊ฑด ์ดํ›„ ๊ธฐ์—…ยท๊ธฐ๊ด€์€ '๋ฉ”์ผ์— ์ฒจ๋ถ€๋œ ๋ฌธ์„œ๋„ ์ฝ”๋“œ๋‹ค'๋ผ๋Š” ์ „์ œ๋กœ ๋ฐฉ์–ด ์ „๋žต์„ ๋‹ค์‹œ ์งœ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

5. PoC (๊ฐœ๋… ์ฆ๋ช…) โ€” ๋™์ž‘ ์›๋ฆฌ๋งŒ ์žฌํ˜„

โš ๏ธ ์•ˆ์ „ ๊ทœ์น™
์•„๋ž˜ ์ฝ”๋“œ๋Š” ๊ต์œก์šฉ ๋ชจ์˜ ์ฝ”๋“œ๋‹ค. ์‹ค์ œ Melissa ํŽ˜์ด๋กœ๋“œยท์‹ค์ œ VBA ๋งคํฌ๋กœยท์‹ค์ œ Outlook ์ž๋™ํ™”ยท์‹ค์ œ SMTP ๋ฐœ์†ก/์ฃผ์†Œ๋ก ์ˆ˜์ง‘ ๊ธฐ๋Šฅ์€ ์ผ์ ˆ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋“  ๋Œ€์ƒ์€ ๊ฐ€์ƒ์˜ ๋กœ์ปฌ ์‹ค์Šต ํ™˜๊ฒฝ(๋žฉ VM, Python 3)์œผ๋กœ, ๋„คํŠธ์›Œํฌยท๋ฉ”์ผยทํŒŒ์ผ์‹œ์Šคํ…œยท๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์ „ํ˜€ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ์‹ค์ œ ์•…์„ฑ์ฝ”๋“œ์˜ ์ž‘์„ฑยท์œ ํฌยท์‹คํ–‰์€ ๋ถˆ๋ฒ•์ด๋ฉฐ, ๋ณธ ๋ฌธ์„œ๋Š” ๋ฐฉ์–ด ์ดํ•ด๋งŒ์„ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค.

PoC๋Š” ๋‹ค์Œ ๋„ค ๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. โ‘  ๋ชจ์˜ ๋งคํฌ๋กœ ๊ตฌ์กฐ๋Š” ์œ„ 3์žฅ์— ์‹ค์—ˆ๊ณ , ๋‚˜๋จธ์ง€ ์„ธ ๊ฐœ๋Š” ์•„๋ž˜์—์„œ ์ง์ ‘ ์‹คํ–‰ํ•œ๋‹ค.

PoC โ‘ก ๋Œ€๋Ÿ‰ ๋ฉ”์ผ ์ „ํŒŒ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ โ€” ์™œ ๋ฉฐ์น  ๋งŒ์— ๋ฉˆ์ถ”๋Š”๊ฐ€

# melissa_spread.py โ€” ์ „๋ถ€ ๊ฐ€์ƒ. ์‹ค์ œ ๋ฐœ์†ก ์—†์Œ. 'R0 ํ™•์‚ฐ' ๊ตฌ์กฐ๋งŒ ์žฌํ˜„.
POP, ADDR_BOOK, OPEN_P = 100_000, 50, 0.15   # ๊ณ„์ • / ์ฃผ์†Œ๋ก 50๋ช… / ๊ฐœ๋ด‰๋ฅ  15%(๊ฐ€์ •)
susceptible, infected = POP - 1, 1
for day in range(1, 11):
    mails  = infected * ADDR_BOOK            # ๊ฐ์—ผ ๋Œ€์ˆ˜๊ฐ€ ๊ฐ๊ฐ 50๋ช…์—๊ฒŒ ๋ฐœ์†ก
    opened = int(mails * OPEN_P)             # ๊ทธ์ค‘ ์ผ๋ถ€๊ฐ€ '์—ฐ๋‹ค'
    new    = min(opened, susceptible)        # ๋‚จ์€ ๊ณ„์ •๊นŒ์ง€๋งŒ
    susceptible -= new; infected += new
    print(f"{day:2d}์ผ์ฐจ: ๋ฐœ์†ก {mails:>9,} ยท ์‹ ๊ทœ {new:>9,} ยท ๋ˆ„์  {infected:>9,}")

์‹คํ–‰ ๊ฒฐ๊ณผ(์ด๋ฒˆ ์‹คํ–‰ ์‹ค์ œ ์ถœ๋ ฅ):

๊ณ„์ • 100,000 ยท ์ฃผ์†Œ๋ก 50๋ช…/ํšŒ ยท ๊ฐœ๋ด‰๋ฅ  15%

 0์ผ์ฐจ: ๋ˆ„์  ๊ฐ์—ผ 1
 1์ผ์ฐจ: ๋ฐœ์†ก        50 ยท ์‹ ๊ทœ         7 ยท ๋ˆ„์  ๊ฐ์—ผ         8 ( 0.0%)
 2์ผ์ฐจ: ๋ฐœ์†ก       400 ยท ์‹ ๊ทœ        60 ยท ๋ˆ„์  ๊ฐ์—ผ        68 ( 0.1%)
 3์ผ์ฐจ: ๋ฐœ์†ก     3,400 ยท ์‹ ๊ทœ       510 ยท ๋ˆ„์  ๊ฐ์—ผ       578 ( 0.6%)
 4์ผ์ฐจ: ๋ฐœ์†ก    28,900 ยท ์‹ ๊ทœ     4,335 ยท ๋ˆ„์  ๊ฐ์—ผ     4,913 ( 4.9%)
 5์ผ์ฐจ: ๋ฐœ์†ก   245,650 ยท ์‹ ๊ทœ    36,847 ยท ๋ˆ„์  ๊ฐ์—ผ    41,760 (41.8%)
 6์ผ์ฐจ: ๋ฐœ์†ก 2,088,000 ยท ์‹ ๊ทœ    58,240 ยท ๋ˆ„์  ๊ฐ์—ผ   100,000 (100.0%)
 7์ผ์ฐจ: ๋ฐœ์†ก 5,000,000 ยท ์‹ ๊ทœ         0 ยท ๋ˆ„์  ๊ฐ์—ผ   100,000 (100.0%)

ํ•ต์‹ฌ์€ ๋ฐœ์†ก๋Ÿ‰์ด ๊ฐ์—ผ ๋Œ€์ˆ˜๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ํญ์ฆํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. 5์ผ์ฐจ์— ์ด๋ฏธ ํ•˜๋ฃจ 24๋งŒ ํ†ต, 6์ผ์ฐจ์—” 200๋งŒ ํ†ต์„ ์Ÿ์•„๋‚ธ๋‹ค. ๋ฉ”์ผ ์„œ๋ฒ„๋Š” '์•…์„ฑ์ฝ”๋“œ'๊ฐ€ ์•„๋‹ˆ๋ผ '์ •์ƒ ๋ฉ”์ผ์˜ ํ™์ˆ˜'๋กœ ๋จผ์ € ์ฃฝ๋Š”๋‹ค โ€” Melissa๊ฐ€ ์‹ค์ œ๋กœ ์ผ์œผํ‚จ ์ผ์ด ์ •ํ™•ํžˆ ์ด๊ฒƒ์ด์—ˆ๋‹ค.

PoC โ‘ข ํŠธ๋ฆฌ๊ฑฐ & ์ž๊ธฐ๋ฐฉ์–ด ๋งˆ์ปค ์žฌํ˜„

import datetime
# 1) ์ง€์—ฐ ํŽ˜์ด๋กœ๋“œ: '๋ถ„(minute)'์ด '์ผ(day)'๊ณผ ๊ฐ™์„ ๋•Œ๋งŒ ๋ฐœ๋™ โ€” ๋“œ๋ฌผ๊ฒŒ ์ฐธ์ด ๋˜๋Š” ์ง€์—ฐ ํญํƒ„
now = datetime.datetime.now()
if now.minute == now.day:
    print('ํŠธ๋ฆฌ๊ฑฐ ๋ฐœ๋™: "Twenty-two points, ... Game\'s over. I\'m outta here."')

# 2) ์ž๊ธฐ๋ฐฉ์–ด ๋งˆ์ปค(๊ฐ€์ƒ): ์‹ค์ œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์•„๋‹˜, ๋ฉ”๋ชจ๋ฆฌ dict๋กœ๋งŒ ํ‰๋‚ด
fake_registry, MARKER = {}, r"HKCU\Software\Microsoft\Office\Melissa\kwyjibo"
set_marker = lambda r: r.__setitem__(MARKER, 1)
already    = lambda r: r.get(MARKER) == 1
print("์ตœ์ดˆ ๊ฐ์—ผ?", already(fake_registry)); set_marker(fake_registry)
print("์žฌ๊ฐ์—ผ?",   already(fake_registry))     # โ†’ ํ˜ธ์ŠคํŠธ๋‹น 1ํšŒ๋งŒ: ์Šค์Šค๋กœ๋ฅผ ๋ง์น˜์ง€ ์•Š๋Š” ์„ค๊ณ„

์‹คํ–‰ ๊ฒฐ๊ณผ(์ด๋ฒˆ ์‹คํ–‰ ์‹ค์ œ ์ถœ๋ ฅ):

ํ˜„์žฌ ์‹œ๊ฐ: 2026-10-03 22:02 (๋ถ„=2, ์ผ=3)
โ†’ ์˜ค๋Š˜์€ ์กฐ๊ฑด ๋ถˆ์ผ์น˜(๋ถ„โ‰ ์ผ) โ†’ ํŽ˜์ด๋กœ๋“œ ๋ฏธ๋ฐœ๋™. ๋“œ๋ฌผ๊ฒŒ ์ฐธ์ด ๋˜๋„๋ก ์„ค๊ณ„๋œ '์ง€์—ฐ ํญํƒ„'.
์ตœ์ดˆ ๊ฐ์—ผ ๋งˆ์ปค ์กด์žฌ? False
๋งˆ์ปค ๊ธฐ๋ก ํ›„ ์žฌ๊ฐ์—ผ ์—ฌ๋ถ€? True  (์žฌ์‹คํ–‰ ์‹œ ํ˜ธ์ŠคํŠธ๋‹น 1ํšŒ๋งŒ ๋ฐœ๋™)

PoC โ‘ฃ ๋งคํฌ๋กœ ๋ฌธ์„œ ์ •์  ํƒ์ง€ ํ‰๋‚ด (๋ฐฉ์–ด ๊ด€์ )

# ๋งคํฌ๋กœ ๋ฌธ์„œ๋Š” 'ํ™•์žฅ์ž'๊ฐ€ ์•„๋‹ˆ๋ผ '๋‚ด์žฅ ๋งคํฌ๋กœ ์ŠคํŠธ๋ฆผ ์œ ๋ฌด'๋กœ ํŒ๋‹จํ•œ๋‹ค (๋ชจ์˜ ๋ฐ”์ดํŠธ)
OLE_MAGIC = bytes.fromhex("D0CF11E0A1B11AE1")   # ๊ตฌํ˜• OLE/CFB(.doc) ๋งค์ง ๋„˜๋ฒ„
VBA_MARK  = b"VBA"                              # ๋‚ด์žฅ ๋งคํฌ๋กœ ํ”„๋กœ์ ํŠธ ํ”์ (๋ชจ์˜)
def scan(buf):
    flags = []
    if buf.startswith(OLE_MAGIC):
        flags.append("๊ตฌํ˜• OLE ๋ฌธ์„œ")
        if VBA_MARK in buf:
            flags.append("โš  ๋‚ด์žฅ VBA ๋งคํฌ๋กœ ์กด์žฌ")
    else:
        flags.append("OLE ์•„๋‹˜")
    return flags
for name, buf in {"clean_report.doc": OLE_MAGIC + b"WordDocument",
                  "invoice_1999.doc": OLE_MAGIC + b"WordDocument VBA_Macros_AutoOpen",
                  "photo.jpg": b"\xff\xd8\xff\xe0JFIF"}.items():
    print(name, "โ†’", scan(buf))

์‹คํ–‰ ๊ฒฐ๊ณผ(์ด๋ฒˆ ์‹คํ–‰ ์‹ค์ œ ์ถœ๋ ฅ):

clean_report.doc     โ†’ ๊ตฌํ˜• OLE ๋ฌธ์„œ
invoice_1999.doc     โ†’ ๊ตฌํ˜• OLE ๋ฌธ์„œ, โš  ๋‚ด์žฅ VBA ๋งคํฌ๋กœ ์กด์žฌ
photo.jpg            โ†’ OLE ์•„๋‹˜

โ†’ ๋งคํฌ๋กœ ๋ฌธ์„œ๋Š” 'ํ™•์žฅ์ž'๊ฐ€ ์•„๋‹ˆ๋ผ '๋‚ด์žฅ ๋งคํฌ๋กœ ์ŠคํŠธ๋ฆผ ์œ ๋ฌด'๋กœ ํŒ๋‹จํ•œ๋‹ค.
โ†’ ์ •์ฑ…(์ธํ„ฐ๋„ท ๋งคํฌ๋กœ ์ฐจ๋‹จยท์ž๋™์‹คํ–‰ ์ฐจ๋‹จ)์ด ์ผœ์ ธ ์žˆ์œผ๋ฉด ํŠธ๋ฆฌ๊ฑฐ ์ž์ฒด๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

6. ๋ฐฉ์–ด ๋ฐฉ๋ฒ•/๊ตํ›ˆ โ€” ๋ฌด์—‡์„ ๋ฐฐ์šฐ๋‚˜

7. ์ถœ์ฒ˜

โ€ป ๋ณธ๋ฌธ์˜ PoC ์ฝ”๋“œ๋Š” ๊ตฌ์กฐ ์ดํ•ด ๋ชฉ์ ์˜ ๊ต์œก์šฉ ๋ชจ์˜ ์ฝ”๋“œ์ด๋ฉฐ, ์‹ค์ œ Melissa ๋งคํฌ๋กœ ํŽ˜์ด๋กœ๋“œยท์‹ค์ œ Outlook ์ž๋™ํ™”ยท์‹ค์ œ ์ฃผ์†Œ๋ก ์ˆ˜์ง‘ยท์‹ค์ œ ๋ฉ”์ผ ๋ฐœ์†กยท์‹ค์ œ IOC๋Š” ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‹ค์Šต์€ ์ธํ„ฐ๋„ท๊ณผ ๋ถ„๋ฆฌ๋œ ๊ฒฉ๋ฆฌ ๋žฉ VM์„ ์ „์ œ๋กœ ํ•˜๋ฉฐ, ์‹ค์ œ ์‹œ์Šคํ…œยทํƒ€์ธ ์ž์‚ฐ์— ๋Œ€ํ•œ ์‹คํ–‰์€ ๋ถˆ๋ฒ•์ž…๋‹ˆ๋‹ค.

ํ•จ๊ป˜ ์ฝ๊ธฐ: ๐Ÿ’ฅ Emotet (2014โ€“2021) โ€” ๋ฉ”์ผ ์ฒจ๋ถ€๊ฐ€ ๋žœ์„ฌ์›จ์–ด์˜ 1์ฐจ ์นจํˆฌ ํ”Œ๋žซํผ์ด ๋˜๊ธฐ๊นŒ์ง€ ยท ๐ŸŸฅ Code Red (2001) โ€” '์š”์ฒญ ํ•˜๋‚˜'๊ฐ€ ์„œ๋ฒ„๋ฅผ ์‚ผํ‚จ ๋Œ€๋Ÿ‰ ๊ฐ์—ผ ยท ๐ŸŒ Log4Shell (2021) โ€” ๊ณต๊ธ‰๋ง์„ ํ”๋“  ์ œ๋กœ๋ฐ์ด ์ฒด์ธ ยท ๐Ÿ› Morris Worm (1988) โ€” ์ธํ„ฐ๋„ท์„ ์ฒ˜์Œ ๋ฉˆ์ถ”๊ฒŒ ํ•œ ์›œ

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