Linux Forensics

Użyj Trickest, aby łatwo tworzyć i automatyzować zadania przy użyciu najbardziej zaawansowanych narzędzi społeczności. Zdobądź dostęp już dziś:

Zacznij od zera i zostań ekspertem od hakowania AWS dzięki htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Początkowe zbieranie informacji

Podstawowe informacje

Po pierwsze, zaleca się posiadanie pendrive'a z znanymi dobrymi binarkami i bibliotekami (możesz po prostu pobrać Ubuntu i skopiować foldery /bin, /sbin, /lib i /lib64), następnie zamontuj pendrive i zmodyfikuj zmienne środowiskowe, aby używać tych binarek:

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

Kiedy skonfigurowano system do użycia dobrych i znanych binariów, można rozpocząć wydobywanie podstawowych informacji:

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

Podejrzane informacje

Podczas uzyskiwania podstawowych informacji należy sprawdzić dziwne rzeczy, takie jak:

  • Procesy Roota zazwyczaj działają z niskimi PID-ami, więc jeśli znajdziesz proces Roota z dużym PID-em, możesz podejrzewać

  • Sprawdź zarejestrowane logowania użytkowników bez powłoki wewnątrz /etc/passwd

  • Sprawdź hashe haseł wewnątrz /etc/shadow dla użytkowników bez powłoki

Zrzut pamięci

Aby uzyskać pamięć działającego systemu, zaleca się użycie LiME. Aby go skompilować, musisz użyć tego samego jądra, którego używa maszyna ofiary.

Pamiętaj, że nie możesz zainstalować LiME ani niczego innego na maszynie ofiary, ponieważ spowoduje to kilka zmian

Więc jeśli masz identyczną wersję Ubuntu, możesz użyć apt-get install lime-forensics-dkms W innych przypadkach musisz pobrać LiME z githuba i skompilować go z odpowiednimi nagłówkami jądra. Aby uzyskać dokładne nagłówki jądra maszyny ofiary, możesz po prostu skopiować katalog /lib/modules/<wersja jądra> na swoją maszynę, a następnie skompilować LiME, korzystając z nich:

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

LiME obsługuje 3 formaty:

  • Surowy (każdy segment połączony razem)

  • Wyściełany (to samo co surowy, ale z zerami na prawej stronie)

  • Lime (zalecany format z metadanymi)

LiME można również użyć do wysłania zrzutu przez sieć zamiast przechowywania go w systemie, używając czegoś takiego jak: path=tcp:4444

Tworzenie obrazu dysku

Wyłączenie

Po pierwsze, będziesz musiał wyłączyć system. Nie zawsze jest to opcja, ponieważ czasami system będzie serwerem produkcyjnym, którego firma nie może sobie pozwolić na wyłączenie. Istnieją 2 sposoby wyłączenia systemu, normalne wyłączenie i wyłączenie "wyciągnij wtyczkę". Pierwsze pozwoli procesom zakończyć działanie jak zwykle i zsynchronizować system plików, ale pozwoli również ewentualnemu malware na zniszczenie dowodów. Podejście "wyciągnij wtyczkę" może wiązać się z pewną stratą informacji (nie wiele informacji zostanie utraconych, ponieważ już zrobiliśmy obraz pamięci) i malware nie będzie miał szansy na cokolwiek. Dlatego jeśli podejrzewasz, że może być malware, po prostu wykonaj polecenie sync na systemie i wyciągnij wtyczkę.

Tworzenie obrazu dysku

Ważne jest zauważenie, że przed podłączeniem komputera do czegokolwiek związanego z sprawą, musisz upewnić się, że będzie on zamontowany jako tylko do odczytu, aby uniknąć modyfikowania jakichkolwiek informacji.

#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

Wstępna analiza obrazu dysku

Tworzenie obrazu dysku bez dodatkowych danych.

#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

Korzystaj z Trickest, aby łatwo tworzyć i automatyzować przepływy pracy oparte na najbardziej zaawansowanych narzędziach społeczności na świecie. Otrzymaj Dostęp Dziś:

