Ir al contenido


Foto

Reparar las unidades extraibles atacadas por virus Recycler


  • Por favor identifícate para responder
8 respuestas en este tema

#1 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 19 abril 2015 - 10:39

Como sabéis hay oleadas de infecciones USB del tipo RECYCLER, familiares, amigos y compañeros me encargan la limpieza de sus desafortunados dispositivos, pero vuelven a picar.
 
El virus RECYCLER y variantes ocultan las carpetas del directorio raiz de los medios extraíbles y en su lugar colocan accesos directos que apuntan al virus, para que al abrirlo (pensando que es la carpeta original) infecte el PC. Los incautos y poco observadores abrirán de ese modo sus carpetas infectando cada PC que encuentren a su paso.
 
Cansado de reparar a mano unidades USB infectadas con virus de ese tipo, decidí automatizar el sistema de forma que se visualicen las carpetas ocultas y se borren todos aquellos accesos directos cuyo contenido tenga la palabra “recycler”. Posteriormente vacuna la unidad escribiendo una carpeta llamada Recycler y un archivo llamado autorun.inf. Los atributos de archivo son convenientemente alterados para evitar que el virus los borre o reescriba en una posible nueva infección. El sistema usado para ello es mediante escritura a “pelo” en FAT16 o FAT32. De esto se habló aquí y aquí. Lo que hago es marcar como archivo bloqueado la carpeta recycler y como carpeta bloqueada el archivo autorun.inf. He utilizado el mismo código que publiqué en este último enlace, una API para trabajar con FAT16 y FAT32. Si el virus no sabe como deshacer esto, no podrá infectar nuestro pendrive.
 
Tras la vacuna, el programa configura el PC para evitar el AutoRun al conectar dispositivos extraíbles y repara los ganchos al registro para archivos ejecutables.
 
Expongo el código principal:


cpp
  1. void __fastcall TForm1::Button1Click(TObject *Sender)
  2. {
  3.   Memo1->Lines->Clear();
  4.   Memo1->Lines->Add("COMENZAMOS EL TRABAJO, \r\nNO SAQUE SU PENDRIVE HASTA QUE TERMINEMOS.\r\n");
  5.  
  6.   // Enumerando unidades extraibles
  7.   char Drive[] = "A:\\";
  8.   char* D = Drive;
  9.   for(; *D <= 'Z'; (*D)++){
  10.     if(GetDriveType(Drive) == DRIVE_REMOVABLE){
  11.       Memo1->Lines->Add("Limpiando unidad: " + String(Drive));
  12.       Memo1->Lines->Add("  Visualizando carpetas ocultas...");
  13.       SetAttribute(Drive, FILE_ATTRIBUTE_NORMAL, false);
  14.       Memo1->Lines->Add("  Borrando Accesos directos infectados...");
  15.       DeleteRecyclerLnk(Drive);
  16.  
  17.       String File;
  18.       Memo1->Lines->Add("  Vacunando autorun.inf...");
  19.       File = String(Drive) + "autorun.inf";
  20.       SetFileAttrFAT(File.c_str(), 0);
  21.       RemoveDir(File);
  22.       DeleteFile(File);
  23.       FileClose(FileCreate(File));
  24.       SetFileAttrFAT(File.c_str(), ATTR_DIRECTORY | ATTR_DEVICE | ATTR_HIDDEN);
  25.  
  26.       Memo1->Lines->Add("  Vacunando Carpeta Recycler");
  27.       File = String(Drive) + "Recycler";
  28.       SetFileAttrFAT(File.c_str(), 0);
  29.       RemoveDir(File);
  30.       DeleteFile(File);
  31.       CreateDir(File);
  32.       SetFileAttrFAT(File.c_str(), ATTR_ARCHIVE | ATTR_DEVICE | ATTR_HIDDEN);
  33.  
  34.       Memo1->Lines->Add("");
  35.     }
  36.   }
  37.  
  38.   // Reparando el registro del PC
  39.   HKEY hKey;
  40.   if(Ch_NoAutoRun->Checked){
  41.     // NoDriveTypeAutoRun
  42.     Memo1->Lines->Add("NoDriveTypeAutoRun");
  43.     if(RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\Explorer", &hKey)==ERROR_SUCCESS){
  44.       DWORD Data = 0x000000FF;
  45.       RegSetValueEx(hKey, "NoDriveTypeAutoRun", 0, REG_DWORD, (PBYTE)&Data, sizeof(DWORD));
  46.       RegCloseKey(hKey);
  47.     }
  48.   }
  49.  
  50.   // UnhookRegKey
  51.   Memo1->Lines->Add("UnhookRegKey");
  52.   char Val[] = "\"%1\" %*";
  53.   SetStrValue(HKEY_LOCAL_MACHINE, "Software\\CLASSES\\batfile\\shell\\open\\command", 0, Val);
  54.   SetStrValue(HKEY_LOCAL_MACHINE, "Software\\CLASSES\\comfile\\shell\\open\\command", 0, Val);
  55.   SetStrValue(HKEY_LOCAL_MACHINE, "Software\\CLASSES\\exefile\\shell\\open\\command", 0, Val);
  56.   SetStrValue(HKEY_LOCAL_MACHINE, "Software\\CLASSES\\piffile\\shell\\open\\command", 0, Val);
  57.   SetStrValue(HKEY_LOCAL_MACHINE, "Software\\CLASSES\\scrfile\\shell\\open\\command", 0, Val);
  58.   SetStrValue(HKEY_LOCAL_MACHINE, "Software\\CLASSES\\regfile\\shell\\open\\command", 0, "regedit.exe %1");
  59.  
  60.   // Unlock Registry
  61.   Memo1->Lines->Add("Unlock Registry");
  62.   if(RegCreateKey(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", &hKey)==ERROR_SUCCESS){
  63.     RegDeleteValue(hKey, "DisableRegistryTools");
  64.     RegCloseKey(hKey);
  65.   }
  66.  
  67.   Memo1->Lines->Add("\r\nTRABAJO TERMINADO");
  68. }

El código está escrito en BCB5 y como suelo hacer, las partes más sensibles están escritas con la API de Windows

Subo el código completo con fuente y binario.
 
 
Saludos.

Archivos adjuntos


  • 4

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 19 abril 2015 - 04:30

Hace unos años éste virus fué muy latoso para mi, clientes, amigos y familia tuvieron un problema de éstos y com dices, me encargaban la limpieza de sus USB, debí haber tenido algo como ésto. :)

 

