viruși

Prin termenul „rezidențiat“ (TSR termenul DOS - Terminate și Stay Resident) se referă la viruși capacitatea de a scrie copia în memoria de sistem, captura unele evenimente (cum ar fi accesul la fișiere sau discuri) și pot cauza infecție procedura de obiecte când detectat (fișiere și sectoare). Astfel, virușii de memorie-rezident sunt active, nu numai în cazul în care programul infectat, dar după ce programul a terminat activitatea. copii rezident al acestor virusuri rămân viabile până la următoarea repornire, chiar dacă toate fișierele infectate distruse pe disc. De multe ori împotriva unor astfel de virusuri nu pot fi eliminate prin reducerea vsek a fișierelor de pe discuri de distribuție sau de rezervă-copii. copie rezident al virusului rămâne activ și infectează fișierele nou create. Același lucru este valabil și pentru virușii de încărcare - formatarea discului, în prezența unui virus rezident de memorie nu vindecă întotdeauna discul ca rezident in memorie multe virus infectează discul din nou, după ce este formatat.

viruși nerezidenți, pe de altă parte, este destul de activ pentru o perioadă scurtă de timp - numai în momentul începerii programului infectat. Pentru a răspândi ei caută pe fișierele curate de acționare și scrise pentru a le. Odata ce virusul transferurile cod de control pentru programul gazdă, impactul virusului asupra sistemului de operare este redus la zero, până la următoarea pornire a oricărui programului infectat. Prin urmare, fișierele mult mai ușor pentru a elimina virusurile infectate non-rezidente cu discul și nu permite virusului de a le infecta din nou.

DOS-viruși

Când fișierele infectate și a unor viruși nerezidente se uită la unitatea (e) aceste fișiere utilizând funcția DOS FindFirst și FindNext (INT 21h, AH = 11h, 12H, 4EH, 4Fh). viruși utilizați o listă mai largă de funcții DOS, prin raportare la care există un fișier infectat. De fapt, această listă conține toate caracteristicile de la valorile parametrilor de intrare sau de ieșire pe care le puteți specifica numele fișierului, care este un tratament (astfel de parametri includ valorile registrelor respective sau locații de memorie). Ca rezultat, "virusoopasnym" întreruperi funcția 21h sunt funcția (EXEC, AX = 4B00), încărcat în memorie (AH = 4BH), căutare (FindFirst și FindNext, AH = 11h, 12H, 4EH, 4Fh) crearea (Creare, AH = 3CH), deschidere (Open, AH = 3DH), închidere (Close, AH = 3Eh), modificați atributul (ChMode, AH = 43h), redenumi (redenumi, AH = 56h), precum și alte funcții de gestionare a fișierelor.

Există mai multe modalități de a verifica disponibilitatea copie a virusului rezident în memoria calculatorului. Primul este faptul că virusul se introduce o nouă caracteristică a unor întreruperi, al căror efect este de a returna valoarea „Sunt aici.“ La începutul virusului se referă la el, iar în cazul în care valoarea returnată se potrivește cu valoarea „Sunt aici“, înseamnă că memoria computerului este deja infectat si re-infectate nu se realizează. Atunci când verificarea a doua metodă, virusul scrie valoarea „sunt aici“, în nici o zonă de memorie rar folosite - în tabelul de vectorul de întrerupere, sau în zona de date BIOS (0040: 00 ??). Când începe de lângă programul infectat, controalele virus această valoare și nu provoacă infecție de memorie de rutină. Există desigur și alte moduri, de exemplu, unii viruși scanează pur și simplu memoria computerului.

Unii viruși de fișiere rezident (de obicei viruși prin utilizarea designeri de tip VCL și PS-MPC) definesc lor TSR-incorect si se copiaza in memorie de fiecare dată când executați un fișier infectat. Desigur, în acest caz, calculatorul se blochează sau imediat sau după un anumit timp încetează de a efectua din cauza lipsei de memorie de program disponibile.

virușii de încărcare

În viitor, unele virusuri sunt „în așteptare“ boot DOS și de a restabili valoarea inițială a memoriei de sistem - ca urmare, acestea nu se află în afara DOS, precum și o memorie separată bloc-DOS. Unii viruși de boot nu utilizează și nu modifică valoarea memoriei sistemului. Ei se copia pe orice zonă de memorie, până la boot neutilizate DOS, DOS de boot de așteptare și apoi se instalează propriul său cod în sistem în toate modurile posibile DOS.

