Εντοπισμός Packer σε Εκτελέσιμα Αρχεία

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Εντοπισμός Packer σε Εκτελέσιμα Αρχεία"

Transcript

1 Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Διπλωματική Εργασία Εντοπισμός Packer σε Εκτελέσιμα Αρχεία Αθανάσιος Σταγκίδης Α.Μ. 957 Επιβλέπων Καθηγητής Γεώργιος Παυλίδης Συνεπιβλέποντας ΕΔΙΠ Αριστείδης Ηλίας Πάτρα, 2016

2

3 Τριμελής Εξεταστική Επιτροπή Γεώργιος Παυλίδης, Καθηγητής του Τμήματος Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστημίου Πατρών, Επιβλέπων Αθανάσιος Τσακαλίδης, Καθηγητής του Τμήματος Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστημίου Πατρών, Μέλος τριμελούς επιτροπής Χρήστος Μακρής, Επίκουρος Καθηγητής του Τμήματος Μηχανικών Η/Υ και Πληροφορικής του Πανεπιστημίου Πατρών, Μέλος τριμελούς επιτροπής

4

5 Ευχαριστίες Αρχικά θα ήθελα να ευχαριστήσω το κ. Αριστείδη Ηλία καθώς διατέλεσε μείζονα ρόλο στην εκπόνηση της συγκεκριμένης μεταπτυχιακής διατριβής. Όχι μόνο που παρείχε τον εξοπλισμό και τους υπολογιστικούς πόρους για να εκτελέσω τα απαιτούμενα πειράματα, αλλά με καθοδήγησε σε όλη την πορεία της ερευνητικής μου δουλειάς με την τεχνογνωσία του και τις εύστοχες συμβουλές του. Θέλω να ευχαριστήσω θερμά τον επιβλέποντα καθηγητή μου κ. Γεώργιο Παυλίδη, ο οποίος μου εμπιστεύθηκε το συγκεκριμένο θέμα και με βοήθησε να ακολουθήσω τον δρόμο που εξαρχής ήθελα να ακολουθήσω με αυτή την διατριβή. Επιπλέον ευχαριστώ τον καθηγητή του τμήματος μας κ. Αθανάσιο Τσακαλίδη καθώς και τον επίκουρο καθηγητή του τμήματος κ. Χρήστο Μακρή που δέχτηκαν να είναι μέλη της τριμελής επιτροπής αξιολόγησης της μεταπτυχιακής μου εργασίας. Τέλος, θέλω να ευχαριστήσω τους γονείς μου Κυριάκο Σταγκίδη και Παναγούλα Σολωμού και την γιαγιά μου Κατερίνα Σολωμού, οι οποίοι μου δίδαξαν την αξία της εργατικότητας και της επιμονής και μου έμαθαν μια πολύ σημαντική αρετή, την υπομονή.

6

7 Περίληψη Οι επιθέσεις κακόβουλων λογισμικών αποτελούν ένα συχνό φαινόμενο για πολλά χρόνια στην κοινωνία των υπολογιστών και εξελίσσονται μέρα με τη μέρα για να διαπεράσουν τις εύρωστες άμυνες των μοντέρνων αντιϊκών συστημάτων. Πολλοί συγγραφείς κακόβουλου λογισμικού, για να αποκρύψουν την κακόβουλη συμπεριφορά των προγραμμάτων τους και να προσπεράσουν την διάγνωση των αντιϊκών, χρησιμοποιούν τεχνικές για να περιπλέξουν τον κώδικα τους και να κάνουν τη διαδικασία της αντίστροφης μηχανικής περίπλοκη και δύσκολη. Μια από αυτές είναι η χρήση packers για να συμπιέσουν και/ή να κρυπτογραφήσουν το αυθεντικό πρόγραμμα, κάνοντας το έτσι δύσκολο να αναλυθεί. Ο παραδοσιακός τρόπος άμυνας πολλών εμπορικών και ελεύθερων αντιϊκών εφαρμογών είναι η διάγνωση υπογραφών, η οποία αν και είναι γρήγορη και αποτελεσματική για κακόβουλο λογισμικό που είναι ήδη γνωστό, δεν μπορεί να χρησιμοποιηθεί για νέες απειλές και μπορεί να νικηθεί εύκολα από τις δυνατότητες μεταμόρφωσης των packers. Η πλειονότητα των εργαλείων διάγνωσης packer που έχει αναπτυχθεί έως τώρα, χρησιμοποιεί επίσης διάγνωση υπογραφών και υποφέρει από τα ίδια προβλήματα. Μια άλλη μέθοδος που έχει προταθεί βασίζεται στην δυναμική ανάλυση του πακεταρισμένου αρχείου με σκοπό τον εντοπισμό του αλγορίθμου πακεταρίσματος κατά τη διάρκεια της εκτέλεσης του προγράμματος (συγκεκριμένα κατά την φάση ξεπακεταρίσματος-unpacking). Έχουν δημοσιευτεί μερικές εργασίες οι οποίες μελετούν frameworks και λύσεις με τη μορφή λογισμικού προς αυτή τη κατεύθυνση. Παρ όλα αυτά η δυναμική ανάλυση μπορεί να γίνει χρονοβόρα και επικίνδυνη αν το κακόβουλο αρχείο ξεφύγει από το περιβάλλον του αναλυτή. Σε αυτή την διατριβή προτείνουμε ένα εργαλείο διάγνωσης packer, το οποίο εξάγει χαρακτηριστικά από το επιλεγμένο αρχείο με στατική ανάλυση και τότε με τη βοήθεια κάποιων ευρετικών μπορεί να διαγνώσει αν είναι πακεταρισμένο ή όχι και αν είναι πακεταρισμένο προχωρά στην διαδικασία αναγνώρισης του λογισμικού packer που χρησιμοποιήθηκε. Επιπλέον διεξαγάγαμε μερικά πειράματα με κανονικά πακεταρισμένα και μη πακεταρισμένα αρχεία καθώς και με πακεταρισμένο και μη πακεταρισμένο κακόβουλο λογισμικό. Σε αυτή τη πειραματική μελέτη αποδεικνύουμε

8 ότι το εργαλείο μας, με όνομα PackDetect, μπορεί να πετύχει υψηλά ποσοστά διάγνωσης σε σύγκριση με δυο δημοφιλείς διαγνώστες packer. Abstract Malware attacks are a common phenomenon for many years in the computer society and they are evolving day after day to penetrate the robust defenses of modern antimalware systems. Many malware authors, in order to hide the malicious behavior of their software and bypass the anti-virus detection, use techniques to obfuscate their code and make the process of reverse-engineering complex and difficult. One of them is using packers to compress and/or encrypt the original software, thus making it hard to analyze. The traditional way of defense for many commercial and freeware antivirus solutions is signature scanning which although it is fast and effective for already known malware, it cannot be used for new threats and it s easily defeated by the transforming capabilities of packers and protectors. The majority of the packer detection tools that have been developed until now, use signature scanning as well and suffer from the same problems. Another method that has been suggested is based in dynamic analysis of the packed file with the purpose of detecting the packing algorithm that was used during the execution of the program (specifically during the unpacking phase). Some papers have been published that study frameworks and software solutions in this direction. However dynamic analysis can be time-consuming and dangerous if the malicious file escapes from the analyst s environment. In this thesis we propose a packer detection tool, that extracts features of the chosen file with static analysis and then with the help of some heuristics it can detect if it is packed or not, and if it s packed it proceeds with the identification of the packer software that was used. We also performed some experiments with normal packed and non-packed files and with packed and non-packed malware. In this experimental study we prove that our tool, PackDetect, can reach high detection rates compared to two well-known packer detectors.

9 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1 Εισαγωγή Σημασία του Προβλήματος Στόχοι της Εργασίας Συνεισφορά Διάρθρωση της Διπλωματικής Εργασίας Το Ιομορφικό Λογισμικό σε Εκτελέσιμα Αρχεία και Τρόποι Αντιμετώπισης Κατηγοριοποίηση με βάση τον τόπο διαμονής Ιοί Τομέα εκκίνησης (Boot Sector) Ιοί Αντικατάστασης Ιοί Προσάρτησης και Προσθήκης Ιοί Κοιλότητας και ιοί Συνοδοί Ιοί Μνήμης Κατηγοριοποίηση με βάση τον τρόπο μετάλλαξης Κρυπτογραφημένοι ιοί Πολυμορφικοί ιοί Μεταμορφικοί ιοί Κατηγοριοποίηση με βάση το περιεχόμενο Δούρειοι Ίπποι (Trojans) Flooders Σκουλήκια (Worms) Λογικές/Χρονικές Βόμβες (Timebombs) Downloaders Keyloggers Rootkits Spyware & Adware Ransomware Αντιϊκές Τεχνικές Άμυνας Διάγνωση Υπογραφών Διάγνωση Ευρετικής Ανάλυσης Αποκλεισμός με βάση τη Συμπεριφορά Εξομοίωση Κώδικα Δομή και Διαμόρφωση Portable Executable Αρχείων DOS Header DOS Stub PE File Header Image Optional Header Αθανάσιος Σταγκίδης- Α.Μ. 957 i

10 3.5 Section Table and Sections Packers Πρόγραμμα Packer Διαδεδομένοι Packers UPX (Ultimate Packer for executables) ASPack WinUpack Armadillo Themida PECompact Petite MPRESS PELock telock Yoda s Protector MEW RLPack FSG Άλλοι Packers Krypton WinKripT PENinja Διάγνωση Packer και Σχετικές Εργασίες Εργαλεία Διάγνωσης Υπογραφών Packers PEID RDG Packer Detector EXEInfoPE Σχετικές Εργασίες στη Διάγνωση Packers PackDetect- Ευρετική Ανάλυση Packer Διαδικασία Διάγνωσης Packer Διαδικασία Αναγνώρισης Packer Πειραματική Μελέτη Παρουσίαση του PackDetect Πειραματική Αξιολόγηση σε Καλόβουλα Αρχεία Πειραματική Αξιολόγηση σε Κακόβουλο Λογισμικό Συμπεράσματα και Προοπτικές Σύνοψη και Συμπεράσματα Μελλοντική Εργασία Παράρτημα: Κώδικας Εφαρμογής Βιβλιογραφία- Αναφορές Αθανάσιος Σταγκίδης- Α.Μ. 957 ii

11 ΛΙΣΤΑ ΕΙΚΟΝΩΝ Εικόνα 1. Πολυμορφικοί και Μεταμορφικοί Ιοί Εικόνα 2. Παράδειγμα Υπογραφής (δεκαεξαδική μορφή) Εικόνα 3. Βασική Διαμόρφωση PE αρχείου Εικόνα 4. Πακετάρισμα PE αρχείου Εικόνα 5. UPX Εικόνα 6. ASPack Εικόνα 7. WinUpack Εικόνα 8. Armadillo Εικόνα 9. Themida Εικόνα 10. PECompact Εικόνα 11. Petite Εικόνα 12. MPRESS Εικόνα 13. PELock Εικόνα 14. telock Εικόνα 15. Yoda s Protector Εικόνα 16. MEW Εικόνα 17. RLPack Εικόνα 18. FSG Εικόνα 19. Krypton Εικόνα 20. WinKripT Εικόνα 21. PENinja Εικόνα 22. PEID Κύρια Οθόνη Εικόνα 23. PEID Περισσότερες πληροφορίες Εικόνα 24. PEID Λεπτομέρειες PE Διαμόρφωσης Εικόνα 25. RDG Packer Detector Κύρια Οθόνη Εικόνα 26. EXEInfoPE Κύρια Οθόνη Εικόνα 27. PE τιμές για κανονικά αρχεία Εικόνα 28. PE τιμές για αρχεία πακεταρισμένα με τον UPX Εικόνα 29. Διάγραμμα ροής PackDetect Εικόνα 30. PackDetect σε μη πακεταρισμένο αρχείο Εικόνα 31. PackDetect σε πακεταρισμένο αρχείο Εικόνα 32. PackDetect σε πακεταρισμένο αρχείο με άγνωστο packer Εικόνα 33. PackDetect σε γραμμή εντολών Εικόνα 34. Τιμές Σκορ Υποψίας για καλοβουλα αρχεία Εικόνα 35. Αποτελέσματα διάγνωσης για μη πακεταρισμένα κακόβουλα αρχεία Εικόνα 36. Αποτελέσματα διάγνωσης πακεταρισμένα κακόβουλα αρχεία Αθανάσιος Σταγκίδης- Α.Μ. 957 iii

12

13 ΛΙΣΤΑ ΠΙΝΑΚΩΝ Πίνακας 1: Μέσες Τιμές Σκορ Υποψίας Πίνακας 2: Συγκεντρωτικά Αποτελέσματα Διάγνωσης Καλοηθών Αρχείων Πίνακας 3: Συγκεντρωτικά Αποτελέσματα Διάγνωσης Κακόβουλων Αρχείων Αθανάσιος Σταγκίδης- Α.Μ. 957 v

14

15 1 Εισαγωγή 1.1 Σημασία του Προβλήματος Τα ιομορφικά προγράμματα εμφανίστηκαν για πρώτη φορά στους μικροϋπολογιστές κατά τη διάρκεια τις δεκαετίας του Ο Fred Cohen παρείχε πρώτος ένα μαθηματικό μοντέλο το οποίο περιέγραφε τους ιούς των υπολογιστών και ο άτυπος ορισμός που έδωσε ήταν «Ένας ιός είναι ένα πρόγραμμα το οποίο μπορεί να μολύνει άλλα προγράμματα τροποποιώντας τα ώστε να περιλαμβάνουν ένα πιθανώς εξελιγμένο αντίγραφο του εαυτού του». Έχοντας στο μυαλό του τη δουλειά του Cohen, ο Peter Szor έδωσε τον δικό του ορισμό ενός ιού «Ένας ιός υπολογιστή δεν είναι τίποτα άλλο παρά ένα πρόγραμμα το οποίο αντιγράφει αναδρομικά και ρητά μια πιθανώς πιο εξελιγμένη έκδοση του εαυτού του» [1], [2]. Παρόλαυτα αυτός ο ορισμός για τους ιούς υπολογιστών, δεν περιγράφει πλέον ικανοποιητικά τα σημερινά ιομορφικά λογισμικά. Τις τελευταίες δυο δεκαετίες εξαιτίας της ανακάλυψης και ραγδαίας εξάπλωσης του Διαδικτύου και της μεγάλης εξέλιξης της τεχνολογίας των υπολογιστών, οι ιοί με τη σειρά τους εξελίχτηκαν με πολλούς τρόπους, από τον τρόπο μετάδοσης τους έως και τις κακόβουλες δυνατότητες και την επικινδυνότητα τους. Σήμερα, λέξεις όπως Trojans, Worms, Rootkits, Timebombs, Spyware, Adware, Ransomware και πολλές ακόμα, αναφέρονται όλες σε κομμάτια λογισμικού τα οποία έχουν συγγραφεί με κακόβουλους σκοπούς και είναι κοινώς γνωστά ως κακόβουλο λογισμικό (Malware). Ένα αντιϊκό πρόγραμμα είναι υπεύθυνο για την πρόληψη, τον εντοπισμό και την απομάκρυνση των απειλών, δηλαδή των κακόβουλων προγραμμάτων από έναν υπολογιστή. Οι τεχνικές που χρησιμοποιεί ένα αντιϊκό πρόγραμμα ποικίλουν ανάλογα και με την ιδιομορφία κάθε ιού, όμως το παραδοσιακό όπλο της αντιϊκής βιομηχανίας απέναντι στις κακόβουλες επιθέσεις είναι η Διάγνωση Υπογραφών (Signature Scanning). Πολλές αντιϊκές μηχανές αποθηκεύουν τεράστιες βάσεις δεδομένων που περιέχουν υπογραφές (δηλαδή μοναδικούς συνδυασμούς δυαδικών ψηφίων), οι οποίες αντιπροσωπεύουν κομμάτια κακόβουλου λογισμικού τα οποία στο παρελθόν έχουν καταγραφεί και αναγνωριστεί ως κακόβουλα, δημιουργώντας έτσι μια «μαύρη λίστα». Αθανάσιος Σταγκίδης- Α.Μ

16 Αυτές οι μηχανές λοιπόν μπορούν να διαγνώσουν με ένα σχετικά απλό και γρήγορο τρόπο απειλές οι οποίες έχουν αναλυθεί στο παρελθόν. Τι συμβαίνει όμως σε περίπτωση που ένα νέο κακόβουλο πρόγραμμα βγει στην επιφάνεια; Οι βάσεις δεδομένων στις οποίες αναφερθήκαμε παραπάνω πρέπει να ανανεώνονται συνεχώς με τις υπογραφές νέων κακόβουλων προγραμμάτων έτσι ώστε να είναι αποτελεσματικές. Στην εποχή μας χιλιάδες νέα κακόβουλα λογισμικά κάνουν την εμφάνιση τους σε καθημερινή βάση και έτσι η ανανέωση υπογραφών γίνεται μια διαδικασία η οποία είναι σχεδόν αδύνατον να ολοκληρωθεί σε ένα σύντομο χρονικό διάστημα, όπως απαιτείται. Επιπρόσθετα η ανακάλυψη της έννοιας του πολυμορφισμού, ο οποίος δεν είναι τίποτα άλλο παρά ένας τρόπος μετάλλαξης μέσω της αλλαγής στην κρυπτογράφηση ενός ιού από γενιά σε γενιά [1], άνοιξε νέους δρόμους για την προσπέραση της διάγνωσης υπογραφών. Ένας από αυτούς τους τρόπους είναι και η χρήση των εκτελέσιμων packers. Οι packers είναι προγράμματα τα οποία συμπιέζουν και/η κρυπτογραφούν εκτελέσιμα αρχεία σε ένα δίσκο (συνήθως μειώνοντας το μέγεθος τους), και ανακτούν το αρχικό εκτελέσιμο όταν τα πακεταρισμένα αυτά αρχεία φορτώνονται στη μνήμη [3]. Οι πρώτοι packers ήταν πρακτικά μόνο συμπιεστές με την ιδιότητα να μειώνουν το μέγεθος ενός αρχείου. Μετέπειτα στις δυνατότητες των packers προστέθηκε και η κρυπτογράφηση με σκοπό την περίπλεξη των περιεχομένων ενός αρχείου. Ένας packer περιέχει ακόμα μια ειδική ρουτίνα, με το όνομα stub routine η οποία είναι υπεύθυνη για την αποσυμπίεση και την αποκρυπτογράφηση του πακεταρισμένου αρχείου στη μνήμη και την επαναφορά της κανονικής εκτέλεσης του αρχικού, πρωτότυπου προγράμματος (φάση unpacking). Οι packers λοιπόν αλλάζουν την δυαδική υπογραφή του αρχείου, το οποίο κρύβουν καθώς και τα κλειδιά κατακερματισμού (encryption hashes) που χρησιμοποιήθηκαν [4]. Η πολυπλοκότητα και οι δυνατότητες θωράκισης των packers εξελίσσονται ραγδαία με την πάροδο του χρόνου. Μερικοί είναι εμπλουτισμένοι με προχωρημένες τεχνικές προστασίας οι οποίες έχουν ως στόχο να κάνουν την διαδικασία της αντίστροφης μηχανικής (reverse engineering) δύσκολη και χρονοβόρα. Οι τελευταίοι packers είναι γνωστοί και ως protectors και ορισμένες φορές μπορούν να αυξήσουν το μέγεθος του πακεταρισμένου αρχείου εξαιτίας των επιπρόσθετων στρωμάτων προστασίας που προσθέτουν. Μπορεί να περιέχουν τεχνικές αντι-αποσφαλμάτωσης (anti-debugging), αντι-εξομοίωσης (anti-emulating) και αντι-εξαγωγής (anti-dump) καθώς και μια Αθανάσιος Σταγκίδης- Α.Μ

17 πληθώρα anti-unpacking κόλπων τα οποία περιγράφονται αναλυτικά στην εργασία του Peter Ferrie καθώς και στο white paper της Websense [5], [6]. Οι packers βέβαια δεν εξυπηρετούν πάντα κακούς σκοπούς. Οι προγραμματιστές λογισμικού μπορούν να τους χρησιμοποιήσουν με σκοπό να προστατέψουν τις εφαρμογές τους από μοντέρνα cracking εργαλεία είτε για να μειώσουν το μέγεθος τους με σκοπό να σώσουν αποθηκευτικό χώρο ή να επιταχύνουν τον ρυθμό λήψεως της εφαρμογής στο Διαδίκτυο [3]. Παραταύτα όλο και περισσότεροι συγγραφείς κακόβουλου λογισμικού χρησιμοποιούν packers για να περιπλέξουν τα κακόβουλα προγράμματα τους. Σύμφωνα με την [7] και την [8] μέχρι και το έτος 2008 περίπου το 80% των κακόβουλων λογισμικών που κυκλοφορούσαν στο Διαδίκτυο ήταν πακεταρισμένα. Μερικά πιο πρόσφατα στατιστικά δείχνουν ότι το 92% του κακόβουλου λογισμικού χρησιμοποιεί packing τεχνικές ενώ το 50% είναι τροποποιημένες εκδόσεις ήδη γνωστών packers [9]. Τα επικρατέστερα εργαλεία διάγνωσης packer χρησιμοποιούν την τεχνική διάγνωσης υπογραφών όπως και τα περισσότερα αντιϊκά προγράμματα. Αυτά τα εργαλεία μπορεί να επιτυγχάνουν στην διάγνωση δημοφιλών packers όπως ο UPX και ο ASPack αλλά αποτυγχάνουν στον εντοπισμό νέων η ατομικά φτιαγμένων packers (custom-made). Αυτό αποτελεί πρόβλημα καθώς σύμφωνα με διεθνή στατιστικά, περίπου το 35% των packers που χρησιμοποιήθηκαν σε λογισμικά το 2010 ήταν ατομικά φτιαγμένοι packers [10], ένα ποσοστό το οποίο έχει αυξηθεί ακόμα περισσότερο σήμερα. Έχουν προταθεί μέθοδοι οι οποίες κάνουν χρήση δυναμικής ανάλυσης και είναι αρκετά αποτελεσματικές καθώς καταφέρνουν εκτός από τον εντοπισμό να προχωρήσουν και στην επόμενη φάση, δηλαδή στη διαδικασία ξεπακεταρίσματος (unpacking) του εκτελέσιμου. Παρόλ αυτά αρκετές από αυτές είναι ιδιαίτερα χρονοβόρες, κοστίζουν πολλούς υπολογιστικούς πόρους και είναι εν δυνάμει επικίνδυνες για το υπολογιστικό σύστημα στο οποίο εκτελούνται. 1.2 Στόχοι της Εργασίας Οι στόχοι που θέτει αυτή η εργασία είναι οι εξής: η μελέτη της λειτουργίας των packers και η κατανόηση της δομής τους, Αθανάσιος Σταγκίδης- Α.Μ

18 η ανάλυση των βασικών τρόπων διάγνωσης ενός packer, η διεξοδική μελέτη της μεθόδου στατικής ευρετικής ανάλυσης στην διάγνωση packer και η παρουσίαση του εργαλείου μας Η πειραματική αξιολόγηση της παραπάνω μεθόδου και η σύγκριση της απόδοσης της με άλλες μεθόδους. 1.3 Συνεισφορά Στην παρούσα εργασία ακολουθούμε μια προσέγγιση στατικής ευρετικής ανάλυσης εκτελέσιμων αρχείων. Αρχικά γίνεται εξαγωγή κάποιων δομικών χαρακτηριστικών των αρχείων και από αυτά τα χαρακτηριστικά μπορούμε να εντοπίσουμε την διαδικασία packing και επιπρόσθετα να αναγνωρίσουμε την οικογένεια packer που χρησιμοποιήθηκε. Με τον τρόπο αυτό μπορούμε να σώσουμε πολύ χρόνο στην διαδικασία ανάλυσης ενός εκτελέσιμου αρχείου το οποίο είναι ύποπτο (για κακόβουλο περιεχόμενο), καθώς με την αναγνώριση της οικογένειας packer είναι δυνατό να κατευθύνουμε τον αναλυτή στον κατάλληλο unpacker για να ακολουθήσει με τη σειρά της η διαδικασία ξεπακεταρίσματος (unpacking). Με κάποιες άλλες εργασίες που ακολούθησαν παρόμοια μέθοδο όπως θα δείξουμε, δεν ήταν δυνατό να αναγνωριστεί η οικογένεια packer και ο μόνος χρόνος που σώθηκε ήταν σε περίπτωση που δεν εντοπίστηκε packer και το εκτελέσιμο αρχείο στάλθηκε κατευθείαν για ανάλυση σε ένα αντιϊκό πρόγραμμα. Η εργασία μας επιπλέον βελτιώνει έμμεσα την απόδοση των αντιϊκών προγραμμάτων διότι μέσω της επιπρόσθετης ανάλυσης μπορεί να βοηθήσει με κατάλληλα μηνύματα τα αντιϊκά προγράμματα ώστε να τα αποτρέψει από λάθος διαγνώσεις (false positives και false negatives). Επιπρόσθετα η εργασία μας υπερέχει έναντι άλλων εργασιών οι οποίες χρησιμοποιούν μεθόδους δυναμικής ανάλυσης, καθώς δεν απαιτεί πολλούς υπολογιστικούς πόρους, διαγιγνώσκει σε σύντομο χρονικό διάστημα και επίσης είναι αρκετά ασφαλής όπως και όλες οι μέθοδοι στατικής ανάλυσης (επειδή το εκτελέσιμο υπό εξέταση δεν εκτελείται). Τέλος μπορεί να χρησιμοποιηθεί στον εντοπισμό νέων απειλών σε αντίθεση με διάσημα εργαλεία αναγνώρισης packer τα οποία χρησιμοποιούν διάγνωση υπογραφών. Αθανάσιος Σταγκίδης- Α.Μ

19 1.4 Διάρθρωση της Διπλωματικής Εργασίας Η παρούσα εργασία ακολουθεί τη παρακάτω διάρθρωση: Στο κεφάλαιο 2 πραγματοποιείται μια παρουσίαση διάφορων ειδών ιομορφικού λογισμικού το οποίο προσβάλλει εκτελέσιμα αρχεία, καθώς και μια σύντομη περιγραφή βασικών τρόπων αντιμετώπισης που χρησιμοποιούν τα αντιϊκά λογισμικά. Στο κεφάλαιο 3 ακολουθεί μια εισαγωγή στη βασική δομή των Portable Executable αρχείων, δηλαδή στον βασικό τύπο εκτελέσιμων αρχείων των Windows, με τα οποία και θα ασχοληθούμε σε αυτή την εργασία. Στο κεφάλαιο 4 ακολουθεί μια ενημέρωση για την έννοια του packer και μια περιγραφή των βασικών χαρακτηριστικών των packers που χρησιμοποιήθηκαν στην παρούσα μελέτη. Το κεφάλαιο 5 συνεχίζει με την παρουσίαση κάποιων σχετικών εργασιών στη διάγνωση packer, κάποιες από τις οποίες αποτέλεσαν έμπνευση για αυτή την εργασία. Το κεφάλαιο 6 ασχολείται με την ανάλυση της δικής μας δουλειάς στη διάγνωση packer και των εσωτερικών λειτουργιών που περιέχει. Το κεφάλαιο 7 περιέχει μια αναφορά και σχολιασμό των αποτελεσμάτων από την πειραματική μελέτη που διεξαγάγαμε. Τέλος στο κεφάλαιο 8 αναφέρονται τα συμπεράσματα από αυτή την εργασία καθώς επίσης και κάποιες μελλοντικές κατευθύνσεις τις οποίες προτείνουμε. Αθανάσιος Σταγκίδης- Α.Μ

20

21 2 Το Ιομορφικό Λογισμικό σε Εκτελέσιμα Αρχεία και Τρόποι Αντιμετώπισης Όπως είδαμε και στο κεφάλαιο 1, η χρήση packer σε ιομορφικό λογισμικό έχει αυξηθεί κατακόρυφα τα τελευταία χρόνια. Σε αυτή την εργασία έχουμε αναπτύξει μια μέθοδο διάγνωσης packer για εκτελέσιμα αρχεία. Δυστυχώς εδώ και αρκετά χρόνια το Διαδίκτυο κατακλύζεται σε καθημερινή βάση από εκατομμύρια κακόβουλα λογισμικά, τα οποία σε πολύ μεγάλο ποσοστό απαρτίζονται από εκτελέσιμα αρχεία που παίρνουν τη μορφή χρήσιμων εργαλείων για έναν χρήστη. Για το σκοπό αυτό θεωρούμε απαραίτητο να κάνουμε μια εισαγωγή στις διάφορες μορφές κακόβουλου λογισμικού και στις τεχνικές άμυνας που έχουν αναπτυχθεί έως τώρα από την αντιϊκή βιομηχανία. Ένα μεγάλο μέρος της πειραματικής μας μελέτης ούτως ή άλλως διεξήχθει σε κακόβουλο λογισμικό. Μπορούμε να κατηγοριοποιήσουμε το κακόβουλο λογισμικό με βάση πολλά κριτήρια όπως τον τρόπο μετάδοσης τους, τον τρόπο μετάλλαξης τους, τις τροποποιητικές διαδικασίες που εκτελούν, τον τόπο διαμονής τους σε ένα σύστημα κ.α. Παρακάτω παρουσιάζουμε μερικές μορφές κακόβουλου λογισμικού ανάλογα με τον τόπο διαμονής τους και τον τρόπο μετάλλαξης καθώς και με το περιεχόμενο τους και γενικότερα, τις τεχνικές που χρησιμοποιούν στο εσωτερικό τους. 2.1 Κατηγοριοποίηση με βάση τον τόπο διαμονής Ιοί Τομέα εκκίνησης (Boot Sector) Πρόκειται για ιούς οι οποίοι τοποθετούν τον δικό τους κώδικα στον Κύριο Τομέα Εκκίνησης του σκληρού δίσκου του υπολογιστή που μολύνουν. Γίνεται αντικατάσταση του bootstrap κώδικα με ένα άλλο κακόβουλο κώδικα και συνήθως αυτοί οι ιοί λειτουργούν είτε μολύνοντας το Master Boot Record είτε το DOS Boot Record. Ένας υπολογιστής μολυσμένος με έναν τέτοιο ιό μπορεί να παρουσιάσει δυσκολίες στην Αθανάσιος Σταγκίδης- Α.Μ

