Linux Forensics
Reading time: 18 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Αρχική Συλλογή Πληροφοριών
Βασικές Πληροφορίες
Πρώτα απ' όλα, συνιστάται να έχετε κάποιο USB με καλά γνωστά δυαδικά αρχεία και βιβλιοθήκες πάνω του (μπορείτε απλά να πάρετε το ubuntu και να αντιγράψετε τους φακέλους /bin, /sbin, /lib, και /lib64), στη συνέχεια να το τοποθετήσετε και να τροποποιήσετε τις μεταβλητές περιβάλλοντος για να χρησιμοποιήσετε αυτά τα δυαδικά αρχεία:
export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
Αφού έχετε ρυθμίσει το σύστημα να χρησιμοποιεί καλές και γνωστές δυαδικές εκδόσεις, μπορείτε να αρχίσετε να εξάγετε κάποιες βασικές πληροφορίες:
date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info
ifconfig -a || ip a #Network interfaces (promiscuous mode?)
ps -ef #Running processes
netstat -anp #Proccess and ports
lsof -V #Open files
netstat -rn; route #Routing table
df; mount #Free space and mounted devices
free #Meam and swap space
w #Who is connected
last -Faiwx #Logins
lsmod #What is loaded
cat /etc/passwd #Unexpected data?
cat /etc/shadow #Unexpected data?
find /directory -type f -mtime -1 -print #Find modified files during the last minute in the directory
Suspicious information
While obtaining the basic information you should check for weird things like:
- Root processes συνήθως τρέχουν με χαμηλά PIDS, οπότε αν βρείτε μια διαδικασία root με μεγάλο PID μπορεί να υποψιαστείτε
- Check registered logins χρηστών χωρίς shell μέσα στο
/etc/passwd
- Check for password hashes μέσα στο
/etc/shadow
για χρήστες χωρίς shell
Memory Dump
To obtain the memory of the running system, it's recommended to use LiME.
To compile it, you need to use the same kernel that the victim machine is using.
tip
Remember that you cannot install LiME or any other thing in the victim machine as it will make several changes to it
So, if you have an identical version of Ubuntu you can use apt-get install lime-forensics-dkms
In other cases, you need to download LiME from github and compile it with correct kernel headers. To obtain the exact kernel headers of the victim machine, you can just copy the directory /lib/modules/<kernel version>
to your machine, and then compile LiME using them:
make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
LiME υποστηρίζει 3 μορφές:
- Raw (κάθε τμήμα συνδυασμένο μαζί)
- Padded (ίδιο με το raw, αλλά με μηδενικά στα δεξιά bits)
- Lime (συνιστώμενη μορφή με μεταδεδομένα)
LiME μπορεί επίσης να χρησιμοποιηθεί για να στείλει το dump μέσω δικτύου αντί να το αποθηκεύσει στο σύστημα χρησιμοποιώντας κάτι όπως: path=tcp:4444
Imaging Δίσκου
Κλείσιμο
Πρώτα απ' όλα, θα χρειαστεί να κλείσετε το σύστημα. Αυτό δεν είναι πάντα επιλογή καθώς μερικές φορές το σύστημα θα είναι ένας παραγωγικός διακομιστής που η εταιρεία δεν μπορεί να αντέξει να κλείσει.
Υπάρχουν 2 τρόποι για να κλείσετε το σύστημα, ένας κανονικός τερματισμός και ένας τερματισμός "τραβώντας το βύσμα". Ο πρώτος θα επιτρέψει στους διαδικασίες να τερματιστούν όπως συνήθως και το filesystem να είναι συγχρονισμένο, αλλά θα επιτρέψει επίσης την πιθανή κακόβουλη λογισμική να καταστρέψει αποδείξεις. Η προσέγγιση "τραβώντας το βύσμα" μπορεί να φέρει κάποια απώλεια πληροφοριών (όχι πολλές πληροφορίες θα χαθούν καθώς έχουμε ήδη πάρει μια εικόνα της μνήμης) και η κακόβουλη λογισμική δεν θα έχει καμία ευκαιρία να κάνει κάτι γι' αυτό. Επομένως, αν υποψιάζεστε ότι μπορεί να υπάρχει κακόβουλη λογισμική, απλά εκτελέστε την εντολή sync
στο σύστημα και τραβήξτε το βύσμα.
Λήψη εικόνας του δίσκου
Είναι σημαντικό να σημειωθεί ότι πριν συνδέσετε τον υπολογιστή σας σε οτιδήποτε σχετίζεται με την υπόθεση, πρέπει να είστε σίγουροι ότι θα τοποθετηθεί ως μόνο για ανάγνωση για να αποφύγετε την τροποποίηση οποιασδήποτε πληροφορίας.
#Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512
#Raw copy with hashes along the way (more secure as it checks hashes while it's copying the data)
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
Προ-ανάλυση εικόνας δίσκου
Εικόνα μιας εικόνας δίσκου χωρίς περισσότερα δεδομένα.
#Find out if it's a disk image using "file" command
file disk.img
disk.img: Linux rev 1.0 ext4 filesystem data, UUID=59e7a736-9c90-4fab-ae35-1d6a28e5de27 (extents) (64bit) (large files) (huge files)
#Check which type of disk image it's
img_stat -t evidence.img
raw
#You can list supported types with
img_stat -i list
Supported image format types:
raw (Single or split raw file (dd))
aff (Advanced Forensic Format)
afd (AFF Multiple File)
afm (AFF with external metadata)
afflib (All AFFLIB image formats (including beta ones))
ewf (Expert Witness Format (EnCase))
#Data of the image
fsstat -i raw -f ext4 disk.img
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: Ext4
Volume Name:
Volume ID: 162850f203fd75afab4f1e4736a7e776
Last Written at: 2020-02-06 06:22:48 (UTC)
Last Checked at: 2020-02-06 06:15:09 (UTC)
Last Mounted at: 2020-02-06 06:15:18 (UTC)
Unmounted properly
Last mounted on: /mnt/disk0
Source OS: Linux
[...]
#ls inside the image
fls -i raw -f ext4 disk.img
d/d 11: lost+found
d/d 12: Documents
d/d 8193: folder1
d/d 8194: folder2
V/V 65537: $OrphanFiles
#ls inside folder
fls -i raw -f ext4 disk.img 12
r/r 16: secret.txt
#cat file inside image
icat -i raw -f ext4 disk.img 16
ThisisTheMasterSecret
Αναζήτηση για γνωστό Malware
Τροποποιημένα Αρχεία Συστήματος
Το Linux προσφέρει εργαλεία για την εξασφάλιση της ακεραιότητας των συστατικών του συστήματος, κρίσιμα για την ανίχνευση δυνητικά προβληματικών αρχείων.
- Συστήματα βασισμένα σε RedHat: Χρησιμοποιήστε
rpm -Va
για μια ολοκληρωμένη έλεγχο. - Συστήματα βασισμένα σε Debian:
dpkg --verify
για αρχική επαλήθευση, ακολουθούμενο απόdebsums | grep -v "OK$"
(μετά την εγκατάσταση τουdebsums
μεapt-get install debsums
) για να εντοπίσετε τυχόν προβλήματα.
Ανιχνευτές Malware/Rootkit
Διαβάστε την παρακάτω σελίδα για να μάθετε για εργαλεία που μπορεί να είναι χρήσιμα για την εύρεση malware:
Αναζήτηση εγκατεστημένων προγραμμάτων
Για να αναζητήσετε αποτελεσματικά εγκατεστημένα προγράμματα σε συστήματα 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
. Συνδυάστε τις καταχωρίσεις καταλόγων με εντολές συγκεκριμένες για το σύστημα για να εντοπίσετε εκτελέσιμα που δεν σχετίζονται με γνωστά πακέτα, ενισχύοντας την αναζήτησή σας για όλα τα εγκατεστημένα προγράμματα.
# Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
cat /var/log/dpkg.log | grep installed
# RedHat RPM database query
rpm -qa --root=/mntpath/var/lib/rpm
# Listing directories for manual installations
ls /usr/sbin /usr/bin /bin /sbin
# Identifying non-package executables (Debian)
find /sbin/ -exec dpkg -S {} \; | grep "no path found"
# Identifying non-package executables (RedHat)
find /sbin/ –exec rpm -qf {} \; | grep "is not"
# Find exacuable files
find / -type f -executable | grep <something>
Ανάκτηση Διαγραμμένων Εκτελέσιμων Αρχείων
Φανταστείτε μια διαδικασία που εκτελέστηκε από το /tmp/exec και στη συνέχεια διαγράφηκε. Είναι δυνατόν να την εξαγάγουμε.
cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it
Επιθεώρηση Τοποθεσιών Αυτοεκκίνησης
Προγραμματισμένα Καθήκοντα
cat /var/spool/cron/crontabs/* \
/var/spool/cron/atjobs \
/var/spool/anacron \
/etc/cron* \
/etc/at* \
/etc/anacrontab \
/etc/incron.d/* \
/var/spool/incron/* \
#MacOS
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
Hunt: Cron/Anacron abuse via 0anacron and suspicious stubs
Οι επιτιθέμενοι συχνά επεξεργάζονται το stub 0anacron που υπάρχει κάτω από κάθε /etc/cron.*/ κατάλογο για να διασφαλίσουν περιοδική εκτέλεση.
# List 0anacron files and their timestamps/sizes
for d in /etc/cron.*; do [ -f "$d/0anacron" ] && stat -c '%n %y %s' "$d/0anacron"; done
# Look for obvious execution of shells or downloaders embedded in cron stubs
grep -R --line-number -E 'curl|wget|/bin/sh|python|bash -c' /etc/cron.*/* 2>/dev/null
Hunt: SSH hardening rollback and backdoor shells
Οι αλλαγές στο sshd_config και στα κέλυφος συστήματος λογαριασμών είναι κοινές μετά την εκμετάλλευση για τη διατήρηση της πρόσβασης.
# Root login enablement (flag "yes" or lax values)
grep -E '^\s*PermitRootLogin' /etc/ssh/sshd_config
# System accounts with interactive shells (e.g., games → /bin/sh)
awk -F: '($7 ~ /bin\/(sh|bash|zsh)/ && $1 ~ /^(games|lp|sync|shutdown|halt|mail|operator)$/) {print}' /etc/passwd
Hunt: Cloud C2 markers (Dropbox/Cloudflare Tunnel)
- Οι σηματοδότες API του Dropbox χρησιμοποιούν συνήθως το api.dropboxapi.com ή το content.dropboxapi.com μέσω HTTPS με Authorization: Bearer tokens.
- Αναζητήστε σε proxy/Zeek/NetFlow για απροσδόκητη έξοδο Dropbox από διακομιστές.
- Το Cloudflare Tunnel (
cloudflared
) παρέχει εφεδρικό C2 μέσω εξόδου 443.
ps aux | grep -E '[c]loudflared|trycloudflare'
systemctl list-units | grep -i cloudflared
Υπηρεσίες
Διαδρομές όπου μπορεί να εγκατασταθεί ένα κακόβουλο λογισμικό ως υπηρεσία:
- /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/: Ελέγξτε πάντα για απροσδόκητες καταγραφές εδώ.
tip
Οι καταγραφές συστήματος 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 για αλλαγές σε αποθετήρια.
Καταγραφές USB
usbrip είναι ένα μικρό κομμάτι λογισμικού γραμμένο σε καθαρή Python 3 που αναλύει τα αρχεία καταγραφής Linux (/var/log/syslog*
ή /var/log/messages*
ανάλογα με τη διανομή) για την κατασκευή πινάκων ιστορικού γεγονότων USB.
Είναι ενδιαφέρον να γνωρίζετε όλα τα USB που έχουν χρησιμοποιηθεί και θα είναι πιο χρήσιμο αν έχετε μια εξουσιοδοτημένη λίστα USB για να βρείτε "γεγονότα παραβίασης" (η χρήση USB που δεν είναι μέσα σε αυτή τη λίστα).
Εγκατάσταση
pip3 install usbrip
usbrip ids download #Download USB ID database
Παραδείγματα
usbrip events history #Get USB history of your curent linux machine
usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user
#Search for vid and/or pid
usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
More examples and info inside the github: https://github.com/snovvcrash/usbrip
Ανασκόπηση Λογαριασμών Χρηστών και Δραστηριοτήτων Σύνδεσης
Εξετάστε τα /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) για πρόσφατα τροποποιημένα αρχεία, καθώς αυτά θα μπορούσαν να έχουν τροποποιηθεί από κακόβουλο λογισμικό.
# List recent files in a directory:
ls -laR --sort=time /bin```
# Sort files in a directory by inode:
ls -lai /bin | sort -n```
```
<div class="mdbook-alerts mdbook-alerts-tip">
<p class="mdbook-alerts-title">
<span class="mdbook-alerts-icon"></span>
tip
</p>
Σημειώστε ότι ένας **επιτιθέμενος** μπορεί να **τροποποιήσει** τον **χρόνο** για να κάνει τα **αρχεία να φαίνονται** **νόμιμα**, αλλά δεν μπορεί να **τροποποιήσει** το **inode**. Αν βρείτε ότι ένα **αρχείο** υποδεικνύει ότι δημιουργήθηκε και τροποποιήθηκε την **ίδια στιγμή** με τα υπόλοιπα αρχεία στον ίδιο φάκελο, αλλά το **inode** είναι **αναπάντεχα μεγαλύτερο**, τότε οι **χρόνοι του αρχείου αυτού τροποποιήθηκαν**.
</div>
## Σύγκριση αρχείων διαφορετικών εκδόσεων συστήματος αρχείων
### Περίληψη Σύγκρισης Εκδόσεων Συστήματος Αρχείων
Για να συγκρίνουμε εκδόσεις συστήματος αρχείων και να εντοπίσουμε αλλαγές, χρησιμοποιούμε απλοποιημένες εντολές `git diff`:
- **Για να βρείτε νέα αρχεία**, συγκρίνετε δύο καταλόγους:
<div class="codeblock_filename_container"><span class="codeblock_filename_inner hljs">bash</span></div>
```bash
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
```
- **Για τροποποιημένο περιεχόμενο**, καταγράψτε τις αλλαγές αγνοώντας συγκεκριμένες γραμμές:
<div class="codeblock_filename_container"><span class="codeblock_filename_inner hljs">bash</span></div>
```bash
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
```
- **Για να ανιχνεύσετε διαγραμμένα αρχεία**:
<div class="codeblock_filename_container"><span class="codeblock_filename_inner hljs">bash</span></div>
```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
```
- **Επιλογές φίλτρου** (`--diff-filter`) βοηθούν στη στένωση σε συγκεκριμένες αλλαγές όπως προσθήκες (`A`), διαγραφές (`D`), ή τροποποιημένα (`M`) αρχεία.
- `A`: Προσθήκες αρχείων
- `C`: Αντιγραμμένα αρχεία
- `D`: Διαγραμμένα αρχεία
- `M`: Τροποποιημένα αρχεία
- `R`: Μετονομασμένα αρχεία
- `T`: Αλλαγές τύπου (π.χ., αρχείο σε symlink)
- `U`: Μη συγχωνευμένα αρχεία
- `X`: Άγνωστα αρχεία
- `B`: Σπασμένα αρχεία
## Αναφορές
- [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems_Ch3.pdf)
- [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
- [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
- **Βιβλίο: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides**
- [Red Canary – Patching for persistence: How DripDropper Linux malware moves through the cloud](https://redcanary.com/blog/threat-intelligence/dripdropper-linux-malware/)
<div class="mdbook-alerts mdbook-alerts-tip">
<p class="mdbook-alerts-title">
<span class="mdbook-alerts-icon"></span>
tip
</p>
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
Μάθετε & εξασκηθείτε στο Azure Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
<details>
<summary>Υποστηρίξτε το HackTricks</summary>
- Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
- **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
- **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
</div>