Virushii informatici    
 

In primul rand vreau sa mentzionez ca autorul acestui articol nu se face responsabil de folosirea informatziilor,cunoshtintzelor sau tehnicilor prezentate aici,orice ar insemna aceasta folosire.Acest material a fost conceput, scris shi publicat in scop didactic shi pentru a veni in ajutor celor care doresc sa se protejeze de virushii informatici.Sub nici o forma nu am instigat la scrierea de virushi.VIRUSHII SUNT LAME!


Contzinut :
1. Introducere.
2. Ce este un virus?!
3. Tipuri de virushi.
3.1. Virushi de boot.
3.2. Virushi de fishier.
3.3. Virushi de document(macro virushi).
3.4. !!Virushi de IRC!!
4. Virushi "destructivi" vs. virushi "pashnici".
5. Ce sunt shi cum functzioneaza antivirushii?
6. Tehnici de evadare folosite de virushi.
7. Incheiere.


1. Introducere.
I LOOOVE YOU...me 2!Cam asha ziceau majoritatea posesorilor de computere de pe glob acum vr'o luna sau doua,dupa ce virusul "I_LOVE_YOU" le-a infectat sistemul.Pe vremea aia,cam toata lumea ma intreba ce e cu el,ce face,daca e periculos, alea alea.Chestia care m-a izbit a fost ca majoritatea nu shtiau ce e un virus.Foarte multzi amici de-ai mei au fost foarte curioshi sa shtie cum se face un virus,ce este un virus shi cum pot fi combatutzi.Ashea ca....am decis sa scriu articolul asta! Oricum...parerea mea e ca epoca de aur a virushilor a apus de catva timp,locul lor fiind preluat de troieni,despre care,insa, vom discuta altadata.Sa trecem la treaba !!!

2. Ce este un virus?!
Un virus informatic copiaza pana la cele mai mici detalii comportamentul virushilor biologici.Shi unii shi altzii au nevoie in primul rand de o gazda pentru a supravietzui. In al doilea rand este nevoie de un mediu (environment) adecvat,adiq un virus proiectat pentru o platforma Windows/x86 nu functzioneaza decat pe o platforma compatibila.Virusul biologic cauzeaza stari de indispozitzie gazdei,shi uneori provoaca moartea,dar nu acesta este scopul sau principal.Principala caracteristica a unui virus este proliferarea. In mod identic se comporta shi un virus de calculator,el infectand,dupa caz,fishiere sau MBR,alterandu-le contzinutul in asha fel incat sa se faca posibila propagarea sa.Rutina distructiva este in multe cazuri evitata deoarece daca un virus provoaca daune mari gazdei sale, nu se mai poate inmultzi. ;)
Un virus informatic este un program care trebuie sa indeplineasca urmatoa-rele conditzii:
- se atasheaza unei gazde(fishier executabil,document sau MBR)
- codul sau se executa inaintea celui apartzinand gazdei.
- contzine o rutina care permite infectarea unei alte gazde.

3. Tipuri de virushi.
Virushii informatici pot fi grupatzi dupa tipul gazdei pe care o prefera in :

3.1. Virushi de MBR.
Aceshti virushi nu sunt foarte greu de creat shi infecteaza atat HDD cat shi floppy-disk-ul.Zona de boot a discului este inlocuita cu codul virusului, shi programul initzial de boot este rescris la o locatzie cunoscuta doar de virus.Astfel,la repornirea calculatorului, se lanseaza in executzie codul virusului dupa care acesta executa un salt la adresa unde a fost rescrisa zona de boot initziala,continuandu-se cu executzia acesteia functzionarea calculato- rului continuand aproape in mod normal. :P

3.2. Virushi de fishier.
In loc sa infecteze zona de boot,aceshtia tzintesc fishierele executabile adiq cele care au extensia .COM,.EXE,.SYS,.DRV sau .BIN.Codul initzial al programului este alterat in asha fel incat sa permita in primul rand executzia codului ofensiv(virusul) shi abia apoi se executa programul initzial.Sunt ceva mai elaboratzi shi mai greu de scris spre deosebire de cei de boot,deoarece fishierele contzin un header in care sunt incluse informatzii despre fishierul respectiv(marime,data crearii,paragrafe,adresa de start,alea alea)care sunt folosite de sistemul de operare la lansarea in executzie a programului respectiv.Daca headerul este alterat,sistemul de operare primeshte informatzii eronate despre fishier shi in mod normal il executa faultat,ceea ce duce ori la descoperirea virusului ori la oprirea raspandirii acestuia.De aceea , cand se scrie un virus trebuie sa se tzina seama de tipul fishierelor destinate sa fie gazda.

