Οι ιοί μπορούν να διαχωριστούν σε κατηγορίες βάσει δύο χαρακτηριστικών τους, του τι μολύνουν, δηλαδή ποια είναι τα αντικείμενα του συστήματος τα οποία αλλοιώνουν και του πώς μολύνουν, δηλαδή τον τρόπο που χρησιμοποιούν για να επιτύχουν τη μόλυνση. Στις επόμενες παραγράφους αναλύονται οι διάφορες κατηγορίες ιών, ανάλογα με τα χαρακτηριστικά αυτά.
Ιοί που μολύνουν τους τομείς εκκίνησης
Σε κάθε σκληρό δίσκο ή δισκέτα, ακόμη και αν δεν περιέχει λειτουργικό σύστημα, υπάρχει ένας τομέας που ονομάζεται τομέας εκκίνησης (boot sector). Ο τομέας αυτός ονομάζεται έτσι διότι το βασικό σύστημα εισόδου-εξόδου του υπολογιστή (BIOS) τον διαβάζει κατά την εκκίνηση του υπολογιστή και εκτελεί τον κώδικα που περιέχεται σ’αυτόν, προκειμένου να φορτωθεί το λειτουργικό σύστημα (αν είναι εγκατεστημένο) ή να εκτυπωθεί κάποιο διαγνωστικό μήνυμα λάθους, αν δεν έχει εγκατασταθεί το λειτουργικό σύστημα. Στους σκληρούς δίσκους υπάρχει ένας ακόμη τομέας συστήματος, ο κύριος τομέας εκκίνησης, ο οποίος μεταξύ άλλων περιέχει τον πίνακα διαμερίσεων (partition table) και κώδικα που φροντίζει να διαβάσει και να εκτελέσει τον τομέα εκκίνησης κάποιας συγκεκριμένης διαμέρισης.
Οι ιοί που επιτίθενται στους τομείς εκκίνησης φροντίζουν να εγκατασταθούν σε έναν από αυτούς, μετατοπίζοντας τον κανονικό κώδικα σε κάποιο άλλο σημείο του δίσκου. Για αποφυγή επικάλυψης της περιοχής που περιέχει τα κανονικά δεδομένα εκκίνησης με δεδομένα (κατά την εκχώρηση της περιοχής σε ένα αρχείο) οι ιοί συνήθως σημαδεύουν τη συγκεκριμένη περιοχή ως «κατεστραμμένη», με αποτέλεσμα το λειτουργικό σύστημα να μην τη χρησιμοποιεί συνολικά. Όταν τώρα ο υπολογιστής εκκινηθεί θα διαβάσει τον μολυσμένο τομέα εκκίνησης και θα ξεκινήσει την εκτέλεση του ιού. Ο ιός θα εγκατασταθεί στη μνήμη, και κατόπιν θα συνεχίσει με το φόρτωμα του λειτουργικού συστήματος, χρησιμοποιώντας τον κώδικα που έχει αποθηκεύσει. Όντας στη μνήμη ο ιός θα φροντίζει να μολύνει όλους τους διαθέσιμους δίσκους ή τις δισκέτες που τυχόν θα προσπελασθούν.
Ιοί αρχείων
Οι ιοί αρχείων αποτελούν την πολυπληθέστερη αριθμητικά ποικιλία, αν και η δυσκολία στη συγγραφή τους έχει αποθαρρύνει πλέον τους συγγραφείς ιών από το να αυξάνουν τον πληθάριθμο αυτής της κατηγορίας. Οι ιοί αυτοί φροντίζουν να τροποποιούν τα εκτελέσιμα προγράμματα, όπως π.χ. .COM και .ΕΧΕ σε περιβάλλον προσωπικών υπολογιστών. Στην απλούστερη μορφή τους απλά επικαλύπτουν το αρχικό τμήμα του προγράμματος με τον δικό τους κώδικα, με επακόλουθο η εκτέλεση του προγράμματος να μην έχει τη συνήθη για τους χρήστες λειτουργικότητα, αφού απλώς προκαλεί την εκτέλεση του ιού. Αυτό γίνεται άμεσα αντιληπτό από τους χρήστες με συνέπεια ο εντοπισμός του ιού να είναι τάχιστος, μειώνοντας τις δυνατότητές του για εξάπλωση. Στην πιο εξελιγμένη μορφή τους, οι ιοί αρχείων μετατοπίζουν τον αρχικό κώδικα του αρχείου ή επισυνάπτουν τον δικό τους κώδικα στο τέλος, με τις κατάλληλες εντολές σύνδεσης. Με τον τρόπο αυτό αφ’ ενός εκτελείται ο κώδικας του ιού, αφ΄ ετέρου εκτελείται και ο κώδικας του προγράμματος, με αποτέλεσμα οι χρήστες να μην αντιλαμβάνονται εύκολα την ύπαρξη του ιού, και έτσι αυτός να έχει μεγαλύτερο χρόνο δράσης.
Σημειώνεται ότι οι ιοί αρχείων δεν είναι απαραίτητο να μολύνουν μόνο τα «άμεσα» εκτελέσιμα αρχεία, όπως τα .COM και .EXE: αρχεία επικάλυψης (OVL), οδηγοί συσκευών (DRV, SYS), δυαδικά εκτελέσιμα (BIN) ή δυναμικά συνδεόμενες βιβλιοθήκες (DLL) έχουν κατά καιρούς αποτελέσει στόχους ιών. Οι ιοί αρχείων μπορεί να τερματίζουν την εκτέλεσή τους μαζί με το πέρας εκτέλεσης του αρχείου στο οποίο έχουν προσκολληθεί, μπορεί όμως να παραμένουν στη μνήμη και μετά το πέρας της εκτέλεσης του ξενιστή τους.
Ιοί μακροεντολών
Οι ιοί μακροεντολών είναι μία ειδική κατηγορία ιών που μολύνει αρχεία δεδομένων. Τα αρχεία δεδομένων κανονικά δεν είναι ενεργές οντότητες, κατά συνέπεια δεν είναι άμεσα υποψήφια για το ρόλο του ξενιστή ιών. Πολλές εφαρμογές ωστόσο, προκειμένου να δώσουν στα αρχεία τους δυνατότητες αυτοματισμού ή εν γένει ενεργά χαρακτηριστικά ενσωματώνουν διερμηνευτές γλωσσών μακροεντολών, οι οποίοι εκτελούν ειδικές κατηγορίες προγραμμάτων που είναι ενσωματωμένες στα αρχεία. Επί παραδείγματι, η οικογένεια εφαρμογών Microsoft Office ενσωματώνει ως γλώσσα μακροεντολών τη Visual Basic for Applications, η οποία μπορεί να προσδώσει πολλά ενεργά χαρακτηριστικά στα έγγραφα. Κατ΄ αυτή την έννοια τα αρχεία δεδομένων είναι πλέον άριστοι υποψήφιοι για την μόλυνση από ιούς. Επίσης, τα συνημμένα έγγραφα σε μηνύματα ηλεκτρονικού ταχυδρομείου μπορεί να περιέχουν και αυτά ιούς, είτε με στόχο να εκτελεστούν από την εφαρμογή που θα ανοίξει το συνημμένο έγγραφο είτε και από την ίδια την εφαρμογή διαχείρισης ηλεκτρονικής αλληλογραφίας.
Σημειώνουμε εδώ ότι όσο πιο ισχυρή είναι η γλώσσα μακροεντολών, τόσο πιο καταστροφικός μπορεί να αποβεί ένας ιός που την αξιοποιεί.
Ιοί συστοιχίας
Οι ιοί συστοιχίας έχουν έναν ιδιόμορφο τρόπο προσκόλλησης στα αρχεία, καθώς δεν τροποποιούν καθ’ οιονδήποτε τρόπο το ίδιο το αρχείο αλλά τις πληροφορίες καταλόγου. Ο ιός εγκαθιστά ένα αντίγραφο του εαυτού του σε κάποιο μπλοκ του δίσκου και, για κάθε πρόγραμμα που μολύνει, τροποποιεί τις πληροφορίες καταλόγου ώστε να δείχνουν πως το αρχείο ξεκινά από το μπλοκ που περιέχει τον ιό. Ο ιός φροντίζει να διατηρεί βέβαια και τις σωστές πληροφορίες για την κατανομή των αρχείων στο δίσκο και ένα κομμάτι του που παραμένει στη μνήμη φροντίζει έτσι ώστε τα μολυσμένα αρχεία να διαβάζονται «σωστά», δηλαδή πρώτα να διαβάζεται ο κώδικας του ιού και κατόπιν τα κανονικά δεδομένα. Το ίδιο κομμάτι του ιού φροντίζει ώστε οι τυχόν εγγραφές στο αρχείο να μην επικαλύπτουν το τμήμα του δίσκου που περιέχει τον ιό αλλά να κατευθύνονται στον πραγματικό χώρο δεδομένων του αρχείου.
Μία «ευχάριστη» παρενέργεια της τεχνικής αυτής μόλυνσης είναι ότι δημιουργείται ένα μόνο αντίγραφο του ιού στον δίσκο, μειώνοντας έτσι δραστικά τη σπατάλη χώρου από τα πολλαπλά αντίγραφα του ιού. Από την άλλη πλευρά όμως, αν συμβεί να ξεκινήσει ο υπολογιστής με «καθαρό» σύστημα –με αποτέλεσμα να μην βρίσκεται στη μνήμη το κομμάτι του ιού που διευθετεί τις εγγραφές και τις αναγνώσεις– και εκτελεσθεί ένα πρόγραμμα ελέγχου της ακεραιότητας του δίσκου, θα αναφέρει ότι τα μολυσμένα αρχεία είναι προβληματικά, καθώς θα δείχνουν να ξεκινούν όλα από τον ίδιο τομέα του δίσκου, και κάτι τέτοιο είναι κανονικά αδύνατον. Αν μάλιστα επιλέξουμε να επιτρέψουμε στο πρόγραμμα ελέγχου να επιχειρήσει να διορθώσει τη δομή του συστήματος αρχείων, η ζημιά που θα προξενηθεί θα είναι πιθανότατα πέραν οποιασδήποτε δυνατότητας επανόρθωσης.
Ιοί συνοδείας
Οι ιοί συνοδείας ήταν ιδιαίτερα δημοφιλής στο περιβάλλον DOS καθώς δεν τροποποιούσαν τα αρχεία που «μόλυναν» αλλά φρόντιζαν να εκτελεσθούν πριν από αυτά. Η απουσία της αναγκαιότητας για τροποποίηση των αρχείων απλοποιούσε ιδιαίτερα τη συγγραφή τους και έτσι ήταν πολύ αγαπητοί στην κοινότητα των συγγραφέων ιών. Για να επιτύχουν την εκτέλεση πριν το «κανονικό» πρόγραμμα αξιοποιούσαν το χαρακτηριστικό του DOS σύμφωνα με το οποίο αν ο χρήστης έδινε την εντολή X, το DOS έψαχνε πρώτα για το αρχείο X.COM και κατόπιν για το X.EXE. Έτσι, προκειμένου να «μολυνθεί» το αρχείο X.EXE αρκούσε να εγκατασταθεί στον ίδιο κατάλογο το αρχείο X.COM. Όταν ο χρήστης δώσει την εντολή «Χ» εκτελείται το X.COM, δηλαδή ο ιός, ο οποίος στη συνέχεια φροντίζει για την εκτέλεση του X.EXE. Οι ιοί συνοδείας είναι εύκολο να εντοπισθούν και να καθαρισθούν, καθώς ελάχιστα προγράμματα έχουν «νομότυπα» στον ίδιο κατάλογο και τους δύο τύπους εκτελέσιμων αρχείων (το μοναδικό ίσως είναι το DOSSHELL).
Ιοί ειδικά για Windows
Χωρίς να προξενείται ιδιαίτερη έκπληξη σε κανέναν, το λειτουργικό σύστημα Windows έδωσε νέες θαυμάσιες ευκαιρίες στους συγγραφείς ιών για να αναπτύξουν το ταλέντο τους. Οι ιοί μπορούν πλέον να εκτελούνται ως διεργασίες εξυπηρέτησης (services) ή προγράμματα οδήγησης συσκευών, ή ακόμη και ως «κρυφές» εφαρμογές, εξασφαλίζοντας έτσι συνεχή παρουσία στη μνήμη και μικρές πιθανότητες ανίχνευσης από τους χρήστες. Οι ιοί έχουν επίσης αξιοποιήσει το χαρακτηριστικό του μητρώου (registry) των Windows που συσχετίζει τύπους αρχείων με τρόπους εκτέλεσης. Έτσι, για τον τύπο αρχείων EXEFILE (που αντιστοιχεί σε όλα τα εκτελέσιμα αρχεία με επίθεμα .EXE) μπορεί να ορισθεί ένας νέος τρόπος εκτέλεσης μέσω του κλειδιού του μητρώου
HKEY_CLASSES_ROOT\exefile\shell\open\command=virus.exe "%1" "%*" το οποίο ορίζει ότι «για να εκτελεσθεί οποιοδήποτε πρόγραμμα τύπου EXE θα κληθεί το πρόγραμμα virus.exe με παραμέτρους το όνομα του καλούμενου προγράμματος και τα τυχόν ορίσματα που έχουν αρχικά χρησιμοποιηθεί. Ο ιός (virus.exe) αφού εκτελέσει τις ενέργειες που επιθυμεί μπορεί να προβεί στην εκτέλεση του προγράμματος που αρχικά κλήθηκε, καθ’ όσον έχει στη διάθεσή του όλα τα στοιχεία για την εκτέλεσή του.
Ένας ακόμη τρόπος για διάδοση ιών συνίσταται στην αξιοποίηση της εναλλακτικής ροής δεδομένων αρχείου που υποστηρίζεται από το σύστημα αρχείων NTFS. Η εναλλακτική ροή δεδομένων επιτρέπει για κάθε αρχείο Α να ορίζεται απεριόριστο πλήθος εναλλακτικών ροών που σχετίζονται μ’ αυτό και σημειώνονται ως A:ext1, A:ext2, …, Α:extn, όπου ext1, ext2 κ.λπ. είναι αυθαίρετες συμβολοσειρές. Τα δεδομένα που περιέχει κάθε εναλλακτική ροή είναι απολύτως ανεξάρτητα από αυτά των άλλων ροών, με μοναδικό συνδετικό κρίκο ότι αν σβησθεί το αρχείο Α αυτόματα σβήνονται όλες οι συνδεδεμένες μ’ αυτό ροές. Ο τρόπος που μπορούν να αξιοποιηθούν οι εναλλακτικές ροές για τη διάδοση των ιών είναι ο εξής:
1. αρχικά το εκτελέσιμο αρχείο Α.ΕΧΕ αντιγράφεται στο A.EXE:ORIG, δηλαδή σε μία εναλλακτική ροή δεδομένων.
2. Τα περιεχόμενα του Α.ΕΧΕ τροποποιούνται έτσι ώστε το αρχείο Α.ΕΧΕ να περιέχει πλέον τον ιό, καθώς και ένα τμήμα κώδικα που θα φροντίζει για την εκτέλεση του A.EXE:ORIG.
Η αποκάλυψη των ιών u945 αυτών είναι σχετικά δύσκολη καθώς οι εναλλακτικές ροές δεδομένων δεν εμφανίζονται στους καταλόγους, ενώ ακόμη και μερικά αυτοματοποιημένα προγράμματα δεν ενσωματώνουν κώδικα που να μπορεί να εντοπίσει τις εναλλακτικές ροές δεδομένων.
Πολυμορφικοί ιοί
Οι πολυμορφικοί ιοί είναι μία ειδική κατηγορία ιών η οποία μπορεί να μολύνει με οποιονδήποτε από τους τρόπους που περιγράφηκαν ανωτέρω, έχει όμως το ιδιαίτερο χαρακτηριστικό η μόλυνση να λαμβάνει κάθε φορά διαφορετική μορφή, δυσχεραίνοντας έτσι το έργο της ανίχνευσης. Οι πολυμορφικοί ιοί έχουν αυξηθεί κατά τα τελευταία έτη, καθώς υπάρχουν ακόμη και εργαλειοθήκες τις οποίες μπορεί να χρησιμοποιήσει ο κάθε συγγραφέας ιών για να προσδώσει πολυμορφικά χαρακτηριστικά στο δημιούργημά του.
Στην πιο απλή του μορφή, ένας πολυμορφικός ιός έχει ως συστατικά έναν απλό ιό, έναν αλγόριθμο κρυπτογράφησης/αποκρυπτογράφησης και τα σχετικά κλειδιά. Ένα μολυσμένο αντικείμενο έχει προσκολλημένα πάνω του τον αλγόριθμο αποκρυπτογράφησης, τον ιό σε κρυπτογραφημένη μορφή και το κλειδί αποκρυπτογράφησης. Κατά την ενεργοποίηση του ιού, η διαδικασία αποκρυπτογράφησης εκτελείται με είσοδο τον κρυπτογραφημένο ιό και το κλειδί αποκρυπτογράφησης, παράγοντας το «κανονικό» σώμα του ιού, το οποίο και ακολούθως εκτελείται. Κατά τη φάση της μόλυνσης, δημιουργείται ένα νέο ζεύγος κλειδιών κρυπτογράφησης-αποκρυπτογράφησης, ο ιός κρυπτογραφείται βάσει του κλειδιού κρυπτογράφησης και το αποτέλεσμα, μαζί με τον αλγόριθμο αποκρυπτογράφησης και το νέο κλειδί αποκρυπτογράφησης προσκολλώνται στο αντικείμενο-θύμα.
Η πιο εξελιγμένη μορφή των πολυμορφικών ιών φροντίζει να μεταλλάσσει και τη διαδικασία αποκρυπτογράφησης, έτσι ώστε δύο αντικείμενα που έχουν μολυνθεί με τον ίδιο ιό να μην έχουν αναγνωρίσιμα κοινά τμήματα, ώστε να κινήσουν υποψίες για δράση ιού.