22 εκκίνηση του και στην ανάκτηση δεδομένων, ακόμα και δυσκολία αναγνώρισης των σκληρών του δίσκων. Βέβαια πρόκειται για ιούς οι οποίοι μεταδίδονταν κατά κύριο λόγο με δισκέτες και στις μέρες μας έχουν σχεδόν εξαλειφθεί [1], [2] Ιοί Αντικατάστασης Αντικαθιστούν τη πληροφορία του αρχείου στο οποίο επιτίθενται και την αντικαθιστούν με το δικό τους κώδικα, καθιστώντας το άχρηστο. Αντιμετωπίζονται αρκετά δύσκολα επειδή τα μολυσμένα αρχεία πρέπει να διαγράφονται από το δίσκο και να ανακτούνται από backup αλλά εντοπίζονται εύκολα [1], [2] Ιοί Προσάρτησης και Προσθήκης Οι ιοί προσάρτησης (appending viruses), προσθέτουν τον κώδικα τους στο τέλος του αρχείου που μολύνουν. Αφού προστεθούν στο τέλος, προσθέτουν μια επιπλέον εντολή άλματος (jump) στην αρχή του αρχείου, η οποία μεταφέρει την εκτέλεση στον κώδικα του ιού. Οι ιοί προσθήκης (prepending viruses), αντίθετα προσθέτουν τον κώδικα τους στην αρχή του προγράμματος ξενιστή για να διασφαλίσουν ότι ο ιός θα εκτελεστεί αμέσως με το άνοιγμα του μολυσμένου προγράμματος και υλοποιούνται συνήθως σε υψηλού επιπέδου γλώσσες [1], [2] Ιοί Κοιλότητας και ιοί Συνοδοί Οι ιοί κοιλότητας ενσωματώνουν τον κώδικα τους σε ενδιάμεσες περιοχές του προγράμματος που μολύνουν και όχι στην αρχή ή στο τέλος τους. Αυτές οι ενδιάμεσες περιοχές περιέχουν συνήθως σταθερές ή κενά. Επειδή οι ιοί κρύβονται λοιπόν σε αυτές τις «σπηλιές», το μέγεθος του αρχείου δεν επηρεάζεται και είναι δύσκολο να εντοπιστούν. Αναφορικά με τους ιούς συνοδούς, δεν τροποποιούν υπάρχοντα αρχεία αλλά δημιουργούν αντίγραφα τους με διαφορετικές καταλήξεις. Σήμερα είναι δύσκολο να συναντήσει κανείς τέτοιους ιούς επειδή βασίζονται στο περιβάλλον MS-DOS [1], [2], [11]. Αθανάσιος Σταγκίδης- Α.Μ

23 2.1.5 Ιοί Μνήμης Παραμένουν στην μνήμη του υπολογιστή ακόμα και όταν τερματίσει το πρόγραμμα ξενιστής και ενεργοποιούνται κατά την έναρξη λειτουργίας του λειτουργικού συστήματος μολύνοντας τα αρχεία τα οποία ανοίγουν τότε. Στο πρώτο στάδιο βρίσκουν ένα μπλοκ μνήμης στο οποίο και εγκαθιστούν τον κακόβουλο κώδικα τους. Στο δεύτερο στάδιο ενεργοποιούνται μέσω μιας συγκεκριμένης διαδικασίας η οποία διεξάγεται με δυο τρόπους. Στην πρώτη περίπτωση χρησιμοποιεί ένα συγκεκριμένο interrupt του λειτουργικού την TSR (Terminate-Stay-Resident) αλλά εντοπίζεται εύκολα, ενώ στη δεύτερη περίπτωση χρησιμοποιεί μπλοκ ελέγχου της μνήμης και αγκιστρώνεται πάλι από κάποια διαφορετικά interrupts [1], [2]. 2.2 Κατηγοριοποίηση με βάση τον τρόπο μετάλλαξης Κάθε κακόβουλο λογισμικό φέρει μια δυαδική υπογραφή, δηλαδή έναν μοναδικό συνδυασμό από δυαδικά ψηφία που το ξεχωρίζει. Στη πορεία των χρόνων κάποιοι συγγραφείς κακόβουλων προγραμμάτων προσπάθησαν να τροποποιήσουν αυτή την υπογραφή ώστε να μην αναγνωρίζεται το πρόγραμμα τους. Έτσι λοιπόν εισήχθει η έννοια της μετάλλαξης σε ιομορφικά λογισμικά Κρυπτογραφημένοι ιοί Είναι οι πρώτοι ιοί μιας μεγάλης κατηγορίας ονομαζόμενης και ως 2ης γενιάς ιών. Κρυπτογραφούν ένα μέρος του κώδικα τους ενώ ένα άλλο παραμένει σταθερό από γενιά σε γενιά. Αυτό το σταθερό μέρος είναι η μηχανή ή μονάδα αποκρυπτογράφησης και τοποθετείται συνήθως στην αρχή η στο τέλος του κώδικα. Αυτή η μονάδα είναι υπεύθυνη για την αποκρυπτογράφηση του κρυπτογραφημένου κώδικα. Η πιο συχνή χρήση κρυπτογράφησης ήταν ειδικά παλαιότερα, η αξιοποίηση της λογικής συνάρτησης XOR, όπου κάθε byte του ιού γινόταν αποκλειστικά διαζεύσιμο με μια σταθερά. Για κάθε μια μόλυνση με έναν κρυπτογραφημένο ιό το κύριο σώμα του ιού άλλαζε με τη χρήση διαφορετικού κλειδιού κρυπτογράφησης ενώ η ρουτίνα αποκρυπτογράφησης παρέμενε η ίδια [12], [1]. Αθανάσιος Σταγκίδης- Α.Μ

24 2.2.2 Πολυμορφικοί ιοί Εφόσον η μηχανή αποκυπτογράφησης παρέμενε σταθερή από γενιά σε γενιά, ένα αντιϊκό πρόγραμμα μπορούσε να εστιάσει στην ανάλυση της και να δημιουργήσει μια υπογραφή για αυτή. Έτσι λοιπόν προέκυψε η ιδέα σε κάθε γενιά να αλλάζει και η μονάδα αποκρυπτογράφησης του κρυπτογραφημένου κώδικα και γεννήθηκαν οι πρώτοι πολυμορφικοί ιοί, οι οποίοι χρησιμοποιούσαν παραπάνω από έναν αποκρυπτογραφητές. Επειδή βέβαια οι πρώτοι τέτοιοι ιοί χρησιμοποιούσαν ένα μικρό αριθμό αποκρπυτογραφητών, ονομάστηκαν ολιγομορφικοί. Οι πολυμορφικοί ιοί λοιπόν μεταλλάσσουν τον εαυτόν τους κρυπτογραφώντας ένα μέρος του κώδικα τους και αλλάζουν σε κάθε γενιά την μηχανή αποκρυπτογράφησης που φέρουν, κάτι που τους κάνει να φαίνονται διαφορετικοί όταν αναπαράγονται ή μολύνουν άλλα αρχεία στο υπολογιστικό σύστημα. Πολλές διαφορετικές κρυπτογραφήσεις σημαίνουν και πολλά διαφορετικά κλειδιά κρυπτογράφησης. Μερικές τεχνικές που χρησιμοποιούν οι πολυμορφικοί ιοί είναι η περίπλεξη του σημείου εκκίνησης εκτέλεσης (entry point obfuscation), τυχαιοποίηση καταχωρητών, μεταθέσεις εντολών, εισαγωγή άχρηστων εντολών κ.ά. [12], [1] Μεταμορφικοί ιοί Το μειονέκτημα των πολυμορφικών ιών είναι ότι το αποκρυπτογραφημένο σώμα του ιού παραμένει το ίδιο, οπότε εάν κάποιος καταφέρει να το αποκρυπτογραφήσει τότε μπορεί να εντοπίσει τον ιό. Αυτό οδήγησε στην δημιουργία των μεταμορφικών ιών. Πρόκειται για ιούς οι οποίοι επαναπρογραμματίζονται σε κάθε επίθεση και αλλάζουν ολοκληρωτικά τη δομή και τη μορφή του κώδικα τους ώστε να αποφύγουν την ανίχνευση. Σε τέτοιους ιούς δεν υπάρχει κανένα ίδιο κομμάτι κώδικα από γενιά σε γενιά, παρότι έχουν ακριβώς την ίδια λειτουργικότητα. Οι μεταμορφικοί ιοί χρησιμοποιούν μια πληθώρα τεχνικών μεταμόρφωσης και περίπλεξης του κώδικα τους. Μερικές από αυτές είναι η χρήση διαφορετικών καταχωρητών, η αντικατάσταση μεταβλητών και ολόκληρων εντολών, η αλλαγή της ροής εκτέλεσης του προγράμματος, οι μεταθέσεις εντολών και η εισαγωγή άχρηστου κώδικα [12], [1]. Στην παρακάτω εικόνα φαίνεται η διαφορά σε αυτούς τους τύπους ιών [13],[14] Αθανάσιος Σταγκίδης- Α.Μ

25 Εικόνα 1. Πολυμορφικοί και Μεταμορφικοί Ιοί Είναι αξιοσημείωτο ότι οι πιο σύνθετοι packers χρησιμοποιούν πολλές από τις τεχνικές αποφυγής εντοπισμού των πολυμορφικών και μεταμορφικών ιών. 2.3 Κατηγοριοποίηση με βάση το περιεχόμενο Δούρειοι Ίπποι (Trojans) Συνήθως παρουσιάζονται στον ανυποψίαστο χρήστη ως μια χρήσιμη εφαρμογή ή λειτουργία έτσι ώστε να τον κάνουν να εκτελέσει το μολυσμένο πρόγραμμα. Σε πολλές περιπτώσεις ο κακόβουλος κώδικας είναι καλά κρυμμένος μέσα σε μια κατά τα άλλα κανονική εφαρμογή η οποία μπορεί όντως να έχει μια χρησιμότητα εκτός από την κακόβουλη λειτουργία (εξού και ο τίτλος Trojan). Αυτού του τύπου οι ιοί μερικές φορές μπορούν να αντιγράψουν αρχεία στον υπολογιστή, τα οποία προκαλούν επιζήμια τροποποίηση ή και ολοκληρωτική διαγραφή προϋπαρχόντων δεδομένων, ενώ μερικοί μπορούν να δώσουν στον επιτιθέμενο τη δυνατότητα να αποκτήσει πρόσβαση στον υπολογιστή του θύματος. Είναι συχνό βέβαια πολλοί τέτοιοι ιοί να μην έχουν κάποια επιζήμια λειτουργία και απλά να πολλαπλασιάζονται στον υπολογιστή κάποιου χρήστη χωρίς κάποια σημαντική επίπτωση. Πρόκειται για έναν από τους πιο συχνούς τύπους ιών [1], [ 15], [16]. Αθανάσιος Σταγκίδης- Α.Μ

26 2.3.2 Flooders Θα μπορούσε να αναφερθεί και ως υποκατηγορία των Trojan, καθώς παρουσιάζει αρκετά κοινά χαρακτηριστικά με αυτά. Οι Flooders υπερφορτώνουν τη διαδικτυακή σύνδεση του θύματος μέσω ταχύτατης και επαναλαμβάνομενης αποστολής μηνυμάτων εντοπισμού διαθεσιμότητας και απόδοσης απομακρυσμένου πόρου (ping) σε δίκτυο και επίθεσης άρνησης παροχής υπηρεσίας (DOS, Denial-of-Service). Ένας υπολογιστής συχνά μολύνεται από Flooders μέσω λήψεως κάποιου άλλου λογισμικού ή pop-up διαφημιστικών μηνυμάτων τα οποία είναι μολυσμένα [2], [1], [17] Σκουλήκια (Worms) Είναι αυτοαναπαραγόμενα και συνήθως κακόβουλα προγράμματα υπολογιστή τα οποία χρησιμοποιούν ένα δίκτυο υπολογιστών για να στείλουν αντίγραφα του εαυτού τους σε άλλους υπολογιστές χωρίς την παρέμβαση του χρήστη. Δεν μολύνουν αρχεία ως επί το πλείστον αλλά πρόκειται για αυτάρκεις εφαρμογές οι οποίες δεν χρειάζονται πρόγραμμα ξενιστή για να «επιβιώσουν». Αν και δεν προκαλούν βλάβη σε αρχεία, συνήθως αναπαράγονται τόσο γρήγορα στο δίκτυο και καταναλώνουν αρκετό εύρος ζώνης ώστε μπορούν να οδηγήσουν στη κατάρρευση του. Μπορεί βέβαια μερικές φορές να είναι υπεύθυνα και για άλλες κακόβουλες ενέργειες όπως η εγκατάσταση κάποιου ανεπιθύμητου προγράμματος στον υπολογιστή που μολύνουν και η αλλαγή σε σημαντικές ρυθμίσεις. Στο παρελθόν πρέπει να αναφέρουμε ότι έχουν υπάρξει Σκουλήκια που έχουν χρησιμοποιηθεί για καλό σκοπό, κυρίως σε πειραματικές έρευνες. Κάποιοι γνωστοί τύποι Σκουληκιών είναι οι Mass Mailers και τα Octopus Worms. Τα πρώτα στέλνουν τον εαυτό τους σε ένα μήνυμα ηλεκτρονικής αλληλογραφίας και μεταδίδονται με την ανταλλαγή των μηνυμάτων ηλεκτρονικής αλληλογραφίας, ενώ τα δεύτερα έχουν κατανεμημένα τα τμήματα τους σε περισσότερους από έναν υπολογιστές [1], [2], [16], [18] Λογικές/Χρονικές Βόμβες (Timebombs) Πρόκειται για κομμάτια κάποιων νόμιμων εφαρμογών τα οποία προκαλούν μερικές δυσλειτουργίες και ενεργοποιούνται υπό ορισμένες προϋποθέσεις. Μπορεί να πυροδοτηθούν είτε από ένα λογικό γεγονός είτε σε κάποια συγκεκριμένη χρονική στιγμή (μια συγκεκριμένη ημερομηνία) [11], [2], [1]. Αθανάσιος Σταγκίδης- Α.Μ

27 2.3.5 Downloaders Είναι προγράμματα λήψης, τα οποία κατεβάζουν και εγκαθιστούν ένα η περισσότερα κακόβουλα προγράμματα από το Διαδίκτυο, ενώ μπορεί ακόμα να προχωρήσουν και στην εκτέλεση τους. Συνηθίζεται να αποστέλλονται στον χρήστη μέσω συνδέσμων η επισυναπτόμενων αρχείων σε και είναι δύσκολο να εντοπιστούν καθώς δεν περιέχουν τα ίδια κάποιον κακόβουλο κώδικα παρά μόνο οδηγίες και συνδέσμους για τη λήψη του [1], [19] Keyloggers Πρόκειται για εφαρμογές οι οποίες έχουν τη δυνατότητα να ελέγχουν και να καταγράφουν τη δραστηριότητα τύπωσης χαρακτήρων στο πληκτρολόγιο. Με τον τρόπο αυτό μπορούν να συλλέξουν ευαίσθητα και απόρρητα δεδομένα όπως: ονόματα χρηστών, κωδικούς πρόσβασης, κωδικούς PIN, αριθμούς πιστωτικών καρτών κ.α. Αποτελούν μια από τις πιο διαδεδομένες και ευρέως χρησιμοποιούμενες τεχνικές υποκλοπής ταυτότητας. Τα δεδομένα που συλλέγονται αποθηκεύονται σε ένα αρχείο και είτε αποστέλλονται απευθείας στον επιτιθέμενο είτε αποστέλλονται σε έναν εξυπηρετητή από όπου ο επιτιθέμενος μπορεί να τα αποκτήσει πολύ εύκολα. Οι εφαρμογές αυτές μπορούν να υλοποιηθούν σε επίπεδο υλικού (hardware keyloggers) ή σε επίπεδο λογισμικού (software keyloggers) [1], [2], [16], [20] Rootkits Είναι κομμάτια λογισμικού τα οποία προσπαθούν να αποκρύψουν στοχευόμενες διεργασίες και αρχεία ώστε να εμποδίσουν τον εντοπισμό τους. Ο επιτιθέμενος συνήθως πρέπει να έχει αποκτήσει πρόσβαση με δικαιώματα διαχειριστή σε έναν υπολογιστή πριν τα χρησιμοποιήσει. Πολύ συχνά ενσωματώνονται σε βασικά αρχεία του λειτουργικού συστήματος και αποκτούν πλήρη έλεγχο στο σύστημα, κάτι το οποίο σημαίνει ότι επιτρέπουν στον επιτιθέμενο να διαχειρίζεται (root) όλα τα προγράμματα και τις διεργασίες του υπολογιστή. Υπάρχουν rootkits που εκτελούνται σε επίπεδο χρήστη (user-mode) και κάποια αρκετά πιο πολύπλοκα τα οποία λειτουργούν σε επίπεδο πυρήνα (kernel-mode). Τα rootkits χρησιμοποιούνται πολλές φορές για να αποκρύψουν keyloggers ενώ μπορεί να καταστήσουν ένα μηχάνημα ως υπολογιστή- Αθανάσιος Σταγκίδης- Α.Μ

28 zombie για επιθέσεις σε άλλους υπολογιστές (DoS επιθέσεις και spam) [1], [2], [21], [16], [20], [22] Spyware & Adware Σαν spyware ορίζουμε μικρές εφαρμογές οι οποίες εγκαθίστανται στον υπολογιστή του θύματος χωρίς την επίγνωση και την άδεια του και συλλέγουν πληροφορίες σχετικές με αυτόν, τις οποίες κατόπιν αποστέλλουν στον επιτιθέμενο μέσω του Διαδικτύου. Ο τρόπος μόλυνσης με spyware σε έναν υπολογιστή ποικίλει. Ένα spyware μπορεί να εισβάλλει σε έναν υπολογιστή μέσω διαμοιρασμού αρχείων με peer-to-peer πρωτόκολλο, με τη χρήση ύποπτων υπερσυνδέσμων ιστοσελίδων είτε με τη λήψη κάποιων χρήσιμων για τον υπολογιστή εφαρμογών τις οποίες συνοδεύει (π.χ. add-ons για φυλλομετρητή). Ένα spyware μπορεί να καταγράψει στοιχεία από αρχεία που έχει ο χρήστης στο σύστημα και να οδηγήσει στην υποκλοπή απόρρητων δεδομένων. Επιπλέον εποπτεύουν τον σκληρό δίσκο και κατασκοπεύουν εφαρμογές όπως chat messengers ή επεξεργαστές κειμένου. Οποιαδήποτε πληροφορία συλλεχθεί μπορεί να σταλεί στον ενδιαφερόμενο, ο οποίος θα τις αξιοποιήσει με σκοπό το κέρδος (π.χ. για διαφημιστικούς λόγους). Τα spyware ιδιαίτερα όταν συσσωρεύονται σε μεγάλο αριθμό μπορούν να προκαλέσουν αστάθεια του υπολογιστή και ίσως ακόμα και κατάρρευση του. Αυτό συμβαίνει διότι γεμίζουν έναν φυλλομετρητή με άχρηστα εργαλεία, αλλάζουν τις ρυθμίσεις του και χρησιμοποιούν πόρους, κάτι που οδηγεί σε κατανάλωση σημαντικής ποσότητας μνήμης, υπολογιστικής ισχύος και σπατάλη εύρους ζώνης από τη σύνδεση στο Διαδίκτυο (λόγω τις επικοινωνίας με τον επιτιθέμενο). Ως adware ορίζουμε ένα διαφημιστικό κακόβουλο λογισμικό και είναι μια υποκατηγορία του spyware. Αφού το adware συλλέξει τις πληροφορίες που χρειάζεται προβάλλει διαφημίσεις στον υπολογιστή του θύματος, σε μορφή pop-up και pop-under παραθύρων ή banners. Προκαλεί παρόμοιες δυσλειτουργίες με ένα spyware στον υπολογιστή του θύματος, όμως κάποιες φορές συνυπάρχει με ελεύθερο λογισμικό που διατίθεται δωρεάν στο χρήστη αποκτώντας έτσι μια πιο νόμιμη μορφή. Κάποιες φορές τα spyware όπως και τα adware μπορούν να θεωρηθούν νόμιμα και αποδεκτά, ανάλογα και με τις νομοθεσίες που ισχύουν σε κάθε περίπτωση [1], [2], [21], [16], [20]. Αθανάσιος Σταγκίδης- Α.Μ

29 2.3.9 Ransomware Είναι προγράμματα τα οποία αφού μολύνουν έναν υπολογιστή, κρυπτογραφούν και κλειδώνουν αρχεία και εφαρμογές που υπάρχουν σε αυτόν αποτρέποντας το χρήστη από την εκτέλεση βασικών λειτουργιών του υπολογιστή και τότε ζητούν μια χρηματική αμοιβή ως «λύτρα» (ransom) από αυτόν για να ανακτήσει τα δεδομένα του και να αποκτήσει και πάλι την κανονική λειτουργία του συστήματος του. Παραταύτα ακόμα και αν πληρώσει ο χρήστης δεν υπάρχει καμία εγγύηση ότι θα λάβει πίσω τα δεδομένα του. Η αμοιβή συνήθως ζητείται από τον χρήστη μέσω pop-up παραθύρων. Σε ορισμένες περιπτώσεις οι επιτιθέμενοι μέσω των ransomware ισχυρίζονται ότι είναι η αστυνομία ή η κυβέρνηση και ότι κλείδωσαν τον υπολογιστή του θύματος για λόγους ασφαλείας. Τότε ζητούν να πληρωθεί ένα πρόστιμο για την επαναφορά της κανονικής λειτουργίας του υπολογιστή [16], [20]. Υπάρχουν αρκετές ακόμα κατηγορίες ιομορφικού λογισμικού αλλά δεν θα αναφερθούμε σε άλλες καθώς δεν είναι αυτό το αντικείμενο της παρούσας εργασίας. Πολλές από τις παραπάνω κατηγορίες ιομορφικού λογισμικού χρησιμοποιήθηκαν στα πειράματα που διεξαγάγαμε για την συγκεκριμένη εργασία. 2.4 Αντιϊκές Τεχνικές Άμυνας Μπροστά στις πολλές και ισχυρές απειλές που ξεπροβάλλουν καθημερινά με τη μορφή ιομορφικών λογισμικών, στέκονται προγράμματα-ασπίδες για έναν υπολογιστή, τα οποία χρησιμοποιούν τεχνικές για να προλάβουν ή να διαγνώσουν το ιομορφικό λογισμικό και σε ορισμένες περιπτώσεις να επιδιορθώσουν τη ζημιά που έχει προκληθεί σε έναν υπολογιστή. Αυτά τα προγράμματα προστάτες είναι τα λεγόμενα αντιϊκά λογισμικά. Τα αντιϊκά λογισμικά χρησιμοποιούν μια πληθώρα από τεχνικές για να αμυνθούν απέναντι στις κακόβουλες επιθέσεις. Θα δούμε εν συντομία τις βασικότερες από αυτές, καθώς το εργαλείο διάγνωσης που προτείνουμε σε αυτή την εργασία έχει τις ρίζες του σε μερικές από αυτές Διάγνωση Υπογραφών Κάθε πρόγραμμα σε έναν υπολογιστή δεν είναι τίποτα άλλο παρά μια ακολουθία δυαδικών ψηφίων. Η διαφορετικότητα λοιπόν κάθε προγράμματος οφείλεται στους Αθανάσιος Σταγκίδης- Α.Μ

30 άπειρους διαφορετικούς συνδυασμούς και ακολουθίες δυαδικών ψηφίων. Στην παρακάτω εικόνα βλέπουμε μια υπογραφή ενός προγράμματος από τον debugger OllyDbg [23] σε δεκαεξαδική μορφή. Εικόνα 2. Παράδειγμα Υπογραφής (δεκαεξαδική μορφή) Ένας ιός περιέχει συνήθως επιβλαβή κώδικα, ο οποίος χρησιμοποιείται για να τροποποιήσει τη δομή και τη λειτουργία κάποιων χαρακτηριστικών του λειτουργικού συστήματος ενός υπολογιστή ή άλλων προγραμμάτων που περιέχονται σε αυτόν. Αυτός ο κώδικας μεταφράζεται σε εντολές μηχανής, οι οποίες με τη σειρά τους μεταφράζονται σε δυαδικά ψηφία με τον τρόπο που αναφέραμε παραπάνω. Η εκτεταμένη ανάλυση κάθε ιομορφικού λογισμικού οδηγεί στην εύρεση μιας ακολουθίας δυαδικών ψηφίων που το ξεχωρίζουν από τα υπόλοιπα προγράμματα και το χαρακτηρίζουν μοναδικά. Αυτή η ακολουθία ψηφίων είναι η προσωπική του «ταυτότητα» και ονομάζεται υπογραφή. Η διάγνωση υπογραφών είναι η πιο παλιά και η πιο διαδεδομένη μέθοδος διάγνωσης ιών και βασίζεται στον εντοπισμό της υπογραφής του ιού. Συγκεκριμένα αφού η υπογραφή αναγνωριστεί καταγράφεται σε μια βάση δεδομένων την οποία αποθηκεύουν και συμβουλεύονται τα αντιϊκά λογισμικά έτσι ώστε να μπορέσουν να διαγνώσουν την ύπαρξη του ιού σε ένα υπολογιστικό σύστημα σε σύντομο χρονικό διάστημα. Για να είναι αποτελεσματική η μέθοδος διάγνωσης υπογραφών, η βάση δεδομένων πρέπει να ανανεώνεται ανά τακτά χρονικά διαστήματα ώστε να συμπεριλαμβάνει τις υπογραφές νέων ιών που έχουν κυκλοφορήσει στο Διαδίκτυο. Η διάγνωση υπογραφών με την πάροδο του χρόνου εξελίχτηκε όλο και περισσότερο. Η χρήση wildcards και mismatches βοήθησε στην μείωση του χρόνου διάγνωσης εξαιτίας της παράκαμψης κάποιων bytes, ενώ η χρήση check bytes βοηθάει μετέπειτα στην επιδιόρθωση του. Αναπτύχθηκαν τεχνικές οι οποίες μεταφέρουν της διαδικασία διάγνωσης σε συγκεκριμένες περιοχές των εξεταζόμενων δειγμάτων όπως στην αρχή Αθανάσιος Σταγκίδης- Α.Μ

31 και στο τέλος ενός αρχείου (top-and-tail scanning), ή ακόμα και στο σημείο εκκίνησης της εκτέλεσης του (entry-point scanning) ή σε ένα άλλο προκαθορισμένο σημείο (fixed point scanning). Πολλά ιομορφικά λογισμικά συνηθίζουν να εγκαθίστανται σε συγκεκριμένες περιοχές ενός αρχείου, όπως οι παραπάνω και έτσι βελτιώνεται σε μεγάλο βαθμό ο χρόνος διάγνωσης. Για την αντιμετώπιση ιών οι οποίοι γεμίζουν με άχρηστες εντολές τον κώδικα τους για να κάνουν πιο δύσκολη τη διάγνωση υπογραφών, δημιουργήθηκαν προχωρημένες μέθοδοι διάγνωσης με βάση και πάλι τις υπογραφές. H μέθοδος smart scanning αγνοεί τις άχρηστες εντολές (NOP, κενά κ.λπ.) και τις πετάει από τη διαδικασία διάγνωσης. Με παρόμοιο τρόπο λειτουργεί και η μέθοδος skeleton detection η οποία μάλιστα είναι ιδιαίτερα αποτελεσματική στον εντοπισμό μακροϊών. Τέλος οι μέθοδοι σχεδόν ακριβούς ταυτοποίησης (nearly exact identification) και ακριβούς ταυτοποίησης (exact identification) οδηγούν σε πιο ακριβή και αποτελεσματική διάγνωση όπως υποδηλώνει και το όνομα τους, κάνοντας χρήση απλών η κρυπτογραφημένων checksums και συναρτήσεων κατακερματισμού (hash functions). Η διάγνωση υπογραφών δυστυχώς παρόλη την απλότητα της μπορεί να ξεπεραστεί εύκολα από τους επιτιθέμενους με τεχνικές τροποποίησης υπογραφών. Οι πολυμορφικοί, μεταμορφικοί ιοί καθώς και το νέο ιομορφικό λογισμικό μπορούν να την υπερνικήσουν [1], [2], [24] Διάγνωση Ευρετικής Ανάλυσης Πρόκειται για μια μέθοδο η οποία βασίζεται στην παρατήρηση των βασικών δομικών και λειτουργικών χαρακτηριστικών ενός αρχείου για τη διάγνωση απειλών. Είναι ιδιαίτερα χρήσιμη στον εντοπισμό νέων και πολύπλοκων ιών και για αυτό σε πολλές περιπτώσεις προτιμάται έναντι τις διάγνωσης υπογραφών. Σε πολλά ιομορφικά λογισμικά υπάρχουν στοιχεία στον κώδικα τους τα οποία δεν εμφανίζονται σε «φυσιολογικές» εφαρμογές, όπως έχει προκύψει από μελέτες. Δημιουργούνται λοιπόν σημαίες (flags), οι οποίες υποδεικνύουν ύποπτη συμπεριφορά σε ένα αρχείο. Μερικές από αυτές φαίνονται παρακάτω: Αλλαγή του σημείου εκκίνησης (τέλος του αρχείου) Περίεργα χαρακτηριστικά τμήματος σε εκτελέσιμα αρχεία (άδειες, περιεχόμενο) Αθανάσιος Σταγκίδης- Α.Μ