3.3. Virushi de document (macro virushi).
Ce este un macro?!Macro este o 'imbunatatzire',cum sunt multe altele cu care ne-a invatzat Micro$oft, care permite crearea unei comenzi noi,user defined,pentru executarea unor secventze folosite des de utilizator,doar prin apasarea unui buton.Sunt un set de instructziuni automatizate care imbunatatzesc viteza shi ushureaza munca utilizatorului. Pentru crearea de astfel de macro-comenzi,in Office 97 a fost inclus shi Visual Basic Engine.
Ashadar,un macro-virus este un virus format dintr-o macro-comanda care contzine cod ofensiv shi care provoaca pagube sau este deranjanta cand este lansata in executzie.Acest tip de virushi se raspandesc foarte repede shi unii au o rutina de activare aleatoare.Macro-virushii sunt,probabil, singurii virushi care nu sunt dependentzi de platforma,un macro-virus proiectat sub un sistem Windoze poate infecta shi un Mac.:(

3.4. Virushi de IRC.
Acum vreo luna shi ceva un prieten m-a chemat la el sa ma uit un pic la calculatorul lui...Ce se intampla?!Cand era pe IRC,totzi de pe canalul respectiv il intrebau ce le trimite.El nu trimitea nimic...atunci ce dreq se intampla?!
M-am uitat un pic prin calculatorul lui shi am vazut ceva ce nu mai vazusem: un virus de IRC!!!Am analizat comportamentul sau shi in continuare va prezint caracteristicile lui:
- inlocuise scriptul mirc.ini cu propriul script care ii permitea propagarea de pe un calculator pe altul.
- se transmitea prin DCC trimitzand fishiere de tip BAT cu extensia .jpg folosindu-se de un bug al mirc-ului.Fitzi atentzi : avem fishierul carina.jpg.bat care este de tip BAT dar mIRC il vede ca fiind jpeg deoarece considera extensie primele trei litere aflate dupa punct. Ashadar,la un DCC request carina.jpg.bat va fi carina.jpg!!!! Pare sa fie poza unei tipe,nu?!NU ESTE!!E un virus!! - o alta caracteristica interesanta era ca la doua infectari nu pastra acelashi nume pentru "fotografie" ci il compunea folosind o rutina semialeatoare.
Sfatul meu este sa nu acceptatzi DCC de la nimeni,nici chiar de la cel mai bun prieten pentru ca ar putea fi infectat fara sa shtie ! /me are DCC inchis... facetzi shi voi la fel...oricum,la ce dreq foloseshte?! :P
Nota : Un virus nu infecteaza daca nu este lansat in executzie.Un virus de boot nu porneshte daq se executa de pe o disketa system curata,un virus de fishier executabil nu porneshte daq nu se executa fishierul respectiv,un virus de mail nu actzioneaza daq nu se deschide mesajul care il contzine!

4. Virushi "destructivi" vs. virushi "pashnici"
Probabil ca va intrebatzi de ce am folosit ghilimici...Cititzi capitolul asta shi o sa va datzi singuri seama. In 6 ani,de cand am facut cunoshtintza cu virushii, am realizat ca virushii distructivi nu sunt chiar asha de distructivi pe cat se doresc shi aia pashnici sunt mai periculoshi decat par.Acum vreo 3-4 ani,aproape fiecare casa (a se citi peceu) avea cate un reprezentant al virusului 'Hi',nu-i asha?!Ce dreq facea cu cei 460 de bytes cu care il inzestrase natura?Se multiplica shi atata tot.Aceeashi faza e valabila shi cu 'La Multi Ani!!!',unu care se lansa in preajma sarbatorilor de Craciun.Erau virushi "pashnici",care nu faceau mari pagube,dar totushi,cate sisteme nu au fost infectate?! Acum sa luam exemplul virusului B00st,scris de un amic de-al meu.Super-distructiv,radea hardul la data de 13 a fiecarei luni.Atzi auzit de el ? Normal ca nu,fiindca nu a avut timpul necesar sa se inmultzeasca,distrugand fiecare sistem pe care il infecta (cred ca vreo 5-6 calculatoare l-au cunoscut :)).Acum v-atzi prins care-i faza cu ghilimelele din titlu? Inca nu?! Hmmmmm....najpa! Un virus,pentru a fi intr-adevar periculos are nevoie de o perioada de incubatzie shi rutina ofensiva nu trebuie sa fie foarte distructiva,pentru a-i lasa timp sa se propage.Eu personal am preferat sa nu includ nici o rutina ofensiva in codul virushilor scrishi de mine,sau daca am inclus aceasta era doar agasanta shi se activa in imprejurari aleatoare,foarte rar intalnite! Datorita acestui fapt,plus altele despre care vom vorbi in capitolele urmatoare,chiar shi tu, cititorule, ai putea fi infectat de un virus scris de mine, chiar fara sa shtii. :)

