Linux Forensics
Last updated
Last updated
Χρησιμοποιήστε Trickest για να δημιουργήσετε και να αυτοματοποιήσετε ροές εργασίας που υποστηρίζονται από τα πιο προηγμένα εργαλεία της κοινότητας. Αποκτήστε πρόσβαση σήμερα:
Πρώτα απ' όλα, συνιστάται να έχετε κάποιο USB με καλά γνωστά δυαδικά και βιβλιοθήκες σε αυτό (μπορείτε απλά να πάρετε το ubuntu και να αντιγράψετε τους φακέλους /bin, /sbin, /lib, και /lib64), στη συνέχεια να το τοποθετήσετε και να τροποποιήσετε τις μεταβλητές περιβάλλοντος για να χρησιμοποιήσετε αυτά τα δυαδικά:
Μόλις έχετε ρυθμίσει το σύστημα να χρησιμοποιεί καλές και γνωστές δυαδικές εκδόσεις, μπορείτε να αρχίσετε να εξάγετε κάποιες βασικές πληροφορίες:
Ενώ αποκτάτε τις βασικές πληροφορίες, θα πρέπει να ελέγξετε για περίεργα πράγματα όπως:
Διεργασίες root συνήθως εκτελούνται με χαμηλά PIDS, οπότε αν βρείτε μια διεργασία root με μεγάλο PID, μπορεί να υποψιαστείτε
Ελέγξτε για καταγεγραμμένες συνδέσεις χρηστών χωρίς shell μέσα στο /etc/passwd
Ελέγξτε για hash κωδικών πρόσβασης μέσα στο /etc/shadow
για χρήστες χωρίς shell
Για να αποκτήσετε τη μνήμη του τρέχοντος συστήματος, συνιστάται να χρησιμοποιήσετε LiME. Για να συγκεντρώσετε το, πρέπει να χρησιμοποιήσετε τον ίδιο πυρήνα που χρησιμοποιεί η μηχανή του θύματος.
Θυμηθείτε ότι δεν μπορείτε να εγκαταστήσετε το LiME ή οτιδήποτε άλλο στη μηχανή του θύματος, καθώς θα κάνει πολλές αλλαγές σε αυτήν
Έτσι, αν έχετε μια ταυτόσημη έκδοση του Ubuntu, μπορείτε να χρησιμοποιήσετε apt-get install lime-forensics-dkms
Σε άλλες περιπτώσεις, πρέπει να κατεβάσετε LiME από το github και να το συγκεντρώσετε με τους σωστούς επικεφαλής πυρήνα. Για να αποκτήσετε τους ακριβείς επικεφαλής πυρήνα της μηχανής του θύματος, μπορείτε απλά να αντιγράψετε τον κατάλογο /lib/modules/<kernel version>
στη μηχανή σας και στη συνέχεια να συγκεντρώσετε το LiME χρησιμοποιώντας τους:
LiME υποστηρίζει 3 μορφές:
Raw (κάθε τμήμα συνδυασμένο μαζί)
Padded (ίδιο με το raw, αλλά με μηδενικά στα δεξιά bits)
Lime (συνιστώμενη μορφή με μεταδεδομένα)
LiME μπορεί επίσης να χρησιμοποιηθεί για να στείλει το dump μέσω δικτύου αντί να το αποθηκεύσει στο σύστημα χρησιμοποιώντας κάτι όπως: path=tcp:4444
Πρώτα απ' όλα, θα χρειαστεί να κλείσετε το σύστημα. Αυτό δεν είναι πάντα επιλογή καθώς μερικές φορές το σύστημα θα είναι ένας παραγωγικός διακομιστής που η εταιρεία δεν μπορεί να αντέξει να κλείσει.
Υπάρχουν 2 τρόποι για να κλείσετε το σύστημα, μια κανονική απενεργοποίηση και μια "τραβήξτε το βύσμα" απενεργοποίηση. Η πρώτη θα επιτρέψει στις διαδικασίες να τερματιστούν όπως συνήθως και το filesystem να είναι συγχρονισμένο, αλλά θα επιτρέψει επίσης την πιθανή κακόβουλη λογισμική να καταστρέψει αποδείξεις. Η προσέγγιση "τραβήξτε το βύσμα" μπορεί να φέρει κάποια απώλεια πληροφοριών (όχι πολλές πληροφορίες θα χαθούν καθώς έχουμε ήδη πάρει μια εικόνα της μνήμης) και το κακόβουλο λογισμικό δεν θα έχει καμία ευκαιρία να κάνει κάτι γι' αυτό. Επομένως, αν υποψιάζεστε ότι μπορεί να υπάρχει κακόβουλο λογισμικό, απλώς εκτελέστε την εντολή sync
στο σύστημα και τραβήξτε το βύσμα.
Είναι σημαντικό να σημειωθεί ότι πριν συνδέσετε τον υπολογιστή σας σε οτιδήποτε σχετίζεται με την υπόθεση, πρέπει να είστε σίγουροι ότι θα τοποθετηθεί ως μόνο για ανάγνωση για να αποφύγετε την τροποποίηση οποιασδήποτε πληροφορίας.
Imaging a disk image with no more data.
Χρησιμοποιήστε το Trickest για να δημιουργήσετε και να αυτοματοποιήσετε ροές εργασίας που υποστηρίζονται από τα πιο προηγμένα εργαλεία της κοινότητας. Αποκτήστε πρόσβαση σήμερα:
Το Linux προσφέρει εργαλεία για να διασφαλίσει την ακεραιότητα των συστατικών του συστήματος, κρίσιμα για την ανίχνευση δυνητικά προβληματικών αρχείων.
Συστήματα βασισμένα σε RedHat: Χρησιμοποιήστε rpm -Va
για μια ολοκληρωμένη έλεγχο.
Συστήματα βασισμένα σε Debian: dpkg --verify
για αρχική επαλήθευση, ακολουθούμενη από debsums | grep -v "OK$"
(μετά την εγκατάσταση του debsums
με apt-get install debsums
) για να εντοπίσετε τυχόν προβλήματα.
Διαβάστε την παρακάτω σελίδα για να μάθετε για εργαλεία που μπορεί να είναι χρήσιμα για την εύρεση κακόβουλου λογισμικού:
Για να αναζητήσετε αποτελεσματικά εγκατεστημένα προγράμματα σε συστήματα Debian και RedHat, εξετάστε το ενδεχόμενο να αξιοποιήσετε τα αρχεία καταγραφής συστήματος και τις βάσεις δεδομένων παράλληλα με χειροκίνητους ελέγχους σε κοινές καταλόγους.
Για Debian, ελέγξτε /var/lib/dpkg/status
και /var/log/dpkg.log
για να αποκτήσετε λεπτομέρειες σχετικά με τις εγκαταστάσεις πακέτων, χρησιμοποιώντας grep
για να φιλτράρετε συγκεκριμένες πληροφορίες.
Οι χρήστες RedHat μπορούν να ερωτήσουν τη βάση δεδομένων RPM με rpm -qa --root=/mntpath/var/lib/rpm
για να καταγράψουν τα εγκατεστημένα πακέτα.
Για να αποκαλύψετε λογισμικό που έχει εγκατασταθεί χειροκίνητα ή εκτός αυτών των διαχειριστών πακέτων, εξερευνήστε καταλόγους όπως /usr/local
, /opt
, /usr/sbin
, /usr/bin
, /bin
, και /sbin
. Συνδυάστε τις καταχωρίσεις καταλόγων με εντολές συγκεκριμένες για το σύστημα για να εντοπίσετε εκτελέσιμα που δεν σχετίζονται με γνωστά πακέτα, ενισχύοντας την αναζήτησή σας για όλα τα εγκατεστημένα προγράμματα.
Χρησιμοποιήστε Trickest για να δημιουργήσετε και να αυτοματοποιήσετε ροές εργασίας με τη βοήθεια των πιο προηγμένων εργαλείων της κοινότητας. Αποκτήστε πρόσβαση σήμερα:
Φανταστείτε μια διαδικασία που εκτελέστηκε από το /tmp/exec και στη συνέχεια διαγράφηκε. Είναι δυνατόν να την εξαγάγετε.
Διαδρομές όπου ένα κακόβουλο λογισμικό θα μπορούσε να εγκατασταθεί ως υπηρεσία:
/etc/inittab: Καλεί σενάρια αρχικοποίησης όπως το rc.sysinit, κατευθύνοντας περαιτέρω σε σενάρια εκκίνησης.
/etc/rc.d/ και /etc/rc.boot/: Περιέχουν σενάρια για την εκκίνηση υπηρεσιών, το τελευταίο βρίσκεται σε παλαιότερες εκδόσεις Linux.
/etc/init.d/: Χρησιμοποιείται σε ορισμένες εκδόσεις Linux όπως το Debian για την αποθήκευση σεναρίων εκκίνησης.
Οι υπηρεσίες μπορούν επίσης να ενεργοποιηθούν μέσω /etc/inetd.conf ή /etc/xinetd/, ανάλογα με την παραλλαγή του Linux.
/etc/systemd/system: Ένας φάκελος για σενάρια διαχείρισης συστήματος και υπηρεσιών.
/etc/systemd/system/multi-user.target.wants/: Περιέχει συνδέσμους σε υπηρεσίες που θα πρέπει να ξεκινούν σε επίπεδο εκκίνησης πολλαπλών χρηστών.
/usr/local/etc/rc.d/: Για προσαρμοσμένες ή τρίτων υπηρεσίες.
~/.config/autostart/: Για αυτόματες εφαρμογές εκκίνησης συγκεκριμένες για τον χρήστη, οι οποίες μπορεί να είναι κρυψώνες για κακόβουλο λογισμικό που στοχεύει χρήστες.
/lib/systemd/system/: Αρχεία μονάδας προεπιλογής σε επίπεδο συστήματος που παρέχονται από εγκατεστημένα πακέτα.
Οι μονάδες πυρήνα Linux, που συχνά χρησιμοποιούνται από κακόβουλο λογισμικό ως συστατικά rootkit, φορτώνονται κατά την εκκίνηση του συστήματος. Οι φάκελοι και τα αρχεία που είναι κρίσιμα για αυτές τις μονάδες περιλαμβάνουν:
/lib/modules/$(uname -r): Περιέχει μονάδες για την τρέχουσα έκδοση του πυρήνα.
/etc/modprobe.d: Περιέχει αρχεία ρυθμίσεων για τον έλεγχο της φόρτωσης μονάδων.
/etc/modprobe και /etc/modprobe.conf: Αρχεία για παγκόσμιες ρυθμίσεις μονάδων.
Το Linux χρησιμοποιεί διάφορα αρχεία για την αυτόματη εκτέλεση προγραμμάτων κατά την είσοδο του χρήστη, ενδεχομένως φιλοξενώντας κακόβουλο λογισμικό:
/etc/profile.d/*, /etc/profile, και /etc/bash.bashrc: Εκτελούνται για οποιαδήποτε είσοδο χρήστη.
~/.bashrc, ~/.bash_profile, ~/.profile, και ~/.config/autostart: Αρχεία συγκεκριμένα για τον χρήστη που εκτελούνται κατά την είσοδό τους.
/etc/rc.local: Εκτελείται μετά την εκκίνηση όλων των υπηρεσιών του συστήματος, σηματοδοτώντας το τέλος της μετάβασης σε περιβάλλον πολλαπλών χρηστών.
Τα συστήματα Linux παρακολουθούν τις δραστηριότητες χρηστών και τα γεγονότα του συστήματος μέσω διαφόρων αρχείων καταγραφής. Αυτές οι καταγραφές είναι κρίσιμες για την αναγνώριση μη εξουσιοδοτημένης πρόσβασης, λοιμώξεων από κακόβουλο λογισμικό και άλλων περιστατικών ασφαλείας. Κύρια αρχεία καταγραφής περιλαμβάνουν:
/var/log/syslog (Debian) ή /var/log/messages (RedHat): Καταγράφουν μηνύματα και δραστηριότητες σε επίπεδο συστήματος.
/var/log/auth.log (Debian) ή /var/log/secure (RedHat): Καταγράφουν προσπάθειες αυθεντικοποίησης, επιτυχείς και αποτυχημένες συνδέσεις.
Χρησιμοποιήστε grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log
για να φιλτράρετε σχετικές αυθεντικοποιητικές εκδηλώσεις.
/var/log/boot.log: Περιέχει μηνύματα εκκίνησης του συστήματος.
/var/log/maillog ή /var/log/mail.log: Καταγράφει δραστηριότητες του διακομιστή email, χρήσιμο για την παρακολούθηση υπηρεσιών σχετικών με email.
/var/log/kern.log: Αποθηκεύει μηνύματα πυρήνα, συμπεριλαμβανομένων σφαλμάτων και προειδοποιήσεων.
/var/log/dmesg: Περιέχει μηνύματα οδηγών συσκευών.
/var/log/faillog: Καταγράφει αποτυχημένες προσπάθειες σύνδεσης, βοηθώντας στις έρευνες παραβίασης ασφαλείας.
/var/log/cron: Καταγράφει εκτελέσεις εργασιών cron.
/var/log/daemon.log: Παρακολουθεί δραστηριότητες υπηρεσιών παρασκηνίου.
/var/log/btmp: Καταγράφει αποτυχημένες προσπάθειες σύνδεσης.
/var/log/httpd/: Περιέχει αρχεία καταγραφής σφαλμάτων και πρόσβασης του Apache HTTPD.
/var/log/mysqld.log ή /var/log/mysql.log: Καταγράφει δραστηριότητες της βάσης δεδομένων MySQL.
/var/log/xferlog: Καταγράφει μεταφορές αρχείων FTP.
/var/log/: Ελέγξτε πάντα για απροσδόκητες καταγραφές εδώ.
Τα αρχεία καταγραφής και τα υποσυστήματα ελέγχου του συστήματος Linux μπορεί να είναι απενεργοποιημένα ή διαγραμμένα σε περίπτωση παραβίασης ή περιστατικού κακόβουλου λογισμικού. Δεδομένου ότι οι καταγραφές σε συστήματα Linux περιέχουν γενικά μερικές από τις πιο χρήσιμες πληροφορίες σχετικά με κακόβουλες δραστηριότητες, οι εισβολείς τις διαγράφουν τακτικά. Επομένως, κατά την εξέταση διαθέσιμων αρχείων καταγραφής, είναι σημαντικό να αναζητήσετε κενά ή μη κανονικές καταχωρίσεις που μπορεί να είναι ένδειξη διαγραφής ή παραποίησης.
Το Linux διατηρεί ένα ιστορικό εντολών για κάθε χρήστη, αποθηκευμένο σε:
~/.bash_history
~/.zsh_history
~/.zsh_sessions/*
~/.python_history
~/.*_history
Επιπλέον, η εντολή last -Faiwx
παρέχει μια λίστα με τις συνδέσεις χρηστών. Ελέγξτε την για άγνωστες ή απροσδόκητες συνδέσεις.
Ελέγξτε αρχεία που μπορούν να παραχωρήσουν επιπλέον δικαιώματα:
Εξετάστε το /etc/sudoers
για μη αναμενόμενα δικαιώματα χρηστών που μπορεί να έχουν παραχωρηθεί.
Εξετάστε το /etc/sudoers.d/
για μη αναμενόμενα δικαιώματα χρηστών που μπορεί να έχουν παραχωρηθεί.
Εξετάστε το /etc/groups
για να εντοπίσετε οποιαδήποτε ασυνήθιστη συμμετοχή σε ομάδες ή δικαιώματα.
Εξετάστε το /etc/passwd
για να εντοπίσετε οποιαδήποτε ασυνήθιστη συμμετοχή σε ομάδες ή δικαιώματα.
Ορισμένες εφαρμογές επίσης δημιουργούν τα δικά τους αρχεία καταγραφής:
SSH: Εξετάστε το ~/.ssh/authorized_keys και ~/.ssh/known_hosts για μη εξουσιοδοτημένες απομακρυσμένες συνδέσεις.
Gnome Desktop: Ρίξτε μια ματιά στο ~/.recently-used.xbel για πρόσφατα προσπελασμένα αρχεία μέσω εφαρμογών Gnome.
Firefox/Chrome: Ελέγξτε το ιστορικό του προγράμματος περιήγησης και τις λήψεις στο ~/.mozilla/firefox ή ~/.config/google-chrome για ύποπτες δραστηριότητες.
VIM: Εξετάστε το ~/.viminfo για λεπτομέρειες χρήσης, όπως διαδρομές προσπελασμένων αρχείων και ιστορικό αναζητήσεων.
Open Office: Ελέγξτε για πρόσφατη πρόσβαση σε έγγραφα που μπορεί να υποδηλώνει παραβιασμένα αρχεία.
FTP/SFTP: Εξετάστε τα αρχεία καταγραφής στο ~/.ftp_history ή ~/.sftp_history για μεταφορές αρχείων που μπορεί να είναι μη εξουσιοδοτημένες.
MySQL: Εξετάστε το ~/.mysql_history για εκτελεσμένα ερωτήματα MySQL, που μπορεί να αποκαλύπτουν μη εξουσιοδοτημένες δραστηριότητες βάσης δεδομένων.
Less: Αναλύστε το ~/.lesshst για ιστορικό χρήσης, συμπεριλαμβανομένων των προσπελασμένων αρχείων και των εκτελούμενων εντολών.
Git: Εξετάστε το ~/.gitconfig και το έργο .git/logs για αλλαγές σε αποθετήρια.
usbrip είναι ένα μικρό κομμάτι λογισμικού γραμμένο σε καθαρή Python 3 που αναλύει τα αρχεία καταγραφής Linux (/var/log/syslog*
ή /var/log/messages*
ανάλογα με τη διανομή) για την κατασκευή πινάκων ιστορικού γεγονότων USB.
Είναι ενδιαφέρον να γνωρίζετε όλα τα USB που έχουν χρησιμοποιηθεί και θα είναι πιο χρήσιμο αν έχετε μια εξουσιοδοτημένη λίστα USB για να βρείτε "γεγονότα παραβίασης" (η χρήση USB που δεν είναι μέσα σε αυτή τη λίστα).
More examples and info inside the github: https://github.com/snovvcrash/usbrip
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:
Εξετάστε τα /etc/passwd, /etc/shadow και ασφαλιστικά αρχεία για ασυνήθιστα ονόματα ή λογαριασμούς που δημιουργήθηκαν και ή χρησιμοποιήθηκαν κοντά σε γνωστά μη εξουσιοδοτημένα γεγονότα. Επίσης, ελέγξτε πιθανές επιθέσεις brute-force sudo. Επιπλέον, ελέγξτε αρχεία όπως /etc/sudoers και /etc/groups για απροσδόκητα προνόμια που δόθηκαν σε χρήστες. Τέλος, αναζητήστε λογαριασμούς με κανέναν κωδικό πρόσβασης ή εύκολα μαντεύσιμους κωδικούς πρόσβασης.
Κατά την έρευνα περιστατικών κακόβουλου λογισμικού, η δομή του συστήματος αρχείων είναι μια κρίσιμη πηγή πληροφοριών, αποκαλύπτοντας τόσο τη σειρά των γεγονότων όσο και το περιεχόμενο του κακόβουλου λογισμικού. Ωστόσο, οι συγγραφείς κακόβουλου λογισμικού αναπτύσσουν τεχνικές για να εμποδίσουν αυτή την ανάλυση, όπως η τροποποίηση των χρονικών σφραγίδων αρχείων ή η αποφυγή του συστήματος αρχείων για αποθήκευση δεδομένων.
Για να αντισταθούμε σε αυτές τις μεθόδους αντεπίθεσης, είναι απαραίτητο να:
Διεξάγετε μια λεπτομερή ανάλυση χρονολογίου χρησιμοποιώντας εργαλεία όπως το Autopsy για την οπτικοποίηση χρονολογίων γεγονότων ή το mactime
του Sleuth Kit για λεπτομερή δεδομένα χρονολογίου.
Εξετάσετε απροσδόκητα σενάρια στο $PATH του συστήματος, τα οποία μπορεί να περιλαμβάνουν shell ή PHP σενάρια που χρησιμοποιούνται από επιτιθέμενους.
Εξετάσετε το /dev
για ασυνήθιστα αρχεία, καθώς παραδοσιακά περιέχει ειδικά αρχεία, αλλά μπορεί να φιλοξενεί αρχεία που σχετίζονται με κακόβουλο λογισμικό.
Αναζητήσετε κρυφά αρχεία ή καταλόγους με ονόματα όπως ".. " (dot dot space) ή "..^G" (dot dot control-G), τα οποία θα μπορούσαν να αποκρύπτουν κακόβουλο περιεχόμενο.
Εντοπίσετε αρχεία setuid root χρησιμοποιώντας την εντολή: find / -user root -perm -04000 -print
Αυτό βρίσκει αρχεία με ανυψωμένα δικαιώματα, τα οποία θα μπορούσαν να καταχραστούν από επιτιθέμενους.
Ανασκοπήσετε τις χρονικές σφραγίδες διαγραφής στους πίνακες inode για να εντοπίσετε μαζικές διαγραφές αρχείων, πιθανώς υποδεικνύοντας την παρουσία rootkits ή trojans.
Εξετάσετε διαδοχικά inodes για κοντινά κακόβουλα αρχεία μετά την αναγνώριση ενός, καθώς μπορεί να έχουν τοποθετηθεί μαζί.
Ελέγξετε κοινούς καταλόγους δυαδικών αρχείων (/bin, /sbin) για πρόσφατα τροποποιημένα αρχεία, καθώς αυτά θα μπορούσαν να έχουν τροποποιηθεί από κακόβουλο λογισμικό.
Σημειώστε ότι ένας επιτιθέμενος μπορεί να τροποποιήσει τον χρόνο για να κάνει τα αρχεία να φαίνονται νόμιμα, αλλά δεν μπορεί να τροποποιήσει το inode. Εάν διαπιστώσετε ότι ένα αρχείο υποδεικνύει ότι δημιουργήθηκε και τροποποιήθηκε την ίδια στιγμή με τα υπόλοιπα αρχεία στον ίδιο φάκελο, αλλά το inode είναι αναπάντεχα μεγαλύτερο, τότε οι χρόνοι του αρχείου αυτού τροποποιήθηκαν.
Για να συγκρίνουμε εκδόσεις συστήματος αρχείων και να εντοπίσουμε αλλαγές, χρησιμοποιούμε απλοποιημένες εντολές git diff
:
Για να βρείτε νέα αρχεία, συγκρίνετε δύο καταλόγους:
Για τροποποιημένο περιεχόμενο, καταγράψτε τις αλλαγές αγνοώντας συγκεκριμένες γραμμές:
Για να ανιχνεύσετε διαγραμμένα αρχεία:
Επιλογές φίλτρου (--diff-filter
) βοηθούν στη στένωση σε συγκεκριμένες αλλαγές όπως προσθήκες (A
), διαγραφές (D
), ή τροποποιημένα (M
) αρχεία.
A
: Προσθήκες αρχείων
C
: Αντιγραμμένα αρχεία
D
: Διαγραμμένα αρχεία
M
: Τροποποιημένα αρχεία
R
: Μετονομασμένα αρχεία
T
: Αλλαγές τύπου (π.χ., αρχείο σε symlink)
U
: Μη συγχωνευμένα αρχεία
X
: Άγνωστα αρχεία
B
: Σπασμένα αρχεία
Βιβλίο: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides
Χρησιμοποιήστε Trickest για να δημιουργήσετε και να αυτοματοποιήσετε ροές εργασίας που υποστηρίζονται από τα πιο προηγμένα εργαλεία της κοινότητας. Αποκτήστε πρόσβαση σήμερα:
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)