32 Ανακατεύθυνση κώδικα μέσω αλμάτων (jumps) Τροποποιημένος πίνακας Imports Εσφαλμένο μέγεθος επικεφαλίδας (header) Χρήση συναρτήσεων αποκρυπτογράφησης Άνοιγμα άλλων αρχείων με δικαιώματα εγγραφής Περίεργη χρήση εντολών διακοπής (Interrupt) Ενσωμάτωση λειτουργιών αντι-απασφαλμάτωσης και αντι-εξομοίωσης (antidebugging, anti-emulating) Χρήση μη καταγεγραμμένων χαρακτηριστικών του DOS Μερικές από τις παραπάνω σημαίες θα γίνουν πιο κατανοητές στο επόμενο κεφάλαιο, όπου θα γίνει παρουσίαση της βασικής διαμόρφωσης PE (portable executable) αρχείων. Η ευρετική διάγνωση έχει κάποια αρνητικά χαρακτηριστικά. Μπορεί να παράγει εσφαλμένες προειδοποιήσεις (false positives) καθώς μια κανονική εφαρμογή μπορεί να παρουσιάζει όμοια ευρετικά χαρακτηριστικά με μια κακόβουλη, να μην αναγνωρίσει κάποιες απειλές είτε να παρουσιάζει μεγάλο χρόνο διάγνωσης [1], [2], [24] Αποκλεισμός με βάση τη Συμπεριφορά Μέχρι στιγμής είδαμε μεθόδους αντιμετώπισης στις οποίες η διάγνωση μπορούσε να επιτευχθεί χωρίς να εκτελεστεί καν το ιομορφικό λογισμικό. Οι προηγούμενες μέθοδοι αναφέρονται και ως μέθοδοι στατικής ανάλυσης. Η επόμενη μέθοδος που θα εξετάσουμε ανήκει στις μεθόδους δυναμικής ανάλυσης, δηλαδή μεθόδους όπου απαιτείται η εκτέλεση του ιομοριφικού λογισμικού για να γίνει ο εντοπισμός του. Ο αποκλεισμός με βάση τη συμπεριφορά βασίζεται στον συνεχή έλεγχο της δραστηριότητας των προγραμμάτων σε ένα υπολογιστικό σύστημα σε πραγματικό χρόνο και στον εντοπισμό κακόβουλων ενεργειών. Οι ύποπτες συμπεριφορές μπλοκάρονται και τερματίζονται οι εφαρμογές που συσχετίζονται με αυτές. Τέτοιες υποψήφιες κακόβουλες συμπεριφορές είναι: Προσπάθεια ανοίγματος και εγγραφής αρχείων Προσπάθεια διαμόρφωσης δίσκων Τροποποιήσεις σε βασικές ρυθμίσεις συστήματος Αθανάσιος Σταγκίδης- Α.Μ

33 Τροποποιήσεις ρυθμίσεων Δικτύου Περίεργη χρήση μακρο-εντολών Αποστολή μαζικών Υπάρχουν πολλές ακόμα συμπεριφορές που μπορεί να καταγράφονται σε τέτοια συστήματα. Η χρήση αποκλεισμού βάση συμπεριφοράς είναι ιδιαίτερα αποτελεσματική στην αντιμετώπιση παρασιτικών ιών, σκουληκιών και Δούρειων Ίππων. Υποφέρει από κάποια μειονεκτήματα βέβαια. Όπως και με την ευρετική ανάλυση είναι πιθανό να παραχθούν εσφαλμένες προειδοποιήσεις, λόγω ύποπτων συμπεριφορών που εν τέλει δεν ήταν κακόβουλες. Έχουν συνήθως δύσκολη υλοποίηση και επειδή χρησιμοποιούν κλήσεις συστήματος μπορεί να επιβαρύνουν ένα υπολογιστικό σύστημα αρκετά. Χρειάζονται συνεχή έλεγχο από τους διαχειριστές συστημάτων και πολύπλοκες ρυθμίσεις ενώ όπως και με όλες τις μεθόδους δυναμικής ανάλυσης υπάρχει πάντα ο κίνδυνος ο κακόβουλος κώδικας να προκαλέσει ανεπανόρθωτη ζημία αφού πρέπει να εκτελεστεί για να αναγνωριστεί η συμπεριφορά του [1], [2], [25] Εξομοίωση Κώδικα Είναι ίσως η πιο ισχυρή και αξιόπιστη μέθοδος διάγνωσης και χρησιμοποιείται όλο και περισσότερο τα τελευταία χρόνια. Η κεντρική ιδέα είναι ότι το εκτελέσιμο το οποίο εξετάζεται τοποθετείται σε ένα ασφαλές και πλήρως ελεγχόμενο περιβάλλον, απομονωμένο συνήθως από το πραγματικό υπολογιστικό σύστημα και εξετάζονται διάφοροι παράγοντες κατά την εκτέλεση του. Πρόκειται για μια δυναμική μέθοδο ανάλυσης στην οποία χρησιμοποιείται μια εικονική μηχανή που προσομοιώνει τη κεντρική μονάδα επεξεργασίας (CPU), τη κύρια και τη βοηθητική μνήμη, την επικοινωνία ένα δίκτυο, διακοπές και λειτουργίες του λειτουργικού συστήματος καθώς και άλλες σημαντικές μονάδες, εξαρτήματα και γενικότερα πόρους ενός αληθινού υπολογιστικού συστήματος. Με τον τρόπο αυτό γίνεται μια πολύ καλή μίμηση της εκτέλεσης του ύποπτου κώδικα σε ένα προστατευμένο περιβάλλον χωρίς να υπάρχει κίνδυνος να επεκταθεί ή να καταστρέψει έναν πραγματικό υπολογιστή. Για να προσομοιωθεί σωστά η CPU χρησιμοποιούνται εικονικοί καταχωρητές, buffers μνήμης, εικονική μνήμη και μια σειρά από σημαίες. Αθανάσιος Σταγκίδης- Α.Μ

34 Η εξομοίωση κώδικα παρότι είναι πολύ ισχυρή μέθοδος διάγνωσης, εντούτοις είναι συνήθως χρονοβόρα και υπολογιστικά δαπανηρή. Χρειάζονται αρκετοί υπολογιστικοί πόροι για δημιουργήσουν ένα αξιόπιστο και λειτουργικό εικονικό σύστημα και ιδιαίτερες γνώσεις και δεξιότητες για τη διαχείριση του. Τέλος όπως όλες οι δυναμικές τεχνικές ανάλυσης, είναι εν δυνάμει επικίνδυνη σε περίπτωση που το ιομορφικό λογισμικό ξεφύγει από το προστατευμένο περιβάλλον και προκαλέσεις σημαντικές βλάβες στο αληθινό υπολογιστικό σύστημα που φιλοξενεί το εικονικό [1], [2], [24]. Αναλύσαμε τις βασικές τεχνικές αντιμετώπισης ιομορφικών λογισμικών. Πολλές φορές η χρήση κάποιου συνδυασμού των παραπάνω τεχνικών φέρνει τα καλύτερα αποτελέσματα. Φυσικά υπάρχει και μια πληθώρα τεχνικών άμυνας οι οποίες αφορούν την πρόληψη ενός ιού, πριν προλάβει να δράσει σε ένα υπολογιστικό σύστημα. Οι περισσότερες από αυτές δρουν σε επίπεδο δικτύου. Οι πιο σημαντικές είναι: άμυνα στους δρομολογητές και λίστες-πρόσβασης (access-lists), άμυνα Τείχους Προστασίας (Firewall) και τα συστήματα εντοπισμού εισχώρησης (NIDS). Δεν θα επεκταθούμε περισσότερο όμως στις αντιϊκές τεχνικές σε αυτή την εργασία. Στην διπλωματική εργασία [1] υπάρχει μια σαφής και λεπτομερή περιγραφή τόσο των κατηγοριών ιομορφικού λογισμικού όσο και των τεχνικών αντιμετώπισης που παρουσιάστηκαν παραπάνω, αυτών που απλά αναφέρθηκαν καθώς και ακόμα περισσότερων. Όπως θα δούμε στο κεφάλαιο 6, σε αυτή την εργασία το εργαλείο διάγνωσης που αναπτύξαμε βασίζεται σε στατική μέθοδο διάγνωσης με χρήση ευρετικής ανάλυσης. Αθανάσιος Σταγκίδης- Α.Μ

35 3 Δομή και Διαμόρφωση Portable Executable Αρχείων Η παρούσα εργασία ασχολείται με τον εντοπισμό packer σε εκτελέσιμα αρχεία. Η λειτουργικότητα ενός packer βασίζεται στα δομικά χαρακτηριστικά των εκτελέσιμων αρχείων των windows. Επιπλέον το εργαλείο διάγνωσης που αναπτύξαμε χρησιμοποιεί και αυτό με τη σειρά του κάποιες δομές και χαρακτηριστικά της βασικής διαμόρφωσης των εκτελέσιμων αρχείων των windows. Συγκεκριμένα στη μελέτη μας αλλά και στην υπόλοιπη εργασία όταν αναφερόμαστε σε εκτελέσιμα αρχεία, θα είναι μόνο Portable Executable αρχεία ή αλλιώς PE αρχεία των windows. Παρακάτω θα προσπαθήσουμε να αναλύσουμε την ανατομία των PE αρχείων. Η διαμόρφωση PE αρχείων είναι η διαμόρφωση δυαδικών προγραμμάτων για MS Windows NT, 95 και 32-bit και 64-bit εκδόσεις των windows λειτουργικών συστημάτων. Ο όρος Portable Executable αναφέρεται στην ιδιότητα της φορητότητας, καθώς αυτός ο τύπος αρχείων και η δομή του είναι η ίδια για όλες τις αρχιτεκτονικές των windows εκδόσεων. Αρχεία με καταλήξεις.exe,.dll,.sys,.src όπως και common object αρχεία (bpl, cpl, κ.ά.) έχουν όλα τη κοινή βασική διαμόρφωση PE αρχείων. Μια σημαντική ιδιότητα των PE αρχείων είναι ότι οι δομές δεδομένων ενός αρχείου στο δίσκο παραμένουν οι ίδιες και όταν φορτωθούν στην μνήμη του υπολογιστή. Αυτό που μπορεί να διαφέρει είναι η θέση στην οποία θα φορτωθεί στη μνήμη από την αντίστοιχη στο δίσκο offset), όμως υπάρχει πάντα η πληροφορία για την σωστή αντιστοίχιση και τη μετάφραση διεύθυνσης από την μια τοποθεσία στην άλλη [26]. Παρακάτω παραθέτουμε μια εικόνα με την βασική διαμόρφωση ενός PE αρχείου. Αθανάσιος Σταγκίδης- Α.Μ

36 Εικόνα 3. Βασική Διαμόρφωση PE αρχείου Στη συνέχεια θα περιγράψουμε μια προς μια τις βασικές δομές που φαίνονται στη παραπάνω εικόνα. 3.1 DOS Header Είναι η πρώτη επικεφαλίδα που υπάρχει στο PE αρχείο. Περιέχει μια σειρά από πεδία από τα οποία μας ενδιαφέρουν μόνο δυο. Το πρώτο πεδίο έχει όνομα e_magic και μέγεθος 2 bytes. Αυτά τα 2 bytes σε όλα τα κανονικά PE αρχεία έχουν την τιμή 4D 5A (στο δεκαεξαδικό σύστημα), το οποίο μεταφράζεται σε MZ. Το ΜΖ δεν είναι τίποτα άλλο από τα αρχικά του ονόματος Mark Zbikowski, τον σχεδιαστή δηλαδή της PE διαμόρφωσης από τη Microsoft. Αυτά τα 2 bytes είναι η DOS υπογραφή όλων των εκτελέσιμων αρχείων των windows. Το άλλο πεδίο που μας ενδιαφέρει είναι το τελευταίο στην επικεφαλίδα αυτή, λέγεται e_lfanew και περιέχει την αρχική θέση της κεφαλίδας PE File Header την οποία θα δούμε παρακάτω [26], [28], [27]. Αθανάσιος Σταγκίδης- Α.Μ

37 3.2 DOS Stub Η επόμενη δομή ονομάζεται DOS Stub η διαφορετικά DOS Segment. Περιέχει μια μικρή ρουτίνα η οποία προβάλει ένα μήνυμα λάθους όπως «This program cannot be run in DOS mode» ή «This program requires Windows» σε περίπτωση που αποτύχει η φόρτωση του αρχείου λόγω ασυμβατότητας ή σφαλμάτων [26], [28]. 3.3 PE File Header Πρώτο πεδίο στην επικεφαλίδα αυτή είναι η υπογραφή των PE αρχείων που είναι 4 συγκεκριμένα bytes που έχουν την τιμή 4550 (στο δεκαεξαδικό), δηλαδή το σύμβολο PE/0/0 (PE ακολουθούμενο από δυο μηδενικά). Η υπογραφή αυτή επικυρώνει ότι το εκτελέσιμο αρχείο είναι όντως PE. Στη συνέχεια ακολουθούν τα παρακάτω πεδία με τις επεξηγήσεις τους: Machine: Αριθμός ο οποίος αναγνωρίζει τον τύπο της μηχανής στον οποίο μπορεί να τρέξει το εκτελέσιμο (επιλογή Επεξεργαστή). NumberOfSections: Ο αριθμός των τμημάτων του αρχείου. TimeDateStamp: Ημερομηνία δημιουργίας του αρχείου. PointerToSymbolTable: Η θέση του πίνακα COFF συμβόλων του αρχείου (0 αν δεν έχει). NumberOfSymbols: Αριθμός καταχωρίσεων του πίνακα συμβόλων. SizeOfOptionalHeader: Το μέγεθος της επικεφαλίδας Optional Header (0 για object αρχεία). Characteristics: Σημαίες οι οποίες υποδηλώνουν κάποια χαρακτηριστικά γνωρίσματα του αρχείου. Δυο τέτοιες σημαίες είναι οι IMAGE_FILE_SYSTEM με τιμή 0x1000 και IMAGE_FILE_DLL με τιμή 0x2000 οι οποίες υποδηλώνουν εάν ένα αρχείο είναι system (.sys) αρχείο η dll αντίστοιχα(.dll) [27]. Αθανάσιος Σταγκίδης- Α.Μ

38 3.4 Image Optional Header Το σημείο αυτό της διαμόρφωσης ενός PE αρχείου είναι ιδιαίτερα σημαντικό για την εργασία αυτή, καθώς γίνεται χρήση πολλών πεδίων που ανήκουν σε αυτό, στο εργαλείο διάγνωσης που αναπτύσσουμε. Παρακάτω παραθέτουμε όλα τα πεδία της Image Optional επικεφαλίδας ονομαστικά, με τη σειρά εμφάνισης τους. Magic MajorLinkerVersion MinorLinkerVersion SizeOfCode SizeOfUnitializedData AddressOfEntryPoint BaseOfCode BaseOfData ImageBase SectionAlignment FileAlignment MajorOperatingSystemVersion MinorOperatingSystemVersion MajorImageVersion MinorImageVersion MajorSubsystemVersion MinorSybsystemVersion Reserved1 SizeOfImage SizeOfHeaders CheckSum Subsystem Αθανάσιος Σταγκίδης- Α.Μ

39 DllCharacteristics SizeOfStackReserve SizeOfStackCommit SizeOfHeapReserve SizeOfHeapCommit LoaderFlags NumberOfRvaAndSizes Data Directories Θα περιγράψουμε μόνο κάποια από τα παραπάνω πεδία που είτε χρησιμοποιήσαμε στο εργαλείο διάγνωσης είτε θεωρήσαμε σημαντικά. Τα πρώτα επτά πεδία είναι τα στάνταρ πεδία που ορίζονται για όλες τις υλοποιήσεις του COFF (Common Object File Format) και περιέχουν πληροφορίες χρήσιμες για την φόρτωση και εκτέλεση ενός εκτελέσιμου αρχείου. Το πρώτο πεδίο, με όνομα Magic περιέχει πληροφορία η οποία ξεχωρίζει ένα PE32 (Windows 32-bit) αρχείο από ένα PE32+ (Windows 64-bit) αρχείο. Τα άλλα πεδία αφορούν πληροφορίες για την έκδοση του Linker που χρησιμοποιήθηκε, το μέγεθος του τμήματος κώδικα και του τμήματος δεδομένων του αρχείου καθώς και τις διευθύνσεις που ξεκινάνε τα τμήματα αυτά. Κάτι στο οποίο θα δώσουμε έμφαση είναι το πεδίο AddressOfEntryPoint. Είναι ένας δείκτης της σχετικής διεύθυνσης του σημείου εκκίνησης εκτέλεσης του προγράμματος όταν αυτό φορτώνεται στη μνήμη (σχετική σημαίνει ότι αποτελεί έναν συνδυασμό δυο διευθύνσεων). Στη συνέχεια προχωράμε στα επόμενα 21 εξειδικευμένα για Windows πεδία, τα οποία παρέχουν πληροφορίες που χρειάζεται ο φορτωτής (loader) και ο linker των Windows. Το πεδίο ImageBase περιέχει την προτεινόμενη διεύθυνση στην οποία ξεκινάει η φόρτωση της εικόνας του εκτελέσιμου στη μνήμη. Για τις περισσότερες εκδόσεις των windows είναι προκαθορισμένη και έχει την τιμή 0x Στην συνέχεια βλέπουμε πεδία σχετικά με τις ευθυγραμμίσεις των τμημάτων του εκτελέσιμου στη μνήμη, την ευθυγράμμιση των δεδομένων στο δίσκο, πληροφορίες για το λειτουργικό σύστημα και τις εκδόσεις άλλων υπομονάδων. Το πεδίο SizeOfImage δηλώνει το μέγεθος της εικόνας που καταλαμβάνει στη μνήμη και το πεδίο SizeOfHeaders το άθροισμα των μεγεθών κάποιων επικεφαλίδων. Το πεδίο LoaderFlags είναι προκαθορισμένο και πρέπει να έχει την τιμή μηδέν. Το τελευταίο από τα 21 πεδία έχει όνομα NumberOfRvaAndSizes και Αθανάσιος Σταγκίδης- Α.Μ

40 περιέχει τον αριθμό, τις θέσεις μνήμης και το μέγεθος όλων των πινάκων που βρίσκονται στο τελευταίο κομμάτι της Image Optional κεφαλίδας, το Data Directories. Τα windows χρησιμοποιούν στοιχεία, όπως τιμές, συμβολοσειρές, σταθερές και άλλα τα οποία εξάγουν από τις καταχωρίσεις των πινάκων του πεδίου Data Directories κατά τη διάρκεια εκτέλεσης του προγράμματος. Κάθε πίνακας έχει ένα συγκεκριμένο μέγεθος και μια διεύθυνση στην οποία φορτώνεται. Ο πιο σημαντικός για την εργασία μας πίνακας είναι ο IAT η αλλιώς Import Address Table. Δεν είναι τίποτα άλλο παρά ένας πίνακας με δείκτες συναρτήσεων ο οποίος συνδέει συναρτήσεις με αρχεία DLL και κάνει διαθέσιμα στο εκτελέσιμο πρόγραμμα διάφορα χρήσιμα APIs (Application Programming Interfaces) των Windows. Περιέχει ουσιαστικά διευθύνσεις και βοηθάει στην εύρεση των κατάλληλων εργαλείων για τη σωστή λειτουργία του κάθε προγράμματος. Κάποιοι άλλοι πίνακες οι οποίοι υπάρχουν στο πεδίο Data Directories είναι o Export Table που περιέχει διευθύνσεις δεδομένων και συναρτήσεων που το συγκεκριμένο πρόγραμμα παρέχει προς άλλα αρχεία, ο Resource Table που περιέχει πληροφορίες (διευθύνσεις και μεγέθη) για πόρους που χρειάζεται το εκτελέσιμο, ο Certificate Table που περιέχει πληροφορίες σχετικές με διαθέσιμα πιστοποιητικά και κάποιοι άλλοι [26], [28], [27]. 3.5 Section Table and Sections Στη συνέχεια σε ένα PE αρχείο βρίσκουμε τον πίνακα Section Table, που περιέχει μια σειρά από στοιχεία ονομαζόμενα και ως Sections. Κάθε Section είναι πρακτικά μια επικεφαλίδα με διάφορα πεδία. Ο αριθμός των τμημάτων (Sections) λοιπόν ενός PE προγράμματος αποφασίζεται από το πεδίο NumberOfSections το οποίο και είδαμε στην κεφαλίδα File Header πιο πάνω σε αυτό το κεφάλαιο. Κάθε τμήμα έχει τα παρακάτω πεδία: Name: Έχει μέγεθος 8 byte και είναι μια UTF-8 κωδικοποιημένη συμβολοσειρά που αντιπροσωπεύει το όνομα του τμήματος. Τα κανονικά αυθεντικά PE αρχεία έχουν μια σειρά από στάνταρντ ονόματα, και όπως θα δούμε πακεταρισμένα ή μολυσμένα αρχεία έχουν συνήθως περίεργα ονόματα. Αθανάσιος Σταγκίδης- Α.Μ

41 VirtualSize: Tο συνολικό μέγεθος που καταλαμβάνει το συγκεκριμένο τμήμα όταν φορτώνεται στην κύρια μνήμη. VirtualAddress: Η εικονική διεύθυνση, δηλαδή η σχετική διεύθυνση (σε σχέση με την ImageBase διεύθυνση) στην οποία φορτώνεται το τμήμα στην κύρια μνήμη. SizeOfRawData: Tο μέγεθος του τμήματος ή των μη αρχικοποιημένων δεδομένων στο δίσκο. Πρέπει να είναι πολλαπλάσιο του πεδίου FileAlignment της επικεφαλίδας File Header. PointerToRawData: Ο δείκτης (διεύθυνση) προς την πρώτη σελίδα του τμήματος μέσα στο αρχείο. PointerToRelocations: Ο δείκτης προς την αρχή των relocation πληροφοριών για το συγκεκριμένο τμήμα. PointerToLinenumber: Ο δείκτης προς την αρχή των line-number πληροφοριών για το συγκεκριμένο τμήμα. NumberOfRelocations: Ο αριθμός των relocation καταχωρήσεων για το τμήμα. Έχει την τιμή 0 για εκτελέσιμες εικόνες. NumberOfLinenumber: Ο αριθμός των line-number καταχωρίσεων για το τμήμα. Characteristics: Μια σειρά από σημαίες που περιγράφουν χαρακτηριστικά σχετικά με τον τύπο δεδομένων και τις άδειες πρόσβασης του τμήματος. Οι πιο σημαντικές που θα μας απασχολήσουν είναι η σημαία IMAGE_SCN_CNT_CODE (0x ) που δηλώνει ότι το τμήμα περιέχει εκτελέσιμο κώδικα, η σημαία IMAGE_SCN_CNT_INITIALIZED_DATA (0x ) που δηλώνει ότι το τμήμα περιέχει αρχικοποιημένα δεδομένα, η IMAGE_SCN_CNT_UNINITIALIZED_DATA (0x ) που δηλώνει ότι το τμήμα περιέχει μη αρχικοποιημένα δεδομένα, η IMAGE_SCN_MEM_EXECUTE (0x ) που δηλώνει ότι το τμήμα μπορεί να εκτελεστεί ως κώδικας, η IMAGE_SCN_MEM_READ (0x ) που δηλώνει ότι το τμήμα μπορεί να διαβαστεί και τέλος η IMAGE_SCN_MEM_WRITE (0x ) που δηλώνει ότι στο τμήμα μπορούν να εγγραφούν δεδομένα. Αθανάσιος Σταγκίδης- Α.Μ

42 Ένα παράδειγμα είναι το τμήμα.reloc το οποίο συνήθως περιέχει πληροφορίες για relocations που χρησιμοποιεί το αρχείο. Ως relocation ορίζουμε διάφορες πληροφορίες σχετικές με την ανάθεση διευθύνσεων σε διάφορα σημεία κάποιου προγράμματος, οι οποίες χρησιμοποιούνται συνήθως από τον loader και τον linker. Αυτή ήταν η βασική διαμόρφωση ενός PE αρχείου των windows [26], [28], [27]. Στο εργαλείο διάγνωσης που αναπτύξαμε θα δούμε πως αξιοποιήθηκαν πολλές από τις παραπάνω πληροφορίες για να επιτευχθεί το βέλτιστο και πιο αποδοτικό αποτέλεσμα. Αθανάσιος Σταγκίδης- Α.Μ

43 4 Packers Την τελευταία δεκαετία, όλο και περισσότεροι συγγραφείς κακόβουλου λογισμικού χρησιμοποιούν packers για να περιπλέξουν τα κακόβουλα προγράμματα τους. Σύμφωνα με τις [7] και [8] μέχρι και το έτος 2008 περίπου το 80% των ιομορφικών λογισμικών που κυκλοφορούσε στο Διαδίκτυο ήταν πακεταρισμένα. Μερικά πιο πρόσφατα στατιστικά δείχνουν πως το 92% του ιομορφικού λογισμικού πλέον χρησιμοποιεί τεχνικές πακεταρίσματος ενώ το 50% είναι απλά τροποποιημένες με πακετάρισμα (repacked) εκδόσεις ήδη γνωστών packers [9]. Τι είναι όμως τελικά ένας packer; Στο κεφάλαιο αυτό θα δώσουμε έναν ορισμό για του packers, θα εξηγήσουμε το τρόπο λειτουργίας του και θα δούμε συνοπτικά τους packers που χρησιμοποιήσαμε στη πειραματική μας μελέτη. 4.1 Πρόγραμμα Packer Οι packers είναι προγράμματα τα οποία συμπιέζουν και/ή κρυπτογραφούν άλλα εκτελέσιμα κατά κύριο λόγο αρχεία σε ένα δίσκο (μειώνοντας συνήθως το μέγεθος τους) και ανακτούν το αρχικό εκτελέσιμο όταν τα πακεταρισμένα αρχεία φορτώνονται στη κύρια μνήμη [3]. Ένας άλλος ορισμός που θα μπορούσε να δοθεί είναι: «packer είναι ένα πρόγραμμα το οποίο συμπιέζει ή μειώνει τον κώδικα ενός άλλου προγράμματος επανακωδικοποιώντας το συνήθως σε ένα μικρότερο μέγεθος» [1]. Με άλλα λόγια μεταλλάσσουν ένα δυαδικό εκτελέσιμο αρχείο σε μια διαφορετική μορφή έτσι ώστε να έχει μικρότερο μέγεθος και διαφορετικά χαρακτηριστικά από το αυθεντικό. Οι πρώτοι packers ήταν απλοί συμπιεστές, δηλαδή μείωναν το μέγεθος ενός αρχείου. Στη συνέχεια ήρθαν στην επιφάνεια οι crypters, δηλαδή packers με δυνατότητες κρυπτογράφησης και αργότερα και οι protectors οι οποίοι πρόσθεσαν προχωρημένες τεχνικές προστασίας στο πακεταρισμένο εκτελέσιμο αρχείο. Αθανάσιος Σταγκίδης- Α.Μ

44 Ένα πακεταρισμένο αρχείο πρέπει να αποσυμπιεστεί στην αρχική του κατάσταση πριν εκτελεστεί. Οι περισσότεροι packers ξεπακετάρουν τα εκτελέσιμα αρχεία καθώς εκτελούνται, δηλαδή αποσυμπιέζουν και/ή αποκρυπτογραφούν το εκτελέσιμο. Ακολούθως το αρχείο φορτώνεται στη μνήμη και μπορεί να εκτελεστεί κανονικά. Συγκεκριμένα ακολουθείται η παρακάτω διαδικασία. O packer τοποθετεί σε ένα τμήμα του αρχείου (section όπως είδαμε στο προηγούμενο κεφάλαιο για τα PE αρχεία) τα αρχικά αυθεντικά δεδομένα του προγράμματος. Συνήθως προσθέτει ένα ακόμα τμήμα (ή χρησιμοποιεί ένα ήδη υπάρχον) στο οποίο εναποθέτει τον loader που είναι υπεύθυνος μέσω της stub ρουτίνας να αποσυμπιέσει και/ή να αποκρυπτογραφήσει, σε μετέπειτα στάδιο, τα τμήματα του αρχείου. Κατά τη διαδικασία πακεταρίσματος τροποποιούνται πολλά στοιχεία των επικεφαλίδων που υπάρχουν στη βασική διαμόρφωση του εκτελέσιμου αρχείου (PE Format). Επιπλέον αποθηκεύουν την τοποθεσία του σημείου εκκίνησης εκτέλεσης του αρχικού προγράμματος (Original Entry Point) και τροποποιούν τον κώδικα ώστε να μεταφέρουν το σημείο εκκίνησης στην αρχή του loader. O loader εκτός από τις ιδιότητες που αναφέραμε παραπάνω μπορεί να βοηθήσει στον εντοπισμό και την επανατοποθέτηση dll διευθύνσεων (για τους πίνακες Export, Import, κ.λπ.) καθώς και είναι υπεύθυνος να επαναφέρει στη φάση ξεπακεταρίσματος την εκτέλεση στο αρχικό σημείο εκκίνησης εκτέλεσης (OEP). Οι περισσότεροι packers χρησιμοποιούν την βιβλιοθήκη aplib για συμπίεση και τοποθετούν τα συμπιεσμένα δεδομένα στο τέλος του loader ή μέσα στο τμήμα που τον φιλοξενεί [6], [4]. Στην παρακάτω εικόνα παρμένη από την [29], αποτυπώνεται η βασική λειτουργία ενός packer και πως επηρεάζει τη βασική PE διαμόρφωση του αρχείου: Εικόνα 4. Πακετάρισμα PE αρχείου Αθανάσιος Σταγκίδης- Α.Μ