5. Ce sunt shi cum functzioneaza antivirushii?
Antivirushii sunt programe al caror unic scop este sa ii detecteze shi sa ii omoare pe ashtia mici...virushii.Tehnicile folosite in campania antivirus s-au dezvoltat extraordinar in ultimul timp.Acum 5 ani antivirushii cautau virushi dupa semnatura,shi descopereau numai virushii ale caror semnaturi existau in baza lor de date.Astazi, exista cateva tehnici care nu trebuiesc lasate deoparte daq se doreshte realizarea unui produs antivirus care chiar sa poata descoperi virushi.
Scanarea semnaturii - este prima tehnica anti-virus existenta.Programul antivirus are o baza de date in care sunt trecute semnaturile virushilor cunoscutzi.Daca in fishierul scanat este intalnita semnatura unui virus,atunci se considera ca fishierul este infectat.Nu permite detectarea virushilor necunoscutzi!
Generator de cod - sau lansator de capcane.Este folosit pentru a prinde virushi activi in memorie sau pentru a descoperi daca exista virushi in memorie. Ideea de baza e simpla:se creaza fishiere executabile(bait-uri) care sunt lansate in executzie,dupa care se controleaza marimea lor.Daca aceasta este neschimbata inseamna ca fishierul nu a fost infectat,deci in memorie nu sunt virushi pentru acel tip de fishier.Daca marimea a fost modificata,se transmite fishierul mai departe,la engine-ul euristic.
Engine euristic - este un program care are o baza de date in care sunt incluse toate instructziunile cunoscute ca fiind virus-like code(cu cat mai multe cu atat mai bine,dar atentzie la alarme false).Cand actzioneaza asupra unui fishier,il parcurge in intregime,urmarind jump-urile shi comparand codul intalnit cu cel din baza de date.Daca intalneshte mai multe instructziuni specifice virushilor,catalogheaza fishierul ca fiind infectat.Trebuie sa tzinem cont de faptul ca engine-ul euristic nu garanteaza o detectzie reala,in proportzie de 100%,el bazandu-se pe probabilitatzi shi putand genera foarte multe alarme false.Cea mai noua generatzie de engine-uri euristice creaza un mediu asemanator cu cel creat de sistemul de operare,lanseaza virusul in executzie in acest mediu se face un dump al codului din memorie shi abia acum se executa analizele euristice,pe virus.Acest lucru se face pentru a trece de criptarea folosita de virushi,fiind shtiut faptul ca doar un numar redus de virushi raman criptatzi shi in memorie.Aceasta metoda permite detectarea chiar shi a viruhsilor necunoscutzi.
Blocarea accesului direct la disc - majoritatea virushilor incearca sa scrie direct pe disc folosind INT 25h shi INT 26h.Dar shi programe legitime pot sa foloseasca aceste functzii pentru lucru la nivel intim cu disk-ul.
Monitorizarea modificarilor MBR - multzi virushi infecteaza sistemul modificand MBR-ul shi furand INT 13h.O monitorizare a acestora ar trebui sa tzina sistemul relativ 'curat'. :)
K...Daq atzi inclus toate astea in programul dumneavoastra antivirus, putetzi fi mandrii...avetzi un soft competitzional. /me va ureaza succes!In cantitatzi induuuustriale!!! mwahahahahaha...

