Linux Forensics

Koristite Trickest da biste lako izgradili i automatizovali radne tokove pokretane najnaprednijim alatima zajednice. Pristupite danas:

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Inicijalno prikupljanje informacija

Osnovne informacije

Pre svega, preporučuje se da imate neki USB sa poznatim binarnim fajlovima i bibliotekama (možete jednostavno uzeti Ubuntu i kopirati foldere /bin, /sbin, /lib i /lib64), zatim montirajte USB, i izmenite env promenljive da biste koristili te binarne fajlove:

export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64

Kada ste konfigurisali sistem da koristi dobre i poznate binarne datoteke, možete početi izvlačiti osnovne informacije:

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

Sumnjive informacije

Prilikom dobijanja osnovnih informacija trebalo bi da proverite čudne stvari kao što su:

  • Root procesi obično se izvršavaju sa niskim PID-ovima, pa ako pronađete root proces sa velikim PID-om možete posumnjati

  • Proverite registrovane prijave korisnika bez shell-a unutar /etc/passwd

  • Proverite hash-ove lozinki unutar /etc/shadow za korisnike bez shell-a

Damp memorije

Za dobijanje memorije pokrenutog sistema, preporučuje se korišćenje LiME. Da biste ga kompajlirali, treba da koristite isti kernel koji koristi mašina žrtva.

Zapamtite da ne možete instalirati LiME ili bilo šta drugo na mašini žrtve jer će to izazvati nekoliko promena na njoj

Dakle, ako imate identičnu verziju Ubuntua, možete koristiti apt-get install lime-forensics-dkms U drugim slučajevima, morate preuzeti LiME sa github-a i kompajlirati ga sa odgovarajućim kernel headerima. Da biste dobili tačne kernel headere mašine žrtve, jednostavno kopirajte direktorijum /lib/modules/<verzija kernela> na svoju mašinu, a zatim kompajlirajte LiME koristeći ih:

make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"

LiME podržava 3 formata:

  • Sirovi (svaki segment je konkateniran zajedno)

  • Padded (isti kao sirovi, ali sa nulama na desnoj strani)

  • Lime (preporučeni format sa metapodacima)

LiME takođe može biti korišćen za slanje ispisa putem mreže umesto čuvanja na sistemu korišćenjem nečega poput: path=tcp:4444

Snimanje slike diska

Gašenje

Prvo, moraćete isključiti sistem. Ovo nije uvek opcija jer će nekada sistem biti serverski sistem koji kompanija ne može da priušti da isključi. Postoje 2 načina za gašenje sistema, normalno gašenje i gašenje "izvadi utikač". Prvi će dozvoliti procesima da se završe kao i obično i datotečnom sistemu da se sinhronizuje, ali će takođe dozvoliti mogućem malveru da uništi dokaze. Pristup "izvadi utikač" može doneti gubitak nekih informacija (neće biti mnogo izgubljenih informacija jer smo već uzeli sliku memorije) i malver neće imati priliku da uradi bilo šta povodom toga. Stoga, ako sumnjate da može biti malvera, jednostavno izvršite sync komandu na sistemu i izvucite utikač.

Pravljenje slike diska

Važno je napomenuti da pre nego što povežete svoj računar sa bilo čim što je povezano sa slučajem, morate biti sigurni da će biti montiran kao samo za čitanje kako biste izbegli menjanje bilo kakvih informacija.

#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

Predanaliza disk slike

Kreiranje slike diska bez dodatnih podataka.

#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

Koristite Trickest da biste lako izgradili i automatizovali radne tokove pokretane najnaprednijim alatima zajednice. Dobijte pristup danas:

Pretraga poznatih Malvera

Modifikovane sistem datoteke

Linux nudi alate za osiguravanje integriteta sistemskih komponenti, ključnih za otkrivanje potencijalno problematičnih datoteka.

  • Sistemi zasnovani na RedHat-u: Koristite rpm -Va za sveobuhvatnu proveru.

  • Sistemi zasnovani na Debian-u: dpkg --verify za početnu verifikaciju, zatim debsums | grep -v "OK$" (nakon instaliranja debsums sa apt-get install debsums) da identifikujete bilo kakve probleme.

Detektori Malvera/Rootkita

Pročitajte sledeću stranicu da biste saznali o alatima koji mogu biti korisni za pronalaženje malvera:

pageMalware Analysis

Pretraga instaliranih programa