Saludos


  • 0

#3 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 20 abril 2015 - 01:42

Hace unos años éste virus fué muy latoso para mi, clientes, amigos y familia tuvieron un problema de éstos y com dices, me encargaban la limpieza de sus USB, debí haber tenido algo como ésto. :)

 

Saludos

Pues es lo que comentaba, entonces no lo automaticé. Aunque parezca mentira, en estos días vuelvo a ver el mismo problema, ese es el motivo por el que me decidí a hacer la utilidad, repartirla y que me dejen más tranquilo.

 

 

Saludos.


  • 1

#4 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 20 abril 2015 - 07:42

Gracias por este valioso aporte amigo.


  • 0

#5 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 20 abril 2015 - 04:37

Muy buen aporte, muchas gracias.  :ap:


  • 0

#6 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 mensajes
  • LocationMisiones, Argentina

Escrito 15 mayo 2015 - 12:32

Gracias por el dato. Conozco algunas personas que utilizan algunos programas utilitarios que hacen algo parecido. Aunque ver el código fuente es mucho mejor.

Te comento que varias veces reparé esos "pendrives" e incluso discos externos, en los que tenían infecciones similares.

Por ejemplo existe uno que cambia los atributos de los archivos para que no sea visto, la mayoría de los usuarios es incapaz dse solucionarlo y piensan que perdieron sus datos.

Confiadísimo, conecto la memoria a mi PC con antivirus para que los elimine y luego corrijo los atributos con el cmd.

Existe otro que los deja como si fuese una carpeta y eso sí es un desastre.

 

No me jacto, pero tengo una PC que no conoce virus desde casi cuando la compré.

 

Saludos.


  • 0

#7 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 15 mayo 2015 - 05:06

Esta utilidad también limpiará discos externos o incluso smartphones, que también se pueden infectar al connectarlos al usb.

 

Si te fijas en el código, elimina los falsos accesos directos que apuntan a recycler, repara los atributos que ocultan las carpetas originales, vacía autorún.inf y la carpeta Recycler, que no tiene que aparecer en un pendrive, aunque si en un disco duro extraíble. Esos virus registran esa carpeta como una papelera en el PC infectado, pero no en uno sano, con lo que el contenido que normalmente ve un PC infectado es la papelera de reciclaje del disco C. Un PC sano verá el virus, que es donde se aloja para propagar su infección y de ello se encargará el autorun.inf que también se escribe en la raíz del pendrive. Cierto es que un efecto secundario de borrar la carpeta recycler en que se borrarán todos los archivos que contenga.

 

Finalmente la utilidad altera el atributo de archivo y carpeta de Recycler (la marca como archivo) y autorun.inf (la marca como carpeta) y cambia un atributo específico de unidades FAT 16 y 32 para que el S.O. (y por tanto el virus) no puedan acceder a ellos (a no ser que realicen el proceso inverso que hace el código) de esta forma se trata de dificultar una nueva infección del pendrive.

 

Con el código fuente en la mano, que cada cual lo modifique a su gusto.

 

 

Saludos.


  • 0

#8 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 mensajes
  • LocationMedellín Colombia

Escrito 19 mayo 2015 - 09:39

¡Qué gran aporte!, Gracias.


  • 0

#9 djkjallo

djkjallo

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 22 junio 2016 - 09:45

Gracias por el aporte..  (h)


  • 0




IP.Board spam blocked by CleanTalk.