45 4.2 Διαδεδομένοι Packers Στην παρούσα εργασία αναπτύξαμε ένα εργαλείο διάγνωσης packer για εκτελέσιμα αρχεία. Η ανάπτυξη του εργαλείου βασίστηκε στην μελέτη κάποιων χαρακτηριστικών της PE διαμόρφωσης αρχείων πακεταρισμένων με έναν αριθμό από διαδεδομένους packers. Τα χαρακτηριστικά που κρίναμε σημαντικά χρησιμοποιήθηκαν ως ευρετικά στη διαδικασία στατικής ευρετικής ανάλυσης που οδηγεί στη διάγνωση κάποιων οικογενειών packer. Συγκεκριμένα μελετήσαμε 14 οικογένειες packer και σε αυτή την ενότητα θα περιγράψουμε σύντομα αυτές τις γνωστές οικογένειες UPX (Ultimate Packer for executables) Είναι ένας ελεύθερος packer ανοικτού κώδικα (open source) και υποστηρίζει μια πληθώρα από διαφορετικούς τύπους αρχείων από διαφορετικά λειτουργικά συστήματα. Χρησιμοποιεί έναν αλγόριθμο συμπίεσης δεδομένων με όνομα UCL. Είναι αρκετά απλός αλγόριθμος, για τον οποίο ένας αποσυμπιεστής μπορεί να καταλάβει μερικές μόνο εκατοντάδες byte κώδικα και δεν απαιτεί τη δέσμευση επιπλέον μνήμης για την αποσυμπίεση όπως κάνουν άλλοι packers. Υπάρχουν δύο μηχανισμοί αποσυμπίεσης. Η πρώτη αποσυμπιέζει το εκτελέσιμο αρχείο στην μνήμη και έχει πρόβλημα συμβατότητας από πλατφόρμα σε πλατφόρμα, ενώ στη δεύτερη γίνεται εξαγωγή του αρχείου σε ένα τρίτο προσωρινό αρχείο με επιπρόσθετο φορτίο (overhead) αλλά μέγιστη φορητότητα. Κυκλοφόρησε πρώτη φορά το έτος 1998 και έκτοτε ακολούθησαν αρκετές βελτιωμένες εκδόσεις μέχρι και σήμερα. Η βασική του έκδοση δεν διαθέτει κάποιο γραφικό περιβάλλον διεπαφής χρήστη (GUI) και εκτελείται σε γραμμή εντολών όπως φαίνεται και παρακάτω: Εικόνα 5. UPX Τα ισχυρά χαρακτηριστικά του UPX είναι τα εξής: Αθανάσιος Σταγκίδης- Α.Μ

46 Πολύ γρήγορος ρυθμός συμπίεσης (γρηγορότερος και από Winzip) και γρήγορη αποσυμπίεση επίσης. Συγκεκριμένα πιάνει τα 10ΜΒ/sec σε Pentium 133, Ασφαλής καθώς χρησιμοποιούνται checksums τόσο για τα συμπιεσμένα όσο και για τα αποσυμπιεσμένα αρχεία, Υποστηρίζει έναν μεγάλο αριθμό τύπων εκτελέσιμων αρχείων (και μη). Υποστηρίζει αρχεία Linux (ELF, shell scripts), DOS, Mac, Windows εκτελέσιμα και DLL, αρχεία άλλων πλατφόρμων όπως Playstation 1 και ακόμα περισσότερα, Διαθέτει φορητότητα και μπορεί να τρέξει σε διαφορετικές πλατφόρμες επειδή είναι γραμμένος σε φορητή endian-neutral C++, Είναι ελεύθερο λογισμικό με όλα τα πλεονεκτήματα που σημαίνει αυτό. Ακριβώς λόγω των παραπάνω χαρακτηριστικών του είναι ο πιο δημοφιλής και ευρέως χρησιμοποιούμενος packer. Αυτό βέβαια σημαίνει ότι έχουν γραφεί αρκετοί unpacking αλγόριθμοι για τον UPX και μπορεί πολύ εύκολα να ξεπακεταριστεί [1], [30], [31] ASPack Πρόκειται για έναν συμπιεστή Win32 εκτελέσιμων αρχείων, ο οποίος δύναται να μειώσει το μέγεθος σε ποσοστό μέχρι και 70% ενώ ο ρυθμός συμπίεσης μπορεί να αυξηθεί 10-20% σε σχέση με το στάνταρ πρότυπο των αρχείων ZIP. Είναι εμπορικός packer, δηλαδή πρέπει ο χρήστης να τον αγοράσει για να τον χρησιμοποιήσει. Τα προγράμματα που συμπιέζονται με τον ASPack είναι αυτάρκη και εκτελούνται ακριβώς όπως πριν την συμπίεση χωρίς αλλαγές. Ο συγκεκριμένος packer μετά την διαδικασία συμπίεσης γράφει έναν μικρό αποσυμπιεστή και τοποθετεί κάποια εικονίδια στο τέλος του συμπιεσμένου αρχείου. Η διεύθυνση του σημείου εκκίνησης εκτέλεσης της εφαρμογής τοποθετείται στην αρχή του αποσυμπιεστή και το αυθεντικό σημείο αποθηκεύεται κάπου αλλού. Εκεί επιστρέφει μετά την αποσυμπίεση στη κύρια μνήμη. Αθανάσιος Σταγκίδης- Α.Μ

47 Εικόνα 6. ASPack Ο ASPack διαθέτει κάποια ισχυρά χαρακτηριστικά: Δυνατότητες προχωρημένης επεξεργασίας αρχείων EXE, DLL,OCX, Διαφανής και αυτάρκης λειτουργία με υποστήριξη μεγάλων ονομάτων αρχείων, Γρήγορες ρουτίνες αποσυμπίεσης, Άμεση ενσωμάτωση σε λειτουργικό σύστημα Windows, Συμβατότητα με πολλές εκδόσεις των Windows. Επιπρόσθετα υπάρχουν κάποια πλεονεκτήματα έναντι άλλων packers. Ο ASPack μειώνει σημαντικά το μέγεθος των εκτελέσιμων αρχείων σε ποσοστό 40-70%, μειώνοντας με τη σειρά τους, τους χρόνους φόρτωσης σε δίκτυα και λήψηςκατεβάσματος από το Διαδίκτυο. Έχει σημαντικά χαμηλότερες απαιτήσεις σε χώρο αποθήκευσης για εφαρμογές των Windows και είναι συμβατός με εκτελέσιμα τα οποία έχουν δημιουργηθεί με διαφορετικούς Win32 μεταγλωττιστές (Visual Basic, Delphi κ.λπ.). Από την ίδια εταιρεία κυκλοφόρησε και μια παρεμφερής οικογένεια packer, η οποία όπως θα δούμε καλύτερα παρακάτω έχει άμεση σχέση με τη μελέτη μας. Για τον λόγο αυτό θα την περιγράψουμε με λίγα λόγια. Πρόκειται για τον ASProtect packer. O ASProtect δεν είναι ένας απλός συμπιεστής όπως ο ASPack. Αντίθετα υποστηρίζει και κρυπτογράφηση μαζί με μια ποικιλία από χαρακτηριστικά προστασίας. Παρέχει Έλεγχο ακεραιότητας μια εφαρμογής, Αθανάσιος Σταγκίδης- Α.Μ

48 Μέτρα προστασίας κατά την εξαγωγή εικόνας μιας εφαρμογής στη μνήμη (memory dumping), Μέτρα προστασίας κατά διαδικασιών αποσφαλμάτωσης και/ή αποσυναρμολόγησης κώδικα (disassemble) Μέτρα προστασίας κατά τη συγγραφή κώδικα patch. Μάλιστα κυκλοφορεί και η έκδοση ASProtect SKE η οποία παρέχει ακόμα περισσότερες δυνατότητες. Μερικές από αυτές είναι η προστασία αθροισμάτων ελέγχου (Checksum Protection), η προστασία συναρτήσεων Import, η παροχή κλειδιού ενεργοποίησης ή κωδικού εκτέλεσης κ.ά. [1], [32], [30] WinUpack Κάποτε ήταν σχεδόν εξίσου δημοφιλής με τον UPX packer αλλά πλέον χρησιμοποιείται όλο και λιγότερο. Διαθέτει γραφική διεπαφή χρήστη (GUI) αλλά κυκλοφορεί και σε έκδοση για γραμμή εντολών με το όνομα Upack. Έχει σχεδιαστεί ώστε να παρέχει βέλτιστη συμπίεση και δεν έχει δοθεί τόσο έμφαση στην ασφάλεια. Παραταύτα χρησιμοποιεί μερικά μέτρα προστασίας τα οποία κάνουν την διαδικασία εντοπισμού του αυθεντικού σημείου εκκίνησης εκτέλεσης του προγράμματος (original entry point- OEP) δύσκολη. Όταν ο συγκεκριμένος packer χρησιμοποιείται για να κρύψει κακόβουλο λογισμικό συνήθως έχει φθαρμένες (κακώς τροποποιημένες) PE κεφαλίδες [33]. Εικόνα 7. WinUpack Αθανάσιος Σταγκίδης- Α.Μ

49 4.2.4 Armadillo Είναι ένας εμπορικός packer ο οποίος κυκλοφόρησε από την Silicon Realms και το επίσημο όνομα του είναι SoftwarePassport. O Armadillo δεν είναι ένας απλός packer γιατί προσφέρει μια σειρά από προχωρημένες δυνατότητες προστασίας. Είναι λοιπόν ένας protector με τις εξής δυνατότητες: Κλείδωμα Hardware, Προστασία Pass-Along, Συμπίεση, Διανομή Κλειδιού Άδειας(License Key), Πρωτεύουσα και Δευτερεύουσα προστασία αρχείων, Ειδική προστασία τύπων αρχείου. Εικόνα 8. Armadillo Όσον αφορά την ιδιότητα «Κλείδωμα Hardware», ο Armadillo ελέγχει κάποια γεγονότα χρησιμοποιώντας κάποιες πληροφορίες βασισμένες στο hardware του υπολογιστή όπως CPU, HDD, BIOS, την διεύθυνση MAC και άλλα και έτσι αποτρέπει την εμφάνιση τους σε έναν χρήστη. Επιπρόσθετα έχει πολλές δυνατότητες προστασίας του κώδικα. Προσφέρει προστασία κατά των debugger και ιδιαίτερα κατά του SoftICE (που είναι ένας ισχυρός kernel-mode debugger), παρέχει κλειδιά για backups, αποκρύπτει τα DLLs και τα APIs που συσχετίζονται με αυτά και χρειάζεται ένα πρόγραμμα, προσφέρει διάφορες επιλογές συμπίεσης, επιτρέπει τη διαγραφή του πίνακα Import Αθανάσιος Σταγκίδης- Α.Μ

50 Table, μπορεί να αλλάξει τα ονόματα των sections ενός PE αρχείου και κάποιες άλλες προχωρημένες δυνατότητες. Τέλος ο Armadillo είναι διαθέσιμος σε 4 πακέτα με δυνατότητες που πληθαίνουν ανάλογα με την έκδοση (το πιο ακριβό πακέτο έχει τις περισσότερες δυνατότητες). Τα πακέτα είναι: Microsoft Windows 32-bit, Microsoft Windows 64-bit, Premium Bundle και Corporate Edition [30], [34] Themida Ο packer Themida κυκλοφόρησε από την Oreans και χρησιμοποιεί μια ειδική μέθοδο προστασίας η οποία διαφέρει από άλλους packers. Εφαρμόζει σε κάθε μπλοκ κώδικα ενός αρχείου μια ειδική προστασία και όχι σε όλο το αρχείο όπως οι περισσότεροι packers. Ουσιαστικά πρόκειται για έναν protector (όπως και ο Armadillo), ο οποίος λειτουργεί κυρίως σε επίπεδο πυρήνα, δυσκολεύει τους χρήστες που χρησιμοποιούν λογισμικά αποσφαλμάτωσης και καθιστά την διαδικασία της αντίστροφης μηχανικής ένα αρκετά δύσκολο έργο. Επειδή ο κώδικας του Themida εκτελείται σε επίπεδο πυρήνα με ενεργοποιημένα όλα τα δικαιώματα, επιτρέπεται κάθε τεχνική προστασίας χωρίς να περιορίζεται από το λειτουργικό σύστημα. Χρησιμοποιεί τεχνολογίες επιπέδου πυρήνα όπως η Ring0, τεχνολογίες επιπέδου εφαρμογών όπως η Ring3 και τεχνολογίες εντοπισμού αποσφαλματωτή όπως η Debugger Guard. Εικόνα 9. Themida Αθανάσιος Σταγκίδης- Α.Μ

51 Μερικά βασικά χαρακτηριστικά του Themida είναι: Τεχνικές αντι-αποσφαλμάτωσης που εντοπίζουν κάθε τύπου αποσφαλματωτή, Διαφορετικοί αλγόριθμοι κρυπτογράφησης και κλειδιά σε κάθε προστατευμένη εφαρμογή, Προσομοίωση εικονικής μηχανής σε ειδικά μπλοκ του κώδικα, Πολλαπλά πολυμορφικά στρώματα με πάνω από μεταλλάξεις, Τυχαία εισαγωγή garbage code μεταξύ πραγματικών εντολών, Μεταμορφική μηχανή για την συναρμολόγηση των αρχικών εντολών, Εξελιγμένη προστασία του σημείου εκκίνησης εκτέλεσης του κώδικα (EP), Προχωρημένος διαχειριστής για την εμπόδιση εισαγωγής σημείου διακοπής (breakpoint), Τεχνικές ενάντια στην απόκρυψη αποσφαλματωτή, Πλήρη μετάλλαξη στον κώδικα προστασίας για την αποφυγή αναγνώρισης προτύπων Υποστήριξη γραμμής εντολών [1], [30], [35] PECompact Κυκλοφόρησε από την Bitsum Technology και υποστηρίζει διάφορους τύπους αρχείων, EXE, DLL, OCX κ.α. καθώς τόσο 32-bit όσο και 64-bit αρχεία. Παρέχει επιπλέον ένα plug-in το οποίο επιτρέπει στον χρήστη να αναπτύξει επιπρόσθετες δυνατότητες χρησιμοποιώντας το SDK. Εικόνα 10. PECompact Αθανάσιος Σταγκίδης- Α.Μ

52 Μερικά χαρακτηριστικά του είναι: Υψηλός ρυθμός συμπίεσης (εξίσου καλός με UPX), Μικρός χρόνος φόρτωσης, Υποστήριξη χρήσιμων Plug-In λειτουργιών, Συμβατότητα με αρκετές εκδόσεις των Windows, Υποστήριξη back-up πριν την συμπίεση, Έλεγχοι ακεραιότητας κώδικα, Μερική προστασία του εκτελέσιμου [30], [36] Petite Είναι ως επί το πλείστον συμπιεστής Win32 εκτελέσιμων. Τα συμπιεσμένα εκτελέσιμα αποσυμπιέζονται κατά τη διάρκεια της εκτέλεσης και μπορούν να χρησιμοποιηθούν όπως και οι αρχικές μη συμπιεσμένες εκδόσεις τους. Προσθέτει επιπλέον μια διαδικασία ανίχνευσης ιού στα αρχεία που συμπιέζει και κατά την εκτέλεση γίνεται κάθε φορά έλεγχος για μόλυνση από ιό σε αυτά. Εικόνα 11. Petite Κυκλοφορούν δυο εκδόσεις του Petite, μια GUI έκδοση και μια έκδοση κονσόλας γραμμής εντολών. Η GUI έκδοση επιτρέπει γρήγορη και εύκολη χρήση του Petite, ενώ η έκδοση κονσόλας γραμμής εντολών επιτρέπει στους προγραμματιστές να Αθανάσιος Σταγκίδης- Α.Μ

53 χρησιμοποιήσουν τον Petite στις διαδικασίες build των μεταγλωττιστών και σε διαδικασίες makefile. Το Petite τέλος μπορεί να χρησιμοποιηθεί και ως βοηθητική επέκταση, δηλαδή μπορεί να γίνει συμπίεση ενός αρχείου σε φυλλομετρητή [1], [37] MPRESS Είναι ένας ελεύθερος packer, υψηλής απόδοσης που υποστηρίζει 32-bit, 64-bit και.net αρχεία. Χρησιμοποιεί μια in-place τεχνική αποσυμπίεσης η οποία επιτρέπει την αποσυμπίεση του εκτελέσιμου χωρίς επιπρόσθετο φορτίο στη μνήμη (overhead) και δεν επιβαρύνει το εκτελέσιμο με προβλήματα απόδοσης μετά την συμπίεση. Ο MPRESS χρησιμοποιεί τον διάσημο αλγόριθμο συμπίεσης LZMAT και λειτουργεί σε γραμμή εντολών. Εικόνα 12. MPRESS Μερικά χαρακτηριστικά του είναι: Προχωρημένη συμπίεση για.net εκτελέσιμα αρχεία, Υποστήριξη για το MS Framework 1.0/1.1/2.0/3.0, Πολύ γρήγορη αποσυμπίεση (210 ΜΒ/sec σε AMD 2500+), Εύκολη έκδυση από ευαίσθητες πληροφορίες (relocations, εξαιρέσεις κ.ά.), Συμβατότητα με πολλές εκδόσεις των Windows, Δυνατότητα χρήσης από batch ή make file [38] PELock Ένας ακόμα packer με προχωρημένες δυνατότητες προστασίας. Μπορεί να: Εντοπίσει την ανίχνευση από debugger, Εντοπίσει breakpoints, Ανακατευθύνει τον κώδικα ή APIs, Προστατέψει έναντι διαδικασιών dump, Αθανάσιος Σταγκίδης- Α.Μ

54 Συμπιέσει με διαφορετικούς ρυθμούς, Μετονομάσει τα ονόματα PE τμημάτων (σε 0, σε τυχαίες συμβολοσειρές κ.λπ.) [39]. Εικόνα 13. PELock telock Ο telock μειώνει το μέγεθος ενός εκτελέσιμου και επιπλέον κλειδώνει το περιεχόμενο του χωρίς να πειράξει την δομή του. Μερικές δυνατότητες που προσφέρει αυτός ο packer στον χρήστη είναι: Διάγνωση Debugger, Αποθήκευση προσωπικών μηνυμάτων (σαν συμβολοσειρές) στο πακεταρισμένο αρχείο, Μετονομασία των ονομάτων των PE τμημάτων (όπως ο PELock) Απομάκρυνση των relocation και των overlays, Ανακατεύθυνση του πίνακα IAT (Import Address Table) [40]. Αθανάσιος Σταγκίδης- Α.Μ

55 Εικόνα 14. telock Yoda s Protector Είναι ένας ελεύθερος, ανοικτού κώδικα packer για αρχεία Windows 32-bit. Συγκεκριμένα υποστηρίζει αρχεία ΕΧΕ, DLL, OCX και SRC. Έχει τα παρακάτω χαρακτηριστικά που τον ξεχωρίζουν: Πολυμορφική κρυπτογράφηση, Ανακατεύθυνση API, Κόλπα anti-debugging, Κρυπτογράφηση Συμβολοσειρών και Πόρων, Απαλοιφή πίνακα relocation και debug πληροφοριών, Προστασία Checksum, Ειδική προστασία κατά του debugger SoftICE, Anti-dump προστασία, Τροποποίηση MS-DOS επικεφαλίδας [41]. Αθανάσιος Σταγκίδης- Α.Μ

56 Εικόνα 15. Yoda s Protector MEW Ένας packer ο οποίος σχεδιάστηκε για να υποστηρίζει μικρά κυρίως αρχεία για Windows 32-bit. Μερικές επιλογές που παρέχει στον χρήστη είναι: Διαγραφή μη σημαντικών πόρων, Συμπίεση με τον αλγόριθμο LZMA (εκτός από αυτόν που χρησιμοποιεί ο packer), Απαλοιφή relocations. Απαλοιφή πόρων Delphi [42]. Εικόνα 16. MEW Αθανάσιος Σταγκίδης- Α.Μ

57 RLPack Ένας ακόμα packer ο οποίος συμπιέζει εκτελέσιμα και παρέχει και κάποιες περιορισμένες επιλογές προστασίας. Διαθέτει μια φιλική γραφική διεπαφή χρήστη (GUI), έχει μικρό χρόνο εκτέλεσης και εκτελείται χρησιμοποιώντας πολύ μικρή ποσότητα CPU και κύριας μνήμης. Οι επιλογές προστασίας που παρέχει είναι οι εξής: Απαλοιφή TLS (thread local storage), Απαλοιφή relocations, Απαλοιφή export table, Διατήρηση κάποιων πόρων (resources), Διατήρηση overlays, Επιλογή ανάμεσα σε δυο αλγόριθμους συμπίεσης τον aplib και τον LZMA, Δημιουργία ψεύτικης υπογραφής (αντικατάσταση με υπογραφή άλλου packer) [43]. Εικόνα 17. RLPack Αθανάσιος Σταγκίδης- Α.Μ

58 FSG Το όνομα του συγκεκριμένου packer είναι FSG και είναι ακρωνύμιο για τη λέξη Fast Small Good. Είναι στην ουσία ένας συμπιεστής για εκτελέσιμα αρχεία και ο κώδικας αποσυμπίεσης του είναι μόνο 158 bytes. Είναι συμβατός με πολλές εκδόσεις των Windows και έχει τα παρακάτω βασικά χαρακτηριστικά: Διαχείριση Imports, Υποστήριξη για εκτελέσιμα με export tables, Υποστήριξη για TLS (Thread Local Storage), Υποστήριξη για overlays [44]. Εικόνα 18. FSG Άλλοι Packers Στην μελέτη που κάναμε για την ανάπτυξη του εργαλείου διάγνωσης συμπεριλάβαμε τους 14 παραπάνω packers. Φυσικά υπάρχουν πολλοί άλλοι, οι οποίοι χρησιμοποιούνται σε καθημερινή βάση από χιλιάδες χρήστες (κακόβουλους και μη). Στην πειραματική μελέτη εξετάσαμε αρχεία τα οποία είχαν πακεταριστεί και με κάποιους άλλους packers και θα τους αναφέρουμε στο τελευταίο κεφάλαιο αυτής της εργασίας. Χρησιμοποιήσαμε ακόμα τρεις λιγότερο γνωστούς packers στην μελέτη μας και απλά παραθέτουμε εικόνες από τις αντίστοιχες γραφικές διεπαφές χρήστη χωρίς να κάνουμε κάποια περιγραφή. Οι συγκεκριμένοι packers δεν χρησιμοποιήθηκαν για την εξαγωγή ευρετικών όπως οι 14 προηγούμενοι αλλά για έναν άλλο σκοπό τον οποίο και θα αναφέρουμε στο τελευταίο κεφάλαιο επίσης [45]. Οι τρεις packers ήταν οι: Αθανάσιος Σταγκίδης- Α.Μ

59 Krypton Εικόνα 19. Krypton WinKripT Εικόνα 20. WinKripT PENinja Εικόνα 21. PENinja Αθανάσιος Σταγκίδης- Α.Μ

60

61 5 Διάγνωση Packer και Σχετικές Εργασίες H περίπλεξη που προκαλεί ένας packer στον κώδικα ενός εκτελέσιμου αρχείου, μπορεί να είναι τόσο μεγάλη ώστε να είναι πολύ δύσκολο να αναγνωριστεί ακόμα και από ισχυρούς αναλυτές. Η διάγνωση υπογραφών (signature scanning) χρησιμοποιήθηκε ως όπλο και σε αυτή την περίπτωση από τους αμυνόμενους. Έχουν συγγραφεί διάφορα εργαλεία τα οποία έχουν καταγράψει τις υπογραφές δημοφιλών packers (όπως π.χ. o UPX, ASPack κ.λπ.) και χρησιμοποιούνται σε μεγάλο ποσοστό. Θα δούμε σε αυτό το κεφάλαιο μερικά τέτοια εργαλεία. Παραταύτα τα εργαλεία αυτά αποτυγχάνουν να αναγνωρίσουν νέους packers ή packers που έχουν συγγραφεί από διάφορους χρήστες, και τότε χρειάζονται συχνή ανανέωση στην βάση δεδομένων τους για να λειτουργήσουν αποδοτικά. Στο κεφάλαιο αυτό θα δούμε επιπλέον κάποιες ξεχωριστές εργασίες στις οποίες προτάθηκαν καινοτόμοι και διαφορετικοί τρόποι που οδηγούν στη διάγνωση ενός packer. 5.1 Εργαλεία Διάγνωσης Υπογραφών Packers Στην πειραματική μελέτη που διεξαγάγαμε συγκρίναμε την απόδοση του εργαλείου μας με δυο γνωστούς διαγνώστες packer, τον PEID και τον RDG Packer Detector. Επίσης σε ορισμένες περιπτώσεις χρησιμοποιήσαμε ένα βοηθητικό χαρακτηριστικό από τον διαγνώστη EXEInfoPE για την αξιολόγηση των αποτελεσμάτων. Λεπτομέρειες για αυτά θα δούμε στο κεφάλαιο PEID Πρόκειται για τον πιο δημοφιλή διαγνώστη packer και λειτουργεί με διάγνωση υπογραφών. Μπορεί να εντοπίσει περισσότερες από 470 διαφορετικές υπογραφές σε PE αρχεία και μπορεί να αναγνωρίσει κοινούς packers, cryptors και μεταγλωττιστές για PE αρχεία. Στην μελέτη μας χρησιμοποιήσαμε την πιο πρόσφατη έκδοση του PEID την v0.95. Παρακάτω βλέπουμε την βασική οθόνη του PEID: Αθανάσιος Σταγκίδης- Α.Μ

62 Εικόνα 22. PEID Κύρια Οθόνη Βλέπουμε ότι παρέχει κάποιες πληροφορίες για τον Linker, κάποιες βασικές διευθύνσεις, με την πιο ενδιαφέρουσα αυτή του σημείου εκκίνησης εκτέλεσης και επιπλέον παρέχει τη δυνατότητα διάγνωσης για πολλά αρχεία τα οποία βρίσκονται σε ένα φάκελο με την επιλογή Multi Scan. Αν πατήσουμε το κουμπί με το διπλό βελάκι»» αριστερά και κάτω από την επιλογή Exit εμφανίζεται το παρακάτω παράθυρο: Εικόνα 23. PEID Περισσότερες πληροφορίες Τα ενδιαφέροντα πεδία σε αυτό το παράθυρο είναι τα τρία τελευταία. Συγκεκριμένα υπολογίζεται η εντροπία του αρχείου και γίνεται έλεγχος αν το αρχείο είναι πακεταρισμένο (και το σημείο εκκίνησης) με βάση την εντροπία. Περισσότερα για την εντροπία θα δούμε πιο κάτω σε αυτό το κεφάλαιο. Τέλος γυρνώντας στην κύρια οθόνη, εάν πατήσουμε στο βελάκι δεξιά του Subsystem θα δούμε την παρακάτω εικόνα: Αθανάσιος Σταγκίδης- Α.Μ

63 Εικόνα 24. PEID Λεπτομέρειες PE Διαμόρφωσης Βλέπουμε ότι υπάρχουν όλες σχεδόν οι πληροφορίες οι οποίες αφορούν την βασική PE διαμόρφωση του αρχείου που εξετάζεται, από το σημείο εκκίνησης εκτέλεσης μέχρι και τον πίνακα Imports [46], [30] RDG Packer Detector Ακόμα ένας διαγνώστης υπογραφών packer. Στην μελέτη χρησιμοποιήσαμε την έκδοση v Μπορεί να διαγνώσει μια ποικιλία από packers, cryptors, μεταγλωττιστές, Installers κ.λπ. Παρακάτω φαίνεται η βασική του οθόνη: Εικόνα 25. RDG Packer Detector Κύρια Οθόνη Διαθέτει δυο μεθόδους διάγνωσης. Η πρώτη που συμβολίζεται με M-A (όπως φαίνεται στο παράθυρο) είναι γρήγορη διάγνωση ενώ η δεύτερη είναι η προχωρημένη διάγνωση η οποία εκτελείται σε μεγαλύτερο χρονικό διάστημα αλλά προσφέρει πιο αξιόπιστα και Αθανάσιος Σταγκίδης- Α.Μ

64 αναλυτικά αποτελέσματα και συμβολίζεται με M-B στο παράθυρο. Κάποιες άλλες δυνατότητες του είναι ότι: Επιτρέπει τη δημιουργία προσωπικής υπογραφής, Επιτρέπει την διάγνωση σε ολόκληρο φάκελο, Διαθέτει υπολογισμό αθροισμάτων ελέγχου (Checksums), Υπολογίζει την εντροπία του αρχείου και αποφασίζει εάν είναι συμπιεσμένο η κρυπτογραφημένο, Διαθέτει ορισμένα plug-ins [47], [30] EXEInfoPE Είναι ένας αναλυτής PE αρχείων ο οποίος αναγνωρίζει και αυτός μια μεγάλη ποικιλία από packers. Οι υπογραφές που εξάγει δίνουν λεπτομερείς πληροφορίες για τον τύπο του αρχείου και επιπλέον μπορεί να εντοπίσει και κρυμμένα αρχεία που έχουν ενσωματωθεί στο εξεταζόμενο αρχείο. Προβάλει πληροφορίες για ψηφιακά πιστοποιητικά που μπορεί να έχει το αρχείο, παρέχει ειδικό έλεγχο για συμβολοσειρές (Registry calls), λεπτομέρειες για προχωρημένους χρήστες και φυσικά όλες τις βασικές πληροφορίες για τη PE δομή ενός αρχείου. Τέλος ένα σημαντικό χαρακτηριστικό του EXEInfoPE είναι ότι προβάλει πληροφορίες στο πεδίο Lamer-Info σχετικά με τον unpacker που μπορεί να χρησιμοποιήσει ο χρήστης για να ξεπακετάρει το αρχείο (εάν φυσικά αυτό έχει πακεταριστεί με κάποιον packer). Παρακάτω φαίνεται στην εικόνα η έκδοση του EXEInfoPE. Εμείς στην έρευνα μας χρησιμοποιήσαμε την η οποία έχει μικρές αλλαγές στην γραφική διεπαφή χρήστη και λιγότερες υπογραφές που μπορεί να αναγνωρίσει [48], [30]. Εικόνα 26. EXEInfoPE Κύρια Οθόνη Αθανάσιος Σταγκίδης- Α.Μ