Da biste efikasno pretraživali instalirane programe na Debian i RedHat sistemima, razmotrite korišćenje sistema logova i baza podataka zajedno sa ručnim proverama u uobičajenim direktorijumima.

  • Za Debian, pregledajte /var/lib/dpkg/status i /var/log/dpkg.log da biste dobili detalje o instalacijama paketa, koristeći grep za filtriranje specifičnih informacija.

  • Korisnici RedHat-a mogu upitati RPM bazu podataka sa rpm -qa --root=/mntpath/var/lib/rpm da bi dobili listu instaliranih paketa.

Da biste otkrili softver instaliran ručno ili van ovih upravljača paketima, istražite direktorijume poput /usr/local, /opt, /usr/sbin, /usr/bin, /bin, i /sbin. Kombinujte listanje direktorijuma sa sistemskim komandama kako biste identifikovali izvršne datoteke koje nisu povezane sa poznatim paketima, unapređujući tako pretragu svih instaliranih programa.

# 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>

Koristite Trickest da biste lako izgradili i automatizovali radne tokove pokretane najnaprednijim alatima zajednice. Pristupite danas:

Obnovite izbrisane pokrenute binarne datoteke

Zamislite proces koji je izvršen iz /tmp/exec a zatim izbrisan. Moguće je izvući ga

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

Pregled lokacija automatskog pokretanja

Zakazani zadaci

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/

Servisi

Putanje gde se zlonamerni softver može instalirati kao servis:

  • /etc/inittab: Poziva inicijalne skripte poput rc.sysinit, usmeravajući dalje ka skriptama za pokretanje.

  • /etc/rc.d/ i /etc/rc.boot/: Sadrže skripte za pokretanje servisa, pri čemu se ove potonje nalaze u starijim verzijama Linuxa.

  • /etc/init.d/: Koristi se u određenim verzijama Linuxa poput Debiana za čuvanje skripti za pokretanje.

  • Servisi se takođe mogu aktivirati putem /etc/inetd.conf ili /etc/xinetd/, u zavisnosti od varijante Linuxa.

  • /etc/systemd/system: Direktorijum za sistemske i upravljačke skripte servisa.

  • /etc/systemd/system/multi-user.target.wants/: Sadrži linkove ka servisima koji treba da se pokrenu u multi-korisničkom nivou.

  • /usr/local/etc/rc.d/: Za prilagođene ili servise trećih strana.

  • ~/.config/autostart/: Za aplikacije koje se automatski pokreću specifične za korisnika, što može biti skrovište za zlonamerni softver usmeren ka korisniku.

  • /lib/systemd/system/: Podrazumevane sistemski široko dostupne datoteke jedinica koje pružaju instalirani paketi.

Kernel Moduli

Linux kernel moduli, često korišćeni od strane zlonamernog softvera kao komponente rootkita, učitavaju se prilikom pokretanja sistema. Direktorijumi i datoteke ključne za ove module uključuju:

  • /lib/modules/$(uname -r): Čuva module za pokrenutu verziju kernela.

  • /etc/modprobe.d: Sadrži konfiguracione datoteke za kontrolu učitavanja modula.

  • /etc/modprobe i /etc/modprobe.conf: Datoteke za globalna podešavanja modula.

Ostale Lokacije za Automatsko Pokretanje

