Título: BAT&VBS:Codigo Dudoso
Publicado por: Leminy en 12 Septiembre 2011, 07:57 am
Bien, pues para empezar quisiera agradecer de antemano a quien pueda ayudarme con mi poblema. -Hace un tiempo hice una aplicación para: 1; Eliminar archivos con extenciónes maliciosas. 2; Desocultar carpetas, ademas, eliminar aquellas que tengan un nombre como: "RECYCLER ó DaTa". 3;Terminar Procesos Locales y en la Misma Instancia "Inyectar Codigo" al archivo que terminara los procesos("kb.bat"). Nota: Todo Esto Lo Hara Sobre Unidades Extraibles, Excepto la Opción "3". Code entero para que sepan como funciona: On Error Resume Next Dim Drive_Map() ReDim Drive_Map(10) Dim Port_Map() ReDim Port_Map(10) Dim Bit_Map() ReDim Bit_Map(512) Set WshFSO = CreateObject("Scripting.Filesystemobject") Set WshShell = CreateObject("Wscript.Shell") User = WshShell.ExpandEnvironmentStrings("%UserName%") Temp = WshShell.ExpandEnvironmentStrings("%Temp%") Unit = Array("D","E","F","G","H","I","J","K","L","M","N") ExtE = Array("bat","BAT","cmd","CMD","com","COM","dll","DLL","exe","EXE","hsh","HSH","js","JS","jse","JSE","lnk","LNK","pif","PIF","scr","SCR") CarE = Array("Data","Restore","Recycler","System") 'Aqui las Probables Carpetas de Malware. ROOTF = WshFSO.GetAbsolutePathName(".\") Set PATH = WshFSO.GetFolder(ROOTF & "\" & "LOGS") CPATH = PATH.ShortPath c = 0 For i=0 To 10 Step 1 If (WshFSO.DriveExists(Unit(i))) Then Drive_Map(c) = Unit(i) c = c + 1 End If Next e = 0 For j=0 To c-1 Step 1 Set LIST = WshFSO.Drives(Drive_Map(j) & ":") If LIST.DriveType = 1 Then Port_Map(e) = Drive_Map(j) e = e + 1 End If Next Do FASM = InputBox("Elija Por Numero La Opción Deseada:"+Chr(10)+"1;Eliminar Virus De Unidades Con Registros."+Chr(10)+"2;Desocultar Carpetas De Unidades."+Chr(10)+"3;Terminar Procesos Locales Por Selección.","KILL BYTES","2",5000,7000) Loop Until IsNumeric(FASM) Select Case (FASM) Case (0): WScript.Quit Case (1): Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine "Session: " & User & " - Files" MFET.Close f = 0 For k=0 To e-1 Step 1 Root = Port_Map(k) & ":\" Set PathA = WshFSO.GetFolder(Root) Set FILES = PathA.Files For Each FILE In FILES Bit_Map(f) = FILE f = f + 1 Next Next For l=0 To f-1 Step 1 Set Cmp_File = WshFSO.GetFile(Bit_Map(l)) If Cmp_File.Attributes<>0 Then Cmp_File.Attributes = 0 End If RFILE = Bit_Map(l) For m=0 To 29 Step 1 If WshFSO.GetExtensionName(RFILE) = ExtE(m) Then WshFSO.DeleteFile RFILE, True If Err.Number<>0 Then Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&Bit_Map(l)&Chr(34) & " - Status:NoDeleted!" MFET.Close Else Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&Bit_Map(l)&Chr(34) & " - Status:Deleted!" MFET.Close End If End If Next Next Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine "End Session Of: " & User & " - Files" MFET.WriteBlankLines(1) MFET.Close Case (2): Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine "Session: " & User & " - Folders" MFET.Close For m=0 To e-1 Step 1 STEAM = Port_Map(m) & ":\" Set FSTEAM = WshFSO.GetFolder(STEAM) Set RSTEAM = FSTEAM.SubFolders For u=0 To 3 Step 1 CARPF = STEAM & CarE(u) Set CARPA = WshFSO.GetFolder(CARPF) CARPA.Attributes = 16 If Err.Number=0 Then If (WshFSO.FolderExists(CARPF)) Then Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&CARPF&Chr(34) & " - Status:Deleted!" MFET.Close WshFSO.DeleteFolder CARPF, True End If Else Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&CARPF&Chr(34) & " - Status:NoDeleted!" MFET.Close End If Next For Each FALL In RSTEAM If FALL.Attributes<>16 Then FALL.Attributes = 16 If Err.Number<>0 Then Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&FALL&Chr(34) & " - Status:NoRestablished!" MFET.Close Else Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&FALL&Chr(34) & " - Status:Restablished!" MFET.Close End If End If Next Next Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine "End Session Of: " & User & " - Folders" MFET.WriteBlankLines(1) MFET.Close Case (3): Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine "Session: " & User & " - TaskKiller 2.0" MFET.Close Do MASK = MsgBox("¿Desea Terminar Más Procesos?",vbYesNo+vbQuestion,"¿Opción?") If MASK = vbYes Then TASK = InputBox("Escriba El Nombre Del Proceso Que Desea Terminar:","TaskKiller 2.0","EXPLORER.EXE",5000,7000) 'Aqui el InputBox. VAR = Len(TASK) If VAR<>0 Then Set FET = WshFSO.OpenTextFile(Temp & "\" & "K-B\" & "KB.BAT",2,True) FET.WriteLine "@echo off" FET.WriteLine "taskkill /f /im " & TASK '<---- En El InputBox se Prodra Agregar Codigo Batch Con: "& comando" - Inyectar Codigo. FET.WriteLine "If %ErrorLevel%==0 echo NOERR>%Temp%\K-B\0" FET.WriteLine "If %ErrorLevel%==1 echo ERR1>%Temp%\K-B\1" FET.WriteLine "If %ErrorLevel%==128 echo ERR128>%Temp%\K-B\128" FET.WriteLine "@exit" FET.Close WshShell.Run Temp & "\" & "K-B\" & "KB.BAT", 0, True If (WshFSO.FileExists(Temp & "\" & "K-B\" & "0")) Then WshShell.PopUp "Se Pudo Terminar El Proceso:¡Terminado!",5,"¡Terminado!",vbOKOnly+vbInformation WshFSO.DeleteFile Temp & "\" & "K-B\" & "0", True Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&TASK&Chr(34) & ": No Error" MFET.Close ElseIf (WshFSO.FileExists(Temp & "\" & "K-B\" & "1")) Then WshShell.PopUp "No Se Pudo Terminar El Proceso:¡No Terminado!",5,"¡No Terminado!",vbOKOnly+vbCritical WshFSO.DeleteFile Temp & "\" & "K-B\" & "1", True Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&TASK&Chr(34) & ": Error 1" MFET.Close ElseIf (WshFSO.FileExists(Temp & "\" & "K-B\" & "128")) Then WshShell.PopUp "No Se Pudo Encontrar El Proceso:¡No Encontrado!",6,"¡No Encontrado!",vbOKOnly+vbCritical WshFSO.DeleteFile Temp & "\" & "K-B\" & "128", True Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&TASK&Chr(34) & ": Error 128" MFET.Close Else WshShell.PopUp "Ocurrio Un Error Desconocido:¡Desconocido!",5,"¡Desconocido!",vbOKOnly+vbCritical End If WshFSO.DeleteFile Temp & "\" & "K-B\" & "KB.BAT", True End If Else Exit Do End If Loop Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine "End Session Of: " & User & " - TaskKiller 2.0" MFET.WriteBlankLines(1) MFET.Close Case Else: WshShell.PopUp "Comando Desconocido:¡Error!",5,"¡Error!",vbOKOnly+vbCritical End Select On Error GoTo 0
Mi duda radica en esta parte del code: For m=0 To e-1 Step 1 STEAM = Port_Map(m) & ":\" 'Aqui Empieza a Listar. Set FSTEAM = WshFSO.GetFolder(STEAM) Set RSTEAM = FSTEAM.SubFolders 'Aqui Acaba de Listar. For u=0 To 3 Step 1 CARPF = STEAM & CarE(u) Set CARPA = WshFSO.GetFolder(CARPF) 'Aqui la Probable Ruta de La Carpeta con Malware. CARPA.Attributes = 16 'Aqui Intenta Quitar Los Atributos a la Carpeta del Malware. If Err.Number=0 Then 'Aqui, Si Falla al Cambiar los Atributos Tal Vez no Existe la Carpeta. If (WshFSO.FolderExists(CARPF)) Then 'Aqui Comprueba si Verdaderamente Existe la Carpeta. Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&CARPF&Chr(34) & " - Status:Deleted!" MFET.Close WshFSO.DeleteFolder CARPF, True 'Aqui Elimina la Carpeta(Si Existio) End If Else Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&CARPF&Chr(34) & " - Status:NoDeleted!" MFET.Close End If Next For Each FALL In RSTEAM 'Aqui la Parte Dudosa - Accediendo a Cada Carpeta Listada. If FALL.Attributes<>16 Then 'Aqui Es la Parte Para Comprobar los Atributos de las Carpetas Antes Listadas(No Malware se Supone). FALL.Attributes = 16 'Cambio de Atributos Principal. ¿Fallara? <---- Aqui la Linea de la Duda. If Err.Number<>0 Then Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&FALL&Chr(34) & " - Status:NoRestablished!" MFET.Close Else Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&FALL&Chr(34) & " - Status:Restablished!" MFET.Close End If End If Next Next 'Aqui Termina la Parte Dudosa.
Aqui lo que hago es Listar los Subdirectorios de las Unidades Removibles uno por uno, pero mi pregunta principal es: ¿No Afecta Listar las Subcarpetas Primero y Luego Eliminar las que Estan en el Array "CarE"?. Es decir, en la comprobación de Atributos que hago despues ¿No me saltara algún error por que falten las carpetas antes mencionadas?, si es que existen en la USB claro. No se si ¿me di a entender bien?... :( Modificado Para Mejor Entendimiento y Corregir Unas Faltas de Ortografía. ;D
Título: Re: BAT&VBS:Codigo Dudoso
Publicado por: S3kh en 12 Septiembre 2011, 14:26 pm
Mi recomendación es que identés el código, así sería mas fácil la corrección. Por otro lado, podrías volver a explicar un poco mas claro? jeje. Lo que logré entender es que vos querés saber si, una vez eliminados X directorios, si intentás cambiar los atributos te va a dar error o no, eso entendí yo. Y la respuesta a ESO sería que me imagino que si, te daría error supongo, estilo "No se encuentra la ruta especificada". Disculpá si no entendí bien lo que preguntabas :P
PD: Si podrías documentar mas el código estaría bien, porque con un poquito de documentación y prolijidad se puede entender mucho mejor el código a pesar de que uno no conozca VBs, se puede entender igual; no te digo que todas las líneas, pero aunque sea en líneas generales.
Título: Re: BAT&VBS:Codigo Dudoso
Publicado por: Leminy en 12 Septiembre 2011, 18:36 pm
Bien Compaero S3kh, lo que piensas del code es correcto, primero intentar eliminar algunas carpetas dependiendo el nombre y luego intentar cambiar los atributos del Listado del Carpetas que hice Antes,.... Pero lo que en si quiero saber es, si me tiraria algun error en el cambio principal de atributos, justo aqui: For Each FALL In RSTEAM 'Aqui la Parte Dudosa - Accediendo a Cada Carpeta Listada. If FALL.Attributes<>16 Then 'Aqui Es la Parte Para Comprobar los Atributos de las Carpetas Antes Listadas(No Malware Se Supone). FALL.Attributes = 16 'Cambio de Atributos Principal. ¿Fallara? <----'Aqui la Linea de la Duda. If Err.Number<>0 Then Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&FALL&Chr(34) & " - Status:NoRestablished!" MFET.Close Else Set MFET = WshFSO.OpenTextFile(CPATH & "\" & "K-B.LOG",8,True) MFET.WriteLine Chr(34)&FALL&Chr(34) & " - Status:Restablished!" MFET.Close End If End If Next Next 'Aqui Termina la Parte Dudosa.
Y si, voy a Intentar "Documentar" cada parte del code para un mejor entendimiento, ya que: "La información es libre" ¿no?... y por cierto, gracias por responder tan rapido.;D
Título: Re: BAT&VBS:Codigo Dudoso
Publicado por: S3kh en 12 Septiembre 2011, 19:06 pm
Por lo que puedo entender, FALL sería cada subdirectorio listado, no? Y si intentás cambiar los atributos de dichos subdirectorios, no tiraría ningún error. (Siempre y cuando los directorios existan). De nuevo, disculpá si otra vez volví a entender mal :P
Título: Re: BAT&VBS:Codigo Dudoso
Publicado por: Leminy en 12 Septiembre 2011, 19:45 pm
De nuevo S3kh estas en lo correcto, pero aun asi queda la duda, voy a intentar explicarlo por Bloques: -Lista Cada Subdirectorio Dentro de la Unidad Extraible. ..................................... ..................................... -Intento Cambiar los Atributos De las Posibles Carpetas de Malware. Nota: Si Hubo Error Al Cambiar Los Atributos Significa que Tal Vez la Carpeta No Existe Y Se Salta la Vefificación Final. ..................................... -Si No Hubo Error Cambia Los Atributos Significa que, Si Existe la Carpeta Va a La Verificación Final(Lineas de Abajo.) ..................................... -Verifico Si Enrealidad Existe Alguna De Esas Carpetas de Malware. ..................................... ..................................... -Si Existe La Elimina y Escribe en Un Archivo LOG. Si No Existe Solo Sale de La Comprobación. ..................................... ..................................... -Y Aca Restablece Los Atributos de las Demas Carpetas (No Malware se Supone). Como Ya Se Han Listado Las Subcarpetas Y... Si Existieron Posibles Carpetas de Malware las Elimina, Despues, ¿No Afectara En El: "For Each FALL In RSTEAM" si Faltan las Carpetas Que Pudo Eliminar el Programa? -Perdon Si No Entiendo Bien Los Metodos Que Se Usan en La Propiedad, Ejemplo: STEAM = "E:\" Set FSTEAM = WshFSO.GetFolder(STEAM) Set RSTEAM = FSTEAM.SubFolders <--- Esta Es la Propiedad.
Título: Re: BAT&VBS:Codigo Dudoso
Publicado por: S3kh en 12 Septiembre 2011, 21:17 pm
Si, lo afectará, porque fueron eliminadas. jeje. Por otro lado, lo de los métodos no los recuerdo, ya hace mucho (mas de 3 años) que no hago nada en VBS. Buscá sobre métodos y atributos. Si mal no recuerdo, los objetos forman parte del COM (Common Object Model) de Windows, y me figuro que debe haber algún tipo de documentación respecto a eso.
Acá tenés algo acerca de el método SubFolder: http://www.psicofxp.com/forums/programacion.313/633216-vbs-listar-ficheros-carpetas-y-subcarpetas.html
http://www.vbforums.com/showthread.php?t=244880 (Este es VB pero los objetos y métodos que se usan son los mismos)
Te ayudaría mas respecto a eso, pero estoy oxidado y no recuerdo mucho.
Título: Re: BAT&VBS:Codigo Dudoso
Publicado por: Leminy en 13 Septiembre 2011, 07:16 am
Bueno Pues... Gracias de Nuevo S3kh, Ahora Por La Información... Con Los Links Que Me Proporcionaste y Googleando Un Rato... No Pude Hayar Mucho Sobre Ese Metodo y Sus Propiedades.... Pero Aun Asi, Se Agradece la Ayuda... ::)
Título: Re: BAT&VBS:Codigo Dudoso
Publicado por: S3kh en 14 Septiembre 2011, 00:44 am
jeje, no hay drama. No encontré mucho mas que eso, supongo que algo se puede hacer jejeje. Probá el script, y de última mandame mensaje privado, si necesitás probarlo o algo avisá (Y) Abrazo, suerte
Título: Re: BAT&VBS:Codigo Dudoso
Publicado por: Leminy en 14 Septiembre 2011, 05:46 am
Esta Bien, En Estos Dias Hare Prubas con BreakPoints y Demas para Saber si Me Afectaria o No, Lo que He Venido Comentando desde Hace unos Dias... Gracias por Todo S3kh y Cuidate También...;D
Moderador.... ¿Ya Puedes Dar El Tema Como Cerrado?....
Por Cierto El Fin De Semana Hare la Documentación del Code, A Quien Le Interese... ::)
Título: Re: BAT&VBS:Codigo Dudoso
Publicado por: S3kh en 14 Septiembre 2011, 23:58 pm
Haceme saber cuándo la tengas jejej De nada Leminy, un gusto n.n!
|