65 5.2 Σχετικές Εργασίες στη Διάγνωση Packers Οι διαγνωστές με βάση τις δυαδικές υπογραφές έχουν περιορισμούς στην αποτελεσματικότητα τους ενάντια σε νέο και ειδικά σχεδιασμένο (custom-made) λογισμικό packer. Έτσι έγιναν αρκετές προσπάθειες προς άλλες κατευθύνσεις, για τον εντοπισμό packer σε εκτελέσιμα αρχεία. Η εντροπία είναι ένα μέγεθος για την μέτρηση της αβεβαιότητας σε μια σειρά αριθμών ή bytes. Ορίζεται ως εξής: όπου p(i) είναι η πιθανότητα της i-οστής μονάδας πληροφορίας (όπως ένας αριθμός) σε μια σειρά n συμβόλων σε ένα γεγονός x. Η λογαριθμική βάση είναι το 2, έχουμε 256 πιθανότητες και επομένως η τιμής φράζεται μεταξύ των τιμών 0 και 8. Οι Robert Lyda και James Hamrock πρότειναν ένα εργαλείο ανάλυσης της δυαδικής εντροπίας το οποίο μπορούσε να εκτιμήσει τη πιθανότητα ένα αρχείο να περιέχει συμπιεσμένα η κρυπτογραφημένα bytes. Συγκεκριμένα χώρισαν το υπό εξέταση εκτελέσιμο αρχείο σε μπλοκς των 512 bytes και υπολόγισαν το μέση και μέγιστη εντροπία με το εργαλείο τους, το οποίο ονόμασαν Bintropy. Σύμφωνα με την έρευνα τους αρχεία τα οποία έχουν μέση εντροπία ανά μπλοκ ίση ή μεγαλύτερη από και μέγιστη εντροπία ανά μπλοκ ίση ή μεγαλύτερη από είναι στατιστικά πιθανώς να είναι πακεταρισμένα ή κρυπτογραφημένα. Με τον τρόπο τους μπορούσαν επιπλέον να αναγνωρίσουν ξεχωριστά τμήματα (sections) στο εκτελέσιμο αρχείο τα οποία είχαν αφύσικες τιμές εντροπίας. Έτσι μπορούν να μαρκάρουν τα συγκεκριμένα τμήματα ως ύποπτα και έπειτα οι αναλυτές μπορούν να εκτελέσουν πιο εξειδικευμένη ανάλυση χρησιμοποιώντας προχωρημένα εργαλεία αντίστροφης μηχανικής όπως π.χ. ο IDA αποσυναρμολογητής (dissasembler). Πράγματι όπως διαπιστώθηκε και με την πάροδο του χρόνου (και από άλλες ακόμα έρευνες), τα πακεταρισμένα αρχεία παρουσιάζουν έναν υψηλότερο βαθμό τυχαιότητας από τα κανονικά αρχεία [7]. Παρ όλα αυτά όπως φάνηκε και στην [49], η εντροπία ως μετρική μπορεί να τροποποιηθεί από διάφορες τεχνικές, οι οποίες τροποποιούν την τυχαιότητα ενός αρχείου. Μια απλή τεχνική είναι η προσθήκη επαναλαμβανόμενων ίδιων bytes στο τέλος κάθε τμήματος του εκτελέσιμου έτσι ώστε να μειώσουν την εντροπία του. Ιομορφικά λογισμικά που ανήκουν στην Αθανάσιος Σταγκίδης- Α.Μ

66 οικογένεια Zeus, χρησιμοποιούν δυο παρεμφερείς τεχνικές. Στην πρώτη εισάγουν τυχαία bytes (από ένα προκαθορισμένο σύνολο) στο αρχείο και στη δεύτερη χρησιμοποιούν ένα υποσύνολο του αλφαβήτου για να αναπαραστήσουν την πληροφορία στο αρχείο. Έτσι στην δημοσίευση [49] προτείνεται μια εναλλακτική τεχνική μέτρησης της εντροπίας για την αποφυγή των παραπάνω τεχνικών τροποποίησης. Η τεχνική μέτρησης τους βασίζεται στο διαχωρισμό του αρχείου σε τμήματα, στην μέτρηση της εντροπίας του καθενός και στην δημιουργία ορίων (μέσα από ιστογράμματα bytes) που ξεχωρίζουν εάν ένα τμήμα είναι πακεταρισμένο ή όχι. Οι Xabier Ugarte-Pedrero, Igor Santos και Pablo G. Bringas ακολουθούν μια προσέγγιση βασισμένη στη διάγνωση ανωμαλιών, η οποία μετράει την απόκλιση ενός εκτελέσιμου από ένα πρότυπο το οποίο θεωρείται κανονικό. Εξάγουν κάποια χαρακτηριστικά σχετικά με την δομή του PE αρχείου και δίνουν ένα βάρος σε αυτά ανάλογα με το πόσο σημαντικά είναι στην εκτίμηση αν το αρχείο είναι πακεταρισμένο ή όχι (Information Gain-IG). Κάποια από αυτά είναι: χαρακτηριστικά της DOS επικεφαλίδας, χαρακτηριστικά της File Header κεφαλίδας, της Optional Header, διευθύνσεις κάποιων τμημάτων, μεγέθη, τιμές εντροπίας κ.α. Έπειτα υπολογίζεται η απόκλιση με χρήση τριών μεθόδων: της απόστασης Manhattan, της Ευκλείδειας Απόστασης και της Cosine Similarity. Τα μειονεκτήματα της μεθόδου τους είναι ότι δεν μπορούν να αναγνωρίσουν τον packer που χρησιμοποιήθηκε για να προστατέψει το εκτελέσιμο και τα χαρακτηριστικά που εξάγονται από την PE δομή του αρχείου μπορούν να τροποποιηθούν εύκολα από συγγραφείς κακόβουλου λογισμικού [50]. Οι ίδιοι συγγραφείς (της εργασίας) ακολουθούν μια διαφορετική προσέγγιση στην [51]. Σχεδιάζουν ένα συλλογικό σύστημα machine learning το οποίο βασίζεται και αυτό σε δομικά χαρακτηριστικά του PE αρχείου και κάποια ευρετικά. Με τη βοήθεια του εργαλείου WEKA εφαρμόζουν 4 συλλογικούς αλγόριθμους μάθησης, τους CollectiveIBK, Collective Forest, CollectiveWoods & CollectiveTree και τον RandomWoods στα δεδομένα που σε προηγούμενο βήμα εξήγαγαν από το αρχείο (ξανά με χρήση IG). Η μέθοδος τους υποφέρει από τα ίδια μειονεκτήματα. Μία μέθοδος η οποία χρησιμοποιεί τα στατιστικά εντροπίας του τμήματος του αρχείου στο οποίο υπάρχει το σημείο εκκίνησης εκτέλεσης και κάποια χαρακτηριστικά ακόμα παρουσιάζεται στην [29]. Αυτά τα χαρακτηριστικά είναι οι άδειες που έχουν μερικά τμήματα του PE αρχείου. Έχει παρατηρηθεί ότι ένα πακεταρισμένο τμήμα έχει Αθανάσιος Σταγκίδης- Α.Μ

67 ενεργοποιημένες συνήθως και τις τρείς σημαίες σχετικές με την άδεια εκτέλεσης (Read, Write, Execute). Μια επιπλέον σχετική δουλειά παρουσιάζεται στην [9]. Το εργαλείο PE-Miner εξάγει μερικές δομικές πληροφορίες από αρχεία PE και χρησιμοποιεί κάποιους αλγόριθμους εξόρυξης δεδομένων για να παρέχει υψηλή ακρίβεια διάγνωσης με σχετικά χαμηλές επιβαρύνσεις επεξεργασίας. Το PE-Miner framework έχει ένα RFR φίλτρο προεπεξεργασίας με J48 (classifier) να τρέχει στο παρασκήνιο και είναι κλιμακώσιμο σε διάφορα λειτουργικά συστήματα. Οι δομικές πληροφορίες από PE αρχεία είναι: μια λίστα με Dll αρχεία που συνδέονται με το εκτελέσιμο και αποτυπώνουν ουσιαστικά τη λειτουργικότητα του, τα στάνταρ πεδία καθώς και τα εξειδικευμένα προς windows πεδία της επικεφαλίδας Optional Header, οι φάκελοι δεδομένων (data directories) της ίδιας επικεφαλίδας, οι επικεφαλίδες των τμημάτων και ο πίνακας με τους πόρους όπως και οι ίδιοι οι πόροι (resources). Τα φίλτρα προεπεξεργασίας που δοκιμάστηκαν ήταν τα: RFR (Redundant Feature Removal), PCA (Principal Component Analysis) και HWT (Haar Wavelet Transform). Την καλύτερη απόδοση είχε το RFR. Τέλος οι αλγόριθμοι κατάταξης (classifiers) που χρησιμοποιήθηκαν ήταν οι: instance based learner (IBk), decision tree (J48), Naive Bayes, inductive rule learner (RIPPER) και μηχανές support vector με χρήση sequential minimal optimization (SMO). Από αυτούς καλύτερη απόδοση είχε ο J48. Στη μεταπτυχιακή διατριβή του Hanyoung Noh [52] προτείνεται μια βασισμένη στην πολυπλοκότητα κατηγοριοποίηση η οποία επιτυγχάνει υψηλή ακρίβεια (97%) και απόδοση. Η πολυπλοκότητα κατά Kolmogorov (η οποία χρησιμοποιείται στην διατριβή) μιας πεπερασμένης συμβολοσειράς Χ, ορίζεται ως K(X) και είναι το μήκος της μικρότερης υπο-συμβολοσειράς του Χ. Με άλλα λόγια Κ(Χ) είναι το μήκος του μικρότερου προγράμματος υπολογιστή το οποίο αναπαριστά την X και σταματάει. Στην εργασία χρησιμοποιείται ο LZO αλγόριθμος συμπίεσης για να μετρήσει την πολυπλοκότητα, ο οποίος είναι ο γρηγορότερος αλγόριθμος συμπίεσης. Επιπλέον γίνεται χρήση ενός αλγορίθμου διαχωρισμού σε μπλοκ για την ακριβή μέτρηση της πολυπλοκότητας. Τέλος η μέθοδος που παρουσιάζεται στην εργασία δεν μπορεί να αποφευχθεί από γνωστές τεχνικές αποφυγής και έτσι μπορεί να εφαρμοστεί σε πρακτικούς αντιϊκούς διαγνώστες, κάτι που την κάνει αποδοτική. Αθανάσιος Σταγκίδης- Α.Μ

68 Μια διαφορετική αλλά ιδιαίτερα ενδιαφέρουσα προσέγγιση είναι αυτή που παρουσιάζεται στην διδακτορική διατριβή του Li Sun [53]. Συγκεκριμένα προτείνει έναν νέο γρήγορο αλγόριθμο-τεστ τυχαιότητας που διατηρεί τις τοπικές λεπτομέρειες ενός packer και μπορεί να διαγνώσει πακεταρισμένα εκτελέσιμα. Έπειτα παρέχει ένα αυτοματοποιημένο σύστημα κατηγοριοποίησης packer, το οποίο αναγνωρίζει τους packers αποτελεσματικά και αποδοτικά με τη βοήθεια γραφικών παραστάσεων κατανομών τυχαιότητας και τέλος προτείνει έναν γενικό αλγόριθμο ξεπακεταρίσματος. Στην εργασία αφού γίνει μια εισαγωγή στα βασικά χαρακτηριστικά γνωρίσματα των πακεταρισμένων αρχείων και στην ανάλυση κάποιων μαθηματικών εννοιών σχετικά με την τυχαιότητα και αλγορίθμους αναγνώρισης προτύπων, εξηγούνται αναλυτικά οι βασικές λειτουργίες του framework που προτείνεται στην εργασία με όνομα REFORM. Σχετικά με τον διαγνώστη packer, ακολουθείται ένα δυαδικό μοντέλο στο οποίο αποφασίζεται πόσο τυχαίο είναι το εξεταζόμενο αρχείο με βάση την αναλογία μηδενικών και άσσων που υπάρχουν σε αυτό. Κρίνεται ως πιο αποτελεσματική η χρήση bytes (αντί για δυαδικά ψηφία) και έτσι υιοθετείται αυτή στην υπόλοιπη εργασία. Χρησιμοποιούνται δυο αλγόριθμοι για την διεξαγωγή τεστ τυχαιότητας, ο Fixed Sample Count αλγόριθμος με σταθερά και ισοκατανεμημένα δειγματο-σημεία στο αρχείο και ο Sliding Window. Η δεύτερη λειτουργία του REFORM είναι η κατηγοριοποίηση (classification) του αρχείου στον packer με τον οποίο έχει πακεταριστεί. Δημιουργούνται υπογραφές τυχαιότητας και χρησιμοποιούνται μετρικές απόστασης όπως η Ευκλείδεια απόσταση ή η απόσταση Συνημιτόνου και έτσι γίνεται μέτρηση της απόκλισης του αρχείου από αρχεία πακεταρισμένα με συγκεκριμένους packers. Όσον αφορά τη γενική διαδικασία ξεπακεταρίσματος που προτείνεται, ξεκινάει με τον εντοπισμό του σημείου εκκίνησης εκτέλεσης του προγράμματος. Σε ταξινομημένα ιστογράμματα διευθύνσεων εκτέλεσης, η αποκρυπτογράφηση, η συμπίεση και η αντιγραφή εμφανίζονται σαν μεγάλες ακίδες (hump) στην αρχή του ιστογράμματος, ακολουθούμενες από ένα επίπεδο τμήμα που συνήθως αντιστοιχεί στο τμήμα που περιέχει τις εντολές του αυθεντικού σημείου εκκίνησης (OEP). Εκεί λοιπόν είναι μια καλή ευκαιρία να σταματήσει η διαδικασία και να γίνει εξαγωγή (dump) των περιεχομένων της μνήμης. Για τον λόγο αυτό η τεχνική αυτή ονομάστηκε Hump-and- Dump. Τέλος στην διατριβή προτείνεται ένας τρόπος για την αντιμετώπιση antivmware τεχνικών και την βελτίωση της διαδικασίας ξεπακεταρίσματος. Αθανάσιος Σταγκίδης- Α.Μ

69 Πρώτη έμπνευση για την εργασία μας αποτέλεσε η δημοσίευση των Roberto Perdisci, Andrea Lanzi και Wenke Lee [54]. Εννέα χαρακτηριστικά ενός PE αρχείου εξάγονται και σχηματίζουν ένα διάνυσμα πρότυπο (pattern vector), το οποίο χρησιμοποιείται για να ξεχωρίζει τα πακεταρισμένα από τα μη πακεταρισμένα αρχεία. Αυτά τα χαρακτηριστικά είναι: ο αριθμός των στάνταρ και μη στάνταρ τμημάτων, ο αριθμός των εκτελέσιμων τμημάτων, ο αριθμός των τμημάτων που είναι αναγνώσιμα, εγγράψιμα και εκτελέσιμα ταυτόχρονα, ο αριθμός των καταχωρήσεων στον πίνακα Import Table και οι τιμές εντροπίας της PE Ηeader επικεφαλίδας, των τμημάτων κώδικα, των τμημάτων δεδομένων καθώς και ολόκληρου του αρχείου. Τα πειράματα για την παραπάνω μελέτη εκτελέστηκαν χρησιμοποιώντας διάφορους αλγόριθμους μάθησης (machine learning) στο περιβάλλον WEKA. Οι αλγόριθμοι που χρησιμοποιήθηκαν ήταν οι: Naive Bayes, J48, ένα σύνολο unpruned δέντρων απόφασης του J48 κατασκευασμένους με χρήση Bagging και διόρθωσης Laplace, k-nearest neighbors με συγκεκριμένες παραμέτρους, Multi Layer Perceptron (MLP) με συγκεκριμένες παραμέτρους και Entropy Threshold classifer. Οι δυο πιο κοντινές εργασίες με την δική μας είναι οι [55] και [56]. Η πρώτη από τις δυο χρησιμοποιεί ένα διάνυσμα χαρακτηριστικών (Characteristic Vector) με εννέα τιμές οι οποίες επιλέγονται από ιδιότητες και καταστάσεις της κεφαλίδας PE Header (μετά από ευρετική ανάλυση) ως μια υπογραφή η οποία υποδηλώνει πόσο κοντά είναι ένα αρχείο σε ένα τυπικό πακεταρισμένο PE αρχείο. Η Ευκλείδεια απόσταση χρησιμοποιείται για την μέτρηση της παραπάνω απόκλισης. Η δεύτερη εργασία ορίζει διάφορες στατικές παραμέτρους για ανάλυση και συσχετίζει ένα βάρος και μια τιμή ρίσκου για κάθε ορισμένη παράμετρο. Ένα δυαδικό αρχείο αναλύεται και ένα σκορ υπολογίζεται από τα παραπάνω. Αυτό το σκορ αποφασίζει εάν το αρχείο είναι πακεταρισμένο η όχι. Οι 14 παράμετροι που ορίζονται είναι ουσιαστικά ευρετικά της PE Header επικεφαλίδας τα οποία προκύπτουν από ελέγχους πάνω στα ονόματα τμημάτων, στον πίνακα Import Table, στο σημείο εκκίνησης εκτέλεσης και σε άδειες εκτέλεσης του αρχείου. Το σκορ υπολογίζεται από τον παρακάτω τύπο: όπου Wi είναι το βάρος της i-οστής παραμέτρου και Ri είναι το αντίστοιχο ρίσκο. Αθανάσιος Σταγκίδης- Α.Μ

70 Αξιοσημείωτο είναι ότι καμία από τις παραπάνω δυο εργασίες (όπως και του Perdisci) δεν μπορεί να αναγνωρίσει τον packer ή την οικογένεια packer που χρησιμοποιήθηκε για να προστατέψει το εκτελέσιμο αρχείο. Παρ όλα αυτά μπορούν να αποφασίσουν με αρκετά ακριβή και αποτελεσματικό τρόπο εάν το αρχείο είναι πακεταρισμένο ή όχι. Αθανάσιος Σταγκίδης- Α.Μ

71 6 PackDetect- Ευρετική Ανάλυση Packer Η προσέγγιση μας βασίζεται στην στατική ανάλυση ενός PE αρχείου και σε μερικά ευρετικά τα οποία είναι ουσιαστικά μερικές ιδιότητες του PE αρχείου. Οφείλουμε πολλές ευχαριστίες στον Ero Carrera, καθώς η υπέροχη δουλεία του σχετικά με την βιβλιοθήκη python, με όνομα «pefile», μας επέτρεψε να ανακαλύψουμε και να εκμεταλλευτούμε αυτά τα ευρετικά [57], [58]. H βιβλιοθήκη του, pefile, είναι μια μονάδα Parsing ενός PE αρχείου. Εμείς χρησιμοποιήσαμε αυτή τη μονάδα για να εξάγουμε μερικά χαρακτηριστικά της βασικής PE δομής πακεταρισμένων και κανονικών αρχείων. Επιλέξαμε 100 κανονικά εκτελέσιμα Win32 PE αρχεία και τα πακετάραμε με 14 διαφορετικούς packers. Από αυτά επιλέξαμε ένα υποσύνολο 30 αρχείων για κάθε packer και για τα κανονικά αρχεία, και μελετήσαμε μερικές τιμές με την βοήθεια του script pefile που έγραψε ο Ero Carrera. Αναφέρουμε μερικές από αυτές: Διεύθυνση Σημείου Εκκίνησης Εκτέλεσης (Entry Point Address), Πίνακας Import Διευθύνσεων (Import Address Table), Ονόματα Τμημάτων (Section Names), Σημαίες στα Χαρακτηριστικά κάθε Τμήματος (Section Characteristics Flags), Μέγεθος του αρχείου (File Size) Παρακάτω παρουσιάζουμε τον πίνακα με τις παραπάνω τιμές και κάποιες ακόμα τις οποίες θεωρήσαμε χρήσιμο να τις κρατήσουμε για τον σχεδιασμό του εργαλείου μας. Ο πίνακας που ακολουθεί περιέχει τις τιμές αυτές για 30 από τα 100 συνολικά κανονικά αρχεία που μελετήσαμε. Για λόγους εμφάνισης παραθέτουμε μόνο τα αποτελέσματα για τα 24 κανονικά αρχεία. Αθανάσιος Σταγκίδης- Α.Μ

72 Αθανάσιος Σταγκίδης- Α.Μ

73 Αθανάσιος Σταγκίδης- Α.Μ

74 Αθανάσιος Σταγκίδης- Α.Μ

75 Εικόνα 27. PE τιμές για κανονικά αρχεία Υπάρχουν άλλοι 14 πίνακες στους οποίους αποθηκεύουμε τιμές των πακεταρισμένων αρχείων αυτή τη φορά, από κάποια γνωρίσματα της δομής PE. Υπάρχει ένας πίνακας για κάθε packer. Παρακάτω παραθέτω μόνο τον πίνακα με 24 πάλι τιμές για τον packer UPX. Αθανάσιος Σταγκίδης- Α.Μ

76 Αθανάσιος Σταγκίδης- Α.Μ

77 Αθανάσιος Σταγκίδης- Α.Μ

78 Εικόνα 28. PE τιμές για αρχεία πακεταρισμένα με τον UPX. Όπως βλέπουμε παραπάνω για τα πακεταρισμένα αρχεία κρατάμε και ένα πεδίο με όνομα COMMENTS στο οποίο εισάγουμε διάφορες σημαντικές παρατηρήσεις για κάθε Αθανάσιος Σταγκίδης- Α.Μ

79 packer. Όπως βλέπουμε στον UPX για παράδειγμα υπάρχει πάντα στον πίνακα Import το dll αρχείο KERNEL32.DLL με τις συναρτήσεις LoadLibraryA, GetProcAddress και ExitProcess. Σε άλλον packer, υπάρχουν διαφορετικού τύπου παρατηρήσεις, όπως για παράδειγμα το γεγονός ότι μπορεί να έχει σταθερό σημείο εκκίνησης εκτέλεσης ή κάποιες άλλες στάνταρ συναρτήσεις και dll αρχεία στον πίνακα Import. Θα δούμε λίγο παρακάτω πιο αναλυτικά τι σημαίνουν ακριβώς οι τιμές αυτές και με ποιον τρόπο τις χρησιμοποιούμε στην ευρετική ανάλυση που εκτελούμε. Ακολουθεί ένα διάγραμμα ροής του εργαλείου διάγνωσης που αναπτύξαμε. Το όνομα του εργαλείου μας είναι PackDetect και φαίνεται στη παρακάτω εικόνα (το διάγραμμα ροής του): Εικόνα 29. Διάγραμμα ροής PackDetect Αθανάσιος Σταγκίδης- Α.Μ

80 Όπως βλέπουμε στην εικόνα 28, ο διαγνώστης μας λαμβάνει ως είσοδο ένα Win32 εκτελέσιμο αρχείο (δουλεύει και για 64-bit εκτελέσιμα αρχεία αλλά σε αυτή τη μελέτη δουλεύουμε μόνο με 32-bit PE αρχεία). Τότε υπολογίζουμε μερικές τιμές σχετικές με κάποια ευρετικά. Με τη βοήθεια αυτών των ευρετικών υπολογίζουμε ένα σκορ το οποίο ονομάζουμε Suspicion Score (Σκορ Υποψίας) και δεν είναι τίποτα άλλο παρά μια μεταβλητή η οποία υποδηλώνει εάν ένα αρχείο είναι πακεταρισμένο ή όχι. Εάν το Σκορ Υποψίας ξεπερνάει την τιμή μιας σταθεράς κατωφλιού (THRESHOLD 1), τότε μαρκάρουμε το αρχείο ως πακεταρισμένο, διαφορετικά ως κανονικό. Εάν το αρχείο είναι πακεταρισμένο τότε προχωρούμε σε μια δεύτερη διαδικασία ανάλυσης του αρχείου και υπολογίζουμε ένα δεύτερο σκορ με όνομα Packer Score (Σκορ Packer). Η μεταβλητή Packer Score αναφέρεται στην πραγματικότητα σε 14 διαφορετικά σκορ, το κάθε ένα για έναν από τους 14 packers που χρησιμοποιήθηκαν στην μελέτη αυτή και επομένως πρόκειται για μεταβλητή πίνακα. Τέλος το σύστημα μας παρέχει αναγνώριση του packer που χρησιμοποιήθηκε, σύμφωνα με τις μέγιστες τιμές των στοιχείων του πίνακα Packer Σκορ. Ο packer που συλλέγει το μεγαλύτερο σκορ είναι αυτός ο οποίος χρησιμοποιήθηκε για να πακετάρει το PE αρχείο. Αν καμία από τις μεταβλητές πίνακα Packer Σκορ δεν έχει τιμή η οποία να ξεπερνάει μια δεύτερη σταθερά κατωφλιού (THRESHOLD 2), τότε ο packer δεν μπορεί να αναγνωριστεί (συνήθως δεν ανήκει σε μια από τις 14 οικογένειες packer, όπως θα δούμε και αργότερα). Η εφαρμογή PackDetect είναι γραμμένη αποκλειστικά σε Python. Η βιβλιοθήκη «pefile» χρησιμοποιήθηκε για την εξαγωγή χαρακτηριστικών της PE δομής του αρχείου και η βιβλιοθήκη «Tkinter» χρησιμοποιήθηκε για τον σχεδιασμό ενός φιλικού γραφικού περιβάλλοντος διεπαφής χρήστη (GUI- Graphical User Interface) [59]. Αναπτύξαμε ένα script σε python για εκτέλεση σε γραμμή εντολών και ένα δεύτερο script με GUI. Το πρώτο έχει όνομα PackDetectCML.py και το δεύτερο PackDetect.py. Οδηγίες για την εκτέλεση του βρίσκονται στο Παράρτημα της διατριβής. Το script με GUI έχει επιπρόσθετα μερικές δυνατότητες parser. Συγκεκριμένα προβάλει μερικές πληροφορίες σχετικά με το αρχείο. Αυτές είναι: το μέγεθος του αρχείου, η διεύθυνση ImageBase, τα ονόματα των τμημάτων του (Section Names) και η διεύθυνση του σημείου εκκίνησης εκτέλεσης. Και τα δυο από τα παραπάνω scripts μπορούν να διαγνώσουν και να αναγνωρίσουν πακεταρισμένα εκτελέσιμα. Αθανάσιος Σταγκίδης- Α.Μ

81 6.1 Διαδικασία Διάγνωσης Packer Στην πρώτη μονάδα του συστήματος μας (module) όπως φαίνεται και στο διάγραμμα ροής με τη βοήθεια του Σκορ Υποψίας διαγιγνώσκουμε εάν ένα εκτελέσιμο είναι πακεταρισμένο ή όχι. Χρησιμοποιούμε κάποια ευρετικά για να λάβουμε αυτή την απόφαση. Για κάθε ένα από τα ευρετικά τα οποία και θα παρουσιάσουμε ακριβώς παρακάτω, είτε σηκώνουμε μια λογική σημαία (flag) είτε επηρεάζουμε απευθείας την μεταβλητή Σκορ Υποψίας, αυξάνοντας τη τιμή της. Θα αναφερθούμε επιπλέον σε μερικά ευρετικά τα οποία ανακαλύψαμε ότι αποτελούν ιδιαίτερα σημαντικούς δείκτες ότι ένα αρχείο είναι πακεταρισμένο. Σε αυτές τις περιπτώσεις θα αναφερόμαστε σε αυτά με το όνομα «σταθμισμένοι ευρετικοί παράγοντες» (weighted heuristic factors). Το ιδιαίτερο στοιχείο τους είναι ότι μπορούν να αυξήσουν την μεταβλητή Σκορ Υποψίας κατά δυο μονάδες αντί για μία. Από εδώ και στο εξής θα παραθέτουμε και κομμάτια κώδικα (snippets) δίπλα σε μερικές λειτουργίες και μονάδες τις οποίες θα εξηγούμε. Τα κομμάτια αυτά κώδικα αποτυπώνουν μόνο ένα μικρό μέρος της λειτουργίας του εργαλείου PackDetect. Τα ευρετικά που χρησιμοποιήθηκαν είναι τα παρακάτω: Αριθμός Τμημάτων με περίεργο όνομα: Αποθηκεύουμε σε μια μεταβλητή πίνακα μερικές καταλήξεις τις οποίες θεωρούμε φυσιολογικές για portable executable αρχεία και βρήκαμε στα [60] και [27]. Για παράδειγμα ονόματα όπως «.text», «.rsrc» θεωρούνται φυσιολογικά. Κάθε άλλο όνομα το οποίο δεν ανήκει σε αυτή τη λίστα, συμπεριλαμβανομένου ονομάτων με μη-εκτυπώσιμους χαρακτήρες ή κενά ονόματα, θεωρείται περίεργο. Σηκώνουμε μια σημαία εάν υπάρχουν λοιπόν μη στάνταρ ονόματα τμημάτων στο PE αρχείο και αυξάνουμε το Σκορ Υποψίας εάν υπάρχει ένα ή περισσότερα τέτοια ονόματα στο αρχείο. # create a database (list) with the section names of normal PE files, the database can be enriched with more names NormalSectionNames = ['.rsrc','.text','.data','.rdata','.reloc','.idata','.tls','code ','DATA', 'BSS', '.bss','.edata','.crt','.code','idata','text','.debug','.data',' PAGEDRV','edata','.crt','.BSS', '.data1','.itext','ndata','.text1','.udata','page','sdata','.deb ug$f','.debug$p','.debug$s','.debug$t','.tls$','.rodata','init', Αθανάσιος Σταγκίδης- Α.Μ

82 '.xdata ','.didata','.gnu_deb','.didat','page','.sdata','.ndata'] for section in pe.sections: # save the section's name # discard garbage characters temp1 = (section.name).split('\x00') SectNamesList.append(temp1[0]) # counter for the number of weird names for i in SectNamesList: if i not in NormalSectionNames: numberofweirdnames = numberofweirdnames + 1 if(numberofweirdnames>0): suspicious_pe = suspicious_pe + 1 Ψεύτικο Σημείο Εκκίνησης Εκτέλεσης: Θεωρούμε δυο περιπτώσεις. Στην πρώτη περίπτωση ελέγχουμε εάν το τμήμα στο οποίο υπάρχει το σημείο εκκίνησης εκτέλεσης του εκτελέσιμου αρχείου, είναι κώδικας (code) και εάν έχει άδεια εκτέλεσης (Characteristics Flag). Αν δεν έχει σηκώνουμε μια λογική σημαία. Στη δεύτερη περίπτωση συγκρίνουμε τις τιμές της διεύθυνσης σημείου εκκίνησης εκτέλεσης και του συνολικού μεγέθους του αρχείου. Η διεύθυνση του σημείου εκκίνησης εκτέλεσης είναι μια RVA (Relative Virtual Address) και το μέγεθος του αρχείου μετράται σε raw bytes. Στις περισσότερες όμως περιπτώσεις πακεταρισμένων αρχείων η RVA του σημείου εκκίνησης εκτέλεσης ξεπερνάει το μέγεθος του PE αρχείου. Επομένως σηκώνουμε και εδώ μια λογική σημαία. # if the entry point's address is bigger than file size raises a flag if (pe.optional_header.addressofentrypoint > realrawsize): entrp=1 Αθανάσιος Σταγκίδης- Α.Μ