Linux koristi različite datoteke za automatsko izvršavanje programa prilikom prijave korisnika, potencijalno skrivajući zlonamerni softver:

  • /etc/profile.d/*, /etc/profile, i /etc/bash.bashrc: Izvršavaju se prilikom prijave bilo kog korisnika.

  • ~/.bashrc, ~/.bash_profile, ~/.profile, i ~/.config/autostart: Datoteke specifične za korisnika koje se pokreću prilikom njihove prijave.

  • /etc/rc.local: Pokreće se nakon što su svi sistemske servisi pokrenuti, označavajući kraj tranzicije ka multi-korisničkom okruženju.

Pregledajte Logove

Linux sistemi prate aktivnosti korisnika i događaje sistema putem različitih log datoteka. Ovi logovi su ključni za identifikaciju neovlašćenog pristupa, infekcija zlonamernim softverom i drugih sigurnosnih incidenata. Ključne log datoteke uključuju:

  • /var/log/syslog (Debian) ili /var/log/messages (RedHat): Snimaju sistemske poruke i aktivnosti.

  • /var/log/auth.log (Debian) ili /var/log/secure (RedHat): Beleže pokušaje autentifikacije, uspešne i neuspešne prijave.

  • Koristite grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log za filtriranje relevantnih autentifikacionih događaja.

  • /var/log/boot.log: Sadrži poruke o pokretanju sistema.

  • /var/log/maillog ili /var/log/mail.log: Beleže aktivnosti email servera, korisne za praćenje email-related servisa.

  • /var/log/kern.log: Čuva kernel poruke, uključujući greške i upozorenja.

  • /var/log/dmesg: Drži poruke upravljača uređaja.

  • /var/log/faillog: Beleži neuspele pokušaje prijave, pomažući u istraživanju sigurnosnih prekršaja.

  • /var/log/cron: Beleži izvršavanja cron poslova.

  • /var/log/daemon.log: Prati aktivnosti pozadinskih servisa.

  • /var/log/btmp: Dokumentuje neuspele pokušaje prijave.

  • /var/log/httpd/: Sadrži Apache HTTPD greške i pristupne logove.

  • /var/log/mysqld.log ili /var/log/mysql.log: Beleže MySQL aktivnosti baze podataka.

  • /var/log/xferlog: Beleži FTP prenose datoteka.

  • /var/log/: Uvek proverite ovde za neočekivane logove.

Linux sistemske logove i podsisteme za reviziju može biti onemogućeno ili obrisano u slučaju upada ili incidenta sa zlonamernim softverom. Budući da logovi na Linux sistemima generalno sadrže neke od najkorisnijih informacija o zlonamernim aktivnostima, napadači ih rutinski brišu. Stoga, prilikom pregleda dostupnih log datoteka, važno je tražiti praznine ili vanredne unose koji bi mogli biti indikacija brisanja ili manipulacije.

Linux čuva istoriju komandi za svakog korisnika, smeštenu u:

  • ~/.bash_history

  • ~/.zsh_history

  • ~/.zsh_sessions/*

  • ~/.python_history

  • ~/.*_history

Takođe, komanda last -Faiwx pruža listu korisničkih prijava. Proverite je za nepoznate ili neočekivane prijave.

Proverite datoteke koje mogu dati dodatne privilegije:

  • Pregledajte /etc/sudoers za neočekivane korisničke privilegije koje su možda dodeljene.

  • Pregledajte /etc/sudoers.d/ za neočekivane korisničke privilegije koje su možda dodeljene.

  • Ispitajte /etc/groups kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole.

  • Ispitajte /etc/passwd kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole.

Neki programi takođe generišu svoje logove:

  • SSH: Ispitajte ~/.ssh/authorized_keys i ~/.ssh/known_hosts za neovlašćene udaljene konekcije.

  • Gnome Desktop: Pogledajte ~/.recently-used.xbel za nedavno pristupljene datoteke putem Gnome aplikacija.

  • Firefox/Chrome: Proverite istoriju pretraživača i preuzimanja u ~/.mozilla/firefox ili ~/.config/google-chrome za sumnjive aktivnosti.

  • VIM: Pregledajte ~/.viminfo za detalje o korišćenju, poput putanja do pristupljenih datoteka i istorije pretrage.

  • Open Office: Proverite nedavni pristup dokumentima koji mogu ukazivati na kompromitovane datoteke.

  • FTP/SFTP: Pregledajte logove u ~/.ftp_history ili ~/.sftp_history za prenose datoteka koji bi mogli biti neovlašćeni.

  • MySQL: Istražite ~/.mysql_history za izvršene MySQL upite, što može otkriti neovlaštene aktivnosti baze podataka.

  • Less: Analizirajte ~/.lesshst za istoriju korišćenja, uključujući pregledane datoteke i izvršene komande.

  • Git: Ispitajte ~/.gitconfig i projekat .git/logs za promene u repozitorijumima.

USB Logovi

usbrip je mali softver napisan u čistom Pythonu 3 koji parsira Linux log datoteke (/var/log/syslog* ili /var/log/messages* u zavisnosti od distribucije) radi konstrukcije tabela istorije USB događaja.

Važno je znati sve USB-ove koji su korišćeni i biće korisnije ako imate autorizovanu listu USB-ova kako biste pronašli "događaje kršenja" (korišćenje USB-ova koji nisu na toj listi).

Instalacija

pip3 install usbrip
usbrip ids download #Download USB ID database

Primeri

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

Više primera i informacija možete pronaći na github-u: https://github.com/snovvcrash/usbrip

Koristite Trickest da biste lako kreirali i automatizovali radne tokove uz pomoć najnaprednijih alata zajednice. Pristupite danas:

Pregled Korisničkih Računa i Aktivnosti Prijavljivanja

Ispitajte /etc/passwd, /etc/shadow i bezbednosne dnevnike za neuobičajena imena ili naloge kreirane i/ili korišćene u blizini poznatih neovlašćenih događaja. Takođe, proverite moguće brute-force napade putem sudo-a. Takođe, proverite datoteke poput /etc/sudoers i /etc/groups za neočekivane privilegije date korisnicima. Na kraju, potražite naloge bez šifri ili sa lako pogodnim šiframa.

Ispitivanje Fajl Sistema

Analiza Struktura Fajl Sistema u Istraživanju Malvera

Prilikom istraživanja incidenata sa malverom, struktura fajl sistema je ključni izvor informacija, otkrivajući kako se događaji odvijaju i sadržaj malvera. Međutim, autori malvera razvijaju tehnike kako bi otežali ovu analizu, poput modifikacije vremena datoteka ili izbegavanja fajl sistema za skladištenje podataka.

Da biste se suprotstavili ovim anti-forenzičkim metodama, bitno je:

  • Sprovesti temeljnu analizu vremenske linije koristeći alate poput Autopsy za vizualizaciju vremenskih linija događaja ili Sleuth Kit's mactime za detaljne podatke o vremenskoj liniji.

  • Istražiti neočekivane skripte u $PATH sistemu, koje mogu uključivati skripte ljuske ili PHP skripte korišćene od strane napadača.

  • Ispitati /dev za atipične fajlove, jer tradicionalno sadrži posebne fajlove, ali može sadržati fajlove povezane sa malverom.

  • Tražiti skrivene fajlove ili direktorijume sa imenima poput ".. " (tačka tačka razmak) ili "..^G" (tačka tačka kontrola-G), koji bi mogli sakriti zlonamerni sadržaj.

  • Identifikovati setuid root fajlove korišćenjem komande: find / -user root -perm -04000 -print Ovo pronalazi fajlove sa povišenim dozvolama, koje napadači mogu zloupotrebiti.

  • Pregledati vremena brisanja u tabelama inode-a kako biste primetili masovna brisanja fajlova, što može ukazivati na prisustvo rootkita ili trojanca.

  • Ispitati uzastopne inode-e za bliske zlonamerne fajlove nakon identifikacije jednog, jer su možda postavljeni zajedno.

  • Proveriti zajedničke binarne direktorijume (/bin, /sbin) za nedavno modifikovane fajlove, jer ih malver može menjati.

# List recent files in a directory:
ls -laR --sort=time /bin```

# Sort files in a directory by inode:
ls -lai /bin | sort -n```

Imajte na umu da napadač može izmeniti vreme kako bi datoteke izgledale legitimno, ali ne može izmeniti inode. Ako primetite da datoteka pokazuje da je kreirana i izmenjena u istom vremenu kao i ostale datoteke u istom folderu, ali je inode neočekivano veći, onda su vremenske oznake te datoteke izmenjene.

Uporedite datoteke različitih verzija fajl sistema

Sažetak Uporedbe Verzija Fajl Sistema

Da biste uporedili verzije fajl sistema i locirali promene, koristimo pojednostavljene git diff komande:

  • Da biste pronašli nove datoteke, uporedite dva direktorijuma:

git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
  • Za izmenjen sadržaj, navedite promene ignorišući specifične linije:

git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
  • Za otkrivanje izbrisanih fajlova:

git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
  • Opcije filtriranja (--diff-filter) pomažu da se suzite na specifične promene poput dodatih (A), izbrisanih (D) ili izmenjenih (M) fajlova.

  • A: Dodati fajlovi

  • C: Kopirani fajlovi

  • D: Izbrisani fajlovi

  • M: Izmenjeni fajlovi

  • R: Preimenovani fajlovi

  • T: Promene tipa (npr. fajl u simboličku vezu)

  • U: Nespajani fajlovi

  • X: Nepoznati fajlovi

  • B: Oštećeni fajlovi

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Da li radite u kompaniji za kibernetičku bezbednost? Želite li da vidite svoju kompaniju reklamiranu na HackTricks? ili želite pristup najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF-u? Proverite PLANOVE ZA PRETPLATU!

Podelite svoje hakovanje trikove slanjem PR-ova na hacktricks repozitorijum i hacktricks-cloud repozitorijum.

Koristite Trickest da lako izgradite i automatizujete radne tokove pokretane najnaprednijim alatima zajednice na svetu. Dobijte pristup danas:

Last updated