Linux Forensics
Usa Trickest per creare e automatizzare facilmente flussi di lavoro supportati dagli strumenti della community più avanzati al mondo. Ottieni l'accesso oggi:
Raccolta Informazioni Iniziale
Informazioni di Base
Prima di tutto, è consigliabile avere una USB con binari e librerie noti e validi (puoi semplicemente prendere Ubuntu e copiare le cartelle /bin, /sbin, /lib e /lib64), quindi montare la USB e modificare le variabili d'ambiente per utilizzare quei binari:
Una volta configurato il sistema per utilizzare binari buoni e noti, puoi iniziare a estrarre alcune informazioni di base:
Informazioni sospette
Durante l'ottenimento delle informazioni di base dovresti controllare cose strane come:
I processi root di solito vengono eseguiti con PIDS bassi, quindi se trovi un processo root con un PID elevato potresti sospettare
Controlla i login registrati degli utenti senza una shell all'interno di
/etc/passwd
Controlla gli hash delle password all'interno di
/etc/shadow
per gli utenti senza una shell
Dump della memoria
Per ottenere la memoria del sistema in esecuzione, è consigliabile utilizzare LiME. Per compilarlo, è necessario utilizzare lo stesso kernel che sta utilizzando la macchina vittima.
Ricorda che non puoi installare LiME o qualsiasi altra cosa nella macchina vittima in quanto apporterà diverse modifiche ad essa
Quindi, se hai una versione identica di Ubuntu, puoi utilizzare apt-get install lime-forensics-dkms
In altri casi, è necessario scaricare LiME da github e compilarlo con gli header del kernel corretti. Per ottenere gli header del kernel esatti della macchina vittima, puoi semplicemente copiare la directory /lib/modules/<versione del kernel>
sulla tua macchina e quindi compilare LiME utilizzandoli:
LiME supporta 3 formati:
Raw (ogni segmento concatenato insieme)
Padded (come raw, ma con zeri nei bit a destra)
Lime (formato consigliato con metadati)
LiME può anche essere utilizzato per inviare il dump tramite rete anziché memorizzarlo sul sistema utilizzando qualcosa del genere: path=tcp:4444
Imaging del disco
Spegnimento
Innanzitutto, sarà necessario spegnere il sistema. Questo non è sempre un'opzione poiché a volte il sistema sarà un server di produzione che l'azienda non può permettersi di spegnere.
Ci sono 2 modi per spegnere il sistema, uno spegnimento normale e uno spegnimento improvviso. Il primo permetterà ai processi di terminare come al solito e al filesystem di essere sincronizzato, ma permetterà anche al possibile malware di distruggere le prove. L'approccio "scollegare la spina" potrebbe comportare una certa perdita di informazioni (non molte informazioni andranno perse poiché abbiamo già preso un'immagine della memoria) e il malware non avrà alcuna opportunità di fare nulla al riguardo. Pertanto, se si sospetta la presenza di un malware, eseguire semplicemente il comando sync
sul sistema e staccare la spina.
Creazione di un'immagine del disco
È importante notare che prima di collegare il computer a qualcosa relativo al caso, è necessario assicurarsi che sia montato in sola lettura per evitare la modifica di qualsiasi informazione.
Analisi preliminare dell'immagine del disco
Immaginare un'immagine del disco senza ulteriori dati.
Utilizza Trickest per creare e automatizzare facilmente flussi di lavoro supportati dagli strumenti della comunità più avanzati al mondo. Ottieni l'accesso oggi:
Ricerca di Malware Conosciuti
File di Sistema Modificati
Linux offre strumenti per garantire l'integrità dei componenti di sistema, fondamentali per individuare file potenzialmente problematici.
Sistemi basati su RedHat: Utilizza
rpm -Va
per un controllo completo.Sistemi basati su Debian:
dpkg --verify
per la verifica iniziale, seguito dadebsums | grep -v "OK$"
(dopo aver installatodebsums
conapt-get install debsums
) per identificare eventuali problemi.
Rilevatori di Malware/Rootkit
Leggi la seguente pagina per scoprire gli strumenti che possono essere utili per trovare malware:
pageMalware AnalysisRicerca dei Programmi Installati
Per cercare efficacemente i programmi installati sia nei sistemi Debian che RedHat, considera di sfruttare i log di sistema e i database insieme a controlli manuali nelle directory comuni.
Per Debian, ispeziona
/var/lib/dpkg/status
e/var/log/dpkg.log
per ottenere dettagli sull'installazione dei pacchetti, utilizzandogrep
per filtrare informazioni specifiche.Gli utenti RedHat possono interrogare il database RPM con
rpm -qa --root=/mntpath/var/lib/rpm
per elencare i pacchetti installati.
Per scoprire software installato manualmente o al di fuori di questi gestori di pacchetti, esplora directory come /usr/local
, /opt
, /usr/sbin
, /usr/bin
, /bin
e /sbin
. Combina l'elenco delle directory con comandi specifici del sistema per identificare eseguibili non associati a pacchetti conosciuti, migliorando la ricerca di tutti i programmi installati.
Usa Trickest per creare facilmente e automatizzare flussi di lavoro supportati dagli strumenti della community più avanzati al mondo. Ottieni l'accesso oggi:
Recupero dei binari in esecuzione eliminati
Immagina un processo eseguito da /tmp/exec e successivamente eliminato. È possibile estrarlo
Ispezionare le posizioni di avvio automatico
Compiti pianificati
Servizi
Percorsi in cui un malware potrebbe essere installato come servizio:
/etc/inittab: Chiama gli script di inizializzazione come rc.sysinit, indirizzando ulteriormente agli script di avvio.
/etc/rc.d/ e /etc/rc.boot/: Contengono script per l'avvio dei servizi, quest'ultimo trovato nelle versioni più vecchie di Linux.
/etc/init.d/: Usato in alcune versioni di Linux come Debian per memorizzare gli script di avvio.
I servizi possono anche essere attivati tramite /etc/inetd.conf o /etc/xinetd/, a seconda della variante di Linux.
/etc/systemd/system: Una directory per gli script del sistema e del gestore dei servizi.
/etc/systemd/system/multi-user.target.wants/: Contiene collegamenti ai servizi che dovrebbero essere avviati in un runlevel multiutente.
/usr/local/etc/rc.d/: Per servizi personalizzati o di terze parti.
~/.config/autostart/: Per applicazioni di avvio automatico specifiche dell'utente, che possono essere un nascondiglio per malware mirati agli utenti.
/lib/systemd/system/: File di unità predefiniti a livello di sistema forniti dai pacchetti installati.
Moduli del Kernel
I moduli del kernel Linux, spesso utilizzati dai malware come componenti rootkit, vengono caricati all'avvio del sistema. Le directory e i file critici per questi moduli includono:
/lib/modules/$(uname -r): Contiene i moduli per la versione del kernel in esecuzione.
/etc/modprobe.d: Contiene file di configurazione per controllare il caricamento dei moduli.
/etc/modprobe e /etc/modprobe.conf: File per le impostazioni globali dei moduli.
Altre Posizioni di Avvio Automatico
Linux utilizza vari file per eseguire automaticamente programmi all'accesso dell'utente, potenzialmente ospitando malware:
/etc/profile.d/*, /etc/profile, e /etc/bash.bashrc: Eseguiti per qualsiasi accesso utente.
~/.bashrc, ~/.bash_profile, ~/.profile, e ~/.config/autostart: File specifici dell'utente che vengono eseguiti al loro accesso.
/etc/rc.local: Eseguito dopo che tutti i servizi di sistema sono stati avviati, segnando la fine della transizione a un ambiente multiutente.
Esamina i Log
I sistemi Linux tengono traccia delle attività degli utenti e degli eventi di sistema attraverso vari file di log. Questi log sono fondamentali per identificare accessi non autorizzati, infezioni da malware e altri incidenti di sicurezza. I file di log chiave includono:
/var/log/syslog (Debian) o /var/log/messages (RedHat): Catturano messaggi e attività a livello di sistema.
/var/log/auth.log (Debian) o /var/log/secure (RedHat): Registrano tentativi di autenticazione, accessi riusciti e falliti.
Utilizza
grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log
per filtrare eventi di autenticazione rilevanti./var/log/boot.log: Contiene messaggi di avvio del sistema.
/var/log/maillog o /var/log/mail.log: Registri delle attività del server di posta elettronica, utili per tracciare servizi correlati alla posta elettronica.
/var/log/kern.log: Memorizza messaggi del kernel, inclusi errori e avvisi.
/var/log/dmesg: Contiene messaggi dei driver del dispositivo.
/var/log/faillog: Registra tentativi di accesso falliti, utili nelle indagini di violazioni di sicurezza.
/var/log/cron: Registra l'esecuzione dei job cron.
/var/log/daemon.log: Traccia le attività dei servizi in background.
/var/log/btmp: Documenta tentativi di accesso falliti.
/var/log/httpd/: Contiene log degli errori e di accesso di Apache HTTPD.
/var/log/mysqld.log o /var/log/mysql.log: Registri delle attività del database MySQL.
/var/log/xferlog: Registra trasferimenti di file FTP.
/var/log/: Controlla sempre i log inaspettati qui.
I log di sistema e i sottosistemi di audit di Linux possono essere disabilitati o eliminati in caso di intrusione o incidente da malware. Poiché i log nei sistemi Linux generalmente contengono alcune delle informazioni più utili sulle attività dannose, gli intrusi li eliminano regolarmente. Pertanto, quando si esaminano i file di log disponibili, è importante cercare interruzioni o voci fuori sequenza che potrebbero essere un'indicazione di eliminazione o manomissione.
Linux mantiene uno storico dei comandi per ciascun utente, memorizzato in:
~/.bash_history
~/.zsh_history
~/.zsh_sessions/*
~/.python_history
~/.*_history
Inoltre, il comando last -Faiwx
fornisce un elenco degli accessi degli utenti. Controllalo per accessi sconosciuti o inaspettati.
Controlla i file che possono concedere privilegi aggiuntivi:
Esamina
/etc/sudoers
per privilegi utente non anticipati che potrebbero essere stati concessi.Esamina
/etc/sudoers.d/
per privilegi utente non anticipati che potrebbero essere stati concessi.Esamina
/etc/groups
per identificare eventuali appartenenze o autorizzazioni di gruppo insolite.Esamina
/etc/passwd
per identificare eventuali appartenenze o autorizzazioni di gruppo insolite.
Alcune app generano anche i propri log:
SSH: Esamina ~/.ssh/authorized_keys e ~/.ssh/known_hosts per connessioni remote non autorizzate.
Desktop Gnome: Controlla ~/.recently-used.xbel per i file recentemente accessati tramite le applicazioni Gnome.
Firefox/Chrome: Controlla la cronologia del browser e i download in ~/.mozilla/firefox o ~/.config/google-chrome per attività sospette.
VIM: Esamina ~/.viminfo per dettagli sull'uso, come percorsi dei file accessati e cronologia delle ricerche.
Open Office: Controlla gli accessi ai documenti recenti che potrebbero indicare file compromessi.
FTP/SFTP: Esamina i log in ~/.ftp_history o ~/.sftp_history per trasferimenti di file che potrebbero essere non autorizzati.
MySQL: Indaga su ~/.mysql_history per le query MySQL eseguite, rivelando potenzialmente attività non autorizzate sul database.
Less: Analizza ~/.lesshst per la cronologia dell'uso, inclusi file visualizzati e comandi eseguiti.
Git: Esamina ~/.gitconfig e il progetto .git/logs per le modifiche ai repository.
Log USB
usbrip è un piccolo software scritto in Python 3 puro che analizza i file di log di Linux (/var/log/syslog*
o /var/log/messages*
a seconda della distribuzione) per costruire tabelle storiche degli eventi USB.
È interessante conoscere tutti gli USB utilizzati e sarà più utile se si dispone di un elenco autorizzato di USB per individuare "eventi di violazione" (l'uso di USB che non sono all'interno di tale elenco).
Installazione
Esempi
Ulteriori esempi e informazioni all'interno del github: https://github.com/snovvcrash/usbrip
Utilizza Trickest per creare facilmente e automatizzare flussi di lavoro supportati dagli strumenti della comunità più avanzati al mondo. Ottieni l'accesso oggi:
Esaminare gli Account Utente e le Attività di Accesso
Esamina i file /etc/passwd, /etc/shadow e i log di sicurezza per individuare nomi o account insoliti creati e/o utilizzati in prossimità di eventi non autorizzati noti. Controlla anche possibili attacchi di forza bruta sudo. Inoltre, controlla file come /etc/sudoers e /etc/groups per privilegi inaspettati assegnati agli utenti. Infine, cerca account senza password o con password facilmente indovinabili.
Esaminare il File System
Analisi delle Strutture del File System nell'Investigazione di Malware
Nell'indagine sugli incidenti di malware, la struttura del file system è una fonte cruciale di informazioni, rivelando sia la sequenza degli eventi che il contenuto del malware. Tuttavia, gli autori di malware stanno sviluppando tecniche per ostacolare questa analisi, come la modifica dei timestamp dei file o l'evitare il file system per lo storage dei dati.
Per contrastare questi metodi anti-forensi, è essenziale:
Condurre un'analisi dettagliata della timeline utilizzando strumenti come Autopsy per visualizzare le timeline degli eventi o
mactime
di Sleuth Kit per dati dettagliati sulla timeline.Investigare script inaspettati nel $PATH del sistema, che potrebbero includere script shell o PHP utilizzati dagli attaccanti.
Esaminare
/dev
per file atipici, poiché tradizionalmente contiene file speciali, ma potrebbe contenere file correlati al malware.Cercare file o directory nascosti con nomi come ".. " (punto punto spazio) o "..^G" (punto punto control-G), che potrebbero nascondere contenuti dannosi.
Identificare file setuid root utilizzando il comando:
find / -user root -perm -04000 -print
Questo trova file con permessi elevati, che potrebbero essere sfruttati dagli attaccanti.Esaminare i timestamp di cancellazione nelle tabelle degli inode per individuare cancellazioni di file di massa, indicando possibilmente la presenza di rootkit o trojan.
Ispezionare gli inode consecutivi per individuare file dannosi vicini dopo averne identificato uno, poiché potrebbero essere stati posizionati insieme.
Controllare le directory binarie comuni (/bin, /sbin) per file modificati di recente, poiché potrebbero essere stati alterati dal malware.
Si noti che un attaccante può modificare l'orario per far apparire i file legittimi, ma non può modificare l'inode. Se si scopre che un file indica che è stato creato e modificato allo stesso orario degli altri file nella stessa cartella, ma l'inode è inesperatamente più grande, allora i timestamp di quel file sono stati modificati.
Confrontare file di diverse versioni del filesystem
Riepilogo del Confronto delle Versioni del Filesystem
Per confrontare le versioni del filesystem e individuare le modifiche, utilizziamo comandi semplificati git diff
:
Per trovare nuovi file, confronta due directory:
Per contenuto modificato, elenca le modifiche ignorando le linee specifiche:
Per rilevare i file eliminati:
Opzioni di filtro (
--diff-filter
) aiutano a restringere le modifiche specifiche come file aggiunti (A
), eliminati (D
), o modificati (M
).A
: File aggiuntiC
: File copiatiD
: File eliminatiM
: File modificatiR
: File rinominatiT
: Cambiamenti di tipo (ad esempio, file a symlink)U
: File non unitiX
: File sconosciutiB
: File corrotti
Riferimenti
Libro: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides
Usa Trickest per costruire facilmente e automatizzare flussi di lavoro supportati dagli strumenti della comunità più avanzati al mondo. Ottieni l'accesso oggi:
Last updated