83 flagfake1=1 for section in pe.sections: # if the section in which the entry point exists isn't code and executable raises a flag if (((pe.optional_header.addressofentrypoint >= section.pointertorawdata)and(pe.optional_header.addressofentrypo int <(section.pointertorawdata+section.sizeofrawdata)))and (entrp==0)): if (( section. dict.get('image_scn_mem_execute', True)) and (section. dict.get('image_scn_cnt_code', True) )): flagfake2= 1 entrp == 1 if (flagfake1== 1)or(flagfake2==1): flagfake = 1 if(flagfake): suspicious_pe = suspicious_pe + 1 Έλεγχοι στην Εντροπία των Τμημάτων: Μετράμε την εντροπία για κάθε ένα από τα τμήματα από τα οποία αποτελείται το PE αρχείο. Αν ένα τμήμα έχει εντροπία μεγαλύτερη ή ίση με 7.9 τότε είναι πολύ πιθανόν ότι το συγκεκριμένο τμήμα είναι πακεταρισμένο, και έτσι η πιθανότητα το αρχείο να είναι πακεταρισμένο είναι αρκετά υψηλή. Στην περίπτωση αυτή έχουμε έναν σταθμισμένο ευρετικό παράγοντα. Εάν ένα τμήμα έχει εντροπία μεγαλύτερη ή ίση με 7.6, τότε θεωρούμε την εντροπία αυτή επίσης υψηλή (όχι όμως σταθμισμένο ευρετικό παράγοντα). Επιπλέον θεωρούμε τις παρακάτω δυο περιπτώσεις: Μετράμε τον αριθμό των τμημάτων τα οποία έχουν εντροπία μεγαλύτερη ή ίση με 7.0. Παρατηρήσαμε ότι είναι αρκετά σύνηθες σε πακεταρισμένα αρχεία να έχουν πολλά τμήματα με σχετικά υψηλή εντροπία 7.0 ή και παραπάνω και Αθανάσιος Σταγκίδης- Α.Μ

84 μερικές φορές κανένα τμήμα με εντροπία μεγαλύτερη από 7.6 ή 7.9. Έτσι αν υπάρχουν δυο η περισσότερα τμήματα με εντροπία μεγαλύτερη από 7.0, τότε σηκώνουμε μια λογική σημαία και αυξάνουμε αντίστοιχα την μεταβλητή Σκορ Υποψίας. Τέλος εάν ένα αρχείο έχει μόνο δυο τμήματα και το ένα από αυτά έχει εντροπία μεγαλύτερη από 7.0 (ή ίση) τότε κάνουμε το ίδιο με παραπάνω. for section in pe.sections: # save the section's entropy SectEntropyList.append(section.get_entropy()) # entropy checks ( count the number of high entropy sections, two flags for ultra high entropy and high entropy in sections) for j in SectEntropyList: if(j>=7.000): numberofhighentropysections = numberofhighentropysections + 1 if( j >=7.600): HighEntropy = HighEntropy + 1 UltraHighEntropy + 1 if (j>=7.900): UltraHighEntropy = # entropy checks... if( (numberofsections < 3) and (numberofhighentropysections==1) ): suspicious_pe = suspicious_pe + 1 if(numberofhighentropysections > 1): suspicious_pe = suspicious_pe + 1 if(ultrahighentropy > 0): Αθανάσιος Σταγκίδης- Α.Μ

85 suspicious_pe = suspicious_pe + 2 elif(highentropy >0): suspicious_pe = suspicious_pe + 1 else: suspicious_pe = suspicious_pe + 0 # end of entropy checks... Μέγεθος του αρχείου: Είναι συχνό φαινόμενο τα πακεταρισμένα εκτελέσιμα να έχουν ένα η περισσότερα τμήματα με μηδενικό μέγεθος. Έτσι αν υπάρχουν στο αρχείο δυο ή περισσότερα τμήματα με μηδενικό μέγεθος τότε σηκώνουμε μια λογική σημαία. Πράττουμε ομοίως σε περίπτωση που υπάρχουν μόνο δυο τμήματα στο αρχείο και το ένα από αυτά έχει μηδενικό μέγεθος. Μερικοί packers συγκεντρώνουν τα συμπιεσμένα δεδομένα και την ρουτίνα ξεπακεταρίσματος σε ένα μόνο τμήμα και τότε είτε χρησιμοποιούν το άλλο (από τα δυο τμήματα) κατά τη διάρκεια της φάσης ξεπακεταρίσματος είτε καθόλου. Επιπρόσθετα ορίζουμε ακόμα ένα ευρετικό που συσχετίζεται με το μέγεθος του αρχείου. Υπολογίζουμε το άθροισμα των μεγεθών όλων των τμημάτων που ανήκουν στο αρχείο και αν η τιμή του είναι μεγαλύτερη από το ορισμένο μέγεθος του αρχείου τότε σηκώνουμε μια σημαία. Αυτό είναι ένας αξιοσημείωτος δείκτης που δηλώνει ότι το αρχείο μπορεί να έχει πακεταριστεί και επομένως αποτελεί σταθμισμένο ευρετικό παράγοντα. # compute the real size of the file rawsize = 0 realrawsize = os.path.getsize(myopen) for section in pe.sections: # compute the sum of all section's size rawsize = rawsize + section.sizeofrawdata Αθανάσιος Σταγκίδης- Α.Μ

86 # computes the number of sections with null size if (section.sizeofrawdata == 0.0): nullsizesection = nullsizesection + 1 # raise a flag if all section's size is bigger than filesize if (rawsize > realrawsize): lengthflag = 1 if(lengthflag ): suspicious_pe = suspicious_pe + 2 if(nullsizesection > 1): suspicious_pe = suspicious_pe + 1 if( (numberofsections < 3) and (nullsizesection > 0) ): suspicious_pe = suspicious_pe + 1 Πίνακας Import Διευθύνσεων (IAT): Τα πακεταρισμένα εκτελέσιμα αρχεία χρειάζονται συχνά μόνο λίγες εξωτερικές συναρτήσεις για να λειτουργήσουν. Ως αποτέλεσμα ο IAT (Import Address Table) ενός πακεταρισμένου αρχείου είναι μικρός και συμπεριλαμβάνει έναν μικρό αριθμό αρχείων dll και υπάρχουν περιπτώσεις όπου ο πίνακας είναι ακόμα και κενός. Έτσι σηκώνουμε μια λογική σημαία σε περίπτωση άδειου IAT ή σε περίπτωση που ο αριθμός των imported dll αρχείων είναι μικρότερος ή ίσος με 5 και ο αριθμός των imported συναρτήσεων είναι μικρότερος ή ίσος με 10. # computes the number of imported dlls and imported functions and stores the results if hasattr(pe,'directory_entry_import'): for entry in pe.directory_entry_import: used_dlls.append(entry.dll) Αθανάσιος Σταγκίδης- Α.Μ

87 dllsimports = dllsimports + 1 for imp in entry.imports: used_functions.append(imp.name) functionimports = functionimports + 1 if( (dllsimports==0) or ( (dllsimports < 5) and (functionimports < 10) ) ): suspicious_pe = suspicious_pe + 1 Έλεγχοι Χαρακτηριστικών Τμήματος: Τα πακεταρισμένα εκτελέσιμα μπορεί να μην έχουν κανένα τμήμα το οποίο να έχει ενεργοποιημένη τη σημαία κώδικα (code flag). Αυτό δηλώνει ουσιαστικά ότι το εκτελέσιμο αρχείο τελικά στην πράξη δεν μπορεί να εκτελεστεί. Αυτή αποτελεί μια σημαντική ανωμαλία και έτσι μαρκάρουμε το ευρετικό αυτό σαν έναν σταθμισμένο ευρετικό παράγοντα. Υπάρχουν μερικές ακόμα σημαίες στο πεδίο Characteristics οι οποίες διαδραματίζουν σημαντικό ρόλο στην διάγνωση ενός packer. Ελέγχουμε για την ύπαρξη τμημάτων τα οποία περιγράφονται στο πεδίο Characteristics ως αρχικοποιημένα ή μη αρχικοποιημένα δεδομένα και ταυτόχρονα έχουν ενεργοποιημένη τη σημαία εκτέλεσης. Είναι ύποπτο για κώδικα που περιέχει δεδομένα να έχει άδεια εκτέλεσης. Συνήθως υπάρχει η ανάγκη ένα πακεταρισμένο αρχείο να έχει τουλάχιστον ένα τμήμα το οποίο να είναι ταυτόχρονα εγγράψιμο και εκτελέσιμο, έτσι ώστε η ρουτίνα ξεπακεταρίσματος να γράψει τον κώδικα της σε ένα τμήμα και στη συνέχεια το πρόγραμμα να εκτελεστεί από το αρχικό αυθεντικό σημείο εκκίνησης. Αν εντοπίσουμε ένα τμήμα το οποίο έχει ταυτόχρονα άδειες εγγραφής και εκτέλεσης, τότε σηκώνουμε μια λογική σημαία. for section in pe.sections: Αθανάσιος Σταγκίδης- Α.Μ

88 # compute the number of sections which are writable and executable False) and if ( section. dict.get('image_scn_mem_write', section. dict.get('image_scn_mem_execute', False) ): NumberOfWESections = NumberOfWESections + 1 # search for a.code section, raise a flag if there is one if ( section. dict.get('image_scn_cnt_code', False)): codeflag = 1 # compute the number of sections which contain data(initialized or not) and are executable if ( ((section. dict.get('image_scn_cnt_uninitialized_data',false) )or (section. dict.get('image_scn_cnt_initialized_data',false)) )and( section. dict.get('image_scn_mem_execute',false))): numofexedata = numofexedata + 1 if(codeflag==0): suspicious_pe = suspicious_pe + 2 if(numofexedata>0): suspicious_pe = suspicious_pe + 1 if(numberofwesections>0): suspicious_pe = suspicious_pe + 1 Σταθερό σημείο εκκίνησης εκτέλεσης: Κάποιοι packers μεταφέρουν το σημείο εκκίνησης εκτέλεσης του εκτελέσιμου σε μια σταθερή διεύθυνση. Επίσης συνδυάζουν και μερικά ακόμα ευρετικά, όπως για παράδειγμα σταθερό πίνακα IAT, σταθερό αριθμό τμημάτων με μηδενικό μέγεθος κ.α. Μιλώντας για σταθερότητα εννοούμε ότι αυτά τα στοιχεία παραμένουν τα ίδια σε όλα τα πακεταρισμένα αρχεία. Στον παρακάτω κώδικα αυξάνουμε το Σκορ Υποψίας κατά 4 μονάδες γιατί οι συγκεκριμένοι συνδυασμοί προδίδουν ότι πρόκειται με μεγάλη σιγουριά να είναι πακεταρισμένο το αρχείο και μάλιστα με τον FSG. Αθανάσιος Σταγκίδης- Α.Μ

89 # the "golden" rule about fsg packer specifically, without it many false negatives (24/93) if( (numberofsections == 2) and (nullsizesection == 1) and (dllsimports==1) and (functionimports==2) and (pe.optional_header.addressofentrypoint==340) and ( numberofweirdnames ==2 ) ): suspicious_pe = suspicious_pe + 4 Η σταθερά THRESHOLD 1, μετά από μερικά πειράματα (με 450 αρχεία, 30 για κάθε έναν από τους 14 packers και 30 κανονικά αρχεία) αποφασίστηκε να έχει τη τιμή 4. Στο επόμενο κεφάλαιο με όνομα Πειραματική Μελέτη, θα μιλήσουμε με περισσότερες λεπτομέρειες για αυτή την επιλογή. Έτσι λοιπόν κάθε αρχείο το οποίο συγκεντρώνει Σκορ Υποψίας μεγαλύτερο ή ίσο με 4 θεωρείται πακεταρισμένο. 6.2 Διαδικασία Αναγνώρισης Packer Αν στο προηγούμενο βήμα το εξεταζόμενο PE αρχείο βρέθηκε πακεταρισμένο τότε ακολουθεί μια δεύτερη διαδικασία εξέτασης, η οποία είναι υπεύθυνη για την αναγνώριση του packer που χρησιμοποιήθηκε. Το εργαλείο μας μπορεί να κατηγοριοποιήσει ένα εκτελέσιμο ανάμεσα σε 14 διαδεδομένες οικογένειες packer. Αν το αρχείο δεν είναι πακεταρισμένο από κάποιον packer που ανήκει σε αυτές τις 14 οικογένειες, τότε προβάλλεται ένα σχετικό μήνυμα, το οποίο πληροφορεί τον χρήστη ότι το αρχείο έχει πακεταριστεί με έναν άγνωστο packer. Οι 14 packers που χρησιμοποιήθηκαν σε αυτή τη μελέτη είναι εκδόσεις αυτών που είδαμε και στο κεφάλαιο 4 και είναι οι: Armadillo, ASPack, FSG, MEW, MPRESS, PECompact, PELock, Petite, RLPack, telock, Themida, UPX, WinUpack, Yoda s Protector. Επιλέξαμε αυτούς τους packers εξαιτίας της αυξημένης δημοφιλίας τους σε σχέση με άλλους και επειδή οι περισσότεροι από αυτούς διανέμονται ελεύθερα, χωρίς κόστος πληρωμής. Στο επόμενο κεφάλαιο θα δείξουμε ότι το εργαλείο μας μπορεί να αναγνωρίσει και τον ASProtect, που είναι μια πιο προχωρημένη εμπορική έκδοση του ASPack. Ήρθαμε αντιμέτωποι με ορισμένες δυσκολίες κατά τη διαδικασία δημιουργίας της μονάδας αναγνώρισης packer. Μια από αυτές ήταν η διαδικασία ονοματοδοσίας που ακολουθούν ορισμένοι packers για να ονομάσουν τα τμήματα της PE δομής τους. Αθανάσιος Σταγκίδης- Α.Μ

90 Μερικοί packers με σκοπό να μπερδέψουν τον αναλυτή, ονομάζουν τα τμήματα των αρχείων που έχουν πακετάρει με ονόματα που συσχετίζονται με άλλες οικογένειες packer. Ειδικά ο PElock και ο telock επιτρέπουν στον χρήστη να αλλάξει τα ονόματα των τμημάτων με ονόματα άλλων δημοφιλών packers όπως για παράδειγμα UPX0, UPX1,.aspack, κ.λπ. O Themida προσθέτει κενά μετά τα ονόματα των τμημάτων, και έτσι ένα όνομα όπως.text που σε κανονικές συνθήκες θεωρείται φυσιολογικό, ήταν πρακτικά λανθασμένο εξαιτίας των επιπρόσθετων κενών. Ακόμα ένα πρόβλημα που έπρεπε να ξεπεράσουμε ήταν το γεγονός ότι ο RLPack έχει την επιλογή για δημιουργία μιας ψεύτικης υπογραφής [5]. Στο εργαλείο μας λοιπόν χρησιμοποιήσαμε αναγνωριστικά ονομάτων όμως η διαδικασία αναγνώρισης δεν βασίστηκε τόσο σε αυτή τη κατεύθυνση. Παρακάτω περιγράφουμε τη διαδικασία αναγνώρισης packer του PackDetect: Η μεταβλητή Σκορ Packer (όπως φαίνεται και στο διάγραμμα ροής) είναι στη πραγματικότητα μια μεταβλητή πίνακα με 14 κελιά. Κάθε κελί από τα 14 ανατίθεται σε κάθε έναν από τους 14 packers. Ορίζουμε κανόνες βασισμένους σε ευρετικά τα οποία χρησιμοποιήθηκαν στο προηγούμενο βήμα (Διαδικασία Διάγνωσης Packer) και αυξάνουμε την τιμή των κελιών που αντιστοιχούν στους packers, οι οποίοι εκπληρώνουν τις προϋποθέσεις αυτών των κανόνων. Τότε η μέγιστη τιμή του πίνακα είναι το νικητήριο σκορ και ο packer που συσχετίζεται με αυτό, επιλέγεται ως ο packer που χρησιμοποιήθηκε για να πακετάρει το εκτελέσιμο (κατηγοριοποιείται στην αντίστοιχη οικογένεια packer). Εάν κανένα από τα 14 σκορ δεν ξεπερνάει την τιμή 2, τότε τα στοιχεία που έχουμε κρίνονται ανεπαρκή για να αναγνωρίσουμε τον packer και έτσι δεν μπορεί να αναγνωριστεί το λογισμικό packer που χρησιμοποιήθηκε. Η τιμή λοιπόν της σταθεράς THRESHOLD 2 από το διάγραμμα ροής είναι 2. Αυτοί οι κανόνες υλοποιούνται με έναν συνδυασμό συνθηκών if και βρόχων for στην γλώσσα Python. Παρακάτω παραθέτουμε μια λίστα με τους κανόνες ανάλογα με το περιεχόμενο τους καθώς και τα κομμάτια κώδικα που συσχετίζονται με αυτούς: Κανόνες Ψεύτικου Σημείου Εκκίνησης Εκτέλεσης: Αν το σημείο εκκίνησης εκτέλεσης του αρχείου είναι ψεύτικο (με τον έναν ή τον άλλον από τους δυο τρόπους που περιγράψαμε στην προηγούμενη ενότητα), τότε αυξάνουμε τα σκορ κάποιων packers. if( flagfake1 ): Αθανάσιος Σταγκίδης- Α.Μ

91 packers_score[1] = packers_score[1] + 1 packers_score[3] = packers_score[3] + 1 packers_score[4] = packers_score[4] + 1 packers_score[6] = packers_score[6] + 1 packers_score[7] = packers_score[7] + 1 packers_score[8] = packers_score[8] + 1 packers_score[9] = packers_score[9] + 1 packers_score[10] = packers_score[10] + 1 packers_score[11] = packers_score[11] + 1 packers_score[12] = packers_score[12] + 1 packers_score[13] = packers_score[13] + 1 if( flagfake2 ): packers_score[5] = packers_score[5] + 1 packers_score[6] = packers_score[6] + 1 packers_score[12] = packers_score[12] + 1 Κανόνες Ονομάτων Τμημάτων: Διαφορετικοί packers έχουν κάποιες στάνταρ συμβάσεις ονοματοδοσίας των τμημάτων που τους χαρακτηρίζουν. Για παράδειγμα ο packer UPX δίνει τα ονόματα «UPX0» και «UPX1» σε κάποια τμήματα του PE αρχείου. Κάποιοι packers όπως ο Yoda s Protector και ο Petite εκτός από ονόματα όπως «.petite» ή «.yp», αφήνουν μερικά τμήματα χωρίς όνομα (κενό όνομα). if((".pdata" in SectNamesList) and (".adata" in SectNamesList)): packers_score[0] = packers_score[0] + 1 if( (".aspack" in SectNamesList) and (".adata" in SectNamesList) ): packers_score[1] = packers_score[1] + 1 if("mew" in SectNamesList ): packers_score[3] = packers_score[3] + 1 if( (".MPRESS1" in SectNamesList) and (".MPRESS2" in SectNamesList) ): packers_score[4] = packers_score[4] + 1 if(".pelock" in SectNamesList): packers_score[6] = packers_score[6] + 1 if( (".petite" in SectNamesList) and ("" in SectNamesList) ): packers_score[7] = packers_score[7] + 2 if(sectnameslist.count("")>=3): packers_score[7] = packers_score[7] + 1 Αθανάσιος Σταγκίδης- Α.Μ

92 if( (".RLPack" in SectNamesList) and (".packed" in SectNamesList) ): packers_score[8] = packers_score[8] + 1 if(".yp" == SectNamesList[-1] ): if(sectnameslist.count("")>=3): packers_score[13]= packers_score[13] + 2 elif(sectnameslist.count("")==2): else: packers_score[13]= packers_score[13] + 1 packers_score[13]= packers_score[13] + 0 if( (SectNamesList[0]=="") and (SectNamesList[1]=="") ): if( (numberofsections == 2) and (pe.optional_header.addressofentrypoint ==340) ): packers_score[2]=packers_score[2] + 2 if(("upx0" in SectNamesList) and ("UPX1" in SectNamesList) ): packers_score[11] = packers_score[11] + 1 if(numberofsections == 2): if( (SectNamesList[0]==".Upack")and(SectNamesList[1]==".rsrc") ): packers_score[12]= packers_score[12] + 1 Κανόνες για τον Πίνακα Import Διευθύνσεων: Ορίσαμε μερικούς κανόνες για τα imported dlls και τις συναρτήσεις καθώς και για τα ονόματα τους και κάποιους συνδυασμούς με άλλους κανόνες. Για παράδειγμα πολλοί packers περιέχουν στον IAT το Kernel32.dll με τις συναρτήσεις LoadLibraryA και GetProcAddress. if(numberofsections == 3): if( (SectNamesList[0] not in NormalSectionNames ) and (SectNamesList[2] not in NormalSectionNames) and (SectNamesList[1] == "") ): if(pe.optional_header.addressofentrypoint ==4120): packers_score[12] = packers_score[12] + 2 if((dllsimports==0) and (functionimports==0) ): packers_score[12] = packers_score[12] + 1 if( (dllsimports==5) and (functionimports==232) ): Αθανάσιος Σταγκίδης- Α.Μ

93 if( ( "KERNEL32.dll" in used_dlls)and( "USER32.dll" in used_dlls)and( "GDI32.dll" in used_dlls)and( "COMDLG32.dll" in used_dlls)and( "SHELL32.dll" in used_dlls) ): packers_score[0] = packers_score[0] + 1 if( (dllsimports==1) and (functionimports==2) ): if( ("KERNEL32.dll" in used_dlls)and("loadlibrarya" in used_functions)and("virtualalloc" in used_functions) ): packers_score[6] = packers_score[6] + 1 if( ("KERNEL32.dll" in used_dlls)and("loadlibrarya" in used_functions)and("getprocaddress" in used_functions) ): packers_score[2] = packers_score[2] + 1 if( ("kernel32.dll" in used_dlls)and("loadlibrarya" in used_functions)and("getprocaddress" in used_functions) ): packers_score[3] = packers_score[3] + 1 if( ("Kernel32.dll" in used_dlls)and("loadlibrarya" in used_functions)and("getprocaddress" in used_functions) ): 1 packers_score[13] = packers_score[13] + if( ("KERNEL32.DLL" in used_dlls)and("loadlibrarya" in used_functions)and("getprocaddress" in used_functions) ): 1 packers_score[12] = packers_score[12] + if( (dllsimports==1) and (functionimports==5) ): if( ("kernel32.dll" in used_dlls) and ("LoadLibraryA" in used_functions) and ("GetProcAddress" in used_functions) and("virtualalloc" in used_functions) and ("VirtualFree" in used_functions) and ("VirtualProtect" in used_functions) ): packers_score[8] = packers_score[8] + 1 if( (dllsimports==2) and (functionimports==2)): if( ("kernel32.dll" in used_dlls) and ("user32.dll" in used_dlls) and("getmodulehandlea" in used_functions ) and ("MessageBoxA" in used_functions) ): packers_score[9] = packers_score[9] + 1 if(("kernel32.dll" in used_dlls) and ("comctl32.dll" in used_dlls) and ("lstrcpy" in used_functions ) and ("InitCommonControls" in used_functions) ): 1 packers_score[10] = packers_score[10] + Κανόνας για μη ύπαρξη Εκτελέσιμου Τμήματος: Μερικοί packers δεν περιέχουν κανένα εκτελέσιμο τμήμα. Αθανάσιος Σταγκίδης- Α.Μ

94 if(codeflag==0): if( (NumberOfWESections==0)and(numofExeData==0) ): packers_score[1]= packers_score[1] + 1 packers_score[9] = packers_score[9] + 1 packers_score[10] = packers_score[10] + 1 packers_score[11] = packers_score[11] + 1 packers_score[13] = packers_score[13] + 1 Κανόνες σχετικοί με Άδειες: Μετράμε τον αριθμό των τμημάτων τα οποία περιέχουν δεδομένα και είναι εκτελέσιμα καθώς και αυτά τα οποία είναι ταυτοχρόνως εγγράψιμα και εκτελέσιμα. Χρησιμοποιούμε αυτούς τους συνδυασμούς μαζί για να κατηγοριοποιήσουμε τους packers. Για παράδειγμα ένα αρχείο πακεταρισμένο με τον ASPack ή τον ASProtect συνήθως έχει τρία η περισσότερα τμήματα τα οποία περιέχουν δεδομένα και είναι εκτελέσιμα και εγγράψιμα ταυτόχρονα. if( ( NumberOfWESections==2 )and( numofexedata==2 ) ): packers_score[4] = packers_score[4] + 1 packers_score[5] = packers_score[5] + 1 packers_score[7] = packers_score[7] + 1 packers_score[11] = packers_score[11] + 1 packers_score[12] = packers_score[12] + 1 if((numberofwesections>=3)and(numofexedata>=3)): packers_score[1] = packers_score[1] + 1 packers_score[6] = packers_score[6] + 1 packers_score[7] = packers_score[7] + 1 packers_score[10] = packers_score[10] + 1 packers_score[12] = packers_score[12] + 1 if((numberofwesections>=1)and(numofexedata==0)): packers_score[0] = packers_score[0] + 1 packers_score[8] = packers_score[8] + 1 Κανόνες Μεγέθους Αρχείου: Μερικοί packers έχουν ένα συγκεκριμένο αριθμό τμημάτων με μηδενικό μέγεθος. Επιπρόσθετα τα τμήματα σε ένα αρχείο πακεταρισμένο με τον WinUpack έχουν μεγέθη τα οποία αν αθροιστούν ξεπερνούν το συνολικό μέγεθος του αρχείου. if(lengthflag): packers_score[12] = packers_score[12] + 1 Αθανάσιος Σταγκίδης- Α.Μ

95 if(nullsizesection>=3): packers_score[0] = packers_score[0] + 1 packers_score[1] = packers_score[1] + 1 packers_score[7] = packers_score[7] + 1 Κανόνες Εντροπίας: Η εντροπία μπορεί να είναι ένα χαρακτηριστικό σημάδι το οποίο να βοηθήσει στην κατηγοριοποίηση ενός packer αν συνδυαστεί με άλλα ευρετικά. Για παράδειγμα ο Armadillo έχει μηδενική εντροπία στο πρώτο τμήμα του και η εντροπία του προτελευταίου τμήματος είναι συνήθως μεγαλύτερη από 7.9. if( SectEntropyList[0]==0.0 ): packers_score[2] = packers_score[2] + 1 packers_score[3] = packers_score[3] + 1 packers_score[8] = packers_score[8] + 1 packers_score[11] = packers_score[11] + 1 if(sectentropylist[1]>=7.6): packers_score[12]= packers_score[12] + 1 if(sectentropylist[-2]>=7.9): packers_score[0] = packers_score[0] + 1 if((numberofsections==3) and (SectEntropyList[0]==0.0) and (SectEntropyList[1]>=7.6)): packers_score[11] = packers_score[11] + 1 if( sum(i > 7.6 for i in SectEntropyList) >= 3): packers_score[6] = packers_score[6] + 1 packers_score[9] = packers_score[9] + 1 if( (sum(i > 7.6 for i in SectEntropyList) >= 2) and (SectEntropyList[-1]==0.0)and (SectEntropyList[0]>=0.0) ): packers_score[1] = packers_score[1] + 1 Κανόνες Σταθερού Σημείου Εκκίνησης Εκτέλεσης: O FSG packer μεταφέρει το σημείο εκκίνησης εκτέλεσης σε μια στάνταρ διεύθυνση κάθε φορά και αυτή είναι η 340 (RVA). Ο WinUpack επίσης χρησιμοποιεί μια στάνταρ διεύθυνση για το σημείο εκκίνησης εκτέλεσης του εκτελέσιμου και στις περισσότερες περιπτώσεις είναι η Παραταύτα δεν συμβαίνει πάντοτε αυτό. if( (SectNamesList[0]=="") and (SectNamesList[1]=="") ): if( (numberofsections == 2) and (pe.optional_header.addressofentrypoint ==340) ): if(numberofsections == 3): packers_score[2]=packers_score[2] + 2 Αθανάσιος Σταγκίδης- Α.Μ

96 if( (SectNamesList[0] not in NormalSectionNames ) and (SectNamesList[2] not in NormalSectionNames) and (SectNamesList[1] == "") ): if(pe.optional_header.addressofentrypoint ==4120): packers_score[12] + 2 packers_score[12] = Αθανάσιος Σταγκίδης- Α.Μ

97 7 Πειραματική Μελέτη Στο κεφάλαιο αυτό θα παρουσιάσουμε τα πειράματα που διεξαγάγαμε για να μετρήσουμε την απόδοση του εργαλείου διάγνωσης PackDetect. Το PackDetect δοκιμάστηκε τόσο με φυσιολογικά καλοήθη αρχεία και πακεταρισμένα αρχεία με μη κακόβουλο λογισμικό όσο και σε αρχεία με κακόβουλο λογισμικό. Πριν προχωρήσουμε με τα πειράματα ας δούμε μερικές εικόνες στις οποίες φαίνεται το περιβάλλον του PackDetect και οι δυνατότητες του στην πράξη. 7.1 Παρουσίαση του PackDetect Παρακάτω φαίνονται μερικές εικόνες λειτουργίας του PackDetect και συγκεκριμένα της έκδοσης με το γραφικό περιβάλλον διεπαφής χρήστη. Εικόνα 30. PackDetect σε μη πακεταρισμένο αρχείο Εικόνα 31. PackDetect σε πακεταρισμένο αρχείο Αθανάσιος Σταγκίδης- Α.Μ

