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.
Synapse
Ένα εργαλείο παρακολούθησης συσχετίσεων μεταξύ νημάτων
Χαρίτων Καραμήτας
<chakaram@auth.gr>
Υπό την επίβλεψη των:
...
Περιεχόμενα
 Πρόβλημα που αντιμετωπίζουμε
 Βασικές αρχές λειτουργικών συστημάτων
 FreeBSD
 Μηχανισμοί εξέτασης πυρήνα
...
Πρόβλημα που αντιμετωπίζουμε
 «Αν γνωρίζουμε ότι το υπολογιστικό σύστημα που
μελετάμε, και πιο συγκεκριμένα κάποιο νήμα π...
Βασικές αρχές λειτουργικών συστημάτων
 Υψηλό επίπεδο
 Σύνοδοι (sessions)
 Διεργασίες (processes)
 Νήματα (threads a.k....
Βασικές αρχές λειτουργικών συστημάτων
 Υψηλό επίπεδο
 Σύνοδοι (sessions)
 Για κάθε είσοδο (login) στο σύστημα δημιουργε...
Βασικές αρχές λειτουργικών συστημάτων
 Υψηλό επίπεδο
 Διεργασίες (processes)
 Συλλογή πληροφοριών και πόρων συστήματος
...
Βασικές αρχές λειτουργικών συστημάτων
 Υψηλό επίπεδο
 Νήματα (threads a.k.a. lightweight processes)
 Στοιχειώδεις μονάδ...
Βασικές αρχές λειτουργικών συστημάτων
Session (SID 1 – chakaram)
Process
(PID 1 – firefox)
Thread (TID 1) Thread (TID 2)
P...
Βασικές αρχές λειτουργικών συστημάτων
 Χαμηλό επίπεδο
 Επίπεδα δικαιωμάτων (privilege levels a.k.a. rings)
 Σε x86 και ...
Βασικές αρχές λειτουργικών συστημάτων
 Χαμηλό επίπεδο
 Χώρος πυρήνα (kernelspace)
 Ο πυρήνας πρέπει να έχει πρόσβαση σε...
Βασικές αρχές λειτουργικών συστημάτων
 Χαμηλό επίπεδο
 Χώρος χρήστη (userspace)
 Εδώ εκτελούνται όλα τα προγράμματα που...
Βασικές αρχές λειτουργικών συστημάτων
 Χαμηλό επίπεδο
 Κλήσεις συστήματος (system calls)
 Τρόπος επικοινωνίας (ένα είδο...
Βασικές αρχές λειτουργικών συστημάτων
ring0ring0
ring1ring1
ring2ring2
ring3ring3
13
open()sys_open()
Βασικές αρχές λειτουργικών συστημάτων
 Χαμηλό επίπεδο
 Εξέταση πυρήνα (kernel auditing)
 Τρόπος παρακολούθησης των κλήσ...
FreeBSD
 AT&T UNIX → BSD UNIX → FreeBSD
 … → Apple Mac OS X & iOS
 … → Microsoft Windows (seriously)
 Τερματικά ελέγχο...
FreeBSD
Session (SID 1 – chakaram)
Process
(PID 1 – firefox)
Thread (TID 1) Thread (TID 2)
Process
(PID 2 – /bin/ls)
Threa...
FreeBSD
$ egrep '^#define[[:space:]]+SYS' /usr/include/sys/syscall.h | 
head -n 16
#define SYS_syscall 0
#define SYS_exit ...
Μηχανισμοί εξέτασης πυρήνα
 Λίγη ιστορία…
 Orange book, TCSEC, ITSEC, CTCPEC, CCITSE a.k.a. CC
 Microsoft Windows → Win...
OpenBSM (αρχιτεκτονική)
OpenBSM kernel component
/dev/audit
audit auditd
/dev/auditpipe
Auditing
application
19
Audited
ap...
OpenBSM (εγγραφές – audit records)
Record
Token
(AUT_HEADER32)
Token
(AUT_XXX)
Token
(AUT_XXX)
…
Token
(AUT_TRAILER)
20
Re...
OpenBSM (use case)
# praudit /dev/auditpipe0
header,133,11,execve(2),0,Sun Mar 9
22:34:30 2014, + 389 msec
exec arg,/bin/l...
Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
 Κεντρική ιδέα
 Χρήση του OpenBSM για την παρακολούθηση...
Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
Synapse
Υποσυστήματα
χώρου πυρήνα
OpenBSM
Υποσυστήματα
χώ...
Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
24
Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
25
TokenFactory RecordFactory SyscallFactory
Token Record...
Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
26
Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
27
DEMO
28
Συμπεράσματα και μελλοντική εργασία
 Υποστήριξη περισσότερων λειτουργικών
συστημάτων
 Παρακολούθηση όλου του συνόλου των...
30
Upcoming SlideShare
Loading in …5
×

Χαρίτων Καραμήτας 5755

99 views

Published on

Ένα εργαλείο παρακολούθησης συσχετίσεων μεταξύ νημάτων

Published in: Software
  • Be the first to comment

  • Be the first to like this

Χαρίτων Καραμήτας 5755

  1. 1. Synapse Ένα εργαλείο παρακολούθησης συσχετίσεων μεταξύ νημάτων Χαρίτων Καραμήτας <chakaram@auth.gr> Υπό την επίβλεψη των:  Ανδρέα Συμεωνίδη επίκουρου καθηγητή  Γεώργιου Μαμαλάκη υποψήφιου διδάκτορα
  2. 2. Περιεχόμενα  Πρόβλημα που αντιμετωπίζουμε  Βασικές αρχές λειτουργικών συστημάτων  FreeBSD  Μηχανισμοί εξέτασης πυρήνα  OpenBSM  Synapse – Ένα εργαλείο παρακολούθησης συσχετίσεων μεταξύ νημάτων  Συμπεράσματα και μελλοντική εργασία 2
  3. 3. Πρόβλημα που αντιμετωπίζουμε  «Αν γνωρίζουμε ότι το υπολογιστικό σύστημα που μελετάμε, και πιο συγκεκριμένα κάποιο νήμα που εκτελείται σε αυτό, έχει παραβιαστεί από κάποιον επιτιθέμενο, τότε ποιο είναι το σύνολο των νημάτων που ενδέχεται να έχει επηρεάσει ο επιτιθέμενος και με ποιόν τρόπο έγινε αυτό?» 3
  4. 4. Βασικές αρχές λειτουργικών συστημάτων  Υψηλό επίπεδο  Σύνοδοι (sessions)  Διεργασίες (processes)  Νήματα (threads a.k.a. lightweight processes)  Χαμηλό επίπεδο  Επίπεδα δικαιωμάτων (privilege levels a.k.a. rings)  Χώρος πυρήνα (kernelspace)  Χώρος χρήστη (userspace)  Κλήσεις συστήματος (system calls)  Εξέταση πυρήνα (kernel auditing) 4
  5. 5. Βασικές αρχές λειτουργικών συστημάτων  Υψηλό επίπεδο  Σύνοδοι (sessions)  Για κάθε είσοδο (login) στο σύστημα δημιουργείται μία σύνοδος  Αναγνωριστικό συνόδου (session identifier – SID) 5
  6. 6. Βασικές αρχές λειτουργικών συστημάτων  Υψηλό επίπεδο  Διεργασίες (processes)  Συλλογή πληροφοριών και πόρων συστήματος  Αναγνωριστικό διεργασίας (Process identifier – PID)  Πληροφορίες  Ημερομηνία εκκίνησης  Δικαιώματα χρήστη  Εκτελέσιμο αρχείο και ορίσματα  Πόροι συστήματος  Χρόνος εκτέλεσης  Μνήμη  Ανοιχτά αρχεία 6
  7. 7. Βασικές αρχές λειτουργικών συστημάτων  Υψηλό επίπεδο  Νήματα (threads a.k.a. lightweight processes)  Στοιχειώδεις μονάδες εκτέλεσης  Αναγνωριστικό νήματος (Thread identifier – TID, Lightweight process identifier – LWPID)  Κάθε διεργασία διαθέτει τουλάχιστον ένα νήμα  LWP ↔ CPU Core 7
  8. 8. Βασικές αρχές λειτουργικών συστημάτων Session (SID 1 – chakaram) Process (PID 1 – firefox) Thread (TID 1) Thread (TID 2) Process (PID 2 – /bin/ls) Thread (TID 3) 8
  9. 9. Βασικές αρχές λειτουργικών συστημάτων  Χαμηλό επίπεδο  Επίπεδα δικαιωμάτων (privilege levels a.k.a. rings)  Σε x86 και x86_64 έχουμε 4 επίπεδα (ring0 → ring3)  Διαχωρισμός δικαιωμάτων σε επίπεδο επεξεργαστή 9
  10. 10. Βασικές αρχές λειτουργικών συστημάτων  Χαμηλό επίπεδο  Χώρος πυρήνα (kernelspace)  Ο πυρήνας πρέπει να έχει πρόσβαση σε κάθε πώρο του συστήματος  Privileged instructions, IDTs, Caches & TLBs, I/O ports κ.τ.λ.  Πυρήνας → ring0 10
  11. 11. Βασικές αρχές λειτουργικών συστημάτων  Χαμηλό επίπεδο  Χώρος χρήστη (userspace)  Εδώ εκτελούνται όλα τα προγράμματα που εκκινεί ένας χρήστης  Διαχωρισμός διεργασιών  ΟΧΙ άμεση πρόσβαση σε πώρους συστήματος  ΟΧΙ άμεση επιρροή σε άλλες διεργασίες  Προγράμματα → ring3 11
  12. 12. Βασικές αρχές λειτουργικών συστημάτων  Χαμηλό επίπεδο  Κλήσεις συστήματος (system calls)  Τρόπος επικοινωνίας (ένα είδος interface) μεταξύ των δύο rings  Σαφώς ορισμένο σύνολο βασικών ενεργειών (π.χ. open(), read(), write(), close())  Για κάθε κλήση συστήματος: xxx() → sys_xxx()  Υλοποίηση μέσω interrupt vectors (int 0x80), sysenter/sysexit (Intel), syscall/sysret (AMD) 12
  13. 13. Βασικές αρχές λειτουργικών συστημάτων ring0ring0 ring1ring1 ring2ring2 ring3ring3 13 open()sys_open()
  14. 14. Βασικές αρχές λειτουργικών συστημάτων  Χαμηλό επίπεδο  Εξέταση πυρήνα (kernel auditing)  Τρόπος παρακολούθησης των κλήσεων συστήματος και άλλων ενεργειών που λαμβάνουν χώρα σε ένα λειτουργικό σύστημα  Ποιος ο λόγος?  Kernel debugging  Monitoring, Intrusion Detection Systems, κ.τ.λ. 14
  15. 15. FreeBSD  AT&T UNIX → BSD UNIX → FreeBSD  … → Apple Mac OS X & iOS  … → Microsoft Windows (seriously)  Τερματικά ελέγχου (Controlling terminals)  Ελεγχόμενη είσοδος/έξοδος  Ομάδες διεργασιών (process groups)  Κοινή λήψη σημάτων  Εξέταση πυρήνα  OpenBSM 15
  16. 16. FreeBSD Session (SID 1 – chakaram) Process (PID 1 – firefox) Thread (TID 1) Thread (TID 2) Process (PID 2 – /bin/ls) Thread (TID 3) 16 Process group (PGID 1) Process group (PGID 2)
  17. 17. FreeBSD $ egrep '^#define[[:space:]]+SYS' /usr/include/sys/syscall.h | head -n 16 #define SYS_syscall 0 #define SYS_exit 1 #define SYS_fork 2 #define SYS_read 3 #define SYS_write 4 #define SYS_open 5 #define SYS_close 6 #define SYS_wait4 7 #define SYS_link 9 #define SYS_unlink 10 #define SYS_chdir 12 #define SYS_fchdir 13 #define SYS_mknod 14 #define SYS_chmod 15 #define SYS_chown 16 #define SYS_break 17 17
  18. 18. Μηχανισμοί εξέτασης πυρήνα  Λίγη ιστορία…  Orange book, TCSEC, ITSEC, CTCPEC, CCITSE a.k.a. CC  Microsoft Windows → Windows Performance Toolkit (WPT)  Linux → Linux Audit Subsystem (LauS)  Oracle Solaris → SunSHIELD Basic Security Module (BSM)  Εστιάζουμε στο FreeBSD → OpenBSM 18
  19. 19. OpenBSM (αρχιτεκτονική) OpenBSM kernel component /dev/audit audit auditd /dev/auditpipe Auditing application 19 Audited application ring0ring3
  20. 20. OpenBSM (εγγραφές – audit records) Record Token (AUT_HEADER32) Token (AUT_XXX) Token (AUT_XXX) … Token (AUT_TRAILER) 20 Record Record …
  21. 21. OpenBSM (use case) # praudit /dev/auditpipe0 header,133,11,execve(2),0,Sun Mar 9 22:34:30 2014, + 389 msec exec arg,/bin/ls,-la,/bin/ls path,/bin/ls attribute,555,root,wheel,101,663059,2655 320 subject,root,root,wheel,root,wheel,12700 ,0,0,0.0.0.0 return,success,0 trailer,133 header,102,11,open(2) - read,0,Sun Mar 9 22:34:30 2014, + 389 msec argument,2,0x0,flags path,/etc/libmap.conf subject,root,root,wheel,root,wheel,12700 ,0,0,0.0.0.0 return,failure : No such file or directory,4294967295 trailer,102 # setaudit -m all /bin/ls -la /bin/ls -r-xr-xr-x 1 root wheel 30488 Jan 3 2012 /bin/ls 21 Οι εγγραφές δεν περιέχουν αναγνωριστικά νημάτων!
  22. 22. Synapse – Ένα εργαλείο παρακολούθησης συσχετίσεων μεταξύ νημάτων  Κεντρική ιδέα  Χρήση του OpenBSM για την παρακολούθηση κλήσεων συστήματος που αφορούν IPC  Sockets (IPv4, IPv6, UNIX, κ.τ.λ.)  System V IPC  POSIX IPC  mmap() shared memory  …? 22
  23. 23. Synapse – Ένα εργαλείο παρακολούθησης συσχετίσεων μεταξύ νημάτων Synapse Υποσυστήματα χώρου πυρήνα OpenBSM Υποσυστήματα χώρου χρήστη PyAudit PyBSM Process Manager PyKVM IPC Manager 23 Modified Bugfixes
  24. 24. Synapse – Ένα εργαλείο παρακολούθησης συσχετίσεων μεταξύ νημάτων 24
  25. 25. Synapse – Ένα εργαλείο παρακολούθησης συσχετίσεων μεταξύ νημάτων 25 TokenFactory RecordFactory SyscallFactory Token Record Syscall
  26. 26. Synapse – Ένα εργαλείο παρακολούθησης συσχετίσεων μεταξύ νημάτων 26
  27. 27. Synapse – Ένα εργαλείο παρακολούθησης συσχετίσεων μεταξύ νημάτων 27
  28. 28. DEMO 28
  29. 29. Συμπεράσματα και μελλοντική εργασία  Υποστήριξη περισσότερων λειτουργικών συστημάτων  Παρακολούθηση όλου του συνόλου των πιθανών μορφών επικοινωνίας μεταξύ νημάτων  Περεταίρω επέκταση και αποσφαλμάτωση του υποσυστήματος PyBSM  Καλύτερη υποστήριξη για εργαλεία οπτικοποίησης δεδομένων (data visualization)  Τροποποίηση του BSMTrace 29
  30. 30. 30

×