' ------------------------------------------------------------------------------- rem Sircam's sucks : a Public Domain Sircam Virus Remove utility rem: no copyrights rem: Official release 1.3.3 for W95 - W98 - W Millenium rem: innovazioni rispetto a 1.3.2 rem: verifica multinfezione da rete e necessità sostituzione rundll32.exe rem Disclaimers : l'uso è a Tuo riscio e pericolo. Using it at your complete risk! rem : for any matter write to: [marcolfa] : nospammers@iol.it ' Perchè l'ho fatto? ' Perchè altri tool arrivavano in ritardo ed avevamo utenti bloccati! ' Chi sei? ' Sono uno che crede ancora in certi valori di amicizia e collaborazione. ' Per la verità non sempre ripagati ... ma questo è poco importante. ' Di dove sei ? ' Italia - Reggio Emilia - Patria del Comunismo tollerante e liberale europeo ' fondato sul lavoro e sul sacrificio nostro e dei nostri progenitori. ' Quali risultati hai conseguito ? ' Tanti "grazie" e qualche offesa da parte di gente ottusa che incapace di ' vedere al di la' del proprio naso ha classificato questo lavoro come ' virus senza sapere leggere nemmeno una riga di vbscript. Ma si sa' che ' la mamma degli stupidi è sempre incinta e la cosa non deve meravigliare. ' Cosa ci guadagni? ' Nulla , per adesso ci ho solo rimesso del tempo. Non sono nemmeno diventato ' famoso ROTFL!! Per diventarlo i virus devi farli e non curarli. ' Perchè mi dovrei fidare? ' Perchè il virus te lo sei beccato tu e non io. Se non Ti fidi arrangiati. ' Esistono altri tools ufficiali, ma questo sembra uno dei migliori, più semplici ' e senza tanti fronzoli. ' Facendo una scansione trovo ancora il virus in un file della Cartella Restore? ' Il problema è che hai WinMe. Tale cartella è resa inacessibile dal sistema ' operativo. per toglierlo guarda la procedura descritta nel mio sito (che vale ' per tutti i virus nella cartella restore) : http://users.iol.it/marrob/ ' Perche' il programma controlla anche la versione di Outlook Express ? ' Perchè versioni precedenti a quella utilizzano impostazioni non internazionali ' per le risposte con l'utilizzo di "R: " anzichè Re: ". Questo comporta notevoli ' disguidi nell'utilizzo corretto di usenet provocando la frammentazione dei thread ' In caso di segnalazione l'aggiornamento è disponibile attualmente all'indirizzo: ' http://www.vene.ws/mail/patch.asp con relative spiegazioni. ' ' Dedicato a: ' Al ricordo del mio caro nonno fu' Prospero , a tutti gli amici del newsgroup ' it.comp.sicurezza.virus che hanno contribuito. ' ' L'esito della procedura di disinfezione lo troverai nel file c:\windows\nuccia.vir ' ' Buona fortuna! ' Good luck! ' Suerte ! '--------------------------------------------------------------------------------- main Sub main() rem a marcolfa non passa più ma a Sircam ancora meno On Error Resume Next dim ind Set marcolfa = CreateObject("Scripting.FileSystemObject") Ks = "HKEY_LOCAL_MACHINE\Software\" Ku = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\" Kr = "HKEY_CLASSES_ROOT\exefile\shell\open\command\" Os = "Microsoft\Outlook Express\Version Info\Current" oe = Rg(KS & Os) If (oe < "5,00,2919,6600") Then testo = "Ricordati poi di aggiornare Oulook con la patch!" & Chr (13) testo = testo & "I suggest you to upgrade your Microsoft Outlook" MsgBox (testo) End If rem andiamo a vedere dove sono i vari folder winfolder = marcolfa.GetSpecialFolder(0) sysfolder = marcolfa.GetSpecialFolder(1) tmpfolder = marcolfa.GetSpecialFolder(2) marcolfa.DeleteFile (winfolder & "\wininit.ini") rem ind indica se si è operato già qualche intervento set ind = 0 rem rst indica se è necessario riavviare il computer set rst = 0 rem ... mani all'autoexec.bat e rimuovimamo la chiamata al Sircam call editfile ("c:\", "autoexec.bat", "@win \recycled\SirC32.exe", ind) rem mettiamo nel wininit.ini i files da cancellare rem attenzione al fatto che se le chiamate autoexec sono > 1 (ind > 2) rem allora la rundll32 deve essere sostituita dal CD di Win If marcolfa.FileExists(winfolder & "\run32.exe") Then If ind > 2 Then ' in questo caso devo sostituire la rundll32.exe con l'originale da CD call init (winfolder & "\run32.exe", ind, rst) call init (winfolder & "\rundll32.exe", ind, rst) testo = "Non è possibile riparare la libreria " & winfolder & "\rundll32.exe" & Chr (13) testo = testo & "poichè il Pc è stato infettato più di una volta" & Chr (13) testo = testo & "Devi ripristinarla dal CD di Windows (la trovi dentro ai files *.cab) " & Chr (13) testo = testo & "Is not possible repair " & winfolder & "\rundll32.exe" & Chr (13) testo = testo & "because the fact Sircam was installed more than one time" & Chr (13) testo = testo & "You have to download it from original Windows' CD (inside *.cab files)" MsgBox (testo) else ' in questo caso invece posso sostituire la rundll32 corrotta con la run32.exe call init (winfolder & "\rundll32.exe", ind, rst) st = winfolder & "\rundll32.exe" & "=" & winfolder & "\run32.exe" Set wininit = marcolfa.OpenTextFile(winfolder & "\wininit.ini", 8, True) If rst = 0 Then wininit.Write "[rename]" End If wininit.Write VbCrLf & st wininit.close ind = ind + 1 rst = rst + 1 call report (winfolder,"\run32dll.exe","substituited", winfolder & "\run32.exe", ind) End If End If call init (winfolder & "\Scmx32.exe", ind, rst) call init ("c:\recycled\sirc32.exe", ind, rst) call init (sysfolder & "\Scam32.exe", ind, rst) call init ("c:\recycled\sircam.sys", ind, rst) call init (tmpfolder & "\sirc32.exe", ind, rst) call init (winfolder & "\sirc.reg", ind, rst) rem andiamo a vedere dove è eventualmente imboscato il file rem Microsoft Internet Office.exe chiave = Ku & "Explorer\Shell Folders\Startup" valore = Rg(chiave) file = valore & "\Microsoft Internet Office.exe" ' poi facciamo la spia alla routine call che se lo trova lo cancella call init (file, ind, rst) rem eliminiamo la chiamata dalla Runservices chiave = Ks & "Microsoft\Windows\CurrentVersion\Runservices\Driver32" valore = sysfolder &"\SCam32.exe" lettura = Rg(chiave) If (valore = lettura) Then Rd chiave ind = ind + 1 call report (chiave, "", "deleted", "", ind) End If rem continuiamo la pulizia del registro chiave = Ks & "SirCam\" chiave1 = Ks & "SirCam\FC0" lettura = Rg(chiave1) If (lettura <> "") Then testo = "Il virus è stato eseguito "& lettura & " volte!" & Chr (13) testo = testo & " Virus has already run "& lettura & " times!" MsgBox (testo) Rd chiave ind = ind + 1 call report (chiave, "", "deleted", "", ind) End If rem continuiamo la pulizia del registro facendo in modo che rem Sircam non si attivi al lancio di un file exe chiave = "HKEY_CLASSES_ROOT\exefile\shell\open\command\" impostazione = """%1"" %*" lettura = Rg(chiave) If (lettura <> impostazione) Then Rw chiave , impostazione ind = ind + 1 call report(chiave, lettura , "replaced", impostazione, ind) End If rem commiati e disposizioni finali If ind <> 0 Then testo = "Nel file " & winfolder & "\nuccia.vir troverai il log delle operazioni eseguite" & Chr (13) testo = testo & "Inside the file " & winfolder & "\nuccia.vir you can find the disinfection report " MsgBox (testo) If rst > 0 Then testo = "Ho fatto del mio meglio . Riavvia e lancia l'Antivirus" & Chr (13) testo = testo & "I did my best! Restart and run a complete antivirus scan" MsgBox (testo) testo = "Una volta riavviato se possibile cancella il contenuto del cestino" & Chr (13) testo = testo & "e i file temporanei nella cartella " & tmpfolder & Chr (13) testo = testo & "After restarting delete trash content " & Chr (13) testo = testo & "and all files you can find in " & tmpfolder & " folder" MsgBox (testo) End If testo = "Auguri ... e sostieni l'UNICEF" & Chr (13) testo = testo & "Luck ... and support UNICEF" MsgBox (testo) else testo = "Non ho rilevato elementi di Sircam" & Chr (13) testo = testo & "No Sircam elements detected" MsgBox (testo) marcolfa.DeleteFile (winfolder & "\nuccia.vir") End If End Sub rem ----------------------zona librerie -------------------------- Sub init (file, ind, rst) On Error Resume Next set koala = CreateObject("Scripting.FileSystemObject") winfolder = koala.GetSpecialFolder(0) If koala.FileExists(file) Then filesh = koala.GetFile(file).ShortPath set wininit = koala.OpenTextFile(winfolder & "\wininit.ini", 8, True) If rst = 0 Then wininit.Write "[rename]" End If wininit.Write VbCrLf & "NUL=" & filesh ind = ind + 1 rst = rst + 1 call report (file, "", "deleted" , "", ind) wininit.close End If End Sub Sub editfile (folder, file, stri, ind) On Error Resume Next Set marcolfa = CreateObject("Scripting.FileSystemObject") winfolder = marcolfa.GetSpecialFolder(0) alarm = 0 If marcolfa.FileExists(folder & file) Then Set vecchio = marcolfa.GetFile (folder & file) nuovonome = marcolfa.GetBaseName(folder & file) & ".vir" vecchio.Copy (folder & nuovonome) marcolfa.DeleteFile (folder & file) Set lella = marcolfa.OpenTextFile(folder & nuovonome , 1, False) Set vipera = marcolfa.OpenTextFile(folder & file, 2, True) Do While lella.AtEndOfStream <> True lettura = lella.ReadLine If lettura <> stri Then vipera.Writeline (lettura) else If ind = 0 Then ind = ind +1 call report (folder & file, "" , " saved as: " , folder & nuovonome, ind) End If ind = ind +1 call report (folder & file, " instruction : " & stri , " deleted" , "", ind) End If Loop lella.close vipera.close If ind = 0 Then marcolfa.DeleteFile (folder & nuovonome) End If End Sub Sub report (posizione, voce, azione, sostituto, ind) On Error Resume Next set koala = CreateObject("Scripting.FileSystemObject") winfolder = koala.GetSpecialFolder(0) if ind = 1 then koala.DeleteFile (winfolder & "\nuccia.vir") set nuccia = koala.OpenTextFile(winfolder & "\nuccia.vir", 8, True) If ind = 1 Then nuccia.Write "[My name is Marcolfa. I love burper but I hate Sircam]" nuccia.Write VbCrLf & "Your system is infected : This is what i did:" nuccia.Write VbCrLf & VbCrLf End If If sostituto <> "" Then add = " by " Else add ="" End If nuccia.Write VbCrLf & "[action: " & ind & "]" nuccia.Write VbCrLf & posizione & voce & ": was " & azione & add & sostituto nuccia.Write VbCrLf End Sub Sub Rw(k, v) rem serve a scrivere un valore nel file di registro Dim R On Error Resume Next Set R = CreateObject("WScript.Shell") R.RegWrite k, v End Sub Function Rg(v) rem serve a leggere un valore nel file di registro Dim R On Error Resume Next Set R = CreateObject("WScript.Shell") Rg = R.RegRead(v) End Function Sub Rd(v) rem cancella dal registro Dim R On Error Resume Next Set R = CreateObject("WScript.Shell") R.RegDelete(v) End Sub