98 Εικόνα 32. PackDetect σε πακεταρισμένο αρχείο με άγνωστο packer Όπως βλέπουμε το εργαλείο μας διαθέτει έναν περιηγητή αρχείων (Choose File), από όπου ο χρήστης επιλέγει το αρχείο που θέλει να εξετάσει. Μόλις το επιλέξει εμφανίζεται ολόκληρη η διαδρομή του στο πεδίο File. Έπειτα εμφανίζονται κάποιες πληροφορίες όπως το μέγεθος του αρχείου σε Bytes (File Size), η διεύθυνση του σημείου εκκίνησης εκτέλεσης (Address of Entry Point), η διεύθυνση αρχικής φόρτωσης της εικόνας του αρχείου (ImageBase) και το κουμπί Print Names, όπου αν πατήσει ο χρήστης μπορεί να δει τα ονόματα των τμημάτων από τα οποία αποτελείται το PE αρχείο. Τέλος έχουμε τα πεδία Scanned Result και Packer Detection όπου προβάλλονται μηνύματα σχετικά με το αν το αρχείο είναι πακεταρισμένο ή όχι και με τον packer που έχει εντοπιστεί αντίστοιχα. Παραθέτουμε και μια εικόνα της έκδοσης του PackDetect για γραμμή εντολών (χωρίς κάποιο GUI). Εικόνα 33. PackDetect σε γραμμή εντολών Αθανάσιος Σταγκίδης- Α.Μ

99 Στην περίπτωση του PackDetect σε γραμμή εντολών, το υπό εξέταση αρχείο πρέπει να τοποθετηθεί στον ίδιο φάκελο με το script και να μετονομαστεί σε test1.exe έτσι ώστε να τρέξει. Αναλυτικές οδηγίες υπάρχουν στο Παράρτημα της διατριβής. 7.2 Πειραματική Αξιολόγηση σε Καλόβουλα Αρχεία Για να αποδείξουμε την αποδοτικότητα του εργαλείου διάγνωσης packer που αναπτύξαμε, εκτελέσαμε μια σειρά από πειράματα. Διαλέξαμε 100 Win32 PE αρχεία με μεγέθη που κυμαίνονται από 100Kbytes έως περίπου 3 Mbytes. Τα αρχεία αυτά συλλέχθηκαν από τον Program Files(x86) Φάκελο μιας εγκατάστασης Windows 7 Home Premium. Κάθε ένα από αυτά τα αρχεία πακεταρίστηκε με κάθε έναν από τους 14 packers που συμπεριλάβαμε σε αυτή τη μελέτη. Μερικά αρχεία δεν μπορούσαν να πακεταριστούν με αυτούς τους packers εξαιτίας ασυμβατότητας και δομικών θεμάτων. Έτσι βρήκαμε κάποια άλλα κανονικά αρχεία από το Διαδίκτυο για να πάρουν τη θέση τους. Τα αρχεία αυτά ήταν installers και εκτελέσιμα μικρών χρήσιμων εργαλείων για windows (επεξεργαστές κειμένου, video players κ.ά.). Για να δείξουμε ότι το εργαλείο μας μπορεί να διαγνώσει (αλλά όχι να αναγνωρίσει) και εκτελέσιμα πακεταρισμένα με άλλους packers, συμπεριλάβαμε στα πειράματα και 97 αρχεία πακεταρισμένα με τρεις διαφορετικούς packers που δεν συμπεριλάβαμε στην μελέτη μας. Αυτοί οι packers ήταν οι Krypton, WinKript και PENinja και τους είδαμε συνοπτικά στην ενότητα Έτσι πειραματιστήκαμε με 1474 κανονικά Win32 PE αρχεία συνολικά, τα 100 από τα οποία ήταν φυσιολογικά μη πακεταρισμένα αρχεία και τα υπόλοιπα 1374 ήταν φυσιολογικά (μη κακόβουλα δηλαδή) πακεταρισμένα αρχεία. Όπως αναφέραμε σε προηγούμενη ενότητα, για να σχεδιάσουμε το εργαλείο μας ώστε να επιτυγχάνει υψηλούς ρυθμούς διάγνωσης, καταγράψαμε για 450 αρχεία (κανονικά και πακεταρισμένα) μερικά βασικά γνωρίσματα της PE δομής τους με το εργαλείο pefile του Ero Carrera. Έπρεπε επιπλέον να επιλέξουμε μια κατάλληλη τιμή για την σταθερά THRESHOLD 1, για να ελαχιστοποιήσουμε τον αριθμό των ψευδώς θετικών (false positives) και ψευδώς αρνητικών αποτελεσμάτων (false negatives). Η τιμή της σταθεράς THRESHOLD 2, επιλέχθηκε με μια παρόμοια διαδικασία. Παρακάτω βλέπουμε για 24 αρχεία τα αποτελέσματα του PackDetect (το Σκορ Υποψίας) για τα αυθεντικά αρχεία και για τους 14 packers. Με κενό συμβολίζουμε τις Αθανάσιος Σταγκίδης- Α.Μ

100 περιπτώσεις που το συγκεκριμένο αρχείο δεν μπορούσε να πακεταριστεί με κάποιον packer και το εργαλείο PackDetect επομένως δεν έβγαλε διάγνωση για αυτό ενώ με τις περιπτώσεις όπου το PackDetect δεν εκτελέστηκε σωστά για το συγκεκριμένο αρχείο. Οι τιμές στις στήλες είναι οι τιμές της μεταβλητής Σκορ Υποψίας. Αθανάσιος Σταγκίδης- Α.Μ

101 Αθανάσιος Σταγκίδης- Α.Μ

102 Εικόνα 34. Τιμές Σκορ Υποψίας για καλοβουλα αρχεία Παρακάτω παραθέτουμε έναν πίνακα ο οποίος περιέχει τις μέσες τιμές της μεταβλητής Σκορ Υποψίας η οποία αποφασίζει εάν ένα εκτελέσιμο είναι πακεταρισμένο ή όχι. Αυτές οι τιμές υπολογίστηκαν από 1474 PE αρχεία (για κάθε packer συμπεριλήφθησαν όλα τα αρχεία, και όχι μόνο τα 30 που χρησιμοποιήθηκαν για τον ορισμό των ευρετικών). Packer Name Suspicion Score Average Not Packed 0.38 Armadillo 5.48 ASPack 7.17 FSG 8.61 MEW 5.87 MPRESS 6.16 Αθανάσιος Σταγκίδης- Α.Μ

103 PECompact 5.10 PELocker 8.00 Petite 6.81 RLPack 6.94 telock 8.15 Themida 9.78 UPX 7.04 WinUpack 8.05 Yoda s Protector 8.14 Krypton 7.03 WinKripT 3.85 PENinja 7.48 Πίνακας 1: Μέσες Τιμές Σκορ Υποψίας Η μέση τιμή του Σκορ Υποψίας για κανονικά μη πακεταρισμένα αρχεία είναι 0.38 όπως φαίνεται στον πίνακα 1. Η ελάχιστη τιμή του Σκορ Υποψίας για κανονικά αρχεία είναι 0 και η μέγιστη είναι 3. Για κανονικά (μη κακόβουλα) πακεταρισμένα αρχεία που έχουν πακεταριστεί με έναν από τους 14 packers, η ελάχιστη τιμή του Σκορ Υποψίας είναι 4 και η μέγιστη τιμή είναι 10. Η τιμή κατωφλιού που τελικά επιλέξαμε για την διάγνωση packer ήταν τελικά η τιμή 4. Παρόλ αυτά όπως μπορούμε να δούμε στον Πίνακα 1, υπάρχουν περιπτώσεις σε άλλους packers (εκτός της εμβέλειας αυτής της μελέτης) όπου η τιμή Σκορ Υποψίας παίρνει τιμές κάτω από 4. Παρατηρήσαμε αυτό το σενάριο σε ένα μικρό ποσοστό αρχείων πακεταρισμένων με τον WinKripT. Ήρθε η στιγμή να παρουσιάσουμε τα αποτελέσματα από τη διάγνωση packer. Συγκρίναμε τα αποτελέσματα του PackDetect με τα αποτελέσματα δυο αρκετά γνωστών εργαλείων διάγνωσης με βάση τις υπογραφές, του PEID και του RDG Packer Detector. Λεπτομέρειες για αυτά τα δυο εργαλεία υπάρχουν στο κεφάλαιο 5 της παρούσας διατριβής. Στο παρακάτω πίνακα μπορούμε να δούμε τα συγκεντρωτικά αποτελέσματα της μελέτης μας για 1374 καλόβουλα φυσιολογικά αρχεία (100 μη πακεταρισμένα και 1274 Αθανάσιος Σταγκίδης- Α.Μ

104 πακεταρισμένα αρχεία). Οι αριθμοί στις στήλες των τριών εργαλείων διάγνωσης (PEID, RDG και PackDetect) αναπαριστούν τον αριθμό των αρχείων που διαγνώστηκαν ως πακεταρισμένα με τον σωστό packer. Packer Name (Total Files) PEID RDG Packer Detector PackDetect Armadillo(93) ASPack (102) FSG(93) MEW(96) MPRESS(86) PECompact(94) PELocker(99) Petite(52) RLPack(98) telock(73) Themida(97) UPX(103) WinUpack(99) Yoda s Protector(92) Πίνακας 2: Συγκεντρωτικά Αποτελέσματα Διάγνωσης Καλοηθών Αρχείων Εξετάσαμε επιπλέον 100 κανονικά μη πακεταρισμένα αρχεία και κανένα από τα τρία εργαλεία δεν παρουσίασε ψευδώς θετικά αποτελέσματα (false positives). Ο διαγνώστης PEID διέγνωσε 915 από τα 1274 δείγματα, έχοντας ρυθμό διάγνωσης με ποσοστό 71.82%, ο RDG Packer Detector διέγνωσε 1268 από τα 1274, έχοντας ρυθμό διάγνωσης με ποσοστό 99.52% και το εργαλείο μας, PackDetect, διέγνωσε 1175 από τα 1274 δείγματα, επιτυγχάνοντας δηλαδή ποσοστό διάγνωσης 92.23%. Ο PEID δεν μπόρεσε να διαγνώσει κανένα από τα δείγματα που είχαν πακεταριστεί με τους packers, MPRESS και RLPACK. Από την άλλη μεριά ο διαγνώστης RDG Packer Αθανάσιος Σταγκίδης- Α.Μ

105 Detector είχε την καλύτερη ακρίβεια, αντιμετωπίζοντας πρόβλημα μόνο με 5 δείγματα πακεταρισμένα με τον PELock και ένα δείγμα πακεταρισμένο με τον RLPack. Ο PackDetect κράσαρε σε 5 περιπτώσεις, σε ένα αρχείο πακεταρισμένο με τον Petite και 4 αρχεία πακεταρισμένα με τον Armadillo εξαιτίας της δομής αυτών των αρχείων (κάποιες ανωμαλίες στον πίνακα IAT προκάλεσαν σφάλμα στην εφαρμογή μας). Το εργαλείο μας βέβαια απέτυχε ολοκληρωτικά να διαγνώσει αρχεία πακεταρισμένα με τον packer PECompact. Η μονάδα διάγνωσης, διέγνωσε ότι τα συγκεκριμένα αρχεία ήταν πακεταρισμένα αλλά η μονάδα αναγνώρισης δεν λειτούργησε. Το εργαλείο PackDetect δεν μπόρεσε να διακρίνει ότι αυτά τα αρχεία ανήκαν στην οικογένεια PECompact. Έτσι για καλόβουλα αρχεία πετύχαμε έναν καλύτερο ρυθμό διάγνωσης από το PEID αλλά χειρότερο από τον RDG Packer Detector. 7.3 Πειραματική Αξιολόγηση σε Κακόβουλο Λογισμικό Για να εκτελέσουμε μια καλύτερη και πιο ολοκληρωμένη αξιολόγηση του εργαλείου μας, διεξαγάγαμε επιπλέον μια πειραματική μελέτη πάνω σε κακόβουλο λογισμικό. Συλλέξαμε 705 κακόβουλα δείγματα από το Διαδίκτυο. Η συλλογή περιλαμβάνει σχετικά καινούρια δείγματα (των τελευταίων δυο χρόνων) από την ιστοσελίδα VirusSign[61] και την MalwareTips[62], καθώς και μερικά παλιότερα δείγματα από την σελίδα VX Heaven [63]. Συλλέξαμε επίσης μερικά δείγματα και από την σελίδα TekDefense[64]. Η πλειοψηφία των δειγμάτων ήταν Backdoors, Δούρειοι Ίπποι, Rootkits και Flooders, αλλά πολλά ακόμα δείγματα από άλλα είδη συμπεριλαμβάνονταν στην συλλογή δεδομένων μας (Hacktools, Downloaders κ.ά.). 300 δείγματα ήταν κανονικά (μη πακεταρισμένα) και 405 ήταν πακεταρισμένα με μια πλειοψηφία διαφορετικών packers. Στη μελέτη μας συγκρίναμε την αποδοτικότητα του PEID και του RDG Packer Detector με αυτή του PackDetect όπως προηγουμένως. Ανάμεσα στους διαφορετικούς packers που χρησιμοποιήθηκαν για να πακετάρουν τα 405 πακεταρισμένα κακόβουλα δείγματα υπήρχαν και κάποιοι ατομικά φτιαγμένοι (custom made) packers. Όπως θα δείξουμε ο PackDetect μπορεί να αποφασίσει εάν ένα αρχείο είναι πακεταρισμένο με κάποιον custom-made packer, αλλά δεν μπορεί να αναγνωρίσει την οικογένεια packer. Επειδή ο RDG Packer Detector και ο PEID συνήθως αποτυγχάνουν να διαγνώσουν custom-made packers έπρεπε να βασιστούμε σε Αθανάσιος Σταγκίδης- Α.Μ

106 ένα άλλο εργαλείο PE ανάλυσης με όνομα EXEInfoPE (το οποίο και αναφέραμε στο κεφάλαιο 5). Φυσικά το εργαλείο PEID μπορεί να χρησιμοποιήσει μια προσέγγιση βασισμένη στην ανάλυση εντροπίας του αρχείου και να αποφασίσει εάν το αρχείο είναι πακεταρισμένο και ο RDG χρησιμοποιεί επίσης μια μονάδα υπολογισμού εντροπίας που μπορεί να αποφασίσει εάν το αρχείο είναι συμπιεσμένο (και έτσι πακεταρισμένο έμμεσα κάποιες φορές). Όμως αυτά τα χαρακτηριστικά δεν είναι αξιόπιστα. Όπως φάνηκε στην εργασία [49] η ανάλυση εντροπίας ως τεχνική μέτρησης, μπορεί να νικηθεί εύκολα από κάποιες «έξυπνες» τεχνικές. Επιπλέον κάναμε κάποιους ελέγχους και είδαμε ότι τα εργαλεία υπολογισμού εντροπίας του PEID και του RDG υποφέρουν από πολλά ψευδώς αρνητικά (false negatives) και ψευδώς θετικά (false positives) αποτελέσματα. Αντιθέτως όταν ο διαγνώστης EXEInfoPE αποτυγχάνει να διαγνώσει μια οικογένεια packer, μπορεί να αποφασίσει εάν ένα αρχείο είναι πακεταρισμένο με αποδοτικό και αξιόπιστο τρόπο και προβάλλει το κατάλληλο μήνυμα. Χρησιμοποιήσαμε την έκδοση του EXEInfoPE. Παρότι δεν εκτελέσαμε τα δείγματα κακόβουλου λογισμικού έπρεπε να σιγουρευτούμε ότι δεν θα γίνει καμία ζημιά. Διεξαγάγαμε τα πειράματα μας σε μια εικονική μηχανή (virtual machine) κατασκευασμένη από το λογισμικό VirtualBox της Oracle [65]. Χρησιμοποιήσαμε την έκδοση για windows. To σύστημα οικοδεσπότης (host system) ήταν μια μηχανή Windows 7 Enterprise Service Pack 1 32-bit και η εικονική μηχανή (guest system) ήταν μια μηχανή Windows 7 Professional N Service Pack bit με 1 GB Ram, 25 GB χώρο σκληρού δίσκου και επεξεργαστή Intel Core (TM) i GHz 3.59GHz. Ακολουθούν μερικές σημαντικές σημειώσεις πριν την παρουσίαση των αποτελεσμάτων. Θεωρούμε ότι ο PEID και RDG Packer Detector αποτυγχάνουν, όταν δεν μπορούν να διαγνώσουν ένα πακεταρισμένο εκτελέσιμο (δεν μπορούμε να βασιστούμε στα εργαλεία ανάλυσης εντροπίας που χρησιμοποιούν). Αποτυχία για το εργαλείο μας σημαίνει ότι δεν μπορεί να αναγνωρίσει packer που συμπεριλάβαμε σε αυτή τη μελέτη. Αντιθέτως η διάγνωση (όχι η αναγνώριση όμως) custom packer ή άλλων packers που δεν συμπεριλήφθηκαν σε αυτή τη μελέτη θεωρείται επιτυχία. Με άλλα λόγια θεωρούμε ότι υπάρχει επιτυχία αν το εργαλείο μας μπορεί να αποφασίσει εάν ένα δείγμα πακεταρισμένο με κάποιον packer που βρίσκεται εκτός της εμβέλειας αυτής της μελέτης, είναι πακεταρισμένο ή όχι. Αθανάσιος Σταγκίδης- Α.Μ

107 Τέλος σε αυτά τα πειράματα ανακαλύψαμε ότι ο PackDetect δεν μπορεί να ξεχωρίσει τη διάγνωση μεταξύ των packers ASPack και ASProtect. Αυτό συμβαίνει πιθανώς επειδή έχουν κοινά PE χαρακτηριστικά στη δομή τους. Έτσι χρησιμοποιήσαμε ένα κατάλληλο μήνυμα εξόδου το οποίο πληροφορεί τον αναλυτή ότι ένα αρχείο πακεταρισμένο με τον ASPack ή τον ASProtect είναι πακεταρισμένο με οποιοδήποτε από τους δυο packers. Ο αναλυτής τότε μπορεί να δοκιμάσει δυο unpackers για να λάβει το αυθεντικό εκτελέσιμο (δεν είναι κάποια αξιόλογη επιπρόσθετη ποσότητα χρόνου). Έτσι θεωρούμε επιτυχή τη διάγνωση των ASPack και ASProtect. Ακολουθούν τα αποτελέσματα διάγνωσης των τριών εργαλείων για 20 από τα 300 μη πακεταρισμένα αρχεία. Αθανάσιος Σταγκίδης- Α.Μ

108 Εικόνα 35. Αποτελέσματα διάγνωσης για μη πακεταρισμένα κακόβουλα αρχεία Επιπρόσθετα παραθέτουμε τα αποτελέσματα διάγνωσης για 20 από τα 405 κακόβουλα πακεταρισμένα αρχεία. Αθανάσιος Σταγκίδης- Α.Μ

109 Εικόνα 36. Αποτελέσματα διάγνωσης πακεταρισμένα κακόβουλα αρχεία Στο παρακάτω πίνακα μπορούμε να δούμε τα συγκεντρωτικά αποτελέσματα της μελέτης μας για 705 κακόβουλα αρχεία. Οι αριθμοί στις στήλες των τριών εργαλείων διάγνωσης, PEID, RDG και του PackDetect αναπαριστούν τον αριθμό των αρχείων που διαγνώστηκαν ως πακεταρισμένα. Στην περίπτωση άλλων packers και custom packers, ο αριθμός στην στήλη του PackDetect αναπαριστά τον αριθμό των δειγμάτων που σωστά διαγνώστηκαν ως πακεταρισμένα (αλλά δεν αναγνωρίστηκαν). RDG Malware Samples (Total Files) PEID Packer PackDetect Detector Not Packed (300) Armadillo (10) ASPack (50) ASProtect (15) FSG (37) Αθανάσιος Σταγκίδης- Α.Μ

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

Πως μπορούν τα μέρη του υλικού ενός υπολογιστή να επικοινωνούν και να συνεργάζονται μεταξύ τους; Επειδή ακολουθούν συγκεκριμένες οδηγίες (εντολές). Κεφάλαιο 5 Πως μπορούν τα μέρη του υλικού ενός υπολογιστή να επικοινωνούν και να συνεργάζονται μεταξύ τους; Επειδή ακολουθούν συγκεκριμένες οδηγίες (εντολές). Το σύνολο αυτών των εντολών το ονομάζουμε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Τεχνολογίες & Εφαρμογές Πληροφορικής

Τεχνολογίες & Εφαρμογές Πληροφορικής ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 5: Εγκατάσταση Απεγκατάσταση Εφαρμογών και Ιοί Ανδρέας Βέγλης, Αναπληρωτής Καθηγητής Άδειες

Διαβάστε περισσότερα

Τ.Π.Ε. στον Τουρισμό. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Τ.Π.Ε. στον Τουρισμό. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Τ.Π.Ε. στον Τουρισμό Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, 2015-2016 Μάθημα 2: Βασικές Αρχές Ασφάλειας Η/Υ Ασφάλεια Ηλεκτρονικού Υπολογιστή Ασφάλεια από Κακόβουλο

Διαβάστε περισσότερα

ΚΙΝΔΥΝΟΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

ΚΙΝΔΥΝΟΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΚΙΝΔΥΝΟΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ TROJAN Στην πληροφορική, ο δούρειος ίππος (trojan horse ή απλά trojan) είναι ένα κακόβουλο πρόγραμμα που ξεγελάει τον χρήστη και τον κάνει να πιστεύει ότι εκτελεί κάποια χρήσιμη

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

Phishing, Ιοί και Πειρατεία Λογισμικού Ηλεκτρονικών υπολογιστών

Phishing, Ιοί και Πειρατεία Λογισμικού Ηλεκτρονικών υπολογιστών Phishing, Ιοί και Πειρατεία Λογισμικού Ηλεκτρονικών υπολογιστών ΠΑΡΟΥΣΙΑΖΟΥΝ: ΔΗΜΗΤΡΙΑ ΚΡΑΣΑ, ΜΑΡΙΑ ΚΟΥΦΟΠΑΥΛΟΥ, Β2 & ΚΥΡΙΑΚΗ ΚΑΡΑΤΖΙΑ Α1 2016-2017 Τι είναι το Phishing; Ως Phishing ονομάζουμε την προσπάθεια

Διαβάστε περισσότερα

Ασφάλεια Πληροφοριακών Συστημάτων

Ασφάλεια Πληροφοριακών Συστημάτων Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Ασφάλεια Πληροφοριακών Συστημάτων Ενότητα 10: Κακόβουλο Λογισμικό Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΕΠΙΘΕΣΗΣ (1/8)

ΤΕΧΝΙΚΕΣ ΕΠΙΘΕΣΗΣ (1/8) ΑΣΦΑΛΕΙΑ WEB CLIENT ΤΕΧΝΙΚΕΣ ΕΠΙΘΕΣΗΣ (1/8) Επίθεση άρνησης υπηρεσίας (Denial of Service-DoS). Αποστολή πολλών αιτήσεων στο µηχάνηµα-στόχο ώστε τα resources που του αποµένουν (σε αυτόν ή και στο δίκτυο).

Διαβάστε περισσότερα

ΑΣΦΑΛΕΙΑ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Κακόβουλο Λογισμικό)

ΑΣΦΑΛΕΙΑ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Κακόβουλο Λογισμικό) ΑΣΦΑΛΕΙΑ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ (Κακόβουλο Λογισμικό) Καλλονιάτης Χρήστος Επίκουρος Καθηγητής Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας, Πανεπιστήμιο Αιγαίου http://www.ct.aegean.gr/people/kalloniatis

Διαβάστε περισσότερα

Κακόβουλο Λογισμικό Ηλιάδης Ιωάννης

Κακόβουλο Λογισμικό Ηλιάδης Ιωάννης Κακόβουλο Λογισμικό Ηλιάδης Ιωάννης Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Πανεπιστήμιο Αιγαίου jiliad@aegean.gr Αθήνα, Ιούλιος 2004 Η έννοια του Κακόβουλου Λογισμικού Το Λογισμικό

Διαβάστε περισσότερα

Malware & AntiVirus. black d@ck HackFest 12/03/2015

Malware & AntiVirus. black d@ck HackFest 12/03/2015 Malware & AntiVirus black d@ck HackFest 12/03/2015 Malware Malicous Software γνωστό και ως Malware. Όρος που χρησιμοποιείται για να περιγράψει οποιοδήποτε μη επιθυμητό λογισμικό και εκτελέσιμο κώδικα που

Διαβάστε περισσότερα

ΜΑΘΗΜΑ 7 - ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ

ΜΑΘΗΜΑ 7 - ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ ΜΑΘΗΜΑ 7 - ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ 1. Ποια από τις πιο κάτω δηλώσεις περιγράφει την σωστή διαδικασία ασφάλειας των πληροφοριών για ένα οργανισμό; a) Να μην υπάρχουν διαδικασίες για την αναφορά των

Διαβάστε περισσότερα

Τ.Ε.Ι. Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων Μεσολόγγι. 9 η Διάλεξη. Μάθημα: Τεχνολογίες Διαδικτύου

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

Διαβάστε περισσότερα

Λιβανός Γιώργος Εξάμηνο 2017Β

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Στόχος Εμπιστευτικότητα δεδομένων Ακεραιότητα δεδομένων Διαθεσιμότητα συστήματος Απειλή Έκθεση δεδομένων Παρέμβαση στα δεδομένα Άρνηση εξυπηρέτησης Κοινές κατηγορίες 1. Συνήθης

Διαβάστε περισσότερα

Διαδικτυακά εργαλεία και υπηρεσίες στην καθημερινή ζωή

Διαδικτυακά εργαλεία και υπηρεσίες στην καθημερινή ζωή Διαδικτυακά εργαλεία και υπηρεσίες στην καθημερινή ζωή 10. Ασφάλεια στο Διαδίκτυο http://users.sch.gr/galexiad galexiad@gmail.com 2 Περιεχόμενα Επικοινωνία & Ιδιωτικότητα Πληροφορία στο Διαδίκτυο Παιχνίδια

Διαβάστε περισσότερα

Τ.Ε.Ι. Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων Μεσολόγγι. 9 η Διάλεξη. Μάθημα: Τεχνολογίες Διαδικτύου

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

Διαβάστε περισσότερα

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ Τι είναι προσωπικά δεδομένα; Είναι κάθε πληροφορία που αναφέρεται και προσδιορίζει ένα άτομο, όπως: στοιχεία αναγνώρισης (ονοματεπώνυμο, ηλικία, κατοικία, επάγγελμα, οικογενειακή

Διαβάστε περισσότερα

Κεφάλαιο 16 Ασφάλεια και Προστασία στο Διαδίκτυο. Εφαρμογές Πληροφορικής Κεφ. 16 Καραμαούνας Πολύκαρπος

Κεφάλαιο 16 Ασφάλεια και Προστασία στο Διαδίκτυο. Εφαρμογές Πληροφορικής Κεφ. 16 Καραμαούνας Πολύκαρπος Κεφάλαιο 16 Ασφάλεια και Προστασία στο Διαδίκτυο Εφαρμογές Πληροφορικής Κεφ. 16 Καραμαούνας Πολύκαρπος 16.1 Ασφάλεια υπολογιστικού συστήματος Κακόβουλο λογισμικό: το λογισμικό το οποίο εκ προθέσεως διαθέτει

Διαβάστε περισσότερα

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

Διαβάστε περισσότερα

Κεφάλαιο 1.10: Προστασία και ασφάλεια δεδομένων

Κεφάλαιο 1.10: Προστασία και ασφάλεια δεδομένων Κεφάλαιο 1.10: Προστασία και ασφάλεια δεδομένων 1.10.1 Κίνδυνοι απώλειας δεδομένων Με την συνεχή αύξηση της χωρητικότητας των αποθηκευτικών μέσων και την ταυτόχρονη μείωση των τιμών τους, αυξάνονται συνεχώς

Διαβάστε περισσότερα

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική Εισαγωγή στην πληροφορική Ενότητα 5: Δικτύωση και Διαδίκτυο II Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών Σπουδών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Εισαγωγή 6. Tα πολλά πρόσωπα των απειλών για το PC 8. Οι βασικές ρυθμίσεις ασφαλείας στα Windows 18. Προστασία από το Malware με το Avast Antivirus 34

Εισαγωγή 6. Tα πολλά πρόσωπα των απειλών για το PC 8. Οι βασικές ρυθμίσεις ασφαλείας στα Windows 18. Προστασία από το Malware με το Avast Antivirus 34 περιεχόμενα Εισαγωγή 6 Tα πολλά πρόσωπα των απειλών για το PC 8 Οι βασικές ρυθμίσεις ασφαλείας στα Windows 18 Προστασία από το Malware με το Avast Antivirus 34 Γονικός έλεγχος σε PC και tablet 44 Παρακολούθηση

Διαβάστε περισσότερα

F-Secure Anti-Virus for Mac 2015

F-Secure Anti-Virus for Mac 2015 F-Secure Anti-Virus for Mac 2015 2 Περιεχόμενα F-Secure Anti-Virus for Mac 2015 Περιεχόμενα Κεφάλαιο 1: Έναρξη...3 1.1 Διαχείριση συνδρομής...4 1.2 Πώς μπορώ να βεβαιωθώ ότι ο υπολογιστής μου προστατεύεται;...4

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Διαχείριση Ασφαλείας (Ι) Απειλές Ασφαλείας Συμμετρική & Μη-Συμμετρική Κρυπτογραφία

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Διαχείριση Ασφαλείας (Ι) Απειλές Ασφαλείας Συμμετρική & Μη-Συμμετρική Κρυπτογραφία ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Διαχείριση (Ι) Απειλές Συμμετρική & Μη-Συμμετρική Κρυπτογραφία Β. Μάγκλαρης maglaris@netmode.ntua.gr www.netmode.ntua.gr 13/11/2017 ΘΕΜΑΤΙΚΕΣ ΠΕΡΙΟΧΕΣ ΑΣΦΑΛΕΙΑΣ Είδη Απειλών και Επιθέσεων

Διαβάστε περισσότερα

Κεφάλαιο 1: Έναρξη...3

Κεφάλαιο 1: Έναρξη...3 F-Secure Anti-Virus for Mac 2014 Περιεχόμενα 2 Περιεχόμενα Κεφάλαιο 1: Έναρξη...3 1.1 Τι πρέπει να κάνω μετά την εγκατάσταση;...4 1.1.1 Διαχείριση συνδρομής...4 1.1.2 Άνοιγμα του προϊόντος...4 1.2 Πώς

Διαβάστε περισσότερα

Ασφάλεια Υπολογιστικών Συστηµάτων

Ασφάλεια Υπολογιστικών Συστηµάτων Βασικοί τύποι επιθέσεων στο Internet Βασισµένες σε κωδικό πρόσβασης (password-based attacks): προσπάθεια παραβίασης του κωδικού πρόσβασης Υποκλοπή πακέτων µετάδοσης (packet sniffing attacks): παρακολούθηση

Διαβάστε περισσότερα

Κεφάλαιο 3. Διδακτικοί Στόχοι

Κεφάλαιο 3. Διδακτικοί Στόχοι Κεφάλαιο 3 Σε ένα υπολογιστικό σύστημα η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) εκτελεί τις εντολές που βρίσκονται στην κύρια μνήμη του. Οι εντολές αυτές ανήκουν σε προγράμματα τα οποία, όταν εκτελούνται,