Wyszukiwanie znanego oprogramowania złośliwego

Zmodyfikowane pliki systemowe

Linux oferuje narzędzia do zapewnienia integralności komponentów systemowych, co jest kluczowe dla wykrywania potencjalnie problematycznych plików.

  • Systemy oparte na RedHat: Użyj rpm -Va dla kompleksowej kontroli.

  • Systemy oparte na Debian: dpkg --verify dla wstępnej weryfikacji, a następnie debsums | grep -v "OK$" (po zainstalowaniu debsums za pomocą apt-get install debsums) w celu zidentyfikowania ewentualnych problemów.

Detektory oprogramowania złośliwego/rootkitów

Przeczytaj następną stronę, aby dowiedzieć się o narzędziach, które mogą być przydatne do wykrywania oprogramowania złośliwego:

pageMalware Analysis

Wyszukiwanie zainstalowanych programów

Aby skutecznie wyszukiwać zainstalowane programy zarówno w systemach Debian, jak i RedHat, rozważ wykorzystanie dzienników systemowych i baz danych w połączeniu z ręcznymi sprawdzeniami w powszechnych katalogach.

  • Dla Debiana, sprawdź /var/lib/dpkg/status i /var/log/dpkg.log, aby uzyskać szczegóły dotyczące instalacji pakietów, używając grep do filtrowania konkretnych informacji.

  • Użytkownicy RedHat mogą zapytać bazę danych RPM za pomocą rpm -qa --root=/mntpath/var/lib/rpm, aby wyświetlić zainstalowane pakiety.

Aby odkryć oprogramowanie zainstalowane ręcznie lub poza tymi menedżerami pakietów, przejrzyj katalogi takie jak /usr/local, /opt, /usr/sbin, /usr/bin, /bin i /sbin. Połącz listy katalogów z poleceniami specyficznymi dla systemu, aby zidentyfikować pliki wykonywalne niepowiązane z znanymi pakietami, zwiększając tym samym skuteczność wyszukiwania wszystkich zainstalowanych programów.

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

Użyj Trickest, aby łatwo tworzyć i automatyzować zadania przy użyciu najbardziej zaawansowanych narzędzi społeczności. Otrzymaj dostęp już dziś:

Odzyskiwanie Usuniętych Uruchamianych Binaries

Wyobraź sobie proces, który został uruchomiony z /tmp/exec, a następnie usunięty. Możliwe jest jego wydobycie

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

Sprawdź lokalizacje automatycznego uruchamiania

Zaplanowane zadania

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/

Usługi

Ścieżki, w których złośliwe oprogramowanie może zostać zainstalowane jako usługa:

  • /etc/inittab: Wywołuje skrypty inicjalizacyjne, takie jak rc.sysinit, kierując dalej do skryptów uruchamiania.

  • /etc/rc.d/ i /etc/rc.boot/: Zawierają skrypty do uruchamiania usług, przy czym te drugie znajdują się w starszych wersjach systemu Linux.

  • /etc/init.d/: Używane w niektórych wersjach Linuxa, takich jak Debian, do przechowywania skryptów uruchamiania.

  • Usługi mogą również być aktywowane za pomocą /etc/inetd.conf lub /etc/xinetd/, w zależności od wariantu systemu Linux.

  • /etc/systemd/system: Katalog dla skryptów systemowych i menedżera usług.

  • /etc/systemd/system/multi-user.target.wants/: Zawiera odnośniki do usług, które powinny być uruchamiane w wieloużytkownikowym poziomie uruchamiania.

  • /usr/local/etc/rc.d/: Dla niestandardowych lub zewnętrznych usług.

  • ~/.config/autostart/: Dla aplikacji uruchamianych automatycznie dla konkretnego użytkownika, co może być miejscem ukrycia dla złośliwego oprogramowania ukierunkowanego na użytkownika.

  • /lib/systemd/system/: Pliki jednostek domyślnych dla całego systemu dostarczane przez zainstalowane pakiety.

