Metode de detect¸ie a codului ostilusers.utcluj.ro/~jim/SSA/Resources/Laboratory/Ref306.pdf · 1...

36
UNIVERSITATEA TEHNIC ˘ A DIN CLUJ-NAPOCA Facultatea de automatic ˘ as ¸ i calculatoare Catedra de Calculatoare Metode de detect ¸ie a codului ostil Referat de doctorat Raport tehnic UTCNCS RT06-10 octombrie 2006 Doctorand: Marius Joldos ¸ Conduc˘ ator s ¸tiint ¸ific: Prof.Dr.Ing. Iosif Ignat

Transcript of Metode de detect¸ie a codului ostilusers.utcluj.ro/~jim/SSA/Resources/Laboratory/Ref306.pdf · 1...

  • UNIVERSITATEA TEHNICĂ DIN CLUJ-NAPOCAFacultatea de automatic ă şi calculatoare

    Catedra de Calculatoare

    Metode de detecţiea codului ostilReferat de doctorat

    Raport tehnic UTCNCS RT06-10octombrie 2006

    Doctorand:Marius Joldoş

    Conduc̆ator ştiinţific:Prof.Dr.Ing.Iosif Ignat

  • Cuprins

    1 Introducere 11.1 Codul ostil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.1.1 Viruşi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.2 Viruşi de macro şi de e-mail . . . . . . . . . . . . . . . . . . . . 2

    1.2 Viermi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2 Tipuri de cod ostil 52.1 Viruşi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Viermi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Spyware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.4 Programe care prezintă risc, ı̂n legătură cu codul ostil . . . . . . . . . . . 72.5 Rootkit-uri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    2.5.1 Tipuri de cod pentru procesorul de comenzi (shellcode) şi metodede recunoaştere . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    3 Metode de detectie 113.1 Elemente detectabile ı̂n sisteme de detecţie a intruziunilor şi ziduri antifoc 11

    3.1.1 Anomalii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.1.2 Utilizarea improprie . . . . . . . . . . . . . . . . . . . . . . . . 12

    3.2 Metode de detecţie utilizabile ı̂n IDS şi ziduri antifoc . . . . . . . . . . . 123.2.1 Inspectarea pachetelor . . . . . . . . . . . . . . . . . . . . . . . 13

    3.3 Metode specifice viruşilor . . . . . . . . . . . . . . . . . . . . . . . .. . 163.3.1 Căutarea de secvenţe specifice . . . . . . . . . . . . . . . . . .. 163.3.2 Nepotriviri ı̂n secvenţe . . . . . . . . . . . . . . . . . . . . . . .173.3.3 Detecţia generică . . . . . . . . . . . . . . . . . . . . . . . . . . 173.3.4 Funcţii de dispersie . . . . . . . . . . . . . . . . . . . . . . . . . 183.3.5 Semne de carte . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3.6 Scanarea cap-şi-coadă . . . . . . . . . . . . . . . . . . . . . . . 183.3.7 Scanarea punctului de intrare şi a punctelor fixe . . . .. . . . . . 193.3.8 Scanarea inteligentă . . . . . . . . . . . . . . . . . . . . . . . . 193.3.9 Detecţia scheletului . . . . . . . . . . . . . . . . . . . . . . . . . 20

    i

  • 3.3.10 Identificarea aproape exactă . . . . . . . . . . . . . . . . . . .. 203.3.11 Identificarea exactă . . . . . . . . . . . . . . . . . . . . . . . . . 203.3.12 Metode de scanare algoritmice . . . . . . . . . . . . . . . . . . .213.3.13 Filtrarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.3.14 Detecţia statică a decriptorului . . . . . . . . . . . . . .. . . . . 223.3.15 Metoda cu raze X . . . . . . . . . . . . . . . . . . . . . . . . . . 233.3.16 Emularea codului . . . . . . . . . . . . . . . . . . . . . . . . . . 233.3.17 Detecţia dinamică a decriptorului . . . . . . . . . . . . .. . . . 243.3.18 Emularea codului . . . . . . . . . . . . . . . . . . . . . . . . . . 253.3.19 Detecţia geometrică . . . . . . . . . . . . . . . . . . . . . . . . 253.3.20 Analiza euristică a viruşilor de Windows pe 32 biţi . . . . . . . . 25

    4 Concluzii 27

    Bibliografie 29

    A Unelte 32A.1 AIDE (Advanced Intrusion Detection Environment) . . . . .. . . . . . . 32A.2 Chkrootkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33A.3 System for Internet-Level Knowledge (or SiLK) . . . . . . . .. . . . . . 33A.4 Snort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    A.4.1 Spade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    ii

  • Lumea e un loĉın care se tr̆aieşte mai greu deĉat ı̂nainte, pe

    măsur̆a ce intr̆amı̂n era calculatoarelor.

    Joe Cocker

    1Introducere

    1.1 Codul ostil

    Codul ostil este unul dintre cele mai mari ameninţari la adresa reţelelor de calculatoare şia sistemelor de calcul. Raportul CSI/FBI pe 2006 (cf.1.1) arată că din subiecţii chestionaţicca. 80% au avut probleme rezultate din ac ţiunea codului ostil. Codul ostil exploateazăslăbiciuni ale software sau ale configuratiei sistemului pentru a-l deteriora. Codul ostilpoate fi ı̂mpărţit ı̂n patru categorii: viruşi propriu-zişi, viruşi de macro şi de e-mail, caitroieni şı̂ viermi.

    1.1.1 Viruşi

    Viruşii sunt programe – cod executabil numit uneorimalware– care se inserează ı̂n altprogram executabil. Astfel, virusul se propaga atunci când este executat programul infec-tat. Virusul este pasiv deoarece are nevoie ca un utilizatorsau un alt program să-l lansezeşi sa execute programul infectat.Înainte de acest eveniment, virusul rămâne ”adormit”pe disc. La activare codul este plata ı̂n memoria centrala a calculatorului şi ı̂şi ı̂ncepeexecuţia exact ca orice alt program. De obicei, atunci când este activat, virusul ı̂şi inse-rează copii ale sale ı̂n cele mai comune executabile pe carele poate găsi pe discul rigid al

    1

  • 1 Introducere

    Figura 1.1: Proporţia tipurilor de atacuri (din Raportul CSI/FBI pe 2006)

    calculatorului victimă, proces numitauto-replicare.

    Programele infectate se răspândesc de obicei de la un calculator la altul prin copii pemedii de stocare sau prin descărcarea de pe Internet.

    1.1.2 Viruşi de macro şi de e-mail

    Cel mai adesea utilizatorii schimba ı̂ntre ei documente, nuprograme. Acestea pot fi ţintaviruşilor de macro şi de e-mail.Macrodefiniţiile executate de aplicaţii cum sunt Microsoft Word, Excel sau Outlook potfi şi ele infectate de viruşi. La deschiderea unui documentinfectat virusul se execută ı̂nfundal, neobservat.̂In mod asemănător, există virusi care se pot ataşa la e-mail. De ı̂ndatăce destinatarul deschide conţinutul unui mesaj infectat,virusul este executat. Adeseoriaceşti viruşi, scrişi ı̂n Visual Basic Script, ı̂ncep s˘a trimită scrisori care conţin copii ale lorfiecărui contact găsit ı̂n cartea de adrese a victimei.

    Viruşii de e-mail pot cauza pagube mari infrastructurii dee-mail a Internet prin traficulenorm pe care ı̂l generează ca urmare a replicării multiple. În unele cazuri au provocatcăderea serverelor de e-mail care nu au rezistat volumuluiimens de trafic.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 2

  • 1 Introducere

    Caii troieni constituie un tip aparte de malware care deschide porţi ı̂nsisteme pentruintruşi. Termenul de cal troian este utilizat pentru a descrie software care permite atacato-rilor aflati la distanţă să ia controlul sistemului de calcul, să descarce fişiere, să instalezeaplicaţii, să modifice fişiere şi chiar să oprească de tot sistemul. Caii troieni sunt programeinstalate fără cunoştinţa ı̂ncărcăturii ostile de către utilizatori ı̂n urma unei infectări a unuifişier sau a unei aplicaţii descărcate de pe Internet.

    Unul dintre cei mai faimoşi cai troieni, Back Orifice, este atât de puternic ı̂ncât a ajunssă fie considerat program de gestiune de la distanţa a sistemelor de calcul.

    1.2 Viermi

    Viermii sunt mult mai puternici decât celelalte feluri de cod ostil. Viermii vin de peInternet şi se pot replica fără intervenţia utilizatorului. În timp ce viruşii sunt pasivi şi aunevoie de intervenţia utilizatorului pentru a se rula, viermii sunt activi. Din cauza faptuluică nu au nevoie de intervenţia utilizatorului şi se pot replica şi activa autonom, ei suntmult mai periculoşi.

    Viermii sunt programe care folosesc erorile de programare (bugs) ale resurselor dinreţele pentru a se replica. Ei se pot inocula ı̂n sistemele de calcul datorită erorilor dinserver, loc ı̂n care ı̂ncep să scaneze reţeaua ı̂n căutarea altor calculatoare pe care să le in-fecteze. Proliferarea unui vierme este uimitoare. De exemplu, Code Red a avut nevoie de15 minute pentru a infecta mii de calculatoare şi a atacat chiar situl oficial al Casei Albea SUA.

    Pe lângă căutarea altor calculatoare pe care să le infecteze, viermii pot cauza pagubeprin atacarea reţelei şi a componentelor sale.

    Un sondaj la nivel naţional ı̂n SUA, sponsorizat de către CA Incorporated şi de NationalCyber Security Alliance (NCSA) a arătat că 83% dintre adulţii care se implică ı̂n legăturisociale prin reţele de calculatoare au descărcat fişierenecunoscute, care le puterau expunePC-urile la atacuri.

    Câteva scopuri ı̂n care se poate folosi codul ostil sunt:

    • obţinerea accesului de la distanţă• colectarea de date• sabotajul• refuzul servirii• eludarea detectării• furtul de resurse• ocolirea sistemului de control al accesului• ı̂mbunătăţirea statutului social personal• ı̂mplinirea personală

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 3

  • 1 Introducere

    Codul ostil a evoluat rapid ı̂n ultimii 20 de ani, după cum searată ı̂n figura 1.2.

    Figura 1.2: Evoluţia codului ostil din 1981 până azi (după [19]).

    Scopul acestei lucrări este să determine ce anume elemente ale codului ostil ar putea fidetectabile la nivelul unui sistem de detecţie a intruziunilor.Lucrarea este structurată după cum urmează: ı̂n capitolul al doilea se prezintă tipurile decod ostil care au putut fi identificate; ı̂n cel de al treilea capitol se detaliază o serie demetode de detecţie; ultimul capitol prezinta pe scurt câteva concluzii referitoare la uneleaspecte ale domeniului.În anexe sunt prezentate câteva instrumente folosibile ı̂n detecţiacodului ostil.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 4

  • A greşi este omeneşte, dar ca să creezi confuzie totală ai nevoie

    de un calculator.

    Paul Ehrlich

    2Tipuri de cod ostil

    2.1 Viruşi

    Viruşii pot face ceea ce poate face oricare alt program. Singura diferenţă este că virusulse ataşează de un alt program şi se executa ı̂n secret la executarea programului gazdă. Pedurata sa de viaţă un virus trece prin următoarele patru faze:

    • Faza de adormire: virusul este inactiv. El va fi activat de un eveniment extern.Aceasta fază nu este prezenta la toţi viruşii.

    • Faza de propagare: virusul ı̂şi amplasează copii ale saleı̂n alte programe sau zoneale sistemului.

    • Faza de activare. Activarea poate fi cauzată de o multitudine de evenimente dinsistem.

    • Faza de execuţie: virusul ı̂şi execută funcţia (care poate sa nu fie dăunătoare, uneori)

    Anatomic, un virus are patru părţi:

    • O parte demarcare– opţională.• O parte care conţinemecanismul de infecţie.• O parte cu mecanismul dedeclanşare.• O parte de ı̂ncărcătură ”utilă”, opţională care cauzează stricăciuni sistemului infec-

    tat.

    5

  • 2 Tipuri de cod ostil

    2.2 Viermi

    Spre deosebire de viruşi, viermii nu necesita ataşarea dealte programe. Datorită structuriirecursive a propagării, rata lor de răspândire este foarte mare.Anatomia lor este asemănătoare viruşilor. Partea de mecanism de infecţie caută calcula-toare slab protejate din reţea. Ca ı̂ncărcătură ei pot purta cai troieni sau pot infecta fişiere,astfel ca pot avea caracteristici ale cailor troieni sau aleviruşilor.

    Weaver [22] a dezvoltat o taxonomie a viermilor pe baza următorilor factori: modul dedescoperire al ţintei, purtătorul, modul de activare, ı̂ncărcătura ”utilă” şi atacatorii.Mecanismul de descoperirea ţintei este mecanismul prin care viermele descoperă noiţinte. Aceste moduri sunt : scanarea, liste de ţinte generate extern, liste de ţinte antegene-rate, liste de ţinte generate intern şi monitorizarea pasivă.Activareaeste mecanismul prin care viermele ı̂ncepe să opereze asupra ţintei: cu intervenţiadirecta a utilizatorului, declanşată de acţiuni ale utilizatorului (d.e. login, resetarea maşinii,deschiderea unui fişier infectat de la distanţă).Purtătorul reprezinta mecanismul folosit de vierme pentru a se transmite la ţintă. Mijloculprin care apare propagarea poate afecta viteza şi gradul deascundere al unui vierme. Vier-mele poate fie să se răspândească activ, fie poate fi transportat ca parte a unei comunicaţiinormale.Viermii auto-transportaţi se răspândesc activ de la o maşină la alta ca parte a procesului deinfectare. Acest mecanism este folosit la scanarea auto-activată sau ı̂n viermii topologici,deoarece transmiterea viermelui este aici parte a procesului de infecţie.Alţi viermi necesită un canal secundar pentru a-şi ı̂ncheia procesul de infectare. La Blas-ter, de exemplu, deşi exploatarea folosită pentru ı̂nceput este RPC, maşina victimă seconectează apoi la maşina sursă a infecţiei folosind TFTP pentru a descărca corpul vier-melui şi a ı̂ncheia procesul de infectare.Viermii ı̂ncorporaţi (embedded) se transmit ca parte a unui canal de comunicaţie normal,fie prin adăugarea fie prin ı̂nlocuirea mesajelor normale. Ca urmare, propagarea nu pareo anomalie prin prisma şablonului de comunicare.

    Cliff Zou [24] arată că, datorită faptului că tabelele de rutare ale BGP sunt inerentpublice, atacatorii pot desfăşuraviermi de rutare. Aceştia pot cauza o congestie maiseveră a conexiunilor de mare viteză ale Internetului deoarece toate scanările pe carele emite un asemenea vierme sunt rutabile pe Internet (şi nupot fi eliminate decât ladestinaţie). Traficul generat de asemenea viermi nu se poate distinge de traficul legal.Doar trecerea globală la IPv6 ar elimina un asemenea tip de vierme.

    2.3 Spyware

    Steve Gibson defineşte spyware ca ”ORICE SOFTWARE care foloseşte conexiunea laInternet a unui utilizator ı̂n fundal. Conexiunea aşa-zisă ”canal revers” TREBUIE S̆A FIEPRECEDATĂ de dezvăluirea completă şi corectă a folosirii propuse a canalului respectivşi urmată de consimţirea informată, explicită pentruo asemenea utilizare. Orice software

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 6

  • 2 Tipuri de cod ostil

    care comunică peste Internet fără aceste elemente este vinovat de furt de informaţie şidesemnat corect ca ”spyware”.Termenul de spyware este, ı̂n majoritatea cazurilor, sinonim cu adware, si poate fi unprogram de genul cailor troieni. Programele spyware pot colecta date sensibile (cumsunt: versiunea de sistem de operare rulata, tipul de răsfoitor de Web, dacă limbajul descenarii poate fi executat, dimensiunea ecranului, plug-in-urile disponibile, informaţii deDNS din domeniu, pot trasa ruta spre sursă pentru a stabili unde se afla calculatorul ţintape reţea) pe două căi:

    • prin cookies şi• instalându-se şi apoi executându-se.

    2.4 Programe care prezint ă risc, ı̂n leg ătur ă cu

    codul ostil

    Sunt numite generic ”riskware” şi constituie orice program legal care poate fi folosit deatacatori pentru a penetra calculatoarele. O lista parţiala de asemenea programe este:

    1. Programele care apelează numere din reţele telefonice(dialers), folosind modemu-rile din calculatoare. Există două categorii: apelatoarele de tip ”cal troian” instalatefără ştirea sau consimţământul utilizatorului (care şi apelează automat situri cos-tisitoare) şi cele legitime care informează utilizatorul despre acţiunile lor şi-i cerpermisiunea.

    2. Descărcătoarele pot fi ostile mai ales numeroşii cai troieni care există. Chiar şiutilitarele de descărcare legale pot fi periculoase, deoarece ele sunt programate săse execute ı̂n fundal, fără intervenţia directa a utilizatorului. Atacatorii pot substituilegăturile spre situri sigure cu altele şi pot cauza desc˘arcarea de cod ostil fara ştireautilizatorului.

    3. Serverele de FTP pot fi folosite de atacatori pentru a câştiga accesul de la distanţăla fişiere şi pentru a urmări activitatea de pe calculatorul ţintă.

    4. Serverele prin procură pot fi pot fi folosite de atacatori pentru a se conecta anonimla Internet.

    5. Serverele de Telnet pot fi folosite pentru a obţine accesul complet la maşinile vic-timă.

    6. Serverele de Web pot fi folosite pentru a obţine accesul lasistemul de fişiere almaşinii victimă.

    7. Clienţii de IRC, datorită incorporării de limbaje de scenarii puternice pentru auto-matizarea lor pot exploataţi pentru a scrie cai troieni şiviermi IRC.

    8. Programele de monitorizare generează informaţii carecare pot fi utile atacatorilor.9. Instrumentele de restaurare a parolelor pierdute.

    10. Uneltele de administrare de la distanţă.

    Retroviruşii, un nume eronat provenind din biologie, suntviruşi care atacă software an-tivirus pentru a preveni detectarea lor. Retroviruşii şterg fişierele de definiţie ale antiviruşilor,

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 7

  • 2 Tipuri de cod ostil

    dezactivează protecţia antivirus rezidentă ı̂n memorie şi ı̂ncearcă să dezactiveze softwareantivirus pe orice cale.Viruşii ”nedetectabili” (stealth) se pot ascunde de detecţia cu antiviruşi. Viruşii ”ı̂ncăpăţânaţi”pot să ı̂mpiedice oprirea execuţiei lor pe un sistem infectat.

    2.5 Rootkit-uri

    Un rootkit poate fi considerat ca un cal troian introdus ı̂ntr-un sistemde operare. Potrivit[21] se pot distinge patru categorii de cai troieni:

    • deghiz̆ari directe, care pretind a fi programe normale;• deghiz̆ari simple, care nu se deghizează ı̂n programe normale, ci pretind a fi alte

    programe posibile care fac altceva decât spun;• deghiz̆ari prin asem̆anare de nume[slip masquerades], programe cu nume care

    aproximează numele programelor existente;• deghiz̆ari ı̂n mediu, programe care rulează deja, greu de identificat de către utiliza-

    tor.

    Ceea ce este de interes aici este prima categorie, a deghizărilor directe.

    Pentru ca un atacator să poată instala un rootkit el trebuie să aibă acces la nivel de admi-nistrator la sistem ı̂nainte de a putea instala kit-ul respectiv [12]. Rootkit-urile nu permitobţinerea accesului la sistem, ci dau posibilitatea de a p˘atrunde ı̂n sistem cu permisiunide nivel maxim (root). O dată obţinut accesul la nivel de administrator, poate fi folosit uncal troian care să se deghizeze ı̂ntr-o funcţie sistem existentă pe sistemul compromis.

    2.5.1 Tipuri de cod pentru procesorul de comenzi (shellcode )

    şi metode de recunoaştere

    Discuţia se va restrânge la coduri pentru platforme IA32.Înaintea apariţiei codurilorpolimorfice, shellcodes aveau doua secţiuni bine definite:

    • Secţiunea de NOP-uri. Aceasta este secţiunea ı̂n care la ”sări” programul ı̂n mo-mentul ı̂n care se exploatează cu succes o depăşire de zonă tampon. Ea conţine purşi simplu o mulţime de instrucţiuni NOP.

    • Încărcătura utilă shellcode. Aceasta este secţiunea unde se execută procesorul decomenzi (d.e. /bin/sh), se leagă un procesor de comenzi la un port TCP etc.

    Această categorie de shellcodes este foarte uşor de detectat. Până nu demult se foloseaufrecvent instrucţiuni cu codul 0x90 (NOP) pe platformele IA32 ı̂n secţiunea de NOP-uri,astfel că trebuia doar căutată o cantitate dex 0x90-uri pentru a da alarma pentru shellcode.Pe lângă acestea, unele sisteme de detecţie ale intruziunilor (IDS) conţin semnături (degenul /bin/sh) pentru a detecta ı̂ncărcătura utilă. Dar, o data cu apariţia shellcode poli-morfe, tehnica aceasta nu a mai putut fi folosită.Shellcodes polimorfice au trei secţiuni bine definite:

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 8

  • 2 Tipuri de cod ostil

    • secţiunea de NOP-uri. Această secţiune este aici un amestec aleator de instrucţiunifara efect cum sunt:inc %eax, inc %ebx, pop %eax, nop, dec %eaxetc.

    • Motorul de decriptare. Această secţiune conţine codul necesar pentru decriptareaı̂ncărcăturii utile. Motorul respectiv este diferit de la un shellcode la altul, el variindprin folosirea de tehnici polimorfice specifice viruşilor.Cifrul folosit de obicei esteun mecanism cu sau-exclusiv sau cu sau-exclusiv dublu. S-arputea implementa unmecanism de cifrare mai bun (d.e. RJINDAEL), dar atunci shellcode ar creşte lacâteva mii de octeti şi nu ar mai putea face nimic util ı̂n multe dintre exploatăriledepăşirilor de zona tampon.

    • Încărcătura shellcode criptată.

    Acest fel de shellcode este mult mai dificil de detectat, dar nu imposibil. Câteva posi-bilităţi sunt:

    • Decriptarea ı̂ncărcăturii shellcode şi detectarea folosind vechile semnături. Aceastatehnică, folosită de antiviruşi pentru a detecta codul viral poate fi folosita la detecţiaacestui fel de shellcode. Această metodă are câteva probleme nerezolvate:

    – Cum sa detectezi dacă ı̂ncărcătura este criptată?– Ce metodă de cifrare foloseşte?– Care este cheia/sunt cheile folosite de mecanismul de cifrare?– Cheia poate fi spartă prin forţă bruta ı̂ntr-un timp scurt?

    • Folosirea semnăturilor pentru detectarea maşinii de decriptare. Aceasta metodă arfi mai buna, dar are şi ea câteva probleme:

    – Deoarece maşina de decriptare se modifică singură şi sunt implicate preamulte instrucţiuni, ar fi prea multe semnături de verificat.

    – Pot aparea multe semnalizări fals-pozitive.– Sunt necesare prea multe cicluri/timp CPU.

    • Emularea maşinii de decriptare. IDS emulează codul, astfel că dacă găseşte cod carepare a decripta ceva ı̂n memorie, ridică alarma pentru shellcode. Aceasta tehnicăridică un număr redus de alarme fals-pozitive, dar are şiea o slăbiciune majoră:sunt necesare prea multe cicluri/timp CPU.

    • Detectarea secţiunii de NOP-uri. Aceasta tehnică ı̂ncearcă pur şi simplu să de-tecteze un număr NOPNUMBER de instrucţiuni inefective. Ea are câteva pro-bleme deoarece generează un număr mare de fals-pozitive,dar prin setarea luiNOP NUMBER la o valoare cuprinsă ı̂ntre 50 şi 60, recunoaşte aproape toate she-llcode. Dezavantajele ei sunt:

    – Sunt necesare multe cicluri/timp CPU.– Multe alarme fals pozitive pentru valori mici ale NOPNUMBER.– Cum unele instrucţiuni fara efect au reprezentări ı̂n codul ASCII, şiruri de

    caractere cum este ’A’ repetat de 60 de ori va fi recunoscut ca shellcode.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 9

  • 2 Tipuri de cod ostil

    Tipul de cod ostil Caracteristici definitorii

    Virus Infectează un fişier de pe gazdă file.

    Se auto-replică.

    De obicei necesită interacţiune cu utilizatorul pentru ase

    replica (prin deschiderea fişierului, citirea poştei, repornirea

    sistemului sau executarea unui program infectat).

    Vierme Se răspândeşte prin reţea.

    Se auto-replică.

    De obicei nu necesită interacţiune cu utilizatorul pentru a se

    răspândi.

    Cod ostil mobil Constă din programe ”uşoare” (lightweight) care sunt

    ı̂ncărcate de pe un sistem ı̂ndepărtat si executate local

    cu intervenţie minimă sau de loc din partea utilizatorului.

    Scrise de obicei ı̂n Javascript, VBScript, Java, sau ActiveX.

    Trape (backdoors) Trec de controalele normale de securitate pentru a oferi ac-

    ces atacatorului.

    Cai troieni Se deghizează ca programe utile şi ı̂şi maschează scopul os-

    til, ascuns.

    Rootkit-uri la nivel uti-

    lizator

    Înlocuiesc sau modifică programele executabile folosite de

    administratori şi utilizatori

    Rootkit-uri la nivel de

    nucleu

    Manipulează inima sistemului de operare, nucleul, pentrua

    ascunde şi crea trape.

    Cod ostil combinat Combină diferitele tehnici anterioare pentru a-şi spori

    eficienţa.

    Tabela 2.1: Tipuri de cod ostil (după [19, p.14])

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 10

  • Câteodat̆a găsim ceea ce nu căutăm.

    Alexander Fleming

    3Metode de detectie

    3.1 Elemente detectabile ı̂n sisteme de detecţie a

    intruziunilor şi ziduri antifoc

    3.1.1 Anomalii

    Mahoney şi Chan [15; 14] identifică cinci feluri de anomalii ı̂n traficul ostil:

    • Comportamentul utilizatorului. Traficul ostil poate avea o adresă sursă noua deoa-rece provine de la un utilizator neautorizat al unui serviciu restricţionat (protejatprin parolă). De asemenea, sondări de genul ipsweep1 şi portsweep2 [9] pot ı̂ncercasă acceseze calculatoare şi servicii inexistente, generând astfel anomalii ale adrese-lor destinaţie şi ale numerelor de porturi.

    1O baleiere se supraveghere pentru a determina ce maşini sunt active pe reţea. Informaţia este folositoare

    pentru a pregăti atacuri şi a cauta maşini vulnerabile.2Scanarea mai multor calculatoare ı̂n căutarea unui anumitport ı̂n starea de ascultare (LISTENING).

    Folosit ı̂n special pentru a cauta un anumit serviciu.

    11

  • 3 Metode de detectie

    • Exploatarea vulnerabilit̆aţilor.• Anomalii ale r̆aspunsurilor. Câteodată o ţintă generează trafic anormal ı̂n ieşire ca

    răspuns la un atac reuşit. De exemplu, acesta este cazul unui server de poştă elec-tronică care a căzut victima unui atac şi care trimite ı̂napoi spre atacator mesajelede la procesorul de comenzi aflat ı̂n mod root.

    • Erori ı̂n atac.Atacatorii trebuie de obicei să-şi implementeze singuri protocolulclient; ei nu reuşesc să duplice mediul ţintă fie din neglijenţă, fie fiindcă nu e ne-cesar. Spre exemplu, multe protocoale bazate pe mesaje text(d.e. FTP, SMTP şiHTTP) permit trimiterea comenzilor cu litere mari sau mici.Atacatorul ar puteafolosi literele mici, chiar dacă clienţii normali folosesc literele mari..

    • Evitarea. Atacatorii pot manipula deliberat protocoalele de reţeapentru a ascundeatacurile ı̂n raport cu IDS mai slabe care monitorizează nivelul aplicaţie. Astfel demetode includ fragmentarea IP, suprapunerea de segmente TCP care nu se potrivesc,folosirea deliberata de sume de control eronate, valori foarte mici ale TTLA etc.Asemenea evenimente trebuie sa fie rare ı̂n traficul normal.

    Detecţia anomaliilor se bazează pe existenţa unorprofile predefinitepentru activitatea nor-mală a utilizatorilor. Activitatea ”normală” este definită pe baza unor modelele statistice.

    3.1.2 Utilizarea improprie

    Utilizarea improprie se mai cunoaşte si sub numele de detecţie bazată pe semnături, deoa-rece alarmele de detecţie sunt generate pe baza semnăturilor specifice atacurilor. Acestesemnături cuprind un anumit trafic sau activitate bazata peactivitatea intruzivă obişnuită.De exemplu, ı̂n cazul serviciului de email, asemenea semnalmente ar fi: schimbările ı̂nfrecvenţa de recepţie a mesajelor şi schimbarea orelor normale de folosire a serviciului decătre utilizator.

    3.2 Metode de detecţie utilizabile ı̂n IDS şi ziduri

    antifoc

    De obicei IDS caută semnături predefinite ale evenimentelor nedorite din traficul de reţea.Regulile din IDS sunt verificate cu pachetele care trec prin senzori. Aceste IDS lucreazăca detectoarele relativ simple de viruşi. Avantajul este că rata de alarme fals pozitive esterelativ mică. Dezavantajele sunt: necesitatea adaptării continue a regulilor şi incapacita-tea de detecţie a atacurilor noi.

    O sursă importantă de informaţie sunt ”borcanele cu miere”. Lance Spitzner defineştetermenul de borcan cu miere ca ”o resursă de securitate a cărei valoare constă ı̂n faptulcă este sondată, atacată sau compromisă”. Resursa respectiva are doar scopul de a atrageatacatorii. Astfel, orice ı̂ncercare de comunicare cu sistemul este foarte probabil o son-dare, o scanare sau un atac. Invers, dacă borcanul cu miere iniţiază orice conexiune spre

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 12

  • 3 Metode de detectie

    exterior, acesta este un semnal că sistemul a fost probabilcompromis.Se pot asambla mai multe borcane cu miere ı̂n reţele numitehoneynets[8]. Datorităvastităţii datelor colectate prin ele, honeynets sunt considerate o unealtă utilă pentru aı̂nvăţa mai mult despre şabloanele de atac şi comportamentul atacatorului ı̂n reţelele decomunicaţie.

    3.2.1 Inspectarea pachetelor

    Filtrarea pachetelor reprezintă procesul de permitere sau de refuzare a trecerii traficu-lui dintre reţele pe baza informaţiilor din antetele fiec˘arui pachet de date. Regulile suntstabilite pe baza informaţiilor din pachet (cf. fig.3.1)

    ProtocolIP

    sursăIP

    dest.Port

    sursăPortdest.

    Numărsecv.

    NumărACK

    codHTTP GET, FTP

    PUT etc.

    Antet IP Antet TCP Date TCP

    Filtrarea pachetelor

    Inspecţia dinamică a pachetelor

    Figura 3.1: Inspectarea/filtrarea pachetelor

    Avantajele filtrăriistaticea pachetelor sunt:

    • Supraı̂ncărcare redusă / debit mare, apropiat de cel dat de hardware• Relativ ieftine sau chiar gratuite• Sunt bune pentru gestiunea traficului

    Dezavantajele filtrării statice a pachetelor sunt:

    • Permiterea conexiunilor directe ı̂ntre maşini din interior şi clienţi externi.• Porţile deschise ı̂n perimetrul reţelei rămân permanent deschise.• Devin repede ne-gestionabile ı̂n medii complexe.• Rămân vulnerabile la atacuri cum este falsificarea adresei sursă, dacă nu au fost

    special configurate să prevină acest lucru.• nu ofera autentificarea utilizatorilor.

    Cel mai evident dezavantaj al filtrării statice a pachetelor este că porţile trebuie sărămână deschise tot timpul pentru a permite trecerea traficului dorit, ceea ce expune cal-culatoarele interne, cu securitate mai slabă, la atacuri.

    Inspectarea pachetelor ţin ând seama de stare

    Filtrele de pachete dinamice permit/interzic trecerea pachetelor prin zidurile antifoc pebaza informaţiei din antetul de pachet. După trecerea unei serii de pachete prin zidul an-tifoc spre destinaţie, acesta interzice trecerea.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 13

  • 3 Metode de detectie

    Filtrarea pachetelor ţinând seama de stare ı̂ncearcă s˘a sesizeze informaţii din protocoa-lele de nivel mai ı̂nalt şi să adapteze regulile de filtrarepentru a se acomoda nevoilor spe-cifice protocolului respectiv (d.e. conexiuni simulate pentru protocoalele fară conexiunecum sunt serviciile NFS şi RPC). Filtrul de pachete cu starepăstrează informaţii desprestarea şi contextul unei sesiuni. tehnologia se poate aplica şi la protocolul UDP prin se-tarea unei sesiuni virtuale care creează iluzia securităţii acolo unde aceasta nu există.Înimplementarea originală de la Check Point modulul de inspecţie era amplasat ı̂ntre startulde legătură de date şi stratul de reţea din modelul OSI.

    Prin adăugarea urmăririi se sporeşte securitatea filtrului de bază, dar nu se face nimicı̂n privinţa conţinutului sau implicaţiilor traficuluitratat.

    Avantajele filtrării dinamice a pachetelor sunt:

    • Deschiderea doar temporară a trecerilor prin zidul antifoc.• Suportă aproape orice serviciu.• Supraı̂ncărcare redusă / debit mare.• Suporta aproape orice serviciu (d.e. FTP trebuie tratat special)• Cum filtrele de pachete nu sunt conştiente de aplicaţie, ele pot fi setate să permită

    trecerea oricărui tip de trafic prin zidul antifoc.

    Dezavantajele filtrării dinamice sunt:

    • Permit conexiuni directe ale clienţilor externi spre maşini din interior• Nu oferă autentificarea utilizatorilor• ı̂ncrederea este acordată unui sistem extern doar pe baza adresei sale de IP• Pot permite trecerea oricărui fel de trafic

    Inspectarea profund ă a pachetelor

    Motoarele DPI (Deep packet inspection) analizează ı̂ntregul pachet IP şi iau decizii re-feritoare la trimiterea mai departe a pachetului folosind ologica bazată pe reguli careutilizează fie semnătura fie potrivirea cu expresii regulate. Adică motoarele DPI comparădatele din ı̂ncărcătura utilă a pachetului cu o bază de date care conţine semnături (secvenţede octeţi) de atac predefinite.În plus, potrivirea statică poate fi completată cu algoritmistatistici sau detecţie pe baza istoricului.

    Analiza antetelor de pachet poate fi realizata economic de vreme ce poziţiile câmpurilordin antet sunt stabilite de standarde.În schimb, ı̂ncărcătura utilă este ı̂n general nesupus˘aconstrângerilor.Din acest motiv, căutarea de şabloanemultiple ı̂n fluxul de date este o sar-cină care costisitoare computaţional. Cerinţa ca aceste scanări sa se efectueze la debitulreţelei necesită cost suplimentar.În plus, datorita caracterului dinamic al bazei de date cusemnături, aceasta trebuie sa fie actualizabilă uşor.În categoria abordărilor promiţătoareale acestor probleme sunt abordarea bazată pe software dinSnort [16] şi una bazată pehardware – FPGA cu filtre bloom [5; 6].Abordarea lui Dharmapurikar et al. se bazează pe filtrele Bloom – structuri de date carestochează compact un set de semnături prin calcularea maimultor funcţii de dispersie

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 14

  • 3 Metode de detectie

    pentru fiecare membru al setului. Folosind tehnica respectivă, se interoghează apartenenţaunui anumit şir la un o baza de date de şiruri. Răspunsul poate fi aici fals pozitiv, dar ni-ciodată fals negativ. O proprietate importantă a acesteistructuri de date este că timpul deexecutare a interogării nu depinde de numărul de şiruri din baza de date dacă memoriafolosită de structura de date se scalează liniar cu numărul de şiruri pe care le stochează.Înplus, cantitatea de memorie necesară filtrului Bloom pentru fiecare şir este independentăde lungimea sa.Semnăturile sunt grupate după lungimea lor ı̂n octeţi şi stocate ı̂n filtre Bloom paralele.Ori de câte ori un filtru detectează un sir suspect, acesta se trimite unui analizor pentru adecide dacă şirul aparţine ı̂ntr-adevăr unui set dat sau este un fals pozitiv.

    Metoda DPI poate fi eficientă ı̂mpotriva atacurilor de tipuldepăşire de zona tampon,refuzul servirii, ı̂ncercări de intruziune relativ sofisticate şi un procent relativ redus deviermi care ı̂ncap ı̂ntr-un singur pachet.

    Zou et al.. [23] descriu o metodă de detecţie a ”tendinţei” folosind principiul ”detecţieitendinţei ı̂n traficul monitorizat, nu a maximului”. Detecţia tendinţei se face pe bazafaptului că la ı̂nceput viermele se propagă cu o rată exponenţială pozitivă, tendinţa carese detectează fiind această tendinţa de creştere exponenţială a traficului monitorizat. pebaza modelelor dinamice de propagare a viermelui se detecteazăpropagareaviermelui ı̂nfaza incipientă folosind algoritmi de estimare pentru un filtru Kalman3 Filtrul este acti-vat atunci când sistemul de monitorizare ı̂ntâlneşte o creştere semnificativă a activităţilorde scanare nelegitime.În momentul ı̂n care rata de infectare estimata de filtrul Kalmanse stabilizează aproximativ la o valoare pozitivă constantă autorii susţin că activităţile descanare nelegitime sunt cauzate ı̂n principal de un vierme.

    Schechter et al..[17] folosesc sistemul WDS (Worm Detection System) care proceseazăo mică parte din evenimentele din reţea numitecereri de conexiune de prim contact. Oasemenea cerere este un pachet (TCP sau UDP) adresat unei gazde cu care emiţătorul nua comunicat anterior.

    Chen şi Heidemann [4] prezintă un sistem de detecţie şi păstrare ı̂n siguranţă bazatpe ruter, numit DEWP (Detector for Early Worm Propagation).Acesta detectează intru-ziuni ale viermilor, creează semnaturi şi ı̂i reţine automat. DEWP aplică un algoritm noude detecţie prin potrivirea numerelor care identifică porturile destinaţie ı̂ntre conexiunilecare intră şi cele care ies. Această tehnică simplă surprinde caracteristici importante aletraficului de sondare al viermilor: viermii exploatează deobicei o vulnerabilitate a unuianumite serviciu şi astfel numărul portului destinaţieva fi proeminent ı̂n ambele sensuride trafic din cauza ı̂ncercării de a infecta cât mai multe sisteme vulnerabile cu putinţă.Pentru a distinge traficul legitim şi sondele viermilor şia evita alarmele fals pozitive,DEWP numără adresele destinaţie distincte spre porturile suspecte ale conexiunilor careies (N) şi identifică traficul viermilor atunci când apar creşteri mari ale luiN ( pe bazaipotezei că viermii vor să infecteze cât mai multe sisteme cu putinţă).

    3Filtrul Kalman este un filtru recursiv eficient care estimează starea unui sistem dinamic dintr-o serie de

    măsurători incomplete şi afectate de zgomot.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 15

  • 3 Metode de detectie

    Scanările repetate ale unui anumit port pot constitui o indicaţie a căutării unei vulnera-bilităţi.Majoritatea atacurilor necesită secunde pentru a compromite şi prelua un sistem vulnera-bil. Dar poate fi nevoie de săptămâni pentru a analiza şi documenta un asemenea atac [13].

    Kruegel et al. [11] prezintă o tehnică nouă de detecţie aanomaliilor destinată sistemelorde detecţie a intruziunilor la nivel de maşină care foloseşte informaţia conţinută ı̂n argu-mentele apelurilor sistem . Mecanismul descris de aceştiaeste bazat pe analiza specificăaplicaţiei a apelurilor menţionate. Modelele analizează caracteristici precum lungimeaşirului argument (determina distribuţia ”normală” a lungimilor), distribuţia caracterelordin aceste şiruri (apelurile conţin ı̂n majoritate litere, cifre şi câteva caractere speciale),inferenţa structurală, un căutător de tokeni (care identifică statistic un identificator ca fi-ind unic sau aparţinând unei enumerări). Sistemul este antrenat ı̂n două faze: prima ı̂ncare se determină profilele apelurilor şi a doua ı̂n care sedetermină valorile pragurilor deanomalie.

    Borders et al. [2] prezintă un sistem care colaborează cu IDS, menit să sprijine detecţiaatacurilor care mimează traficul normal. Sistemul injectează intrare special conceputăpentru a determina producerea unei secvenţe cunoscute de cereri ı̂n reţea, pe care le com-pară cu traficul real. Mesajele neaşteptate sunt marcate ca semn de intruziune. Sistemul afost capabil sa detecteze zece programe din categoria spyware.

    3.3 Metode specifice viruşilor

    3.3.1 Căutarea de secvenţe specifice

    Căutarea de secvenţe specifice este cea mai simplă metod˘a pentru detectarea viruşilor dincalculatoare [20, p.428]. Metoda foloseşte o secvenţă de octeţi extrasă (un şir) care estetipic virusului, dar care este improbabil să fie găsit ı̂n programe neinfectate. Secvenţeleextrase din viruşi sunt organizate ı̂n baze de date pe care motoarele de căutare a viruşilorle folosesc pentru a scana sistematic zone predefinite din fis¸iere şi din sistem pentru adetecta viruşii ı̂n timpul limitat permis pentru scanare.Într-adevăr, una dintre cele mai di-ficile sarcini ale unui motor de căutare a viruşilor este folosirea acestui timp limitat (uzualnu mai mult de câteva secunde pe fişier) ı̂ntr-un mod destulde ı̂nţelept pentru a reuşi.Un exemplu de asemenea secvenţă, pentru virusulStonedeste, ı̂n hexazecimal0400B801 020E 07BB 0002 33C9 8BD1 419C (codul este menit să citească sectorulde boot al dischetelor de până la 4 ori, cu resetare ı̂nainte de fiecare ı̂ncercare).În plus, un asemenea şir ar putea fi capabil să detecteze viruşi strâns ı̂nrudiţi care aparţinunei alte familii, diferite. Pe de o parte acest lucru este unavantaj, prin detectarea maimultor viruşi, pe de alta parte poate fi un dezavantaj major din cauza detectării incorectea unui virus ca fiind virusul Stoned. Astfel, utilizatorul poate crede că are de a face cu unvirus relativ inofensiv, iar virusul ı̂n cauză să fie unul mult mai distructiv.Problemele de identificare pot duce la consecinţe nedorite. De exemplu, dacă antivi-

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 16

  • 3 Metode de detectie

    rusul ı̂ncearcă să dezinfecteze codul detectat, dar neidentificat. Din cauza faptului cădezinfectările pentru doua familii diferite de viruşi, sau chiar pentru variante minore aleaceluiaşi virus sunt diferite, dezinfecţia poate crea probleme.

    Caractere pentru specificare global ă

    Caracterele pentru specificare globală sunt adesea suportate de scanerele simple. De obi-cei, caracterele pentru specificare globală permit neluarea ı̂n considerare a unor octeţisau a unei game de octeţi. Unele scanere permit chiar şi utilizarea expresiilor regulate.Un exemplu de asemenea secvenţă este:0400 B801 020E 07BB ??02 %3 33C98BD1 419C.

    Asemenea secvenţe de caractere de specificare globală sunt adesea suportate la nivelde semiocteţi pentru a permite potrivirea mai exactă a grupurilor de instrucţiuni. Uniiviruşi criptaţi din primele generaţii şi chiar viruşii polomorfi pot fi uşor detectaţi pe bazaunor asemenea secvenţe. Unul dintre algoritmii care au fost folosiţi pentru potrivire esteBoyer-Moore [3, p.91]. Dar,s-a constatat c̆a algoritmul Boyer-Moore nu funcţioneazăprea binêın IDS de reţea deoarece comparareaı̂napoi poate forţa comparareâın afarapachetului, lucru inutil.

    3.3.2 Nepotriviri ı̂n secvenţe

    Nepotrivirile ı̂n secvenţe au fost inventate pentru IBM Antivirus. Ele permit caN octeţidin şir să aibă orice valoare, indiferent de poziţia lorı̂n şir. Spre exemplu, şirul01 0203 04 05 07 08 09 cu un număr de 2 nepotriviri este şablon pentru

    01 02 AA 04 05 06 BB 08 09 0A 0B 0C 0D 0E 0F 10

    01 02 03 CC DD 06 07 08 09 0A 0B 0C 0D 0E 0F 10

    01 EE 03 04 05 06 07 FF 09 0A 0B 0C 0D 0E 0F 10

    Nepotrivirile sunt utile ı̂n special la crearea de detecţii generice pentru o familie deviruşi. Dezavantajul acestei metode este scanarea relativ lentă.

    3.3.3 Detecţia generic ă

    Detecţia generică caută mai multe sau toate variantele unei familii de viruşi folosind unşir simplu (ı̂n unele cazuri detecţie algoritmică, detecţie care necesită cod special pe lângăscanarea standard). Atunci când se cunoaşte mai mult de o variantă de virus, acestea secompară pentru a afla zone de cod comune. Se alege o căutare de şir simplă, şir care să seregăsească ı̂n cât mai multe variante posibile. Tipic, un şir generic conţine atât caracterepentru specificare globală cât şi nepotriviri.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 17

  • 3 Metode de detectie

    3.3.4 Funcţii de dispersie

    Funcţiile de dispersie desemnează un termen comun pentrutehnicile de rapidizare a algo-ritmilor de căutare.Evaluarea valorii de dispersie se poate face pe primul octetsau pe cuvinte de 16 sau de32 biţi din şirul de căutat. Aceasta permite ca octeţii următori să conţină caractere pen-tru specificare globală. Cercetătorii viruşilor pot controla evaluarea valorii prin selecţiaocteţilor de la ı̂nceput pe care să se calculeze valoarea.Spre exemplu, se pot evita primiiocteţi care sunt comuni ı̂n fişierele normale – octeţi de zero. Pentru a fi extrem de rapideunele scanere de şiruri nu acceptă nici un fel de caracter pentru specificare globală. Deexemplu, antivirusul australian VET foloseşte şiruri descanare de 16 octeţi (fără caracterepentru specificare globală) şi o tabelă de dispersie 64Koşi un registru de deplasare pe 8biţi. Algoritmul foloseşte fiecare cuvânt de 16 biţi al s¸irului ca index ı̂n tabelă.Algoritmul de dispersie al lui Frans Veldman din TBSCAN permite caractere pentru spe-cificare globală, dar foloseşte două tabele de dispersieşi o listă ı̂nlănţuită de şiruri co-respunzătoare. Prima tabelă conţine biţi de index pentru cea de a doua. Algoritmul sebazează pe folosirea a patru cuvinte constante de 16 sau 32 biţi ai şirurilor de scanare,care nu au caractere pentru specificare globală.

    3.3.5 Semne de carte

    Semnele de carte (numite şi octeţi de verificare) sunt o modalitate simplă de garantarea detectării şi dezinfectării mai exacte. De obicei se calculează o distanţă ı̂n octeţi ı̂ntreı̂nceputul corpului virusului (adesea numit şi octetul zero al corpului) şi şirul de detectareşi se memorează separat ı̂n ı̂nregistrarea de detectare avirusului. Semnele de carte bunesunt specifice dezinfecţiei virusului. Spre exemplu, ı̂n cazul viruşilor de boot, cinevaar prefera să aleagă un set de semne de carte care să pointeze la referinţe ale locaţiilorsectoarelor de boot stocate. Pentru cazul lui Stoned, distanţa ı̂ntre ı̂nceputul corpuluivirusului şi şir este de 65 octeţi. Sectorul de boot stocat depinde de mediul pe care estevirusul (disc rigid, dischetă), lucru semnalizat prin fanioane.

    3.3.6 Scanarea cap-şi-coad ă

    Scanarea cap-şi-coadă se foloseşte pentru rapidizareadetecţiei prin scanarea doar a ı̂nceputuluişi sfârşitului unui fişier. Spre exemplu, se scanează doar primii şi ultimii 2, 4, sau chiar8Ko ai fişierului, căutându-se fiecare poziţie posibil˘a. Acest algoritm este puţin mai bundecât cele folosite ı̂n primele implementări ale scanerelor – aceste erau similare cu pro-grame gengrep. Din cauza limitării impuse de viteza operaţiilor de I/O au fost căutatemetode de reducere a numărului de citiri de pe disc. Deoarece majoritate viruşilor maivechi fie prefixau, adăugau sau ı̂nlocuiau obiecte, scanarea cap-şi-coadă a devenit destulde populară.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 18

  • 3 Metode de detectie

    3.3.7 Scanarea punctului de intrare şi a punctelor fixe

    Scanarea punctului de intrare şi a punctelor fixe a făcut cascanerele să fie şi mai rapide.Acest fel de scanere folosesc avantajul cunoaşterii punctelor de intrare ale obiectelor,puncte cum sunt cele disponibile din antetele programelor executabile.În executabilelebinare nestructurate cum sunt fişierele COM din DOS, scanerele de acest fel urmărescdiferitele instrucţiuni care transferă controlul (cum sunt instrucţiunilejump şi call) şiı̂ncep scanarea la locaţia sper care pointează o astfel deinstrucţiune. Deoarece o astfelde locaţie este o ţintă comuna pentru virusi, asemenea scanere au avantaje majore. Altemetode de scanare, cum este scanarea cap-si-coadă trebuiesă mascheze şirurile (sau co-durile lor de dispersie) la fiecare poziţie a zonei scanate;scanerele cu puncte de intrare auo singură poziţie de mascat: ı̂nsuşi punctul de intrare.Să considerăm o zonă tampon de1Ko numităB. Numărul de poziţii de ı̂nceput pentru căutarea unui şir ı̂n B este1024–S,undeS este lungimea celui mai scurt şir de căutat.Chiar daca algoritmul de dispersie al scanerului este atâtde eficient ı̂ncât scanerul arenevoie să execute o căutare completa a şirului la o poziţie data doar 1% din timp, tim-pul de calcul poate creste repede potrivit cu numărul de şiruri. De exemplu, pentru 1000de şiruri scanerul ar avea nevoie să verifice 10 potriviri complete pentru fiecare poziţieposibilă. Astfel, valoarea(1024–S) × 10 poate fi considerat ca limita minimă de potri-viri care sunt necesare. Factorul1024–S poate fi redus folosind scanarea cu punct fix cuo singură poziţie de potrivire la punctul de intrare, ceeace reprezintă o diferenţa foartesemnificativă. Dacă pentru punctul de intrare nu există s¸iruri suficient de bune, atunci sepoate folosi scanarea cu punct fix.Scanarea cu punct fix foloseşte câte o poziţie de potrivire pentru fiecare şir. Astfel esteposibil să se seteze poziţia de startM (de exemplu, punctul principal de intrare din fişier)şi apoi să se potrivească fiecare şir (sau valoare de dispersie) la poziţiileM + X octeţidistanţa de acest punct fix. Timpul de calcul este redus deoarece valoare luiX este, deobicei 0.În plus se reduce volumul de I/O.Scanerele de a doua generaţie folosesc identificarea exactă şi aproape exactă, ceea ce ajutăla rafinarea detecţiei viruşilor şi a altui cod ostil.

    3.3.8 Scanarea inteligent ă

    Scanarea inteligentă a fost introdusă după apariţia kit-urilor mutatoare de viruşi. Ast-fel de kit-uri lucrează cu fişiere sursă ı̂n limbaj de asamblare. Ele ı̂ncearcă să inse-reze instrucţiuni fară efect (junk instructions), cum sunt instrucţiunile care nu fac nicio operaţie (NOP instructions). Virusul recompilat arata foarte diferit de original deoarecemulte deplasamente se schimbă ı̂n virus.Scanarea inteligentă sare peste instrucţiunile gen NOP din programul infectat şi nu reţineasemenea instrucţiuni ı̂n semnătura virusului. Se face un efort pentru a alege zona dincorpul virusului care nu are referinţe la date sau alte subrutine. Acest lucru ı̂mbunătăţeşteprobabilitatea de detectare a unei variante ı̂nrudite apropiat a virusului. Tehnica este deasemenea utilă la tratarea viruşilor care apar ı̂n forma de text, cum sunt viruşii de macroşi cei din scenarii. Aceşti viruşi pot fi uşor de modificatprin adăugarea de spaţiu albsuplimentar (spaţiu, CR/LF, TAB, etc). Asemenea caractere pot fi eliminate din zonele

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 19

  • 3 Metode de detectie

    tampon scanate folosind scanarea inteligentă, lucru carecreste capabilităţile de detecţieale scanerului.

    3.3.9 Detecţia scheletului

    Detecţia scheletului a fost inventată de Eugene Kaspersky. Metoda are utilitate ı̂n specialla detecţia familiilor de viruşi de macro. Scanerul parcurge macroinstrucţiunile linie culinie şi elimină toate elementele neesenţiale ı̂mpreuna cu spatiile albe. Rezultatul esteun ”schelet” al corpului macrodefiniţiei care conţine numai cod esenţial care apare deobicei ı̂n viruşii de macrodefiniţii. Apoi această informaţie este folosită pentru detectareaviruşilor rezultatul fiind ı̂mbunătăţirea detectării variantelor din aceeaşi familie..

    3.3.10 Identificarea aproape exact ă

    Identificarea aproape exactă se foloseşte pentru a detecta mai precis viruşii. Spre exem-plu, se foloseşte detecţia cu doua şiruri pentru fiecare virus. În cazul virusului Stoned sepoate folosi următorul şir rezultat din dezasamblare:0700 BA80 00CD 13EB 4990B903 00BA 0001.Scanerul poate detecta o varianta a lui Stoned dacă se detectează un şir şi poate refuzasă dezinfecteze pentru că acesta poate fi cazul unei variante posibil necunoscute de viruscare nu se poate dezinfecta corect. Ori de câte ori sunt găsite ambele şiruri virusul esteidentificat aproape exact. Cu toate acestea el poate fi o variantă, dar repararea are şansemai mari să corespundă. Metoda este sigura dacă se folosesc si semne de carte suplimen-tare.O alta metodă de identificare aproape exacta se bazează pe folosirea unei sume de control(cum este CRC32) pe o zonă aleasă din corpul virusului. Tipic, se alege o zonă din corpulvirusului şi se recalculează suma de control a octeţilordin zona respectivă. Avantajul me-todei este o mai mare acurateţe datorată lungimii sporitea zonei care poate fi aleasă fărăa supraı̂ncărca baza de date a antivirusului.Scanerele de generaţia a doua pot obţine identificarea aproape exactă fără a folosi şiruripe care să le caute, ci bazându-se pe sume de control criptografice sau valori de dispersie.

    3.3.11 Identificarea exact ă

    Identificarea exactă este singura cale care garantează faptul că scanerul detectează pre-cis variantele de virus. Metoda este de obicei combinată cutehnici din prima generaţie.Identificarea exacta foloseşte câte zone sunt necasare pentru a calcula o suma de controlpentru toţi biţii constanţi din corpul virusului. Pentru aceasta sunt eliminaţi toţi octeţiivariabili din corpul virusului şi se creează o hartă a tuturor octeţilor constanţi.

    Câteva contramăsuri folosite ı̂mpotriva detecţiei bazate pe analiza semnăturii sunt:criptareavirusului cu o cheie variabilă; generareapolimorfic̆a a rutinei de decriptare; ge-

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 20

  • 3 Metode de detectie

    nerareametamorfic̆a a ı̂ntregului corp al virusului prin adăugarea, ı̂nlăturarea, permutareaşi substituirea de secvenţe de cod; ı̂mpachetarea.

    3.3.12 Metode de scanare algoritmice

    termenulscanare algoritmic̆a este puţin derutant, dar ı̂n orice caz este larg folosit. Ori decâte ori algoritmul standard al scanerului nu poate trata un virus, trebuie introdus cod nou,specific virusului; termenulalgoritm de detecţie specific virusuluiar fi deci mai potrivit.Primele implementări ale scanării algoritmice au fost rutine fixe specifice pentru detecţiefolosite ı̂mpreună cu algoritmul de detecţie general. Din cauza interpunerii ı̂n cod a unormici rutine speciale de detecţie specifice unei platforme,codul era greu de portat. Apoi auapărut probleme de stabilitate – scanarea algoritmica putea provoca blocarea scaneruluidin cauza grabei cu care trebuia realizat noul cod. Soluţias-a dovedit a fi unlimbaj descanare a viruşilor. În forma sa cea mai simplă, un asemenea limbaj permite operaţiide căutare şi citire ı̂n obiectele scanate. Astfel, se poate efectua o căutare algoritmică deşir la o anumită locaţie ı̂nainte de la ı̂nceputul sau ı̂napoi de la sfârşitul fişierului, sau dela punctul de intrare; se citesc octeţi cum sunt şablonul unei instrucţiunicall; se cal-culează locaţia spre care pointează respectiva instrucţiune şi se ı̂ncearcă potrivirea unorbucăţi de cod, una câte una. Unele scanere, cum este KAV (Kaspersky Anti Virus), auintrodus cod obiect ca parte a unei baze de date imbricate pentru detecţia viruşilor. Ruti-nele de detecţie pentru fiecare virus sunt scrise ı̂n cod C portabil, iar codul obiect pentruaceste rutine de detecţie este stocat ı̂n baza de date a scanerului. Scanerul implementeazăun ı̂ncărcător asemănător celui din sistemul de operare şi editarea de legături pentru toateobiectele folosite la detecţia specifica. Acestea sunt executate unul după altul potrivit uneiordini predefinite. Metoda are ca avantaj performanţele sporite, iar ca dezavantaj risculde instabilităţi minore din cauza timpului de răspuns mic la apariţia unui nou virus (potapărea erori de codificare). Pentru a elimina această problemă, scanarea algoritmica estemai recent implementată sub forma de cod portabil asemăn˘ator cu Java, folosind o maşinavirtuală. Metoda este folosită de Norton AntiVirus şi are avantajul unei mari portabilităţi.Dezavantajul ı̂l reprezintă execuţia relativ lentă a codului portabil ı̂n comparaţie cu codulmaşina real (chiar de sute de ori mai lentă). Rutinele de detecţie pot fi implementate ı̂nlimbaje asemănătoare limbajelor de asamblare cu macroinstrucţiuni de nivel ı̂nalt. Ase-menea rutine pot furniza funcţii de scanare care să caute grupuri de şiruri ı̂ntr-o singuracăutare sau pot converti adresele virtuale şi cele fizice ale fişierelor executabile. Totuşi,mai important pentru aceste scanere este să fie optimizate folosind filtrarea.În plus, caultimă linie de apărare codul de detecţie poate fi implementat ı̂ntr-un motor de scanareextensibil, folosind cod nativ.̂In viitor este de aşteptat ca scanerele algoritmice să imple-menteze un sistem JIT (just-in-time) pentru a compila rutinele bazate pe codul portabil(p-code) pentru arhitecturi reale, ı̂n mod asemănător cadrului .NET al lui Microsoft.

    3.3.13 Filtrarea

    Ideea din spatele filtrării este că viruşii infectează de obicei un subset al obiectelor cunos-cute. De exemplu, viruşii de boot infectează doar sectorul de boot. Astfel, se poate folosi

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 21

  • 3 Metode de detectie

    un fanion suplimentar ı̂n şir (sau ı̂n rutina de detecţie)pentru a indica dacă semnătura res-pectivă este de aşteptat să apara ı̂n obiectul scanat. Aceasta reduce numărul de potriviripe care trebuie să le ı̂ncerce scanerul.În special scanarea algoritmică se bazează puternicpe filtrare.Un filtru poate fi orice element specific virusul: tipul de executabil, marcajele de identifi-care ale virusului ı̂n antetul obiectului scanat, caracteristici suspecte ale secţiunii de codsau ale numelor secţiunilor de cod ş.a.m.d. Din nefericire, unii viruşi lasă puţine posibi-lităţi de filtrare.O altă problemă o constituie viruşii evoluţionari: aceştia pot fi detectaţi doar ocazionalfolosind şiruri sau caractere de specificare globale.În schimb, ei pot fi mai bine detectaţifolosind un decriptor generic (bazat pe o maşină virtual˘a) pentru a decripta codul viru-sului şi a detecta un eventual corp constant folosind şiruri sau alte metode cunoscute.Aceste metode nu funcţionează ı̂ntotdeauna. De exemplu,viruşii EPO şi cei antiemu-lare sunt o provocare pentru asemenea tehnici. Pentru ei trebuie aplicate tehnici de genulanalizei motorului decriptor/polimorfic. Chiar viruşi caW32/Gobi12 pot fi detectaţi fo-losind o asemenea metodă. (Analizarea decriptorului ı̂nseamnă pur şi simplu că trebuieverificaţi câţiva decriptori polomorfi şi trebuie potrivite şabloanele de cod ale decriptoru-lui cu maşina polimorfică. Astfel, chiar decriptorul poate fi detectat de multe ori folosinddetecţia algoritmică.)Următoarele elemente de verificare se pot folosi pentru o filtrare eficientă:

    • Numărul de octeţi de zero dintr-o porţiune de fişier undese aşteaptă să fie plata unvirus. De exemplu, ultimii câţiva kiloocteţi din fişierele ı̂n format PE conţin adeseamai mult de 50% octeţi de zero.Într-un virus ı̂ncriptat, numărul octeţilor nuli va fiadesea sub 5%.

    • Modificările de fanioane şi dimensiuni din antetul de sect¸iune. Unii viruşi mar-chează secţiunile ca fiind modificabile (writeable), iar alţii schimba ı̂n mod asemănătorcâmpuri importante la valori atipice.

    • Caracteristicile fişierelor. Unii viruşi nu infecteazăaplicaţiile care se lansează ı̂nlinie de comandă; alţii nu infectează bibliotecile legate dinamic sau driverele sistem.

    3.3.14 Detecţia static ă a decriptorului

    Apar probleme atunci când corpul virusului este criptat variabil, deoarece gama de octeţifolosibili pentru identificarea virusului este foarte limitată. Detecţia decriptorului poate fifolosita şi la detectarea viruşilor polomorfi. Chiar şi maşinile mutatoare foarte puternice,cum esteMtE folosesc cel puţin un octet constant ı̂n decriptor, ceea ceeste suficientpentru a ı̂ncepe detecţia algoritmica folosind un dezasamblor şi se poate profila codul.MtE foloseşte o instrucţiunejump condiţionala constanta la o locaţie variabilă. Codul deoperaţie al acestei instrucţiuni este0x75 – codul unei instrucţiuni JNZ. Operandul acesteiinstrucţiuni pointează ı̂ntotdeauna ı̂napoi ı̂n cod şiidentifică sămânţa decriptorului. Apoiı̂nsăşi sămânţa poate fi analizată pentru a afla toate modurile ı̂n care virusul ı̂şi decripteazăcorpul, ignorând condiţiile nesemnificative. Acest lucru ia mult timp, dar este adeseasingura metodă de detecţie a unor asemenea viruşi.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 22

  • 3 Metode de detectie

    3.3.15 Metoda cu raze X

    Se pot examina motoarele polimorfice ale viruşilor avansat¸i şi se pot identifica metodelereale de criptare folosite. Metodele simple cum sunt XOR, ADD, ROR ş.a.m.d.se folosescadesea ı̂mpreună cu chei de 8, 16 sau 32 biţi. Uneori, decriptorul virusului foloseşte maimulte straturi criptate cu aceeaşi metodă (sau chiar cu metode diferite) pentru a codificaun singur octet, cuvânt sau dublu-cuvânt. Atacarea codificării virusului se numeştesca-nare cu raze X. Scanarea cu raze X aplică toate metodele de criptare ı̂ntr-un singur startasupra unor zone de fişier alese cum sunt ı̂nceputul, sfârs¸itul şi un punct apropiat punc-tului de intrare. Scanerul poate ı̂ncă folosi siruri simple pentru a detecta viruşi criptaţi şichiar unii virusi polomorfi dificili. Problema acestei metode apare atunci când nu se poategăsi ı̂nceputul corpului virusului la o locaţie fixă şi trebuie efectuat atacul asupra decripto-rului pe o zonă de fişier lungă – ceea ce duce la ı̂ncetinirea procesului. Beneficiul metodeieste decriptarea completa a codului virusului, ceea ce faceposibilă repararea chiar dacainformaţia necesară reparării este stocata criptat. Metoda poate adesea detecta instanţe deinfecţii care au decriptoare de formă, cu condiţia ca respectivul corp al virusului să fi fostplasată ı̂n fişier criptat exact. Unii viruşi polomorfi generează decriptori de forma care nureuşesc să decripteze virusul; dar, criptarea este adesea corectă chiar şi ı̂n aceste cazuri.Atari exemple sunt detectabile prin metoda cu raze X, dar nu sunt accesibile tehnicilorbazate pe emulare care au nevoie de un decriptor funcţional.Pentru a decripta codul unui virus trebuie implementate următoarele cinci metode de de-criptare [20, p.448] Aicis este octetul decriptat dintr-o poziţie referită dep; t este octetulcriptat;k este cheia de decriptare a octetuluit; q este variabile de deplasare a cheii careimplementează schimbările cheii constante. Variabiles este egală cu octetul decriptat prinmetoda aleasă:

    1. s = t XOR k şi apoik = k + q2. s = t ADD k şi apoik = k + q3. s = t XOR k şi apoik = s + q4. s = NEG(t XOR k) şi apoik = k + q5. s = NOT (t XOR k) şi apoik = k + q

    3.3.16 Emularea codului

    Emularea codului se realizează prin implementarea unei maşini virtuale care să simulezeexecuţia codului. Codul ostil este executat simulat ı̂n maşina virtuală a scanerului. Teh-nica se aplică ı̂n special viruşilor polimorfi.Detectarea viruşilor polomorfi se poate face prin examinarea conţinutul memoriei maşiniivirtuale după un număr maxim de iteraţii predefinit sau ori de câte ori se ı̂ntâlneşte o altăcondiţie de oprire. Deoarece viruşii polimorfi de auto-decriptează, după un număr de pasisuficient de mare, ei vor fi prezenţi ı̂n memoria maşinii virtuale. Întrebarea capitală estecând sa se stopeze emulatorul. De obicei sunt folosite urm˘atoarele metode:

    • Urmărirea instrucţiunilor active. Instrucţiunile active sunt cele care modifică valo-rile din memoria maşinii virtuale. Instrucţiunea devineactivă atunci când apar douămodificări adiacente ale memoriei. Emulatorul poate executa instrucţiunile până la

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 23

  • 3 Metode de detectie

    un număr de iteraţii predefinit – un sfert de milion, o jumătate sau chiar un milionde iteraţii. Decriptoarele de lungime redusă genereazăde obicei un număr marede instrucţiuni active. Cei de lungime mai mare includ multcod inutil generat –instrucţiunile active sunt mai puţin frecvente.

    • Urmărirea decriptorului folosind profile. Metoda foloses¸te profilul exact al fiecăruidecriptor polimorfi. Majoritatea motoarelor polimorfe folosesc puţine instrucţiuniı̂n decriptor. Astfel, prima dată când se execută o instrucţiune care nu este ı̂n profileste executată prima instrucţiune decriptată. Acest moment poate fi folosit pentru aopri emulatorul şi a ı̂ncerca detectarea virusului.

    • Stoparea la puncte de ı̂ntrerupere. Se definesc câteva puncte de ı̂ntrerupere ı̂n emu-lator. Spre exemplu se poate folosi o instrucţiune sau o valoare de dispersie pentrucâteva instrucţiuni din fiecare virus polimorfi pentru a opri execuţia emulatorului oride câte ori este probabil să fie executat corpul decriptat al virusului. Alte condiţiipot fi prima ı̂ntrerupere sau prima invocare de API, fiindcă viruşii polimorfi nu lefolosesc de obicei ı̂n decriptori (unii viruşi antiemulare le folosesc...).

    Tehnica aceasta este cea mai puternică dintre cele folosite la detecţia viruşilor polimorf.Se poate aplica la viruşi metamorfi care folosesc straturi de criptare.

    Garfinkel şi Rosenblum [7] folosesc ideea de introspecţiea maşinii virtuale ca metodăde construcţie a unui HIDS (Host IDS). Ei folosesc o maşin˘a virtuală (o versiune modifi-cată de VMWare) pentru a izola IDS de maşina gazdă. Se analizează activitatea maşiniigazdă prin observarea directă a stării hardware şi deducerea stării software pe baza unorcunoştinţe ”a priori” referitoare la structura acestuia. Conform autorilor, aceasta permiteIDS să-şi păstreze capacitatea de a ”vedea” ce se ı̂ntâmplă, ı̂i conferă o rezistenţă mare laevitare la compromiterea gazdei, rezistenţă la atacuri prin gradul ridicat de izolare şi capa-citatea de a media accesul la hardware-ul maşinii gazdă, permiţând impunerea politicilorde control hardware a accesului pentru evitarea compromiterii totale a gazdei. Arhitec-tura, susţin autorii este practica şi fezabilă folosindtehnologia curentă.

    3.3.17 Detecţia dinamic ă a decriptorului

    O tehnică relativ nouă de scanare combină emularea cu detectarea decriptorului. Pentruviruşi cu bule mai lungi emularea este relativ lentă. Dar se poate identifica punctul deintrare posibil ı̂n decriptor ı̂n funcţie de virus.În timpul emulării se poate verifica dacăs-a modificat ı̂ntr-o manieră suspectă memoria maşinii virtuale. Atunci poate fi executatcod de scanare suplimentar, care să verifice care instrucţiuni au fost executate pe durataunui număr limitat de iteraţii. Mai mult, instrucţiunile executate pot fi profilate şi se poateidentifica un set esenţial de instrucţiuni al decriptorului. Spre exemplu, un virus carefoloseşte ı̂ntotdeauna decriptarea XOR va executa un num˘ar mare de instrucţiuni XOR ı̂ndecriptorul său, iar anumite instrucţiuni nu vor fi executate de loc – acestea pot fi folositepentru excluderi. Combinaţia includeri-excluderi va da un excelent profil pentru viruşiipolomorfi. Tehnica nu poate fi folosită la reparare din cauzatimpului necesar emulăriicomplete.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 24

  • 3 Metode de detectie

    3.3.18 Emularea codului

    O tehnică relativ nouă de detectare a viruşilor polimorffoloseşte tehnici de optimizare acodului pentru a reduce decriptorul polimorf la un set esent¸ial de instrucţiuni. Tehnicaeste eficientă pentru viruşii polimorfi simpli.

    3.3.19 Detecţia geometric ă

    Detecţia geometrică este tehnica de detecţie bazată pealterările pe care le face virusulstructurii fişierului. Metoda s-ar putea numi şi euristica formei pentru ca nu este preaexacta şi este susceptibila la alarme fals pozitive. Totus¸i, modificările de structură alefişierelor pot fi şi din cauza compresiei executabilului respectiv. Viruşii care afecteazăfişiere se bazează adesea pe marcaje pentru a evita infectarea multiplă. Asemenea indiciisunt utile ı̂mpreuna cu detecţia geometrică, dar riscul de fals pozitive doar se reduce, nudispare.

    3.3.20 Analiza euristic ă a viruşilor de Windows pe 32 biţi

    Analiza euristică s-a dovedit de succes ı̂n descoperirea viruşilor noi. Cel mai mare dez-avantaj al scanerelor cu analizor euristic este ca adesea g˘asesc false pozitive.̂In unelecazuri sunt cu adevărat utile – de exemplu pentru viruşii de macrodefiniţii. Şi ı̂n cazulviruşilor binari este utilă, dar riscul detectării falspozitive este adesea mai ridicat decâtı̂n cazul viruşilor de macro. Capabilităţile analizoarelor euristice trebuie reduse până laun nivel la care numărul de alarme fals pozitive nu este preamare, iar scanerul este totuşicapabil să detecteze un număr rezonabil de viruşi. Euristicile sunt foarte strâns legatede ı̂nţelegerea tehnicilor de infectare reale ale unui anumit tip de virus. Viruşi de tipuridiferite necesită reguli complet diferite. Metoda uzualade realizare a euristicilor binareeste să se emuleze execuţia programului şi să se caute combinaţii de cod suspecte.

    Schultz et al. [18] au proiectat un cadru pe baza algoritmilor de minerit ı̂n date pen-tru a antrena mai multe clasificatoare pe un set de executabile ostile şi beningne pentru adetecta cod ostil nou. Folosind tehnici statistice de validare ı̂ncrucişată standard autoriisusţin că rata de detecţie a atins 97.76%, adică mai multde dublul unui scaner bazat pesemnături. Comparaţia cu produse de pe piată nu s-a pututı̂nsă face.

    Abou-Assaleh et al. [1] propun o metodă bazată pen−grame (toate subşirurile unuifişier de lungime fixă,n) – analiza CNG (Common N-Gram) folosită cu succes la atribui-rea automată a autorului unui text precum şi ı̂n alte domenii.N−gramele de un octet ale unui fişier sunt subşiruri care se suprapun, şi care sunt co-lectate cu o metoda ferestrei alunecătoare (glisante), ı̂n care fereastra de dimensiunenglisează câte un octet.̂In concordanţă, acesten−grame nu surprind doar statistici des-pre subşirurile de lungimen ci surprind şi frecvenţele subşirurilor mai lungi (fenomenobservat ı̂n prelucrarea limbajului natural). Acesten−grame au abilitatea de a surprindetrăsături implicite ale intrării care sunt greu de detectat explicit. Cum o mulţime de autoride viruşi folosesc instrumente pentru a scrie şi compila codul virusului,n−gramele pot

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 25

  • 3 Metode de detectie

    detecta codul specific unei unelte/familii de unelte inclusiv generatoare de cod, compila-toare şi medii de programare. Ele ar putea surprinde chiar s¸i trăsături specifice autorilor– stilul de codificare sau chiar comportament. Fiind dată o bază de date cu cod ostil şibenign, se poate folosi analizan−gramelor pentru a extrage cele mai frecventen−grameşi a le folosi ca semnături.Rezultatele obţinute pe un set relativ restrâns de date arată orată de precizie ı̂n jurul a 90%.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 26

  • Cred c̆a viruşii calculatoarelor ar trebui consideraţi forme de

    viaţă. Cred c̆a ei spun ceva despre natura umană şi anume c̆a

    singura form̆a de viaţa pe care am creat-o până acum este pur

    distructiv̆a. Am creat viaţ̆a dup̆a chipul şi asem̆anarea noastr̆a.

    Stephen Hawking

    4Concluzii

    • Viteza de propagare a infecţiilor a crescut foarte mult. Timpul de răspândire a unuivierme la nivel global poate fi de doar un minut.

    • În majoritatea cazurilor detecţia se poate face post factum, pe baza efectelor coduluiostil

    • Detecţia pe bază de semnături este ı̂mpiedicată de contramăsuri: ı̂mpachetarea co-dului, criptarea, utilizarea polimorfismului, transform˘arile metamorfe.

    • Complexitatea detectării creşte: timpul de calcul necesar este din ce ı̂n ce mai mare,putând fi necesare chiar maşini virtuale pentru execuţiesimulată (mai ales pentruviruşi/viermi) metamorfi.

    • Viruşii pot recunoaşte că sunt executaţi pe maşini virtuale şi s-ar putea chiar inter-pune ı̂ntre hardware şi maşina virtuală [10].

    • Informaţia completă necesară detecţiei viruşilor este rareori disponibilă la nivelulpachetelor singulare. Aceasta face ca detecţia ı̂n NIDS (Network IDS) să fie practicimposibilă la nivelul NIDS. Excepţii sunt cazurile ı̂n care se poate determina osemnătură constantă pentru virus.

    • În HIDS (Host IDS) posibilităţile sunt mai numeroase (mergând până la virtualiza-rea hardware), dar cu consumul de resurse suplimentare necesitate de HIDS.

    Direcţiile care vor fi dezvoltate ı̂n teză, ı̂n legăturăcu tema acestei lucrări sunt:

    • Senzori noi pentru detecţia atacurilor la nivelul NIDS andHIDS.

    27

  • 4 Concluzii

    • Corelarea alertelor ı̂ntre senzori pentru reducerea numărului de alarme fals pozitive.• Realizarea unui mediu de simulare pentru testarea elementelor de mai sus.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 28

  • Bibliografie

    [1] Tony Abou-Assaleh, Nick Cercone, Vlado Kešelj, and RaySweidan. Detection ofNew Malicious Code Using N-grams Signatures. Inthe Second Annual Conferenceon Privacy, Security and Trust (PST’04), pages 193–196, Fredericton, NewBrunswick, Canada, October 13–15 2004.

    [2] Kevin Borders, Xin Zhao, and Atul Prakash. Siren: Detecting evasive malware. In2006 IEEE Symposium on Security and Privacy, May 21-24, 2006 The ClaremontResort Berkeley/Oakland, California, USA, May 21–24 2006.

    [3] Christian Charras and Thierry Lecroq.Handbook of Exact String MatchingAlgorithms. King’s College London Publications, 2004.

    [4] Xuan Chen and John Heidemann. Detecting Early Worm Propagation throughPacket Matching. Technical Report ISI-TR-2004-585, USC/Information SciencesInstitute, February 2004.

    [5] Sarang Dharmapurikar, Praveen Krishnamurthy, Todd Sproull, and JohnLockwood. Deep Packet Inspection Using Parallel Bloom Filters. InSymposium onHigh Performance Interconnects (HotI), pages 44–51, Stanford, CA, USA, August20–22 2003.

    [6] Sarang Dharmapurikar, Praveen Krishnamurthy, Todd Sproull, and JohnLockwood. Longest Prefix Matching Using using Bloom Filters. In ACMSIGCOMM’03, Karlsruhe, Germany, August 25–29 2003.

    [7] Tal Garfinkel and Mendel Rosenblum. A Virtual Machine Introspection BasedArchitecture for Intrusion Detection. InNetwork and Distributed Systems SecuritySymposium, February 2003.

    [8] HoneyNet Project. Intrusion Detection, Honeypots and Incident HandlingResources. http://www.honeypots.net/.

    [9] K. Kendall. A database of computer attacks for the evaluation of intrusiondetection systems. Master’s thesis, MIT Department of Electrical Engineering andComputer Science, June 1999.

    29

  • Bibliografie

    [10] Samuel T. King, Peter M. Chen, Yi-Min Wang, Chad Verbowski, Helen J. Wang,and Jacob R. Lorch. SubVirt: Implementing malware with virtual machines. InThe2006 IEEE Symposium on Security and Privacy, May 2006.

    [11] Christopher Kruegel, Darren Mutz, Fredrik Valeur, andGiovanni Vigna. On theDetection of Anomalous System Call Arguments. In Springer Verlag, editor,8thEuropean Symposium on Research in Computer Security (ESORICS), LNCS,Norway, October 2003.

    [12] John Levine, Brian Culver, and Henry Owen. A Methodology for Detecting NewBinary Rootkit Exploits. InIEEE SouthEast Conference, Ocho Rios, Jamaica,April 2003.

    [13] John Levine, Richard LaBella, Henry Owen, Didier Contis, and Brian Culver. TheUse of Honeynets to Detect Exploited Systems Across Large Enterprise Networks.In the 2003 IEEE Workshop on Information Assurance, United States MilitaryAcademy, West Point, NY, June 2003.

    [14] Matthew V. Mahoney. Network Traffic Anomaly Detection Based on Packet Bytes.In ACM Symposium on Applied Computing (SAC 2003), Melbourne, Florida, USA,March 9–12 2003.

    [15] Matthew V. Mahoney and Philip K. Chan. Learning Models of Network Traffic forDetecting Novel Attacks. Technical report, Florida Institute of Technology, 2002.

    [16] Martin Roesch. Snort – Lightweight Intrusion Detection for Networks. InProceedings of the USENIX LISA’99 conference, 1999.

    [17] Stuart E. Schechter, Jaeyeon Jung, and Arthur W. Berger. Fast Detection ofScanning Worm Infections. Inrecent Advances in Intrusion Detection (RAID2004), volume 3224 ofLNCS, pages 59–81. Springer Verlag, 2004.

    [18] M. Schultz, E. Eskin, E. Zadok, and S. Stolfo. Data mining Methods for Detectionof New Malicious Executables. InIEEE Symposium on Security and Privacy,pages 178–184, 2001.

    [19] Ed Skoudis and Lenny Zeltser.Malware: Fighting Malicious Code. The RadiaPerlman Series in Computer Networking and Security. Prentice Hall, November2003.

    [20] Peter Szor.The Art of Computer Virus Research and Defense. Addison WesleyProfessional, February 2005.

    [21] Harold Thimbleby, Stuart Anderson, and Paul Cairns. A framework for modellingTrojans and computer virus infection.The Computer Journal, 41(7):444–458,1999.

    [22] N. Weaver, V. Paxson, S. Staniford, and R. Cunningham. ATaxonomy ofComputer Worms. InThe First ACM Workshop on Rapid Malcode (WORM),Washington, DC, USA, 2003. ACM Press.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 30

  • Bibliografie

    [23] C. Zou, W. Gong, D. Towsley, and L. Gao. The Monitoring and Early Detection ofInternet worms. To appear in IEEE/ACM Transaction on Networking, 2007.

    [24] Cliff C. Zou, Don Towsley, Weibo Gong, and Songlin Cai. Routing Worm:AFast,Selective Attack Worm based on IP Address Information. In Proceedings ofthe Workshop on Principles of Advanced and Distributed Simulation (PADS ’05),2005.

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 31

  • AUnelte

    Uneltele prezentate pe scurt aici sunt din categoria open-source/GPL.

    A.1 AIDE (Advanced Intrusion Detection

    Environment)

    AIDE este un program sub licenţă GPL disponibil gratuit lahttp://sourceforge.net/projects/aide.Programul, destinat sistemelor de tip Unix, apărut ca urmare a trecerii ı̂n versiune comer-cială a lui Tripwire, operează prin crearea unei baze de date cu fişiere specificate. Atri-butele conţinute ı̂n baza de date sunt: permisiunile, num˘arul de inod, utilizatorul, grupul,dimensiunea fişierului, momentul modificării (mtime), momentul accesului(atime), di-mensiunea de creştere şi numărul de legături. Programul are o serie de neajunsuri. RamiLehti, ı̂n manualul AIDE, declară că ”din nefericire, AIDE nu poate oferi siguranţă abso-lută referitor la modificările de fişiere. Ca orice alte fis¸iere sistem, fişierele AIDE pot fimodificate.”

    32

  • A Unelte

    A.2 Chkrootkit

    Programul rulează un scenariu care verifică anumite fişiere sistem pentru a detecta instala-rea unui rootkit. De asemenea verifică dacă interfeţele de reţea au fost setate ı̂n modul pro-miscuu – luc ru desea folositr de atacatori. Chkrootkit estedisponibil la http://www.chkrootkit.org.

    A.3 System for Internet-Level Knowledge (or SiLK)

    SiLK reprezintă o colecţie de instrumente pentru achizit¸ia şi analiza fluxului de date ı̂nreţele. Acesta conţine instrumente pentru ı̂nţelegerea, interogarea şi rezumarea datelo detrafic (recente sau acumulate istoric) reprezentate ca fluxuri ı̂n reţea. Unealta se găseştela http://tools.netsa.cert.org/silk/ şi a fost dezvoltată de Network Situational AwarenessGroup (de la Software Engineering Institute (SEI) Universitatea Carnegie Mellon).

    A.4 Snort

    Sistemul de detecţie a intruziunilor (http://www.snort.org), open source, Snort poate ficonfigurat să ruleze in trei moduri:

    • Modul sniffer, ı̂n care pur şi simplu citeşte pachetele din reţea şi leafişează continuupe consolă.

    • Jurnalizare de pachete,ı̂n care jurnalizează pachetele pe disc.• Sistem de detecţie a intruziunilorı̂n reţea (NIDS),cea mai complexă şi configurabilă

    configuraţie, care permite Snort să analizeze traficul de reţea pe baza unui set dereguli definite de utilizator şi s efectueze o serie de acţiuni pe baza informaţiiloranalizate.

    • Modul inline, ı̂n care obţine pachete diniptables ı̂n loc de libpcap şi apoi de-terminăiptables să elimine sau să treacă pachetele pe baza regulilor Snort carefolosesc tipuri de reguli specifice modului inline.

    A.4.1 Spade

    Spade (Statistical Packet Anomaly Detection Engine, http://www.silicondefense.com/) ra-portează pachete , neobişnuite, posibil suspecte. Este conceput ca un plugin pentru pre-procesorul Snort.Spade revizuieşte pachetele primite de Snort, le află pe cele de interes şi raportează acelepachete pe care le crede a fi anormale ı̂mpreună cu un scor al respectivei anormalităţi.Scorul este stabilit pe baza istoricului observat al reţelei (cu cât mai rar a fost observat unpachet, cu atât mai mare va fi scorul). Pachetele sunt clasificate pe baza apariţiei reunitea anumitor valori ale câmpurilor din pachet (d.e. pachetele cu IP destinaţie 10.10.10.10 şiport destinaţie 8080 pot constitui un atare exemplu).

    Referat de doctorat Universitatea Tehnică din Cluj-Napoca 33

    IntroducereCodul ostilVirusiVirusi de macro si de e-mail

    Viermi

    Tipuri de cod ostilVirusiViermiSpywarePrograme care prezinta risc, în legatura cu codul ostilRootkit-uriTipuri de cod pentru procesorul de comenzi (shellcode) si metode de recunoastere

    Metode de detectieElemente detectabile în sisteme de detectie a intruziunilor si ziduri antifocAnomaliiUtilizarea improprie

    Metode de detectie utilizabile în IDS si ziduri antifocInspectarea pachetelor

    Metode specifice virusilorCautarea de secvente specificeNepotriviri în secventeDetectia genericaFunctii de dispersieSemne de carteScanarea cap-si-coadaScanarea punctului de intrare si a punctelor fixeScanarea inteligentaDetectia scheletuluiIdentificarea aproape exactaIdentificarea exactaMetode de scanare algoritmiceFiltrareaDetectia statica a decriptoruluiMetoda cu raze XEmularea coduluiDetectia dinamica a decriptoruluiEmularea coduluiDetectia geometricaAnaliza euristica a virusilor de Windows pe 32 biti

    ConcluziiBibliografieUnelteAIDE (Advanced Intrusion Detection Environment)ChkrootkitSystem for Internet-Level Knowledge (or SiLK)SnortSpade