Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dimitrios Tatsis

49 views

Published on

With the current technological advances there is arisingneed for testing the reliability and the security of software. Security testing usually requires manual work from a highly specialized security researcher.However,lately a number of program analysis techniques have been employed in order to automate parts of the process. In this thesis an automatic system is developed that uses dynamic analysis and symbolic execution in order to produce testcases for programs. Dynamic analysis is used in order to collect run time information like the current program state,the usage of input data by the program and the paths that have been executed by the program. This information is used in order to accelerate symbolic execution and produce a test case file that is able to pass various program checks and execute more program code, thusincreasingcodecoverage.These test case can be used in further analys is of the program. The system that was developed gives encouraging results producing partial input files with the structure that is expected by the programs analyzed, automatically and without any prior knowledge.However,the limitations of symbolic execution quickly become apparent since the analysis complexity has exponential complexity .As a result additional methods must be used in order to surpass these limitations in larger programs.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Dimitrios Tatsis

  1. 1. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Αυτόματη παραγωγή σεναρίου ελέγχου μέσω δυναμικής ανάλυσης και συμβολικής εκτέλεσης Δημήτριος Τάτσης Α.Ε.Μ: 7262 2019-07-05 Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Επιβλέπων: Ανδρέας Συμεωνίδης, Αναπληρωτής Καθηγητής Συνεπιβλέπων: Γεώργιος Μαμαλάκης
  2. 2. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Κίνητρο ● Τα συστήματα λογισμικού χρησιμοποιούνται όλο και περισσότερο στην καθημερινή ζωή ● Η ανάλυση ασφάλειας λογισμικού έχει σημαντικές προεκτάσεις για την ιδιωτικότητα και την ασφάλεια των χρηστών 2
  3. 3. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Σκοπός Η ανάπτυξη ενός συστήματος ανάλυσης ασφάλειας λογισμικού το οποίο θα πρέπει ● Να χρησιμοποιεί προηγμένες τεχνικές ανάλυσης ώστε να παράγει σενάρια δοκιμών και ελέγχου προγραμμάτων ● Να παράγει αυτά τα σενάρια δοκιμών και ελέγχου χωρίς γνώση για τη λειτουργικότητα του προγράμματος προς ανάλυση ● Να είναι αυτόματο 3
  4. 4. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Γνώσεις που αποκτήθηκαν ● Ο συνδυασμός δυναμικής ανάλυσης και συμβολικής εκτέλεσης για την ανάλυση προγραμμάτων ● Η εφαρμογή αυτών των τεχνικών σε πολύπλοκα εμπορικά προγράμματα και οι περιορισμοί που εμφανίζονται ● Η διαδικασία δημιουργίας ενός εργαλείου που συνδυάζει διαφορετικά υποσυστήματα που επικοινωνούν μεταξύ τους 4
  5. 5. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Έννοιες ● Basic Block ○ Ένα σύνολο από εντολές assembly που καταλήγουν σε εντολή branch ● Μονοπάτι Κώδικα ○ Ένα σύνολο από basic blocks που περιγράφει ποιά basic blocks έχουν εκτελεστεί και με ποια σειρά ● Code Coverage ○ Μετρική η οποία δείχνει το ποσοστό του προγράμματος που έχει εκτελεστεί για μια συγκεκριμένη είσοδο ○ Ποσοστό εκτελεσμένων συναρτήσεων, basic blocks, μονοπατιών, κλπ. 5
  6. 6. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Δυναμική Ανάλυση ● Εισαγωγή νέου κώδικα κατά την εκτέλεση ενός προγράμματος ο οποίος θα εκτελείται όταν εμείς το επιθυμούμε ● Συλλογή στατιστικών κατά την εκτέλεση, αντικατάσταση εντολών προγράμματος με άλλες κλπ. ● Υπάρχει ένα “μικρό” κόστος εκτέλεσης των επιπλέων εντολών ● Η δυναμική ανάλυση δρα μόνο για μία είσοδο 6
  7. 7. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Δυναμική Ανάλυση - Παράδειγμα Παράδειγμα εισαγωγής επιπλέον κώδικα Αναγνώριση της εξάρτησης της μεταβλητής sum από τον πίνακα buf Για αληθή συνθήκη, καταγράφεται η διεύθυνση του κώδικα που εκτελέστηκε για μια συγκεκριμένη εκτέλεση 7
  8. 8. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Συμβολική εκτέλεση ● Μια εξομοίωση του προγράμματος ώστε να γίνει η συλλογή των συνθηκών που πρέπει να ισχύουν ώστε να εκτελεστεί ένα κομμάτι κώδικα ● Το πρόγραμμα εκτελείται με συμβολικές μεταβλητές και τελικά η ροή του προγράμματος εξαρτάται από λογικές εξισώσεις/συνθήκες ● Επίλυση αυτών των συνθηκών ● Εκθετική πολυπλοκότητα ○ Path explosion ○ SMT solving ● Συχνά θεωρούνται συμβολικές μόνο ορισμένες μεταβλητές (concolic execution) 8
  9. 9. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Συμβολική εκτέλεση - Παράδειγμα Συμβολικές μεταβλητές x1, x2, … από την είσοδο του προγράμματος sum = x1 + x2 + … => x1 + x2 + … = 0x1337 Πιθανή λύση: x1 = 0x1337, x2 = 0, ... 9
  10. 10. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Παραδοχές ● Εκτελέσιμο πρόγραμμα προς ανάλυση (χωρίς πηγαίο κώδικα) ● Αρχιτεκτονική x86 ● Λειτουργικό Σύστημα Linux ● Η είσοδος του προγράμματος γίνεται από ένα αρχείο που δίνεται ως όρισμα από το χρήστη 10
  11. 11. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Μεθοδολογία ● Δυναμική ανάλυση ○ Με μια αρχική τυχαία είσοδο, καταγράφουμε τα μονοπάτια κώδικα που δεν εκτελέστηκαν. ○ Taint Analysis - Καταγραφή των συγκεκριμένων bytes της εισόδου που χρησιμοποιήθηκαν από το πρόγραμμα σε κάθε basic block ○ Ανάκτηση ενός στιγμιότυπου του προγράμματος ● Συμβολική εκτέλεση ○ Αρχικοποίηση κατάστασης με τη χρήση του στιγμιότυπου ○ Θεώρηση των συγκεκριμένων μόνο bytes της εισόδου που χρησιμοποιήθηκαν ως συμβολικές μεταβλητές ○ Εκκίνηση συμβολικής ανάλυσης για την επίλυση των συμβολικών μεταβλητών ώστε να συνεχίσει η εκτέλεση στο μονοπάτι που δεν εκτελέστηκε. ● Ανατροφοδότηση 11
  12. 12. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Υλοποίηση - Αρχιτεκτονική 12
  13. 13. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Υλοποίηση - Δυναμική Ανάλυση ● DynamoRIO - Dynamic Binary Instrumentation Framework ● Θέτουμε callbacks τα οποία θα εκτελεστούν σε συγκεκριμένα events ○ Όταν κληθούν συγκεκριμένες συναρτήσεις όπως η read() ○ Όταν πρόκειται να εκτελεστεί ένα νέο basic block για την καταγραφή του μονοπατιού ● Ανάκτηση στιγμιότυπου ○ Καταγραφή όλων των καταχωρητών και της μνήμης του προγράμματος κατά την εκτέλεση της read() ○ /proc/self/maps ● Taint Analysis ○ Θεωρώντας την είσοδο “tainted”, κάθε τιμή που επηρεάζεται από τιμή της εισόδου είναι και αυτή “tainted” ○ Προσέγγιση μέσω ανάλυσης Source / Destination Operands, ανεξάρτητη αρχιτεκτονικής 13
  14. 14. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Υλοποίηση - Συμβολική Εκτέλεση ● angr - Symbolic execution framework ● Επικοινωνία με το DynamoRIO μέσω Unix Sockets ● Αρχικοποίηση κατάστασης με το στιγμιότυπο ● Σύμφωνα με το taint analysis, θέτουμε συμβολικές μεταβλητές μόνο εκείνα τα bytes της εισόδου που επηρέασαν άλλες τιμές ● Συμβολική εκτέλεση ○ Συλλογή συνθηκών ○ Επίλυση συμβολικών μεταβλητών ώστε να φτάσει η εκτέλεση στο μονοπάτι που δεν εκτελέστηκε κατά τη δυναμική εκτέλεση, παράγοντας ένα αρχείο με αυξημένο code coverage. ● Ανατροφοδότηση ○ Με τη δημιουργία του νέου αρχείου, ξεκινάει όλη η διαδικασία αναδρομικά. 14
  15. 15. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Πειράματα ● libJPEG ○ Βιβλιοθήκη (απο)κωδικοποίησης αρχείων εικόνας JPEG ○ Τα αρχεία JPEG έχουν συγκεκριμένη δομή για την αποθήκευση των καρέ, της χρωματικής παλέτας, κωδικοποίηση Huffman κλπ. ○ Ένα αρχείο JPEG είναι δύσκολο να δημιουργηθεί “τυχαία” ● JSMN ○ Βιβλιοθήκη για parsing αρχείων JSON 15
  16. 16. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Αποτελέσματα libJPEG Χρόνος ανάκτησης SOI marker JPEG Στιγμιότυπο Taint Analysis Χρόνος Ανάκτησης Παραγόμενα Αρχεία Απενεργοποιημένο Απενεργοποιημένο - - Ενεργοποιημένο Απενεργοποιημένο 121s 25 Ενεργοποιημένο Ενεργοποιημένο 26s 25 ● Μετά το αρχείο #25, η ανάλυση εξαντλούσε και τα 16GB της μνήμης του συστήματος 16
  17. 17. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Αποτελέσματα JSMN # Αρχείο Code Coverage Missed Functions 1 29.28% 1 2 22.65% 1 3 9.94% 3 4 4.87% 4 ● Με χρήση του εργαλείου LLVM-cov ● Και εδώ μετά από μερικά λεπτά η μνήμη του συστήματος εξαντλήθηκε 17
  18. 18. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Συμπεράσματα ● Η συμβολική εκτέλεση είναι μια πανίσχυρη τεχνική για την ανάλυση προγραμμάτων και την παραγωγή σεναρίων ελέγχου με ενθαρρυντικά αποτελέσματα ● Λόγω των περιορισμών της συμβολικής εκτέλεσης είναι απαραίτητη χρήση επιπλέον τεχνικών για την ανάλυση μεγάλων/εμπορικών προγραμμάτων 18
  19. 19. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Μελλοντική Εργασία ● Βελτιστοποίηση της δυναμικής ανάλυσης με εισαγωγή εντολών assembly ● Γενίκευση του κώδικα αποθήκευσης της κατάστασης του προγράμματος ● Χρήση shared memory μηχανισμού για την ελαχιστοποίηση του κόστους μεταφοράς των δεδομένων ● Υποστήριξη Python 3 19
  20. 20. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Δημοσιεύσεις ● Μέρος αυτής της διπλωματικής παρουσιάστηκε στο συνέδριο FOSSCOM 2018 στο Ηράκλειο Κρήτης 20
  21. 21. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Ευχαριστίες ● Τον κύριο Ανδρέα Συμεωνίδη για την αμέριστη υπομονή του ● Τον κύριο Γεώργιο Μαμαλάκη για τις πολλές συζητήσεις μας γύρω από τη διπλωματική για τις οποίες δεν είχε καμία υποχρέωση να κάνει 21
  22. 22. Ιούλιος 2019 Αυτόματη Παραγωγη Σεναρίου Ελέγχου μέσω Δυναμικής Ανάλυσης και Συμβολικής Εκτέλεσης Two roads diverged in a wood, and I— I took the one less traveled by, And that has made all the difference. 22

×