Moduły jądra

Moduły jądra Linux, często wykorzystywane przez złośliwe oprogramowanie jako komponenty rootkitów, są ładowane podczas uruchamiania systemu. Istotne katalogi i pliki dla tych modułów to:

  • /lib/modules/$(uname -r): Zawiera moduły dla działającej wersji jądra.

  • /etc/modprobe.d: Zawiera pliki konfiguracyjne do kontrolowania ładowania modułów.

  • /etc/modprobe i /etc/modprobe.conf: Pliki dla globalnych ustawień modułów.

Inne lokalizacje automatycznego uruchamiania

Linux wykorzystuje różne pliki do automatycznego uruchamiania programów po zalogowaniu użytkownika, potencjalnie ukrywając złośliwe oprogramowanie:

  • /etc/profile.d/*, /etc/profile i /etc/bash.bashrc: Wykonywane dla każdego logowania użytkownika.

  • ~/.bashrc, ~/.bash_profile, ~/.profile i ~/.config/autostart: Pliki specyficzne dla użytkownika, które są uruchamiane po ich zalogowaniu.

  • /etc/rc.local: Uruchamiany po uruchomieniu wszystkich usług systemowych, oznaczając zakończenie przejścia do środowiska wieloużytkownikowego.

Sprawdzanie logów

Systemy Linux śledzą aktywności użytkowników i zdarzenia systemowe za pomocą różnych plików dziennika. Te dzienniki są kluczowe dla identyfikacji nieautoryzowanego dostępu, infekcji złośliwym oprogramowaniem i innych incydentów związanych z bezpieczeństwem. Kluczowe pliki dziennika obejmują:

  • /var/log/syslog (Debian) lub /var/log/messages (RedHat): Zbierają komunikaty i aktywności na poziomie systemu.

  • /var/log/auth.log (Debian) lub /var/log/secure (RedHat): Rejestrują próby uwierzytelnienia, udane i nieudane logowania.

  • Użyj grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log do filtrowania istotnych zdarzeń uwierzytelniania.

  • /var/log/boot.log: Zawiera komunikaty uruchamiania systemu.

  • /var/log/maillog lub /var/log/mail.log: Rejestrują aktywności serwera poczty e-mail, przydatne do śledzenia usług związanych z e-mailem.

  • /var/log/kern.log: Przechowuje komunikaty jądra, w tym błędy i ostrzeżenia.

  • /var/log/dmesg: Zawiera komunikaty sterownika urządzenia.

  • /var/log/faillog: Rejestruje nieudane próby logowania, pomagając w dochodzeniach dotyczących naruszeń bezpieczeństwa.

  • /var/log/cron: Rejestruje wykonania zadań cron.

  • /var/log/daemon.log: Śledzi aktywności usług w tle.

  • /var/log/btmp: Dokumentuje nieudane próby logowania.

  • /var/log/httpd/: Zawiera dzienniki błędów i dostępu Apache HTTPD.

  • /var/log/mysqld.log lub /var/log/mysql.log: Rejestrują aktywności bazy danych MySQL.

  • /var/log/xferlog: Rejestruje transfery plików FTP.

  • /var/log/: Zawsze sprawdzaj tutaj nieoczekiwane dzienniki.

Dzienniki systemowe i podsystemy audytu Linux mogą być wyłączone lub usunięte w przypadku włamania lub incydentu związanego z złośliwym oprogramowaniem. Ponieważ dzienniki w systemach Linux zazwyczaj zawierają najbardziej przydatne informacje o działaniach złośliwych, intruzi rutynowo je usuwają. Dlatego podczas analizy dostępnych plików dziennika ważne jest sprawdzenie luk lub nieuporządkowanych wpisów, które mogą wskazywać na usunięcie lub manipulację.

Linux przechowuje historię poleceń dla każdego użytkownika, zapisaną w:

  • ~/.bash_history

  • ~/.zsh_history

  • ~/.zsh_sessions/*

  • ~/.python_history

  • ~/.*_history

Ponadto polecenie last -Faiwx dostarcza listę logowań użytkowników. Sprawdź go pod kątem nieznanych lub nieoczekiwanych logowań.

Sprawdź pliki, które mogą przyznać dodatkowe uprawnienia:

  • Przejrzyj /etc/sudoers w poszukiwaniu nieoczekiwanych uprawnień użytkownika, które mogły zostać przyznane.

  • Przejrzyj /etc/sudoers.d/ w poszukiwaniu nieoczekiwanych uprawnień użytkownika, które mogły zostać przyznane.

  • Sprawdź /etc/groups, aby zidentyfikować niezwykłe przynależności do grup lub uprawnienia.

  • Sprawdź /etc/passwd, aby zidentyfikować niezwykłe przynależności do grup lub uprawnienia.

Niektóre aplikacje generują również swoje własne dzienniki:

  • SSH: Sprawdź ~/.ssh/authorized_keys i ~/.ssh/known_hosts w poszukiwaniu nieautoryzowanych połączeń zdalnych.

  • Pulpit Gnome: Sprawdź ~/.recently-used.xbel w poszukiwaniu niedawno używanych plików za pomocą aplikacji Gnome.

  • Firefox/Chrome: Sprawdź historię przeglądarki i pobierane pliki w ~/.mozilla/firefox lub ~/.config/google-chrome w poszukiwaniu podejrzanych aktywności.

  • VIM: Przejrzyj ~/.viminfo w poszukiwaniu szczegółów dotyczących użytkowania, takich jak ścieżki dostępu do plików i historia wyszukiwania.

  • Open Office: Sprawdź ostatni dostęp do dokumentów, który może wskazywać na skompromitowane pliki.

  • FTP/SFTP: Przejrzyj dzienniki w ~/.ftp_history lub ~/.sftp_history w poszukiwaniu transferów plików, które mogą być nieautoryzowane.

  • MySQL: Zbadaj ~/.mysql_history w poszukiwaniu wykonanych zapytań MySQL, potencjalnie ujawniających nieautoryzowane działania w bazie danych.

  • Less: Analizuj ~/.lesshst w poszukiwaniu historii użytkowania, w tym przeglądanych plików i wykonanych poleceń.

  • Git: Sprawdź ~/.gitconfig i projekt .git/logs w poszukiwaniu zmian w repozytoriach.

Dzienniki USB

usbrip to niewielkie oprogramowanie napisane w czystym Pythonie 3, które analizuje pliki dziennika systemu Linux (/var/log/syslog* lub /var/log/messages* w zależności od dystrybucji) w celu tworzenia tabel historii zdarzeń USB.

Interesujące jest poznanie wszystkich używanych urządzeń USB i będzie to bardziej przydatne, jeśli masz autoryzowaną listę urządzeń USB do znalezienia "zdarzeń naruszenia" (użycie urządzeń USB, które nie znajdują się na tej liście).

Instalacja

pip3 install usbrip
usbrip ids download #Download USB ID database

Przykłady

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

Więcej przykładów i informacji znajdziesz na githubie: https://github.com/snovvcrash/usbrip

Korzystaj z Trickest, aby łatwo tworzyć i automatyzować przepływy pracy z wykorzystaniem najbardziej zaawansowanych narzędzi społecznościowych na świecie. Otrzymaj dostęp już dziś:

Przejrzyj Konta Użytkowników i Aktywności Logowania

Sprawdź pliki /etc/passwd, /etc/shadow oraz dzienniki bezpieczeństwa pod kątem nietypowych nazw lub kont utworzonych i/lub używanych w pobliżu znanych nieautoryzowanych zdarzeń. Sprawdź również możliwe ataki brute-force na sudo. Dodatkowo, sprawdź pliki takie jak /etc/sudoers i /etc/groups pod kątem nieoczekiwanych uprawnień nadanych użytkownikom. Na koniec, poszukaj kont bez hasła lub z łatwo odgadnialnymi hasłami.

Zbadaj System Plików

Analiza Struktur Systemu Plików w Śledztwie w Sprawie Malware

Podczas dochodzenia w sprawie incydentów związanych z malware, struktura systemu plików jest kluczowym źródłem informacji, ujawniającym zarówno sekwencję zdarzeń, jak i zawartość malware. Autorzy malware rozwijają jednak techniki utrudniające tę analizę, takie jak modyfikowanie znaczników czasowych plików lub unikanie systemu plików do przechowywania danych.

Aby przeciwdziałać tym antyforensycznym metodom, istotne jest:

  • Przeprowadzenie dokładnej analizy chronologicznej za pomocą narzędzi takich jak Autopsy do wizualizacji chronologii zdarzeń lub mactime z Sleuth Kit do uzyskania szczegółowych danych chronologicznych.

  • Zbadanie nieoczekiwanych skryptów w $PATH systemu, które mogą zawierać skrypty powłoki lub PHP używane przez atakujących.

  • Sprawdzenie /dev pod kątem nietypowych plików, ponieważ tradycyjnie zawiera on pliki specjalne, ale może zawierać pliki związane z malware.

  • Wyszukiwanie ukrytych plików lub katalogów o nazwach takich jak ".. " (kropka kropka spacja) lub "..^G" (kropka kropka control-G), które mogą ukrywać złośliwe treści.

  • Identyfikacja plików ustawionych jako setuid root za pomocą polecenia: find / -user root -perm -04000 -print Znajduje pliki z podwyższonymi uprawnieniami, które mogą być wykorzystane przez atakujących.

  • Przejrzenie znaczników czasu usuwania w tabelach inode, aby wykryć masowe usunięcia plików, co może wskazywać na obecność rootkitów lub trojanów.

  • Sprawdzenie kolejnych inode'ów w poszukiwaniu pobliskich złośliwych plików po zidentyfikowaniu jednego, ponieważ mogły zostać umieszczone razem.

  • Sprawdzenie wspólnych katalogów binarnych (/bin, /sbin) pod kątem niedawno zmodyfikowanych plików, ponieważ mogły zostać zmienione przez malware.

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

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

Zauważ, że atakujący może zmodyfikować czas, aby pliki wydawały się legitymacyjne, ale nie może zmienić inode. Jeśli zauważysz, że plik wskazuje, że został utworzony i zmodyfikowany o tej samej godzinie co reszta plików w tym samym folderze, ale inode jest niespodziewanie większy, to znaczy, że znaczniki czasu tego pliku zostały zmodyfikowane.

Porównywanie plików różnych wersji systemu plików

Podsumowanie porównania wersji systemu plików

Aby porównać wersje systemu plików i zlokalizować zmiany, używamy uproszczonych poleceń git diff:

  • Aby znaleźć nowe pliki, porównaj dwie katalogi:

git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
  • Dla zmodyfikowanej zawartości, wymień zmiany, ignorując konkretne linie:

git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
  • Wykrywanie usuniętych plików:

git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
  • Opcje filtrowania (--diff-filter) pomagają zawęzić wyniki do konkretnych zmian, takich jak dodane (A), usunięte (D) lub zmodyfikowane (M) pliki.

  • A: Dodane pliki

  • C: Skopiowane pliki

  • D: Usunięte pliki

  • M: Zmodyfikowane pliki

  • R: Zmienione nazwy plików

  • T: Zmiany typu (np. plik na symlink)

  • U: Niescalone pliki

  • X: Nieznane pliki

  • B: Uszkodzone pliki

Odnośniki

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Czy pracujesz w firmie zajmującej się cyberbezpieczeństwem? Chcesz zobaczyć swoją firmę reklamowaną na HackTricks? lub chcesz mieć dostęp do najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF? Sprawdź PLANY SUBSKRYPCYJNE!

Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium hacktricks i repozytorium hacktricks-cloud.

Użyj Trickest, aby łatwo tworzyć i automatyzować zadania przy użyciu najbardziej zaawansowanych narzędzi społeczności na świecie. Otrzymaj dostęp już dziś:

Last updated