- ๊ธฐ์ ๋ช : 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 ์ฃผ์๋ก์ ์ด์ฉํด ๋ค์ ๋ฉ์ผ์ ๋ฟ๋ ธ๋ค. ์ด๋ฉ์ผ์ด ์์ ์ด๋ฐ์ฒด๊ฐ ๋ ์๊ฐ์ด์๋ค.
- ์ ์ ๋ช ํ๊ฐ: Melissa๋ ๋๋ ๋ฉ์ผ(mass-mailing) ๋ฐฉ์์ผ๋ก ์ ํ๋ ์ต์ด์ ๋ํ ๋งคํฌ๋ก ๋ฐ์ด๋ฌ์ค๋ก ๊ผฝํ๋ค. ์ ๋ขฐํ๋ ์ง์ธ ์ฃผ์๋ก์ ๋ฐํ์ผ๋ก ์ผ๋ '์์ ์์ง๋์ด๋ง + ์๋ ์ ํ'์ ์ํ์ ๋ง๋ค์๋ค.
- ์๋: FBI๋ ๋น์ ๊ธฐ์ค '์ญ๋ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ํผ์ง ์ปดํจํฐ ๊ฐ์ผ'์ผ๋ก ํํํ๋ค. ์ ํฌ ๋ํ ๋ง์ CER๊ทธ ์ง๊ณ๋ก 250๊ฐ ๊ธฐ๊ดยท์ต์ 10๋ง ๋๊ฐ ๊ฐ์ผ๋๋ค.
- ์ฌํ์ ํ์ฅ: ๋ง์ดํฌ๋ก์ํํธยท์ธํ ๋ฑ์ ํฌํจํ ๋ค์ ๊ธฐ์ ์ด ๊ฒ์ดํธ์จ์ด๋ฅผ ์ฐจ๋จํ๊ณ , ๋ง์ดํฌ๋ก์ํํธ๋ ๋ฐ์ ๋ฉ์ผ์ ์ฝ 5์๊ฐ ์ ์ง์์ผฐ๋ค. ๋ฏธ๊ตญ ํด๋ณ๋๋ ์ํฅ์ ๋ฐ์๋ค.
- ๋ฒ์ ์ด์ ํ: Smith๋ ์ ํฌ ์ผ์ฃผ์ผ๋ ์ ๋ผ ์ฒดํฌ๋์ด, 2002๋ ์ฐ๋ฐฉ ๊ต๋์ 20๊ฐ์ยท๊ฐ๋ ์๋ฐฉ 3๋ ยท๋ฒ๊ธ 5,000๋ฌ๋ฌยท์ฌํ๋ด์ฌ 100์๊ฐ์ ์ ๊ณ ๋ฐ์๋ค. ์ ์ฑ์ฝ๋ ์ ํฌ๊ฐ ๋ณธ๊ฒฉ์ ์ผ๋ก ํ์ฌ์ฒ๋ฒ๋ ๋ํ์ ์ ๋ก๋ค.
2. ๊ฐ์ผยท์ ํ ๊ฒฝ๋ก โ ์ฃผ์๋ก์ด ๊ณง ๋ฏธ์ฌ์ผ ๋ฐ์ฌ๋
Melissa์ ์ ํ๋ ์ธ ๋จ๊ณ๋ฅผ ๋์์ ๋ฐ์๋ค. ์ฌ์ฉ์ ์ ์ฅ์์๋ '์ง์ธ์๊ฒ์ ์จ ๋ฌธ์'๋ผ๋ ์ ๋ขฐ๊ฐ ๋ชจ๋ ๋ฐฉ์ด์ ์ ๋ฌด๋ ฅํํ๋ค.
- โ ์ด๊ธฐ ์ ํฌ: ๊ณต๊ฐ ๋ด์ค๊ทธ๋ฃน(alt.sex)์ ๊ฒ์ โ ํธ๊ธฐ์ฌ์ผ๋ก ๋ด๋ ค๋ฐ์ ์ฌ๋์ด ๋ฌธ์๋ฅผ ์ฐ๋ค. ๋ฏธ๋ผ๋ '์ฑ์ธ ์ฌ์ดํธ ๋น๋ฐ๋ฒํธ ๋ชฉ๋ก'.
- โก ์๊ธฐ ์ฆ์(๋ก์ปฌ): ๋ฌธ์๋ฅผ ์ฐ ์๊ฐ ๋งคํฌ๋ก๊ฐ ์คํ๋์ด, ์์ ์ Word์ ๊ธฐ๋ณธ ํ ํ๋ฆฟ(Normal.dot)์ ๋ณต์ฌํ๋ค. ์ดํ ์ด PC์์ ์ด๊ฑฐ๋ ์๋ก ๋ง๋๋ ๋ชจ๋ ๋ฌธ์๊ฐ ๊ฐ์ผ๋๋ค.
- โข ๋๋ ๋ฉ์ผ(๋คํธ์ํฌ): Outlook์ด ์์ผ๋ฉด ์ฃผ์๋ก ์์ 50๋ช ์๊ฒ ๊ฐ์ผ ๋ฌธ์๋ฅผ ์๋ ์ฒจ๋ถํด ๋ฐ์กํ๋ค. ์ ๋ชฉ์ "Important Message From <๋ณด๋ธ์ฌ๋ ์ด๋ฆ>", ๋ณธ๋ฌธ์ "Here is that document you asked for ... don't show anyone else ;-)"์๋ค. ๋ฐ์ ์๊ฐ ์๋ ์ฌ๋์ด๋ผ ์์ ์๋ ์ด ํ๋ฅ ์ด ๋๋ค โ ๊ฐ์ผ ์ฌ์์ฐ์จ(R0)์ ์ค์ค๋ก ๋์ด์ฌ๋ฆฌ๋ ๊ตฌ์กฐ๋ค.
์ฆ Melissa๋ '์ทจ์ฝ์ '์ ์ ์ฉํ ๊ฒ ์๋๋ผ '์ ์ ๊ธฐ๋ฅ(์ฃผ์๋กยท๋ฉ์ผ)ยท์ ์ ํ๋(๋ฌธ์ ์ด๊ธฐ)'์ ๋ฌด๊ธฐํํ๋ค. ์ด๊ฒ์ด ์ดํ EmotetยทILOVEYOU ๋ฑ ์๋ง์ ๋ฉ์ผ ๊ธฐ๋ฐ ์ ์ฑ์ฝ๋์ ๊ณตํต ์กฐ์์ด์๋ค.
3. ๋์ ์๋ฆฌ ์์ธ ๋ถ์ โ ๊ตฌ์กฐ ๋ ๋ฒจ์์
Melissa์ ์ฌ์ฅ์ Word ๋ฌธ์ ์์ ์ฌ๊ธด VBA ๋งคํฌ๋ก๋ค. Word๋ ๋ฌธ์๋ฅผ ์ด ๋ ์ ํด์ง ์ด๋ฆ์ ๋ฃจํด์ ์๋ ์คํํ๋๋ฐ, Melissa๋ ์ด ํ ์ ์ง์ ์ ์ผ๋ก ์ด๋ค.
- ์๋ ์คํ ํ
:
AutoOpen(๋ฐDocument_Open) โ ์ฌ์ฉ์๊ฐ ์๋ฌด ๋ฒํผ๋ ๋๋ฅด์ง ์์๋ ๋ฌธ์๋ฅผ ์ฌ๋ ๊ฒ๋ง์ผ๋ก ์ฝ๋๊ฐ ๋๋ค. - ์๊ธฐ๋ฐฉ์ด(๋ณด์ ์ ํ): Melissa๋ ์คํ๋์๋ง์ Word์ ๋งคํฌ๋ก ๊ฒฝ๊ณ /๋ณดํธ ์ค์ ์ ๋๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ ๋ฎ์ถ๋ค. ์ดํ ์ด๋ฆฌ๋ ๋ฌธ์๋ค๋ ์กฐ์ฉํ ์คํ๋๋๋ก ํ๊ฒฝ์ ๋ฌด๋ ฅํํ๋ค โ ์ ์ฑ์ฝ๋๊ฐ 'ํ์ง์ ๋ฌธํฑ'์ ๋จผ์ ๋ฎ์ถ๋ ์ ํ์ ์๊ธฐ๋ฐฉ์ด๋ค.
- ๊ฐ์ผ ๋ง์ปค(์ค๋ณต ๋ฐฉ์ง): ์๊ธฐ ๋ณต์ ๋ฅผ ๋ ์ง์คํธ๋ฆฌ ๋ง์ปค๋ก 1ํ๋ก ์ ํํ๋ค.
Symantec ๋ถ์์๋
kwyjibo(์ฌ์จ ๊ฐ์กฑ์ ๋์ค๋ Bart์ ๊ฐ์ง ๋จ์ด) ๊ฐ์ด ๋ง์ปค๋ก ์ฐ์ธ ๊ฒ์ผ๋ก ๊ธฐ๋ก๋ผ ์๋ค. ๊ฐ์ PC๋ฅผ ๋ฐ๋ณต ๊ฐ์ผ์์ผ ์ค์ค๋ก๋ฅผ ๋ง์น์ง ์๋ '์ ์ ๋ ์' ์ค๊ณ๋ค. - ์ง์ฐ ํ์ด๋ก๋(๋์): ์ปดํจํฐ ์๊ณ์ '๋ถ(minute)'์ด '์ผ(day of month)'๊ณผ ๊ฐ์ ๋์๋ง ๋ฌธ์์ ํ ์ค์ ๋ผ์ ๋ฃ๋๋ค: "Twenty-two points, plus triple-word-score, plus 50 points for using all my letters. Game's over. I'm outta here." ์ฌ์จ ๊ฐ์กฑ์ ์คํฌ๋๋ธ ์ฅ๋ฉด์์ ๋ฐ์จ ๋ฌธ๊ตฌ๋ค. ํ์ผ์ ์ง์ฐ์ง๋ ์์์ง๋ง, ํน์ ์กฐ๊ฑด์์๋ง ํ์ด๋์ค๋ '์ง์ฐ ํญํ' ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ค๋ค.
- ํ๊ดด๋ ฅ์ ์ ์ฒด = ํธ๋ํฝ: Melissa์ ์ง์ง ํผํด๋ ๋ฐ์ดํฐ ์ญ์ ๊ฐ ์๋๋ผ ๋ฉ์ผ ํญ์ฃผ ๊ทธ ์์ฒด์๋ค. ๊ฐ์ผ๋ PC ์๋ณด๋ค '์๋ ๋ฐ์ก๋๋ ๋ฉ์ผ๋'์ด ๋จผ์ ์๋ฒ๋ฅผ ๋ฌด๋๋จ๋ ธ๋ค.
์๋๋ ์ ๋์์ ์ค์ ์ ์ฑ์ฝ๋ ์์ด ์ฌํํ ๋ชจ์ ๋งคํฌ๋ก ๊ตฌ์กฐ(์์ฌ์ฝ๋)๋ค. ์คํ๋์ง ์์ผ๋ฉฐ, ๊ตฌ์กฐ ์ดํด๋ง์ ์ํ ์ค๋ช ์ฉ์ด๋ค.
' ---- ๋ชจ์ ๋งคํฌ๋ก ๊ตฌ์กฐ (์คํ ๋ถ๊ฐ ์์ฌ์ฝ๋ ยท ์ค์ ์
์ฑ์ฝ๋ ์๋) ----
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. ํผํด ๊ท๋ชจ/์ํฅ โ ์ค์ ์์น
- CER๊ทธ (์นด๋ค๊ธฐ๋ฉ๋ฐ, 3์ 29์ผ ๊ธฐ์ค): 250๊ฐ ๊ธฐ๊ด ์ ๊ณ ยท ์ต์ 10๋ง ๋์ ์ ๋ฌด์ฉ ์ปดํจํฐ ๊ฐ์ผ(์ค์ ๋ ๋ ๋ง์ ๊ฒ์ผ๋ก ์ถ์ ).
- FBI: 300๊ฐ ์ด์ ๊ธฐ์ ยท์ ๋ถ๊ธฐ๊ด์ ๋ฉ์ผ ์๋ฒ ๊ณผ๋ถํ ยท ์ฝ 100๋ง ๊ฐ ๋ฉ์ผ ๊ณ์ ๊ต๋.
- ๋ง์ดํฌ๋ก์ํํธ: ๋ฐ์ ๋ฉ์ผ ์ฝ 5์๊ฐ ์ค๋จ. ์ธํ ๋ฑ๋ ๊ฒ์ดํธ์จ์ด๋ฅผ ๋ซ์๋ค.
- ์ด ๋ณต๊ตฌ ๋น์ฉ: FBI ์ถ์ ์ฝ 8,000๋ง ๋ฌ๋ฌ($80M).
- ๋ฒ์ ๊ฒฐ๊ณผ: Smith๋ 1999-04-01 ์ฒดํฌ(AOL ์ ๋ณด) โ 1999-12-09 ์ ์ฃ ์ธ์ โ 2002-05-01 ์ง์ญ 20๊ฐ์ ์ ๊ณ . '์ฅ๋์ด์๋ค'๋ ๋ณ๋ช ์ด ํตํ์ง ์๋๋ค๋ ์ ํธ์๋ค.
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. ๋ฐฉ์ด ๋ฐฉ๋ฒ/๊ตํ โ ๋ฌด์์ ๋ฐฐ์ฐ๋
- ๋งคํฌ๋ก ์๋ ์คํ์ ๋๋ค(1์ฐจ ๋ฐฉ์ด): ์ค๋๋ Office๋ ์ธํฐ๋ท์์ ๋ฐ์ ๋ฌธ์์ ๋งคํฌ๋ก๋ฅผ ๊ธฐ๋ณธ ์ฐจ๋จํ๊ณ , '์ฐจ๋จ ํด์ '๋ฅผ ์ฌ์ฉ์๊ฐ ๋ช ์์ ์ผ๋ก ์ ํํ๊ฒ ํ๋ค. Melissa๊ฐ ์ฑ๊ณตํ ์ ์ (๊ธฐ๋ณธ ํ์ฉ) ์์ฒด๋ฅผ ์ ๊ฑฐํ ๊ฒ์ด๋ค.
- '๋ฐ์ ์ ์ ๋ขฐ'๋ฅผ ๊ฒฝ๊ณํ๋ค: Melissa์ ๋ฏธ๋ผ๋ ์๋ ์ฌ๋์ด ๋ณด๋ธ ๋ฌธ์๋ผ๋ ์ ์ด์๋ค. ์ ๋ชฉ์ด ์์ฐ์ค๋ฝ๊ณ ๋ฐ์ ์๊ฐ ์ง์ธ์ด์ด๋, ์์์น ๋ชปํ ์ฒจ๋ถ๋ ์ด๊ธฐ ์ ์ ํ์ธํ๋ค. ์์ ์์ง๋์ด๋ง์ ๊ธฐ์ ์ทจ์ฝ์ ๋ณด๋ค ์ฌ๋์ ๋จผ์ ๋ ธ๋ฆฐ๋ค.
- ๊ฒ์ดํธ์จ์ด์์ ๋งคํฌ๋กยท์คํ ์ฒจ๋ถ๋ฅผ ๊ฒ์ฌํ๋ค: ํ์ฅ์ ํ์ดํธ๋ฆฌ์คํธ, ๋งคํฌ๋ก ํฌํจ ๋ฌธ์ ๊ฒฉ๋ฆฌยท์๋๋ฐ์ค, ์ฒจ๋ถ ๋ฆฌ๋ผ์ดํ (์์ ๋งํฌ) ๋ฑ์ผ๋ก ์ ์ ๋จ๊ณ์์ ๊ฑธ๋ฌ๋ธ๋ค.
- ๋ฉ์ผ ๋ฐ์ก๋ ์ด์ํ์ง: Melissa๋ฅ์ ํผํด๋ '๋๋ ์๋ ๋ฐ์ก'์์ ์จ๋ค. ํ ๊ณ์ /ํธ์คํธ์ ๋ฐ์ก ํญ์ฃผ๋ฅผ ์กฐ๊ธฐ์ ์ฐจ๋จํ๋ ์์๋ฐ์ด๋ ์ค๋กํยท์ด์ํ์ง๊ฐ ํ์ฐ ๋ฐ๊ฒฝ์ ์ค์ธ๋ค.
- ๋ ์ง์คํธ๋ฆฌ/ํ
ํ๋ฆฟ ๋ฌด๊ฒฐ์ฑ ๊ฐ์:
Normal.dot๋ณ์กฐยท๋งคํฌ๋ก ๋ณด์ ์ค์ ๋ณ๊ฒฝ ๊ฐ์ '์๊ธฐ๋ฐฉ์ด ํ์ '์ EDR๋ก ํ์งํ๋ค. - ํจ์นยท์ ์ฑ ์ '๊ธฐ๋ณธ๊ฐ'๊น์ง ๋ณธ๋ค: ๊ธฐ์ ์ ๊ฒฐํจ์ด ์๋๋ผ ์์ ํ์ง ์์ ๊ธฐ๋ณธ ์ค์ ์ด ์ฐธ์ฌ ๊ท๋ชจ๋ฅผ ํค์ ๋ค. ๋ณด์์ ๊ธฐ๋ฅ์ด ์๋๋ผ ๊ธฐ๋ณธ๊ฐ์์ ๊ฒฐ์ ๋๋ค.
- ๋ฒยท์ ๋ ์ ํธ: '์ฅ๋'์ผ๋ก ์์ํ ๋๋ ๊ฐ์ผ์ด ์ฐ๋ฐฉ ํ์ฌ์ฒ๋ฒ๋ก ์ด์ด์ก๋ค. ์ ์ฑ์ฝ๋ ์ ์ยท์ ํฌ๋ ํํ์ ์์ ๊ฐ ์๋๋ผ ๋ฒ์ฃ๋ค.
7. ์ถ์ฒ
- Wikipedia โ Melissa (computer virus): 1999-03-26 alt.sex ๊ฒ์, Outlook ์ฃผ์๋ก ์์ 50๋ช ์๋ ๋ฐ์ก, Normal.dot ๋ณต์ ยท๋งคํฌ๋ก ๋ณด์ ์ ํ, '๋ถ=์ผ' ์กฐ๊ฑด Simpsons ์คํฌ๋๋ธ ๋ฌธ๊ตฌ, CER๊ทธ 250๊ธฐ๊ดยท10๋ง ๋, FBI 300+ ๊ธฐ๊ดยท100๋ง ๊ณ์ ยท$80M, MS 5์๊ฐ ์ค๋จยทํด๋ณ๋ ์ํฅ, Smith ์ฒดํฌ(1999-04-01)ยท์ ๊ณ (2002-05-01, 20๊ฐ์) โ en.wikipedia.org/wiki/Melissa_(computer_virus)
- Symantec(ํ Gen Digital) โ W97M.Melissa.A Technical Details (๊ธฐ์ ๋ช
ยทํ๋ซํผยท๋ ์ง์คํธ๋ฆฌ ๋ง์ปค
kwyjibo๋ฑ ๊ตฌ์กฐ ๋ถ์) โ web.archive.org (Symantec W97M.Melissa.A) - F-Secure โ Virus:W32/Melissa Description (์ ํ ๋ฐฉ์ยท๋งคํฌ๋ก ๋์) โ f-secure.com/v-descs/melissa.shtml
- U.S. Department of Justice โ Creator of Melissa Computer Virus Sentenced to 20 Months in Federal Prison (2002-05-01 ๋ณด๋์๋ฃ) โ justice.gov
- The New York Times โ John Markoff, Digital Fingerprints Leave Clues to Creator of Internet Virus (1999-03-30) โ nytimes.com
โป ๋ณธ๋ฌธ์ PoC ์ฝ๋๋ ๊ตฌ์กฐ ์ดํด ๋ชฉ์ ์ ๊ต์ก์ฉ ๋ชจ์ ์ฝ๋์ด๋ฉฐ, ์ค์ Melissa ๋งคํฌ๋ก ํ์ด๋ก๋ยท์ค์ Outlook ์๋ํยท์ค์ ์ฃผ์๋ก ์์งยท์ค์ ๋ฉ์ผ ๋ฐ์กยท์ค์ IOC๋ ํฌํจํ์ง ์์ต๋๋ค. ๋ชจ๋ ์ค์ต์ ์ธํฐ๋ท๊ณผ ๋ถ๋ฆฌ๋ ๊ฒฉ๋ฆฌ ๋ฉ VM์ ์ ์ ๋ก ํ๋ฉฐ, ์ค์ ์์คํ ยทํ์ธ ์์ฐ์ ๋ํ ์คํ์ ๋ถ๋ฒ์ ๋๋ค.
ํจ๊ป ์ฝ๊ธฐ: ๐ฅ Emotet (2014โ2021) โ ๋ฉ์ผ ์ฒจ๋ถ๊ฐ ๋์ฌ์จ์ด์ 1์ฐจ ์นจํฌ ํ๋ซํผ์ด ๋๊ธฐ๊น์ง ยท ๐ฅ Code Red (2001) โ '์์ฒญ ํ๋'๊ฐ ์๋ฒ๋ฅผ ์ผํจ ๋๋ ๊ฐ์ผ ยท ๐ Log4Shell (2021) โ ๊ณต๊ธ๋ง์ ํ๋ ์ ๋ก๋ฐ์ด ์ฒด์ธ ยท ๐ Morris Worm (1988) โ ์ธํฐ๋ท์ ์ฒ์ ๋ฉ์ถ๊ฒ ํ ์