Διαβάστε περισσότερα

Ο ηλεκτρονικός υπολογιστής µπορεί να επεξεργάζεται δεδοµένα βάσει ενός συνόλου προκαθορισµένων οδηγιών Το κυριότερο πρόβληµα που αντιµετωπίζουν οι

Ο ηλεκτρονικός υπολογιστής µπορεί να επεξεργάζεται δεδοµένα βάσει ενός συνόλου προκαθορισµένων οδηγιών Το κυριότερο πρόβληµα που αντιµετωπίζουν οι ΑΣΦΑΛΕΙΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Βελντέ ιονυσία Γκικάκη Λυδία Κληρονόµου Αναστασία Ο ηλεκτρονικός υπολογιστής µπορεί να επεξεργάζεται δεδοµένα βάσει ενός συνόλου προκαθορισµένων οδηγιών Το κυριότερο πρόβληµα

Διαβάστε περισσότερα

ΑΣΦΑΛΕΙΑ. Το περιβάλλον ασφάλειας Απειλές

ΑΣΦΑΛΕΙΑ. Το περιβάλλον ασφάλειας Απειλές ΑΣΦΑΛΕΙΑ 9.1 Το περιβάλλον ασφάλειας 9.2 Βασικά Θέματα κρυπτογραφίας 9.3 Πιστοποίηση ταυτότητας Χρήστη 9.4 Εσωτερικές Επιθέσεις 9.5 Εξωτερικές Επιθέσεις 9.6 Μηχανισμοί προστασίας 9.7 Έμπιστα συστήματα

Διαβάστε περισσότερα

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας, Μικροεπεξεργαστές Σημειώσεις Μαθήματος 2013-14 Υπεύθυνος: Δρ Άρης Παπακώστας, Η γλώσσα assembly είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου για συγκεκριμένους υπολογιστές ή άλλη προγραμματιζόμενη

Διαβάστε περισσότερα

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

Διαβάστε περισσότερα

Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα

Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα Ενότητα 11: ΑΣΦΑΛΕΙΑ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ, ΑΝΤΙΜΕΤΩΠΙΣΗ ΕΙΣΒΟΛΗΣ Δημήτριος Κουκόπουλος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα

Διαβάστε περισσότερα

ΜΑΘΗΤΕΣ:ΑΝΤΩΝΙΟΥ ΕΥΑΓΓΕΛΙΑ,ΔΑΡΑΜΑΡΑ ΑΓΓΕΛΙΚΗ,ΖΑΡΚΑΔΟΥΛΑ ΔΕΣΠΟΙΝΑ,ΚΑΠΟΥΛΑΣ ΑΠΟΣΤΟΛΟΣ,ΚΟΛΟΒΟΣ ΠΑΝΑΓΙΩΤΗΣ ΚΑΘΗΓΗΤΡΙΑ:ΧΑΛΙΜΟΥΡΔΑ ΑΓΓΕΛΙΚΗ ΕΡΕΥΝΗΤΙΚΗ

ΜΑΘΗΤΕΣ:ΑΝΤΩΝΙΟΥ ΕΥΑΓΓΕΛΙΑ,ΔΑΡΑΜΑΡΑ ΑΓΓΕΛΙΚΗ,ΖΑΡΚΑΔΟΥΛΑ ΔΕΣΠΟΙΝΑ,ΚΑΠΟΥΛΑΣ ΑΠΟΣΤΟΛΟΣ,ΚΟΛΟΒΟΣ ΠΑΝΑΓΙΩΤΗΣ ΚΑΘΗΓΗΤΡΙΑ:ΧΑΛΙΜΟΥΡΔΑ ΑΓΓΕΛΙΚΗ ΕΡΕΥΝΗΤΙΚΗ ΜΑΘΗΤΕΣ:ΑΝΤΩΝΙΟΥ ΕΥΑΓΓΕΛΙΑ,ΔΑΡΑΜΑΡΑ ΑΓΓΕΛΙΚΗ,ΖΑΡΚΑΔΟΥΛΑ ΔΕΣΠΟΙΝΑ,ΚΑΠΟΥΛΑΣ ΑΠΟΣΤΟΛΟΣ,ΚΟΛΟΒΟΣ ΠΑΝΑΓΙΩΤΗΣ ΚΑΘΗΓΗΤΡΙΑ:ΧΑΛΙΜΟΥΡΔΑ ΑΓΓΕΛΙΚΗ ΕΡΕΥΝΗΤΙΚΗ ΕΡΓΑΣΙΑ ΜΑΙΟΣ 2015 ΗΛΕΚΤΡΟΝΙΚΟ ΕΓΚΛΗΜΑ Μορφές ηλεκτρονικού

Διαβάστε περισσότερα

Πώς να προστατευτείτε από τους ιούς

Πώς να προστατευτείτε από τους ιούς Πώς να προστατευτείτε από τους ιούς Περιεχόµενα 10 χρυσοί κανόνες για προστασία από ιούς και δούρειους ίππους...2 Πώς να προστατευτείτε από τους ιούς σελ. 1 10 χρυσοί κανόνες για προστασία από ιούς και

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

Ασφάλεια Στο Ηλεκτρονικό Εμπόριο. Λάζος Αλέξανδρος Α.Μ. 3530

Ασφάλεια Στο Ηλεκτρονικό Εμπόριο. Λάζος Αλέξανδρος Α.Μ. 3530 Ασφάλεια Στο Ηλεκτρονικό Εμπόριο Λάζος Αλέξανδρος Α.Μ. 3530 Ηλεκτρονικό Εμπόριο Χρησιμοποιείται για να περιγράψει την χρήση τηλεπικοινωνιακών μέσων (κυρίως δικτύων) για κάθε είδους εμπορικές συναλλαγές

Διαβάστε περισσότερα

F.A.Q. (ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ)

F.A.Q. (ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ) F.A.Q. (ΣΥΧΝΕΣ ΕΡΩΤΗΣΕΙΣ) I. ΓΕΝΙΚΕΣ ΕΡΩΤΗΣΕΙΣ Σε ποιους είναι χρήσιμη η εφαρμογή μας «RansomSaver» και με ποιες εκδόσεις του Outlook είναι συμβατή η εφαρμογή μας; Όποιος χρησιμοποιεί την εφαρμογή του

Διαβάστε περισσότερα

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Κεφάλαιο 4 SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ 1 4.1 ΕΙΣΑΓΩΓΗ...3 4.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ...3 4.2.1 Η ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...3 4.2.1.1 ΣΤΑΘΜΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΔΙΚΤΥΟΥ...4 4.2.1.2 ΔΙΑΧΕΙΡΙΖΟΜΕΝΟΙ

Διαβάστε περισσότερα

Λιβανός Γιώργος Εξάμηνο 2017Β

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Η/Υ

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 8 «Ιδεατή Μνήμη» Διδάσκων: Δ. Λιαροκαπης Διαφάνειες: Π. Χατζηδούκας Ιδεατή Μνήμη Οργάνωση. Εισαγωγή. Ιδεατές και πραγματικές διευθύνσεις. Λογική οργάνωση. Τμηματοποίηση

Διαβάστε περισσότερα

Πληροφοριακά Συστήματα. Φάσεις ανάπτυξης (1/3) Βασικά στοιχεία Π.Σ. Φάσεις ανάπτυξης (3/3) Φάσεις ανάπτυξης (2/3) Πληροφορική I

Πληροφοριακά Συστήματα. Φάσεις ανάπτυξης (1/3) Βασικά στοιχεία Π.Σ. Φάσεις ανάπτυξης (3/3) Φάσεις ανάπτυξης (2/3) Πληροφορική I ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ. ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ Πληροφοριακά Συστήματα Πληροφορική I "Πληροφοριακά

Διαβάστε περισσότερα

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ. ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ Πληροφορική I "Πληροφοριακά Συστήματα" "Ασφάλεια

Διαβάστε περισσότερα

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΔΙΑΔΙΚΤΥΟ Το διαδίκτυο προσφέρει: Μετατροπή των δεδομένων σε ψηφιακή - ηλεκτρονική μορφή. Πρόσβαση

Διαβάστε περισσότερα

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

Οι τρόποι με τους οποίους μπορεί ένας ιός να μεταδοθεί είναι πολλοί. Τρεις είναι αυτοί που χρησιμοποιούνται πιο συχνά:

Οι τρόποι με τους οποίους μπορεί ένας ιός να μεταδοθεί είναι πολλοί. Τρεις είναι αυτοί που χρησιμοποιούνται πιο συχνά: 1/9 ΕΙΣΑΓΩΓΗ Η διάδοση της χρήσης του Η/Υ, αλλά και ειδικότερα του Internet τα τελευταία 25 χρόνια, αποτέλεσε αφορμή για μια ιδιαίτερα μικρή κατηγορία προγραμματιστών να πειραματιστούν πάνω σε κάτι που

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ

ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Α.Μ. 123/04 ΕΠΙΒΛΕΠΩΝ: ΣΑΜΑΡΑΣ ΝΙΚΟΛΑΟΣ ΘΕΣΣΑΛΟΝΙΚΗ, ΙΟΥΝΙΟΣ 2007 Περιεχόμενα

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή περιορισμένοι υπολογιστικοί / αποθηκευτικοί πόροι δεν τίθεται θέμα

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ Σε δίκτυο υπολογιστών εμπιστευτική πληροφορία μπορεί να υπάρχει αποθηκευμένη σε μέσα αποθήκευσης (σκληροί δίσκοι, μνήμες κ.λ.π.), ή να κυκλοφορεί μέσου του δικτύου με τη μορφή πακέτων. Η ύπαρξη πληροφοριών

Διαβάστε περισσότερα

Γεωγραφικά Συστήµατα Πληροφοριών και Αρχές Τηλεπισκόπησης

Γεωγραφικά Συστήµατα Πληροφοριών και Αρχές Τηλεπισκόπησης Γεωγραφικά Συστήµατα Πληροφοριών και Αρχές Τηλεπισκόπησης Ενότητα: Λειτουργικά Συστήµατα, Συστήµατα Batch και Time Sharing Γεώργιος Σκιάνης Γεωλογίας και Γεωπεριβάλλοντος Σελίδα 2 1. Περιεχόµενα ενότητας...

Διαβάστε περισσότερα

ΈΦΗ ΑΠΟΣΤΟΛΑΚΟΥ ΤΜΗΜΑ: Α1

ΈΦΗ ΑΠΟΣΤΟΛΑΚΟΥ ΤΜΗΜΑ: Α1 ΔΙΑΔΙΚΤΥΟ ΈΦΗ ΑΠΟΣΤΟΛΑΚΟΥ ΤΜΗΜΑ: Α1 1 Το Διαδίκτυο, γνωστό συνήθως και με την αγγλική άκλιτη ονομασία Internet, είναι ένα μέσο μαζικής επικοινωνίας (ΜΜΕ), όπως είναι για παράδειγμα και η τηλεόραση αν και

Διαβάστε περισσότερα

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ http://leitourgika-systhmata-epal-b.ggia.info/ Σύγχρονο Λειτουργικό Σύστημα - ΛΣ Λειτουργικό Σύστημα:

Διαβάστε περισσότερα

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 4 - Editor Περιγραφή Υλοποίηση ενός υποτυπώδους editor που θα: Διαβάζει ένα προκαθορισμένο αρχείο Θα το απεικονίζει στην οθόνη Θα κάνει highlight με έναν ελεγχόμενο

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Συναρτήσεις Κατακερματισμού και Πιστοποίηση Μηνύματος Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής e-mail: pkitsos@teimes.gr, pkitsos@ieee.org Αντίρριο

Διαβάστε περισσότερα

ΤΕΧΝΙΚΗ ΥΠΟΣΤΗΡΙΞΗ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΚΑΙ ΔΙΚΤΥΑΚΩΝ ΥΠΟΔΟΜΩΝ

ΤΕΧΝΙΚΗ ΥΠΟΣΤΗΡΙΞΗ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΚΑΙ ΔΙΚΤΥΑΚΩΝ ΥΠΟΔΟΜΩΝ ΤΕΧΝΙΚΗ ΥΠΟΣΤΗΡΙΞΗ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΚΑΙ ΔΙΚΤΥΑΚΩΝ ΥΠΟΔΟΜΩΝ ΚΕΦΑΛΑΙΟ 1 Τρόποι και Μεθοδολογία Τεχνικής Υποστήριξης Υπολογιστικά Συστήματα Υπολογιστικό Σύστημα (Υ.Σ.) λέγεται μία πλήρης υπολογιστική

Διαβάστε περισσότερα

ΗΜΕΡΟΛΟΓΙΟ 2014-2015 ΓΛΩΣΣΑΡΙ ΔΙΑΔΙΚΤΥΟΥ

ΗΜΕΡΟΛΟΓΙΟ 2014-2015 ΓΛΩΣΣΑΡΙ ΔΙΑΔΙΚΤΥΟΥ ΗΜΕΡΟΛΟΓΙΟ 2014-2015 ΓΛΩΣΣΑΡΙ ΔΙΑΔΙΚΤΥΟΥ Λαρισα Καμπέρη ΓΕΝΑΡΗΣ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Adware : Λογισμικό που εμφανίζει διαφημιστικό περιεχ

Διαβάστε περισσότερα

ΕΝΟΤΗΤA Σχολικό εργαστήριο πληροφορικής και εισαγωγή στα θέματα ασφάλειας

ΕΝΟΤΗΤA Σχολικό εργαστήριο πληροφορικής και εισαγωγή στα θέματα ασφάλειας ΕΝΟΤΗΤA 5.1-2 Σχολικό εργαστήριο πληροφορικής και εισαγωγή στα θέματα ασφάλειας Στοιχειώδεις γνώσεις για τον τρόπο λειτουργίας των σχολικών εργαστηρίων Βασικές γνώσεις για την ασφάλεια των σχολικών δικτύων

Διαβάστε περισσότερα

Τίτλος Πακέτου Certified Computer Expert-ACTA

Τίτλος Πακέτου Certified Computer Expert-ACTA Κωδικός Πακέτου ACTA - CCE - 002 Τίτλος Πακέτου Certified Computer Expert-ACTA Εκπαιδευτικές Ενότητες Επεξεργασία Κειμένου - Word Δημιουργία Εγγράφου Προχωρημένες τεχνικές επεξεργασίας κειμένου & αρχείων

Διαβάστε περισσότερα

Λειτουργικά Συστήματα (Λ/Σ)

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Διαχείριση Αρχείων Βασίλης Σακκάς 11/12/2013 1 Διαχείριση Αρχείων 1 Μακρόχρονη αποθήκευση πληροφοριών 1. Αποθήκευση μεγάλου όγκου δεδομένων 2. Οι αποθηκευμένες πληροφορίες πρέπει

Διαβάστε περισσότερα

1. Τι είναι ακεραιότητα δεδομένων, με ποιους μηχανισμούς επιτυγχάνετε κ πότε θα χρησιμοποιούσατε τον καθένα εξ αυτών;

1. Τι είναι ακεραιότητα δεδομένων, με ποιους μηχανισμούς επιτυγχάνετε κ πότε θα χρησιμοποιούσατε τον καθένα εξ αυτών; 1. Τι είναι ακεραιότητα δεδομένων, με ποιους μηχανισμούς επιτυγχάνετε κ πότε θα χρησιμοποιούσατε τον καθένα εξ αυτών; Η ακεραιότητα δεδομένων(data integrity) Είναι η ιδιότητα που μας εξασφαλίζει ότι δεδομένα

Διαβάστε περισσότερα

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access...9. Κεφάλαιο 2 Χειρισμός πινάκων... 25 Περιεχόμενα Κεφάλαιο 1 Εισαγωγή στην Access...9 Γνωριμία με την Access... 12 Δημιουργία βάσης δεδομένων... 18 Άνοιγμα και κλείσιμο βάσης δεδομένων... 21 Ερωτήσεις ανακεφαλαίωσης... 22 Πρακτική εξάσκηση...

Διαβάστε περισσότερα

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Σημειώσεις Θεωρίας

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Σημειώσεις Θεωρίας Ινστιτούτα Επαγγελματική Κατάρτισης ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι Σημειώσεις Θεωρίας Επιμέλεια: Ματθές Δημήτριος Αθήνα 2017 Μάθημα 1: Βασικές Έννοιες στα Δίκτυα Υπολογιστών 1.1 Δίκτυο Υπολογιστών Ένα δίκτυο είναι

Διαβάστε περισσότερα

ΠΡΟΣΤΑΣΙΑ ΛΟΓΙΣΜΙΚΟΥ- ΙΟΙ ΚΕΦΑΛΑΙΟ 7

ΠΡΟΣΤΑΣΙΑ ΛΟΓΙΣΜΙΚΟΥ- ΙΟΙ ΚΕΦΑΛΑΙΟ 7 ΠΡΟΣΤΑΣΙΑ ΛΟΓΙΣΜΙΚΟΥ- ΙΟΙ ΚΕΦΑΛΑΙΟ 7 Ερωτήσεις Τι είναι η πειρατεία λογισμικού Παραδείγματα πειρατείας Τι είναι το πιστοποιητικό αυθεντικότητας; Αναφέρετε κατηγορίες λογισμικού που διατίθεται στο διαδίκτυο

Διαβάστε περισσότερα

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΟΜΕΑΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ, ΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΚΤΥΩΝ Εργ. Τεχνολογίας Λογισμικού & Υπηρεσιών S 2 E Lab Π Τ Υ Χ Ι

Διαβάστε περισσότερα

Εφαρμογές Πληροφορικής

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

Διαβάστε περισσότερα

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ 2.3.1.1. Παπαγιάννη Νάσια Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών ΕΜΠ 1 περιλαμβάνει: Η έννοια του προγράμματος Επίλυση προβλήματος 1. Ακριβή προσδιορισμό

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

Μάθημα 4ο. Προγράμματα

Μάθημα 4ο. Προγράμματα Μάθημα 4ο Προγράμματα Σελίδα 47 από 106 4.1 Εγκατάσταση προγραμμάτων Όπως έχουμε πει στο πρώτο μάθημα (Σημειώσεις 1ου Μαθήματος 1.3.3.Β σελ. 12) τα προγράμματα ή αλλιώς εφαρμογές αποτελούν μέρος του λογισμικού

Διαβάστε περισσότερα

Οδηγός γρήγορης εκκίνησης του PowerSuite

Οδηγός γρήγορης εκκίνησης του PowerSuite Το PowerSuite είναι η ολοκληρωμένη λύση απόδοσης για τον υπολογιστή σας. Ενσωματώνοντας το RegistryBooster, το DriverScanner και το SpeedUpMyPC σε ένα ενιαίο περιβάλλον εργασίας σάρωσης, το PowerSuite

Διαβάστε περισσότερα

Κάποια ransomware μπορεί να είναι μεταμφιεσμένα. Να σας εμφανίζονται για παράδειγμα ως προειδοποιητικά μηνύματα του τύπου "Ο υπολογιστής σας έχει

Κάποια ransomware μπορεί να είναι μεταμφιεσμένα. Να σας εμφανίζονται για παράδειγμα ως προειδοποιητικά μηνύματα του τύπου Ο υπολογιστής σας έχει Ransomeware Ransomware ο νέος τύπος malware που προσπαθεί να αποσπάσει χρήματα από το πορτοφόλι σας. Ένα από τα χειρότερα ransomware, το CryptoLocker, κρατάει τα αρχεία σας κλειδωμένα και ζητάει "λύτρα",

Διαβάστε περισσότερα

Λογισμικό - Προγράμματα

Λογισμικό - Προγράμματα Λογισμικό - Προγράμματα Πρόγραμμα είναι ένα σύνολο εντολών, βάση των οποίων ο υπολογιστής εκτελεί μια συγκεκριμένη εργασία Λογισμικό (Software) Το σύνολο των προγραμμάτων Προγράμματα Προγράμματα συστήματος

Διαβάστε περισσότερα

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων)

Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (ΙΙ) (διαχείριση αρχείων) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Λειτουργικό Σύστημα:

Διαβάστε περισσότερα

Λειτουργικά Συστήματα

Λειτουργικά Συστήματα 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 9 : Ιδεατή Μνήμη 1/2 Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε

Διαβάστε περισσότερα

8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές

8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές Κεφάλαιο 8 8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές Σελ. 320-325 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr http://diktya-epal-g.ggia.info/ Creative

Διαβάστε περισσότερα

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Τι είναι το υλικό ενός υπολογιστικού συστήματος; Το σύνολο των ηλεκτρονικών και μηχανικών μερών του που έχουν

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ Μνήμη : Πόρος ζωτικής σημασίας του οποίου η διαχείριση απαιτεί ιδιαίτερη

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη μιας προσαρμοστικής πολιτικής αντικατάστασης αρχείων, με χρήση

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών Aσφάλεια ΣΤΟΧΟΙ ΚΕΦΑΛΑΙΟΥ Ορισµός τριών στόχων ασφάλειας - Εµπιστευτικότητα, ακεραιότητα και διαθεσιµότητα Επιθέσεις Υπηρεσίες και Τεχνικές

Διαβάστε περισσότερα

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Επικοινωνία με περιφερειακά Αρτηρία εισόδου-εξόδου, διευθύνσεις, εγγραφές αναγνώσεις Διαδικασία εξόδου έλεγχος κατάστασης περιφερειακού περίμενε

Διαβάστε περισσότερα

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I. Μάθημα 5: To Μοντέλο Αναφοράς O.S.I. 5.1 Γενικά Τα πρώτα δίκτυα χαρακτηρίζονταν από την «κλειστή» αρχιτεκτονική τους με την έννοια ότι αυτή ήταν γνωστή μόνο στην εταιρία που την είχε σχεδιάσει. Με τον

Διαβάστε περισσότερα

ΕΠΙΜΕΛΕΙΑ: ΚΩΣΤΑΣ ΔΕΛΗΜΑΡΗΣ - ΧΡΗΣΗ ΗΥ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ

ΕΠΙΜΕΛΕΙΑ: ΚΩΣΤΑΣ ΔΕΛΗΜΑΡΗΣ -  ΧΡΗΣΗ ΗΥ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ ΕΠΙΜΕΛΕΙΑ: ΚΩΣΤΑΣ ΔΕΛΗΜΑΡΗΣ - www.kostasdelimaris.gr ΧΡΗΣΗ ΗΥ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ Περιεχόμενα 1. Εισαγωγή στους υπολογιστές... 3 Εκκίνηση του ΗΥ:... 3 Τερματισμός του ΗΥ:... 3 Διαχείριση Διεργασιών

Διαβάστε περισσότερα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX Μάθημα: Λειτουργικά Συστήματα Συστήματα Αρχείων Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης (clam@unipi.gr) Δρ. Α. Γαλάνη (agalani@unipi.gr) Λειτουργικά Συστήματα 1 Αρχεία με Χαρτογράφηση

Διαβάστε περισσότερα

Αντιμετώπιση ανεπιθύμητης αλληλογραφίας (spam)

Αντιμετώπιση ανεπιθύμητης αλληλογραφίας (spam) Vodafone Business E-mail Αντιμετώπιση ανεπιθύμητης αλληλογραφίας (spam) Οδηγός χρήσης Καλώς ορίσατε Ο παρών οδηγός θα σας βοηθήσει να ρυθμίσετε τα κατάλληλα μέτρα για την αντιμετώπιση της ανεπιθύμητης

Διαβάστε περισσότερα

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 2: Σύστημα Αρχείων Τα προγράμματα που εκτελούνται

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών Η επεξεργασία των δεδομένων ακολουθεί μια στερεότυπη διαδρομή: τα δεδομένα εισάγονται στο υπολογιστικό σύστημα, υφίστανται μια ορισμένη επεξεργασία και

Διαβάστε περισσότερα

Πρακτικά όλα τα προβλήματα ασφαλείας οφείλονται σε λάθη στον κώδικα

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

Διαβάστε περισσότερα

Ηλεκτρονικό εμπόριο. HE 7 Τεχνολογίες ασφάλειας

Ηλεκτρονικό εμπόριο. HE 7 Τεχνολογίες ασφάλειας Ηλεκτρονικό εμπόριο HE 7 Τεχνολογίες ασφάλειας Πρόκληση ανάπτυξης ασφαλών συστημάτων Η υποδομή του διαδικτύου παρουσίαζε έλλειψη υπηρεσιών ασφάλειας καθώς η οικογένεια πρωτοκόλλων TCP/IP στην οποία στηρίζεται

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε Πτυχιακή Εργασία Φοιτητής: Γεμενής Κωνσταντίνος ΑΜ: 30931 Επιβλέπων Καθηγητής Κοκκόσης Απόστολος Λέκτορας

Διαβάστε περισσότερα

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1 Το λειτουργικό σύστημα Προγραμματισμός II 1 lalis@inf.uth.gr Συστήματα υπολογιστών Ειδικού σκοπού συστήματα για μια συγκεκριμένη εφαρμογή η εφαρμογή είναι γνωστή εκ των προτέρων περιορισμένοι υπολογιστικοί

Διαβάστε περισσότερα

Περίληψη Λαμπρόπουλος

Περίληψη Λαμπρόπουλος Περίληψη Λαμπρόπουλος 1. Αντικείμενο και Περιγραφή της Διατριβής H διδακτορική διατριβή με τίτλο «Σχεδιασμός και υλοποίηση συστήματος διαχείρισης και ενοποίησης διαφορετικών ταυτοτήτων χρηστών σε δίκτυα

Διαβάστε περισσότερα

Μεταπτυχιακή Διατριβή

Μεταπτυχιακή Διατριβή Μεταπτυχιακή Διατριβή ΣΧΗΜΑΤΙΣΜΟΣ ΚΑΙ ΕΝΤΟΠΙΣΜΟΣ ΒΙΟΦΙΛΜ ΣΤΙΣ ΜΕΜΒΡΑΝΕΣ ΑΝΤΙΣΤΡΟΦΗΣ ΩΣΜΩΣΗΣ ΣΤΗΝ ΑΦΑΛΑΤΩΣΗ ΛΕΜΕΣΟΥ ΚΥΠΡΟΣ ΜΙΧΑΗΛ Λεμεσός, Μάιος 2017 1 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ

Διαβάστε περισσότερα

Βασικές έννοιες Ασφάλειας α) ιαθεσιµότητα: άµεσα προσπελάσιµες υπηρεσίες ενός δικτύου υπολογιστών για τους εξουσιοδοτηµένους χρήστες β) Εµπιστευτικότη

Βασικές έννοιες Ασφάλειας α) ιαθεσιµότητα: άµεσα προσπελάσιµες υπηρεσίες ενός δικτύου υπολογιστών για τους εξουσιοδοτηµένους χρήστες β) Εµπιστευτικότη «Ασφάλεια στα ίκτυα Η/Υ» Επιµέλεια: Φιλοθέη Κολίτση ραστηριότητα στην Ενότητα 6 ΠΑΚΕ Κεντρικής Μακεδονίας 2011-2012 Βασικές έννοιες Ασφάλειας α) ιαθεσιµότητα: άµεσα προσπελάσιµες υπηρεσίες ενός δικτύου

Διαβάστε περισσότερα

Τα περιεχόμενα με μια ματιά

Τα περιεχόμενα με μια ματιά Τα περιεχόμενα με μια ματιά Κεφάλαιο 1 Ο κόσμος αλλάζει με τη βοήθεια της τεχνολογίας 2 Κεφάλαιο 2 Εξέταση του υπολογιστή: Από τι αποτελείται 28 Κεφάλαιο 3 Χρήση του Internet: Πώς θα εκμεταλλευτούμε καλύτερα

Διαβάστε περισσότερα

Λειτουργικά Συστήματα (Λ/Σ)

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Διαχείριση Μνήμης Βασίλης Σακκάς 6/12/2013 1 Διαχείριση Μνήμης 1 Το τμήμα του Λ/Σ που διαχειρίζεται τη μνήμη λέγεται Διαχειριστής Μνήμης (Memory manager). Καθήκον του είναι

Διαβάστε περισσότερα

Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές

Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές ΤΕΙ Κρητης Τμήμα Μηχανικών Πληροφορικής Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές Ψηφιακά Πιστοποιητικά Υποδομή δημόσιου κλειδιού (Public Key Infrastructure

Διαβάστε περισσότερα

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. PGP (Pretty Good Privacy)

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. PGP (Pretty Good Privacy) Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων PGP (Pretty Good Privacy) Εισαγωγή Το λογισμικό Pretty Good Privacy (PGP), το οποίο σχεδιάστηκε από τον Phill Zimmerman, είναι ένα λογισμικό κρυπτογράφησης

Διαβάστε περισσότερα