Acești viruși folosesc mai multe moduri de a intercepta momentul DOS de boot. Cele mai multe "populyatny" mod - verifica 21h valoarea INT (funcțiile DOS-întrerupere). Dacă această valoare este schimbat, viruși cred că instalarea DOS este completă. Verificarea valorii apelului INT 21h este realizată la INT 8, 1Ch (întrerupere temporizator pentru acest virus, în plus față de manipulare discuri de întrerupere de asemenea să intercepteze cronometrul întrerupere) sau INT 13h apel. metoda populara mai puțin - date de testare citite de pe disc (necesită doar interceptarea INT 13H). Dacă buffer-ul de citire cuprinde un antet EXE-fișier viruși cred că DOS a terminat de încărcare, deoarece memoria pentru EXE-fișier descărcat.

În scopul de a intercepta circulația pe discuri, majoritatea virusilor de boot cârlig INT 13h - întrerupere principal pentru lucrul cu discuri. Mai puțin frecvent utilizate pentru a intercepta INT 40h - întrerupere de a lucra cu dischete. Chiar mai rar, diverse moduri exotice pentru a intercepta întreruperi BIOS și DOS, apar atunci când se lucrează cu dischete.

În cazul interceptării INT virusurilor 13h / 40h tratate cu citire / scriere comenzi sectoare (AH = 2,3), a verifica discul de contaminare și să înregistreze în sectorul său de încărcare sau MBR-ul codul său. prins mai puțin frecvent alte echipe - echipa Reset Disk (AH = 0) până la comanda "lung" citire / scriere (AH = 0Ah, 0Bh).

Cele mai multe dintre virus de boot nu verifică memoria sistemului pentru prezența sa deja stabilit TSR-up - fie ei folosesc tehnici stealth și reporniți codul virusului nu este posibil, sau sunt ghidate de faptul că codul virusului este încărcat o dată la boot DOS - atunci sectoare de coduri de boot CD-urile nu mai sunt efectuate în nici un caz. O parte din verificarea virusului pentru copia dvs. - nu foloseste special 13h apelurile INT la orice valoare non-standard sau marcate orice octet neutilizat cunoscut (sau un cuvânt), în tabelul de vectorul de întrerupere, sau în zona de date BIOS (0040: 00 ??) . Există, desigur, și alte modalități de a detecta sale TSR-copiere.

Ferestre-viruși

Pentru a lăsa codul executabil în memorie pentru Windows, există trei moduri, toate cele trei metode (cu excepția pentru Windows NT) a fost folosit de diferite virusuri.

Cel mai simplu mod - să se înregistreze programul ca una dintre aplicațiile care rulează în prezent. În acest scop, programul detectează o problemă, fereastra poate fi ascuns înregistrează handler său de evenimente de sistem, etc. A doua modalitate - de a aloca un bloc de memorie de sistem folosind DPMI-apel și copiați codul în ea (virusul h33r). A treia cale - de a rămâne rezident ca VxD-conducător auto (3.xx Wnidows și Windows95) sau ca driver Windows NT.

cereri de intercepție pentru fișierele într-unul din cele două moduri - fie apelurile INT 21h (Hook_V86_Int_Chain, pentru a primi / Set_V86_Int_Vector, pentru a primi / Set_PM_Int_Vector) sau al unui apel sistem API este interceptate interceptat. Apoi viruși pentru Windows rezidente sunt aproximativ precum și DOS-viruși: interceptarea tentativelor de a accesa fișiere și să le infecteze.

aproximativ aceleași metode ca cele descrise mai sus, cu excepția detectării VxD-virus este deja prezent în memorie sunt utilizate copii rezidente. Known VxD-virus încărcate în memorie atunci când pornește Windows. Pentru a face acest lucru, ei scriu o comandă pentru a rula în fișierul de configurare pentru Windows SYSTEM.INI. Dacă fișierul are deja o echipa rula fișier VxD-virus, virusul nu face reînregistrare sale VxD-fișier.

viruși macro

După infecție, unii viruși macro pentru a verifica copiile de obiecte infectate și re nu copia ei insisi. Alți viruși macro nu o fac și rescrie codul lor la fiecare infectie. În cazul în care fișierele infectate sau în domeniul macro-uri de sistem deja numele macro definit este virusul macro este un macro se elimină.

virus Stealth prin diverse metode pentru a ascunde prezența lor în sistem. Cunoscute viruși stealth de toate tipurile, cu excepția Windows-virus - virușii de încărcare, fișier viruși DOS și viruși macro, chiar. Apariția unui virus stealth infectează fișierele Windows, este probabil o chestiune de timp.

virușii de încărcare

viruși Stealth pentru a ascunde codul lor, folosind două modalități de bază. Primul dintre acestea este faptul că interceptările virus comenzile pentru a citi sectorul infectat (INT 13h) și o înlocuiește originalul, neinfectate. Această metodă face ca virusul invizibil pentru orice DOS programe, inclusiv anti-virus, în imposibilitatea de a „trata“ memoria calculatorului. Posibila interceptare a sectoarelor citit comenzi la un nivel mai mic decât 13H INT.