6. Tehnici de evadare folosite de virushi.
In sfarshit...am ajuns la ce-mi place mie.Dupa ce atzi citit capitolul anterior probabil ca v-atzi gandit ca saracele creaturi(virusheii...) nu au nici o shansa in fatza railor de antivirushi...GRESHEALA!!Aproape ca e invers...Eu personal am scris un virus care nu a fost detectat nici de dreq in 2(doi) ani de zile. Shi nici pana in ziua de azi,cand scriu asta.Cum am reushit? Ehehe...Am sa va explic in continuare cateva tehnici folosite de cei care scriu virushi (ma rog, nu shtiu daq script - kiddies vs. lamah'z le shtiu... ;)).
Modificare marime fishier.Intotdeauna,cand adaugi ceva la altceva acel altceva creshte in dimensiuni.Shtitzi de ce?! Fiindca iarna nu e ca vara ! :)
Un antivirus se uita sa vada daq un fishier a crescut in marime,facand o comparatzie cu marimea precedenta a fishierului respectiv,stocata intr-o baza de date.Dar daq noi scadem marimea virusului nostru...ce modificare mai vede? :)
Pastrare timestamp.Orice fishier are un timestamp, adiq cum ar veni o data a nashterii,pe care daq o lasam cum a modificat-o virusul nostru putem avea probleme.Ashadar va trebui sa salvam undeva timestampul inainte de infectzie,iar dupa ce am modificat fishierul sa rescriem timestamp-ul initzial.
Criptarea codului.Pentru a le da batai de cap in plus celor care scriu programe antivirus, pushtanii ashtia "proshti" care scriu virushi s-au gandit ca ar fi mishto sa cripteze secventzele critice de cod, sau chiar intregul cod al virusului.Partea nashpa e ca daq s-a generat o cheie,e valabila pentru decriptarea tuturor celorlalte copii ale virusului.
Polimorfism.Ehehehe...acum fiecare cheie e generata aleator shi este pastrata undeva in corpul virusului sau este generata in functzie de o caracteristica a unei componente a calculatorului,cum ar fi seria hard disk-ului sau un checksum al zonei de boot.Sa vedetzi ce mishto o sa fie cand va schimbatzi hard-ul.:) Cam asha ceva facea One_Half...encripta informatzia de pe HDD cu o cheie generata in functzie de HDD shi o cheie generata aleator de el.Asha ca daq schimbai HDD,programele erau duse shi daq shtergeai virusul fara sa decriptezi HDD,iar erau duse.:PP Am intalnit virushi care generau cheia de decriptare in functzie de caracteristicile fishierului infectat(marime,checksum, data crearii,etc.).La polimorfism inca mai ramane o portziune dupa care se poate genera semnatura... decriptorul. Cum dreq sa faci sa criptezi decriptorul?!
Automorfism.Omul cu o mie de fetze poate nu exista,dar virusul cu un milion,cu sigurantza da! Bajetzii ashtia de care ziceam mai devreme,"proshtii", s-au gandit cum sa faca in asha fel incat sa nu se mai poata genera semnatura pentru un virus.Cel mai mishto virus pe care l-am intalnit vreodata se numeshte PINWORM shi este scris de unu, The QUaRaNTiNE. Virusul asta nu are nici un singur byte constant!! Mishto, nu? Anyway,in assembler exista o instructziune, nop care nu face nimic decat sa ocupe spatziu.Shi atunci bajetzii s-au gandit s-o puna la treaba...ce ar fi daca ar ocupa spatziu cu un scop? Daca ar ocupa spatziu pentru alte instructziuni...:) V-atzi prins? Pentru un programator mediu in asm , nu este cine shtie ce corvoada sa gaseasca vr'o 11-12 instructziuni care sa nu afecteze restul codului. Sau cel putzin sa scrie codul in asha fel incat sa nu fie afectat de ele...Face o rutina care scrie aceste instructziuni aleator pe spatzii ocupate de instructziuni nop.Aceste nop-uri trebuiesc intercalate in zona decriptorului creand astfel un cod cvasi-automorf,ele fiind inlocuite de instructziuni aleatoare.Ash putea explica shi cum se poate realiza un cod 100% automorf(0 bytes constant) dar sunt sigur ca multzi nu ar intzelege deoarece este nevoie de cunoshtintze avansate in programarea assembler x86. :P
Cod anti-debugging.Probabil ca va vetzi intreba ce dreq cauta instructziuni anti-debugger la virushi...Pai unde in alta parte,fratzilor?! Un engine heuristic analyser este in primul rand un debugger,ce-i drept o tzara modificat.Shi,daq va amintitzi din articolul meu precedent,in care ziceam de debuggere shi cod anti-debugging,un debugger se bazeaza doar pe doua intreruperi care pot fi matrashite in nenumarate feluri(sploit that!!!).BTFW,fitzi creativi!
Evitarea fishierelor care contzin in numele lor AV,CL shi SC.In general, aceste grupuri de litere sunt contzinute in numele programelor antivirus, deci ar fi o tampenie sa incerci sa infectezi tocmai p-ala care vrea sa te omoare. :)
Atacarea fishierelor care contzin in numele lor AV,CL shi SC.Cea mai buna defensiva e ofensiva zicea un strateg chinez.Shi avea dreptate.Mai bine le anihilam noi pe ele decat ele pe noi!
Gresheli in programele antivirus.Programele antivirus sunt shi ele supuse greshelilor de c0dare,deoarece sunt scrise de oameni.Acestea pot fi exploatate intr-un mod nu prea magulitor pentru cei care le-au scris.Acum doi ani am descoperit in codul TBAV o gresheala care lasa sa scape fishierele infectate. Alta asemanatoare am gasit in F-PROT.Am scris o rutina care inglobeaza ambele sploituri.Nu imi permit inca sa o public deoarece chiar shi acum,dupa doi ani,acele gresheli nu au fost corectate!:)
O alta gresheala superba este in codul MSAV(din nou Micro$oft,cei mai dragutzi 14m3ri :)) shi permite incheierea actziunii de rezidentza in memorie a antivirusului.Daq faci chestia asta shi imediat dupa aceea scrii la adresa unde obishnuieshte sa-shi puna el semnatura,o semnatura identica cu a lui...ehehe,nu te mai deranjeaza. ;)
Ar mai fi cateva tehnici de pacalire a antivirushilor,dar cred ca astea care le-am prezentat sunt suficiente pentru un articol care shi-a propus sa invetze lumea ce e un virus shi cum sa te pazeshti de el... :))

