Virus del pendrive...
#1
Escrito 18 enero 2009 - 09:41
#2
Escrito 18 enero 2009 - 10:28
Yo lo que te recomiendo que primero busques en la lista de procesos cualquiera sospechoso, y lo mates. Para eso te recomiendo que utilices Process Explorer de Sysinternals, ya que para localizar a los intrusos no llega con el nombre sino que también es útil saber en que directorio están o como fueron iniciados.
Una vez que tenemos los procesos detenidos, lo primero es estar seguros de que no vamos a ejecutar el virus de nuevo por descuido, así que nada de hacer doble click sobre el icono de un disco o ejecutar nada hasta usar el archivo que dejo mas abajo. Luego, yo utilizaría autoruns (también de Sysinternals) para ver que procesos se inician en el arranque y eliminaría cualquiera sospecho. Si no estas seguro de si un ejecutable es un virus puedes usar Virustotal para comprobarlo. Por ultimo también eliminaría los ficheros autorun.inf del raíz de todos los discos, pero para eso toma la precaución de no hacer doble click sobre el icono del disco, sino usar la opción explorar para no ejecutar el virus.
El archivo que te dejo aquí restaura las asociaciones de archivo, para los .exe
UnHookExec.inf
[Version] Signature="$Chicago$" Provider=Symantec [DefaultInstall] AddReg=UnhookRegKey [UnhookRegKey] HKLM, Software\CLASSES\batfile\shell\open\command,,,"""%1"" %*" HKLM, Software\CLASSES\comfile\shell\open\command,,,"""%1"" %*" HKLM, Software\CLASSES\exefile\shell\open\command,,,"""%1"" %*" HKLM, Software\CLASSES\piffile\shell\open\command,,,"""%1"" %*" HKLM, Software\CLASSES\regfile\shell\open\command,,,"regedit.exe "%1"" HKLM, Software\CLASSES\scrfile\shell\open\command,,,"""%1"" %*" HKCU, Software\Microsoft\Windows\CurrentVersion\Policies\System,DisableRegistryTools,0x00000020,0
Por ultimo no esta mal pasar algún antivirus gratuito.
PD: No puedo subir archivos al foro :^)
#3
Escrito 18 enero 2009 - 10:35
#4
Escrito 18 enero 2009 - 11:24
Te recomiendo un programita muy bueno, es un firewall para dispositivos USB
http://net-studio.or...sb_firewall.php
Saludos
#5
Escrito 22 enero 2009 - 09:22
EL firewall que me dices lo utilizo, el detecta el virus pero tampoco lo elimina del todo, tengo que apoyarme en el unlocker para que lo ayude a eliminarlo del pendrive, del pc no lo puede quitar.
#6
Escrito 22 enero 2009 - 10:09
PD: No puedo subir archivos al foro
Que tipo de archivo es amigo seoane, tal vez no está habilitada la extensión que quieres adjuntar.
Salud OS
#7
Escrito 22 enero 2009 - 02:18
Que tipo de archivo es amigo seoane, tal vez no está habilitada la extensión que quieres adjuntar.
Era el .inf que describo mas arriba.
#8
Escrito 22 enero 2009 - 05:16
Salud OS
#9
Escrito 24 enero 2009 - 06:45
En mi "política" en contra de los AVs, he utilizado ampliamente los congeladores en lugar de los citados consumidores de recursos; el resultado de ello fueron "cultivos" de varias docenas de virus (los cuales utilizan el medio de infección tratado en este hilo). Entre los más "efectivos" puedo citar al Virut.J, el Sality/AG y un par de Rootkits.
Hasta hace pocos meses atrás hubiese intervenido de la misma forma que seoane, pero me temo que ahora pienso un poco diferente luego de haber sido infectado por el Virut.J el cual se "replico" en mas de 1000 de los ejecutables de mis unidades locales. Puesto que en mi PC no tengo conexión a Internet este virus no fue más que una molestia, pero me he percatado que los métodos ya señalados no siempre son suficientes.
“Cuando los dinosaurios todavía andaban” era muy común ver a los virus adhiriéndose a otros ejecutables, esto cambio a causa de las características del SO y se popularizaron los troyanos. Ahora veo nuevamente una breve propagación de virus “adheridos” como el comentado Virut.J que con un código binario de ~8 Kb. Realiza Hook a varias APIs y mediante una conexión remota recibe ordenes y nuevas descargas. Algo que me pareció de “interés” en éste virus, son 8 líneas (en assembler) encargadas de encriptar el cuerpo del virus usando XOR y una semilla variable, los cuales hacen que el virus sea polimorfo!
No pude sentir la presencia del virus en mi PC hasta que note que el tamaño de uno de mis ejecutables que debía pesar poco era notablemente más grande de lo esperado; de no haberlo notado, hasta ahora el virus seguiría replicándose en mi equipo sin que lo note (pues no es creado ningún proceso o archivo adicional). Ahora recuerdo a un compañero con un problema de “0 virus” y exagerada actividad de red (obviamente víctima de una de estas creaciones). Ya con un Messenger.exe, Explorer.exe o wuauctl.exe (Servicio de actualizaciones automáticas) infectado, no hay forma de apuntar con el Firewall u otro medio al causante de las nuevas averías.
Luego de notar su presencia y de haber “calculado” su tamaño (8 Kb.) solo tuve que “extraerlo” de dos archivos distintos y realizar una comparación para notar el polimorfismo;
[img width=640 height=356]http://chackall.delphiaccess.com/img/VirutJ.cmp.png[/img]
Virut.J agranda la última sección del ejecutable, y se inserta allí con otra “apariencia” para no ser notado a simple vista, luego modifica el punto de entrada hacia si mismo para ser corrido antes que la aplicación original.
Habiendo comprendido la dinámica de éste virus los siguientes dos pasos fueron; crear un depurador para éstos virus que les gusta adherirse a otros ejecutables, y crear una vacuna para el Virut.J, la cual la adjunto para ejemplificar;
uses Windows, SysUtils; {$warnings off} {$apptype console} type PSections = ^TSections; TSections = array [0..15] of TImageSectionHeader; var FileName: array [1..MAX_PATH] of Char; Index, hFile, hMap, Offset: Cardinal; MZ: PImageDosHeader; PE: PImageNtHeaders; Sections: PSections; Section: PImageSectionHeader; lpValue: PCardinal; procedure ScanFile(lpFileName: PChar); begin Index := 0; while lpFileName[Index + 4] <> #0 do Inc(Index); if (PCardinal(@lpFileName[Index])^ or $20202000) <> $6578652E then Exit; hFile := _lopen(lpFileName, OF_READWRITE); if hFile = INVALID_HANDLE_VALUE then begin GetTempFileName('d:\', 'vJ.', 0, @FileName); if MoveFileEx(lpFileName, @FileName, MOVEFILE_REPLACE_EXISTING) and CopyFile(@FileName, lpFileName, True) and MoveFileEx(@FileName, nil, MOVEFILE_DELAY_UNTIL_REBOOT) then hFile := _lopen(lpFileName, OF_READWRITE); end; GetCurrentDirectory(SizeOf(FileName), @FileName); if hFile <> INVALID_HANDLE_VALUE then begin hMap := CreateFileMapping(hFile, nil, PAGE_READWRITE, 0, 0, nil); if hMap <> 0 then begin MZ := MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0); // map entire file if Assigned(MZ) then begin if PCardinal(@MZ.e_res[2])^ = $20202020 then begin PE := Ptr(Cardinal(MZ) + MZ._lfanew); // win32 header Sections := Ptr(Cardinal(PE) + 248{SizeOf(TImageNtHeaders) - SizeOf(TImageOptionalHeader) + PE.FileHeader.SizeOfOptionalHeader}); Section := @Sections[PE.FileHeader.NumberOfSections - 1]; // get the last section Offset := Cardinal(MZ) + (PE.OptionalHeader.AddressOfEntryPoint - (Section.VirtualAddress - Section.PointerToRawData)); if (PE.OptionalHeader.AddressOfEntryPoint > Section.VirtualAddress) and (PCardinal(Offset)^ = $1EE8F5) then // second ID, some AVs don't clean the first ID begin WriteLn(lpFileName); lpValue := Ptr(Offset + $6B); // calculate the offset of Virut.J jump instruction PE.OptionalHeader.AddressOfEntryPoint := PE.OptionalHeader.AddressOfEntryPoint - lpValue^ + 6; // save the original entry point Section.Characteristics := Section.Characteristics and not $F0000060 xor $50000040; // change then characteristics of section FillChar(Ptr(Cardinal(MZ) + (GetFileSize(hFile, nil) - 8192))^, 8192, 0); // kill Virut !!! // Dec(PE.OptionalHeader.SizeOfImage, 8192); { TODO : recalculate image size! } // Dec(Section.SizeOfRawData, 8192); { TODO : recalculate section size & "PhysicalAddress" } end; // PCardinal(@MZ.e_res[2])^ := 0; // last flag; restore it or lie to Virut? end; UnmapViewOfFile(MZ); end; CloseHandle(hMap); end; CloseHandle(hFile); end; end; var FindData: TWIN32FindData; procedure ScanFolder(const lpPathName: PChar); var hFindFile: Cardinal; begin hFindFile := FindFirstFile(PChar(lpPathName + '\*.*'), FindData); if hFindFile <> INVALID_HANDLE_VALUE then begin repeat with FindData do if (dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then ScanFile(PChar(lpPathName + '\' + cFileName)) else if (PWord(@cFileName)^ <> $2E) and ((PCardinal(@cFileName)^ shl 8) <> $2E2E00) then ScanFolder(PChar(lpPathName + '\' + cFileName)); until not FindNextFile(hFindFile, FindData); Windows.FindClose(hFindFile); end; end; begin ScanFolder('d:'); WriteLn('DONE!'); ReadLn; end.
Con respecto al archivo autorun.inf, lo mejor es crear en las unidades USB extraíbles una carpeta “autorun.inf” para que los virus no puedan crear el archivo causante de la ejecución involuntaria, si la unidad tiene formato NTFS se puede restringir todo acceso a dicha carpeta para evitar su borrado. Siendo programadores lo siguiente que aconsejo es crear un utilitario que al detectar la inserción de un nuevo “Flash” borre dicho archivo y ya estando en dicho afán se puede inspeccionar por CRC (u otro) la integridad de los ejecutables portados.
Salud!
#10
Escrito 25 enero 2009 - 06:18
Aunque hoy en día, debido a lo fácil que es infectar a los millones de usuarios que usan windows sin antivirus actualizados y que no toman ninguna otra precaución , los creadores de virus/troyanos se han vuelto perezosos, ya no intentan infectar ejecutables, una técnica que requiere cierta pericia, como mucho utilizan algún herramienta para ocultarse (un cifrado o rootkit estándar). Así que si tienes suerte y coges la infección a tiempo aun se puede intentar
"limpiar" el equipo.
Por cierto, estaba buscando la forma de hacer una aplicación que impida la ejecución del autorun. Se como detectar la inserción de una memoria USB, pero de poco me sirve detectar la inserción si no puedo evitar que se ejecute el autrun. ¿Sabes como interceptarlo? A mi solo se me ocurre desactivar por completo el autorun y cuando se inserte un USB buscar el autorun.inf y una vez que el usuario confirme que quiere ejecutar el autorun ejecutarlo nosotros mismos
#11
Escrito 25 enero 2009 - 05:55
Consegui deshabilitar el autorun editando el explorer en memoria, buscando la palabra "autorun.inf" (en UNICODE) relativa a shell32.dll, aunque tambien he encontrado dicha cadena en newdev.dll la primera es la inicial causante de los destrosos involuntarios.
Acabo de encontrar algo a ver si sirve...
Salud!
#12
Escrito 25 enero 2009 - 06:33
Para desactivar la ejecucion del autorun en xp, Inicio > Ejecutar > gpedit.msc y la consola de directivas de grupo aparece.
Abrir "Plantillas Administrativas > Sistema > Desactivar reproduccion automatica"
Habilitar y seleccionar Todas las unidades (si, habilitarla)
Esta directiva esta tanto en la configuracion del equipo como en la del usuario. Habilitarla en ambos por seguridad.
En vista no funciona del todo bien. En windows xp home no hay gpedit.msc
chao!
#13
Escrito 26 enero 2009 - 06:45
#14
Escrito 10 febrero 2009 - 07:15
Interesante tema. Yo también ha tenido problemas con los virus de pendrive y opté por colocar en todos mis pendrives una carpeta autorun.inf que me ha resultado un sistema muy eficaz para evitar que aunque mi pendrive estuviese infectado propagase la infección.
También elimino el autorun de los PCs modificando el registro con el siguiente archivo que denomino NoUSBAutorun.reg:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer] "NoDriveTypeAutoRun"=dword:000000ff
Saludos.
PD.
No he podido acceder al link
Habiendo comprendido la dinámica de éste virus los siguientes dos pasos fueron; crear un depurador para éstos virus que les gusta adherirse a otros ejecutables, y crear una vacuna para el Virut.J, la cual la adjunto para ejemplificar;
#16
Escrito 11 febrero 2009 - 02:08
...También elimino el autorun de los PCs modificando el registro con el siguiente archivo que denomino NoUSBAutorun.reg:
delphi
REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer] "NoDriveTypeAutoRun"=dword:000000ff
Siendo técnicamente lo mismo comentado por Jade creo que (a diferencia de lo que alguna vez me dijeron) es un metodo plenamente valedero
...PD.
No he podido acceder al link
Habiendo comprendido la dinámica de éste virus los siguientes dos pasos fueron; crear un depurador para...
Pues es un subforo al que se accede con cierto nivel de participacion, pero no te aflijas que es un tema a discucion
#17
Escrito 11 febrero 2009 - 04:47
...También elimino el autorun de los PCs modificando el registro con el siguiente archivo que denomino NoUSBAutorun.reg:
delphi
REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer] "NoDriveTypeAutoRun"=dword:000000ff
Siendo técnicamente lo mismo comentado por Jade creo que (a diferencia de lo que alguna vez me dijeron) es un metodo plenamente valedero
Si que lo es, además es muy cómodo ejecutar el archivo.reg con doble click en lugar de navegar por el registro con regedit....
Saludos.