A doua metodă este îndreptată împotriva anti-virus, susține sectorul directă comanda de citire prin porturile controlerului de disc. Astfel de viruși atunci când porniți orice program (inclusiv anti-virus) infectate restabili sectorului, iar după încheierea funcționării sale infecta din nou discul. Deoarece acest virus este necesar pentru a intercepta începutul și sfârșitul programului, acesta trebuie de asemenea să intercepteze DOS întrerupere INT 21h.

viruşii de fișiere

Bolshinctvo fișier viruși stealth utilizează aceleași tehnici care sunt enumerate mai sus: acestea sunt fie DOS-intercepta apeluri pentru a accesa fișiere (INT 21h) sau vindeca temporar fișier atunci când îl deschideți și să infecteze la închidere. Precum și pentru virușii de încărcare, există viruși de fișiere, folosind pentru funcțiile sale stealth pentru a intercepta întrerupe un nivel inferior - apeluri de driver DOS, INT 25h, și chiar 13h INT.

Complet fișier viruși stealth folosind prima metodă pentru a ascunde codul lor, cele mai multe dintre ele sunt destul de greoaie, deoarece ei trebuie să prindă un număr mare de DOS funcțiile de a lucra cu fișiere: deschis / închidere, citire / scriere, de căutare, executați, redenumi, etc. precum și necesitatea de a menține ambele versiuni ale unora dintre provocările (FCB / ASCII), iar după apariția Windows95 / NT a fost necesar să se ocupe, de asemenea, a treia opțiune - funcțiile de a lucra cu nume de fișiere lungi.

Unii viruși folosesc o parte din funcțiile unui virus stealth plin. Cel mai adesea, acestea intercepta funcția DOS FindFirst și FindNext (INT 21h, AH = 11h, 12H, 4EH, 4Fh) și "reduce" dimensiunea fișierelor infectate. Un astfel de virus nu poate fi determinată de modificarea dimensiunea fișierului, desigur, în cazul în care acesta este rezident în memorie. Programele care nu utilizează aceste funcții DOS (de exemplu, „Norton Utilities“), și în mod direct utilizați conținutul sectoarelor care stochează director, arată lungimea corectă a fișierelor infectate.

viruși macro

Implementarea algoritmilor în macro virus stealth este, probabil, cea mai simplă sarcină - doar suficient pentru a dezactiva de asteptare File / sau șabloane Tools / meniul Macro. Acest lucru se realizează fie prin îndepărtarea elementelor de meniu din listă, sau lor FileTemplates macro-uri de substituție și ToolsMacro.

Acesta poate fi numit un mic grup de viruși macro viruși parțial stealth care stochează codul principal nu este în macro, ca și în alte zone ale documentului - în variabilele sale, sau Auto-text.

Pentru viruși polimorfi includ pe cele care detectarea este imposibilă (sau foarte dificil) pentru a efectua cu ajutorul așa-numitelor măști virale - zone de cod permanente specifice unui anumit virus. Acest lucru se realizează în două moduri principale - codul virusului principal criptat cu o instrucțiune non-cheie și sluchanym decriptare set sau schimbarea de cod executabil al virusului. Există și alte exemple, mai degrabă exotice polimorfizva - DOS-virus „Bomber“, de exemplu, nu este criptat, dar secvența de comenzi, care transferă controlul la codul virusului, este un sistem complet polimorfă.

Polimorfismul de diferite grade de complexitate în virusurile de toate tipurile - de la ghetei și fișiere viruși DOS pentru virușii de Windows, și chiar viruși macro.

transcrierile polimorfe

Cel mai simplu exemplu este decriptare parțial polimorfă este următorul set de comenzi, ca urmare a care nu un singur octet de cod virus și decriptarea acesteia nu este constantă în timpul infecției de fișiere diferite:

viruși polimorfi mai complexe folosesc algoritmi mult mai sofisticate pentru generare de cod decryptors sale: etapele enumerate mai sus (sau echivalentele lor) reordonate de la infecție la infecție, nimic nu schimbă diluat comenzi ca NOP, ITS, CLI, STC, CLC DEC registru neutilizat , XCHG registre neutilizate, etc.

Ca urmare, la începutul unui fișier infectat cu un virus similar, există un set de sens la prima vedere, instrucțiuni, și unele combinații care sunt destul de eficiente, nu au fost luate disassemblers de brand (de exemplu, combinația de CS: CS: sau CS: NOP). Și între această „mizerie“ de comenzi și date alunecare, ocazional, MOV, XOR, LOOP, JMP - instrucțiuni care sunt de fapt „de lucru“.

niveluri polimorfizva