7. Incheiere.
A venit timpul sa zic "cu@"...dar nu inainte de cateva vorbe.Dupa ce am publicat articolul "Debuggere shi cod anti-debugger",din numarul 2 al revistei, unii au spus ca trickurile prezentate nu imi apartzineau.Tzin sa precizez inca o data ca articolele imi apartzin in totalitate,iar in cazurile in care portziuni de cod sunt luate de la altcineva,acea persoana este creditata. Trick-urile antidebugger prezentate in acel articol erau 100% munca mea,la fel ca intreaga arhiva ANTI-D.ZIP.Re Gush! :P
Doar doo vorbe.Un virus poate scrie oricine shtie ceva despre asm,VB sau mIRC.Dar pentru a scrie o opera de arta este nevoie de tehnica.Cei care scriu virushi elementari shi destructivi ar trebui impushkatzi...cei care fac arta ar trebui premiatzi! Pana la urma ce este un virus?! Este PRIMA forma de viatza non-biologica de pe TERRA!!!Foarte multa lume ar putea invatza ceva de la cei care scriu virushi...shi,NU!Nu totzi sufera de marginalizare sociala sau probleme psihice. Un DarkAvenger e un artist,nu pentru virushii pe care i-a scris ci pentru ce a descoperit shi a implementat in virushii lui. PINWORM, Neuroquilla, Tremor, One_Half, Prodigy, Allia, Happy99 sau Melissa sunt catziva dintre virushii ai caror coderi ar merita un premiu.Sigur mai sunt shi altzii(BergenBier?! :)) care insa nu au fost descoperitzi. :P
/me va zice ciao!Shi daq vretzi sa scrietzi un virus...lasatzi-o balta, mai bine facetzi un joc ceva ca oricum nu am mai vaz't demult ceva mishto! :)))

   

Kurrupt File
[email protected]
   
Hosted by www.Geocities.ws

1