Linux Forensics
Last updated
Last updated
Usa Trickest per costruire e automatizzare flussi di lavoro alimentati dagli strumenti comunitari più avanzati al mondo. Accedi oggi:
Prima di tutto, è consigliato avere una USB con binaries e librerie ben noti (puoi semplicemente prendere ubuntu e copiare le cartelle /bin, /sbin, /lib, e /lib64), poi monta la USB e modifica le variabili di ambiente per usare quei binaries:
Una volta configurato il sistema per utilizzare binari buoni e noti, puoi iniziare a estrarre alcune informazioni di base:
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
Per ottenere la memoria del sistema in esecuzione, è consigliato utilizzare LiME. Per compilarlo, devi utilizzare lo stesso kernel che la macchina vittima sta utilizzando.
Ricorda che non puoi installare LiME o qualsiasi altra cosa nella macchina vittima poiché apporterà diverse modifiche ad essa
Quindi, se hai una versione identica di Ubuntu puoi usare apt-get install lime-forensics-dkms
In altri casi, devi 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 poi compilare LiME utilizzandoli:
LiME supporta 3 formati:
Raw (ogni segmento concatenato insieme)
Padded (stesso del raw, ma con zeri nei bit a destra)
Lime (formato raccomandato con metadati)
LiME può anche essere utilizzato per inviare il dump tramite rete invece di memorizzarlo sul sistema utilizzando qualcosa come: path=tcp:4444
Prima di tutto, è 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, un spegnimento normale e uno spegnimento "stacca la spina". Il primo permetterà ai processi di terminare come al solito e al filesystem di essere synchronizzato, ma permetterà anche al possibile malware di distruggere le prove. L'approccio "stacca la spina" può 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 qualcosa al riguardo. Pertanto, se sospetti che ci possa essere un malware, esegui semplicemente il comando sync
sul sistema e stacca la spina.
È importante notare che prima di collegare il computer a qualsiasi cosa relativa al caso, è necessario essere certi che verrà montato come sola lettura per evitare di modificare qualsiasi informazione.
Immaginare un'immagine del disco senza ulteriori dati.
Usa Trickest per costruire e automatizzare flussi di lavoro facilmente, alimentati dagli strumenti della comunità più avanzati al mondo. Accedi oggi:
Linux offre strumenti per garantire l'integrità dei componenti di sistema, cruciali per individuare file potenzialmente problematici.
Sistemi basati su RedHat: Usa rpm -Va
per un controllo completo.
Sistemi basati su Debian: dpkg --verify
per una verifica iniziale, seguita da debsums | grep -v "OK$"
(dopo aver installato debsums
con apt-get install debsums
) per identificare eventuali problemi.
Leggi la pagina seguente per conoscere gli strumenti che possono essere utili per trovare malware:
Per cercare efficacemente programmi installati su sistemi Debian e RedHat, considera di sfruttare i log di sistema e i database insieme a controlli manuali in directory comuni.
Per Debian, ispeziona /var/lib/dpkg/status
e /var/log/dpkg.log
per ottenere dettagli sulle installazioni dei pacchetti, utilizzando grep
per filtrare informazioni specifiche.
Gli utenti di 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 le liste delle directory con comandi specifici del sistema per identificare eseguibili non associati a pacchetti noti, migliorando la tua ricerca per tutti i programmi installati.
Usa Trickest per costruire e automatizzare flussi di lavoro facilmente, alimentati dagli strumenti della comunità più avanzati al mondo. Accedi Oggi:
Immagina un processo che è stato eseguito da /tmp/exec e poi eliminato. È possibile estrarlo
Percorsi in cui un malware potrebbe essere installato come servizio:
/etc/inittab: Chiama 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, il secondo si trova nelle versioni Linux più vecchie.
/etc/init.d/: Utilizzato in alcune versioni di Linux come Debian per memorizzare script di avvio.
I servizi possono anche essere attivati tramite /etc/inetd.conf o /etc/xinetd/, a seconda della variante Linux.
/etc/systemd/system: Una directory per gli script del gestore di sistema e servizi.
/etc/systemd/system/multi-user.target.wants/: Contiene collegamenti ai servizi che dovrebbero essere avviati in un livello di esecuzione multi-utente.
/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 all'utente.
/lib/systemd/system/: File di unità predefiniti a livello di sistema forniti dai pacchetti installati.
I moduli del kernel Linux, spesso utilizzati dal 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 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.
Linux utilizza vari file per eseguire automaticamente programmi al login dell'utente, potenzialmente ospitando malware:
/etc/profile.d/*, /etc/profile, e /etc/bash.bashrc: Eseguiti per qualsiasi login utente.
~/.bashrc, ~/.bash_profile, ~/.profile, e ~/.config/autostart: File specifici dell'utente che vengono eseguiti al loro login.
/etc/rc.local: Viene eseguito dopo che tutti i servizi di sistema sono stati avviati, segnando la fine della transizione a un ambiente multiutente.
I sistemi Linux tracciano le attività degli utenti e gli 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 i tentativi di autenticazione, accessi riusciti e falliti.
Usa 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: Registra le attività del server di posta, utile per tracciare i servizi legati alla posta elettronica.
/var/log/kern.log: Memorizza messaggi del kernel, inclusi errori e avvisi.
/var/log/dmesg: Contiene messaggi del driver del dispositivo.
/var/log/faillog: Registra i tentativi di accesso falliti, utile per le indagini su violazioni della sicurezza.
/var/log/cron: Registra le esecuzioni dei job cron.
/var/log/daemon.log: Traccia le attività dei servizi in background.
/var/log/btmp: Documenta i tentativi di accesso falliti.
/var/log/httpd/: Contiene log di errore e accesso di Apache HTTPD.
/var/log/mysqld.log o /var/log/mysql.log: Registra le attività del database MySQL.
/var/log/xferlog: Registra i trasferimenti di file FTP.
/var/log/: Controlla sempre per log inaspettati qui.
I log di sistema Linux e i sottosistemi di audit potrebbero essere disabilitati o eliminati in un'intrusione o in un incidente di malware. Poiché i log sui sistemi Linux contengono generalmente alcune delle informazioni più utili sulle attività dannose, gli intrusi li eliminano di routine. Pertanto, quando si esaminano i file di log disponibili, è importante cercare lacune o voci fuori ordine che potrebbero essere un'indicazione di eliminazione o manomissione.
Linux mantiene una cronologia dei comandi per ogni utente, memorizzata in:
~/.bash_history
~/.zsh_history
~/.zsh_sessions/*
~/.python_history
~/.*_history
Inoltre, il comando last -Faiwx
fornisce un elenco di accessi degli utenti. Controllalo per accessi sconosciuti o inaspettati.
Controlla i file che possono concedere privilegi extra:
Rivedi /etc/sudoers
per privilegi utente non previsti che potrebbero essere stati concessi.
Rivedi /etc/sudoers.d/
per privilegi utente non previsti che potrebbero essere stati concessi.
Esamina /etc/groups
per identificare eventuali appartenenze a gruppi o permessi insoliti.
Esamina /etc/passwd
per identificare eventuali appartenenze a gruppi o permessi insoliti.
Alcune app generano anche i propri log:
SSH: Esamina ~/.ssh/authorized_keys e ~/.ssh/known_hosts per connessioni remote non autorizzate.
Gnome Desktop: Controlla ~/.recently-used.xbel per file recentemente accessi tramite applicazioni Gnome.
Firefox/Chrome: Controlla la cronologia del browser e i download in ~/.mozilla/firefox o ~/.config/google-chrome per attività sospette.
VIM: Rivedi ~/.viminfo per dettagli sull'uso, come percorsi di file accessi e cronologia delle ricerche.
Open Office: Controlla l'accesso ai documenti recenti che potrebbero indicare file compromessi.
FTP/SFTP: Rivedi i log in ~/.ftp_history o ~/.sftp_history per trasferimenti di file che potrebbero essere non autorizzati.
MySQL: Indaga ~/.mysql_history per query MySQL eseguite, rivelando potenzialmente attività non autorizzate nel database.
Less: Analizza ~/.lesshst per la cronologia dell'uso, inclusi file visualizzati e comandi eseguiti.
Git: Esamina ~/.gitconfig e il progetto .git/logs per modifiche ai repository.
usbrip è un piccolo software scritto in puro Python 3 che analizza i file di log di Linux (/var/log/syslog*
o /var/log/messages*
a seconda della distribuzione) per costruire tabelle di cronologia degli eventi USB.
È interessante conoscere tutte le USB che sono state utilizzate e sarà più utile se hai un elenco autorizzato di USB per trovare "eventi di violazione" (l'uso di USB che non sono all'interno di quell'elenco).
More examples and info inside the github: https://github.com/snovvcrash/usbrip
Use Trickest per costruire e automatizzare flussi di lavoro facilmente, alimentati dagli strumenti comunitari più avanzati al mondo. Get Access Today:
Esaminare il /etc/passwd, /etc/shadow e i log di sicurezza per nomi o account insoliti creati e/o utilizzati in prossimità di eventi non autorizzati noti. Inoltre, controllare possibili attacchi di brute-force sudo. Inoltre, controllare file come /etc/sudoers e /etc/groups per privilegi inaspettati concessi agli utenti. Infine, cercare account con nessuna password o password facilmente indovinabili.
Quando si indagano 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 modificare i timestamp dei file o evitare il file system per l'archiviazione dei dati.
Per contrastare questi metodi anti-forensi, è essenziale:
Condurre un'analisi approfondita della timeline utilizzando strumenti come Autopsy per visualizzare le timeline degli eventi o mactime
di Sleuth Kit per dati dettagliati sulla timeline.
Indagare su 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 ospitare file relativi al malware.
Cercare file o directory nascosti con nomi come ".. " (punto punto spazio) o "..^G" (punto punto controllo-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 abusati dagli attaccanti.
Esaminare i timestamp di cancellazione nelle tabelle inode per individuare cancellazioni di massa di file, che potrebbero indicare la presenza di rootkit o trojan.
Ispezionare inodes consecutivi per file dannosi vicini dopo averne identificato uno, poiché potrebbero essere stati collocati insieme.
Controllare le directory binarie comuni (/bin, /sbin) per file recentemente modificati, poiché questi potrebbero essere stati alterati da malware.
Nota che un attaccante può modificare il tempo per far apparire i file legittimi, ma non può modificare l'inode. Se scopri che un file indica che è stato creato e modificato allo stesso tempo degli altri file nella stessa cartella, ma l'inode è inaspettatamente più grande, allora i timestamp di quel file sono stati modificati.
Per confrontare le versioni del filesystem e individuare le modifiche, utilizziamo comandi git diff
semplificati:
Per trovare nuovi file, confronta due directory:
Per contenuti modificati, elenca le modifiche ignorando righe specifiche:
Per rilevare file eliminati:
Le opzioni di filtro (--diff-filter
) aiutano a restringere a modifiche specifiche come file aggiunti (A
), eliminati (D
) o modificati (M
).
A
: File aggiunti
C
: File copiati
D
: File eliminati
M
: File modificati
R
: File rinominati
T
: Cambiamenti di tipo (ad es., file a symlink)
U
: File non uniti
X
: File sconosciuti
B
: File danneggiati
Libro: Guida sul campo per la forense dei malware per sistemi Linux: Guide di forense digitale
Usa Trickest per costruire e automatizzare flussi di lavoro facilmente, alimentati dagli strumenti comunitari più avanzati al mondo. Ottieni accesso oggi:
Impara e pratica il Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)