Există o divizie a viruși polimorfi la niveluri, în funcție de complexitatea codului, care se găsește în descifrarea acestor virusuri. O astfel de diviziune a fost propusă pentru prima dată de Dr. Alan Solomon, după un timp, Vesselin Bonchev sa extins.

Nivelul 1: viruși care au un set de Decryptor cod fix în timpul infecției și alege una dintre ele. Astfel de virusuri sunt „semi-polimorfa“ și sunt cunoscute ca „oligomorfik“ (oligomorphic). Exemple: "Cheeba", "Slovacia", "balenă".

Nivelul 2: virusul Decryptor cuprinde una sau mai multe instrucțiuni permanente, partea primară este variabilă.

Nivelul 3: Decryptor conține instrucțiuni neutilizate - "nedorită" ca NOP, CLI, STI etc.

Nivelul 4: Decryptor utilizează instrucțiuni interschimbabile și schimbați ordinea (shuffle) instrucțiunile. Algoritmul de decriptare nu este schimbat.

Nivelul 5: Utilizarea tuturor metodelor de mai sus, decriptare algoritm instabil, poate re-cripta codul virusului și chiar criptarea parțială a codului de decriptare.

Nivelul 6:-viruși permutating. Schimbarea este supusă codul virusului principal - acesta este împărțit în blocuri, care atunci când sunt infectate rearanjate în orice ordine. Virusul, cu toate acestea, rămâne operațional. Astfel de virusuri pot fi necriptată.

Diviziunea de mai sus nu este lipsită de dezavantaje, deoarece efectuate pe un singur criteriu - capacitatea de a detecta virusul pentru decriptarea codului folosind măștile virale de acceptare standard:

Lipsa unei astfel de divizare este demonstrată în nivelul virusului 3 polimorfic, care se numește - „Level3“. Acest virus, care este unul dintre virusurile polimorfe mai sofisticate, in conformitate cu divizia de mai sus se încadrează în nivelul 3, deoarece are un algoritm rasshafrovki constant precedat de un număr mare de komand- „gunoi.“ Cu toate acestea, algoritmul de virus pentru generarea „gunoi“ a adus la perfecțiune: în codul de decriptare poate satisface aproape toate instrucțiunile procesorului i8086.

Dacă facem o diviziune între nivelurile în ceea ce privește anti-virus folosind sistemul de decriptare automată a codului virusului (emulatoare), împărțirea în nivele va depinde de complexitatea emulația codul virusului. Posibilitatea de a detecta viruși și alte metode, de exemplu, decodificarea cu ajutorul legilor matematice elementare, etc.

Prin urmare, mi se pare diviziunea mai obiectivă, care implică alți parametri în afară de criteriul masca virusului.

  1. Gradul de dificultate cod polimorfe (procente din toate instrucțiunile de procesor, care pot fi întâlnite în codul de decriptare)
  2. Utilizarea de trucuri anti-emulator
  3. Constanța algoritmului de decriptare
  4. Lungime decriptare statornicie

Nu aș dori să prezinte aceste puncte mai în detaliu, ca urmare a acestui mod unic încurajează creatorii de virusi pentru a crea un fel de monștri.

Modificarea codului executabil

Cel mai des folosit acest mod de polimorfism viruși macro că, atunci când crearea de noi copii lor de a schimba aleatoriu numele variabilelor lor, inserați linii goale sau pentru a schimba codul lor în orice alt mod. Astfel, algoritmul de munca virusului rămâne neschimbat, dar codul de virus este aproape complet schimbat de la infectie la infectii.

Mai puțin frecvent, această metodă utilizează un virus sofisticat. Aceste virusuri infecta sectorul de boot într-o procedură destul de scurt, care citește și discul principal de cod virus și transferă controlul acestuia. Codul pentru această procedură este selectată dintr-un număr de variante diferite (care poate fi, de asemenea, diluat cu comenzi „goale“), comenzile sunt permutat între ele, etc.

Chiar mai rar, această tehnică se găsește în virușii de fișiere - pentru că trebuie să se schimbe complet codul, și necesită algoritmi destul de sofisticate. În prezent există doar două astfel de virusuri, dintre care unul ( „Ply“) muta aleatoriu echipa lor prin corpul dumneavoastră și le înlocuiește cu JMP sau instrucțiunea CALL. Un alt virus ( „TMC“) folosește un mod mai sofisticat - de fiecare dată când infecția cu virusul inversează blocuri de cod și date, introduce „junk“, în instrucțiunile sale de asamblare ustanavlyavaet noi valori pentru aceste decalaje, schimba constantele etc. Ca rezultat, chiar dacă virusul și nu criptează codul, acesta este un virus polimorfic - nu există nici un set consistent de comenzi în cod. Mai mult decât atât, cu crearea de noi lor copii ale virusului își schimbă lungimea sa.