1. Synapse
Ένα εργαλείο παρακολούθησης συσχετίσεων μεταξύ νημάτων
Χαρίτων Καραμήτας
<chakaram@auth.gr>
Υπό την επίβλεψη των:
Ανδρέα Συμεωνίδη επίκουρου καθηγητή
Γεώργιου Μαμαλάκη υποψήφιου διδάκτορα
2. Περιεχόμενα
Πρόβλημα που αντιμετωπίζουμε
Βασικές αρχές λειτουργικών συστημάτων
FreeBSD
Μηχανισμοί εξέτασης πυρήνα
OpenBSM
Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
Συμπεράσματα και μελλοντική εργασία
2
3. Πρόβλημα που αντιμετωπίζουμε
«Αν γνωρίζουμε ότι το υπολογιστικό σύστημα που
μελετάμε, και πιο συγκεκριμένα κάποιο νήμα που
εκτελείται σε αυτό, έχει παραβιαστεί από κάποιον
επιτιθέμενο, τότε ποιο είναι το σύνολο των νημάτων
που ενδέχεται να έχει επηρεάσει ο επιτιθέμενος και
με ποιόν τρόπο έγινε αυτό?»
3
5. Βασικές αρχές λειτουργικών συστημάτων
Υψηλό επίπεδο
Σύνοδοι (sessions)
Για κάθε είσοδο (login) στο σύστημα δημιουργείται μία
σύνοδος
Αναγνωριστικό συνόδου (session identifier – SID)
5
7. Βασικές αρχές λειτουργικών συστημάτων
Υψηλό επίπεδο
Νήματα (threads a.k.a. lightweight processes)
Στοιχειώδεις μονάδες εκτέλεσης
Αναγνωριστικό νήματος (Thread identifier – TID,
Lightweight process identifier – LWPID)
Κάθε διεργασία διαθέτει τουλάχιστον ένα νήμα
LWP ↔ CPU Core
7
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. Βασικές αρχές λειτουργικών συστημάτων
Χαμηλό επίπεδο
Επίπεδα δικαιωμάτων (privilege levels a.k.a. rings)
Σε x86 και x86_64 έχουμε 4 επίπεδα (ring0 → ring3)
Διαχωρισμός δικαιωμάτων σε επίπεδο επεξεργαστή
9
10. Βασικές αρχές λειτουργικών συστημάτων
Χαμηλό επίπεδο
Χώρος πυρήνα (kernelspace)
Ο πυρήνας πρέπει να έχει πρόσβαση σε κάθε πώρο του
συστήματος
Privileged instructions, IDTs, Caches & TLBs, I/O ports κ.τ.λ.
Πυρήνας → ring0
10
11. Βασικές αρχές λειτουργικών συστημάτων
Χαμηλό επίπεδο
Χώρος χρήστη (userspace)
Εδώ εκτελούνται όλα τα προγράμματα που εκκινεί ένας
χρήστης
Διαχωρισμός διεργασιών
ΟΧΙ άμεση πρόσβαση σε πώρους συστήματος
ΟΧΙ άμεση επιρροή σε άλλες διεργασίες
Προγράμματα → ring3
11
12. Βασικές αρχές λειτουργικών συστημάτων
Χαμηλό επίπεδο
Κλήσεις συστήματος (system calls)
Τρόπος επικοινωνίας (ένα είδος interface) μεταξύ των
δύο rings
Σαφώς ορισμένο σύνολο βασικών ενεργειών (π.χ. open(),
read(), write(), close())
Για κάθε κλήση συστήματος: xxx() → sys_xxx()
Υλοποίηση μέσω interrupt vectors (int 0x80),
sysenter/sysexit (Intel), syscall/sysret (AMD)
12
14. Βασικές αρχές λειτουργικών συστημάτων
Χαμηλό επίπεδο
Εξέταση πυρήνα (kernel auditing)
Τρόπος παρακολούθησης των κλήσεων συστήματος και
άλλων ενεργειών που λαμβάνουν χώρα σε ένα
λειτουργικό σύστημα
Ποιος ο λόγος?
Kernel debugging
Monitoring, Intrusion Detection Systems, κ.τ.λ.
14
15. FreeBSD
AT&T UNIX → BSD UNIX → FreeBSD
… → Apple Mac OS X & iOS
… → Microsoft Windows (seriously)
Τερματικά ελέγχου (Controlling terminals)
Ελεγχόμενη είσοδος/έξοδος
Ομάδες διεργασιών (process groups)
Κοινή λήψη σημάτων
Εξέταση πυρήνα
OpenBSM
15
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)
20. OpenBSM (εγγραφές – audit records)
Record
Token
(AUT_HEADER32)
Token
(AUT_XXX)
Token
(AUT_XXX)
…
Token
(AUT_TRAILER)
20
Record Record …
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. Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
Κεντρική ιδέα
Χρήση του OpenBSM για την παρακολούθηση
κλήσεων συστήματος που αφορούν IPC
Sockets (IPv4, IPv6, UNIX, κ.τ.λ.)
System V IPC
POSIX IPC
mmap() shared memory
…?
22
23. Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
Synapse
Υποσυστήματα
χώρου πυρήνα
OpenBSM
Υποσυστήματα
χώρου χρήστη
PyAudit
PyBSM
Process
Manager
PyKVM
IPC Manager
23
Modified
Bugfixes
24. Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
24
25. Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
25
TokenFactory RecordFactory SyscallFactory
Token Record Syscall
26. Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
26
27. Synapse – Ένα εργαλείο παρακολούθησης
συσχετίσεων μεταξύ νημάτων
27