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ś:
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:
Kiedy skonfigurowano system do użycia dobrych i znanych binariów, można rozpocząć wydobywanie podstawowych informacji:
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:
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.
Wstępna analiza obrazu dysku
Tworzenie obrazu dysku bez dodatkowych danych.
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ępniedebsums | grep -v "OK$"
(po zainstalowaniudebsums
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 AnalysisWyszukiwanie 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ącgrep
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.
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
Sprawdź lokalizacje automatycznego uruchamiania
Zaplanowane zadania
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
Przykłady
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.
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:
Dla zmodyfikowanej zawartości, wymień zmiany, ignorując konkretne linie:
Wykrywanie usuniętych plików:
Opcje filtrowania (
--diff-filter
) pomagają zawęzić wyniki do konkretnych zmian, takich jak dodane (A
), usunięte (D
) lub zmodyfikowane (M
) pliki.A
: Dodane plikiC
: Skopiowane plikiD
: Usunięte plikiM
: Zmodyfikowane plikiR
: Zmienione nazwy plikówT
: Zmiany typu (np. plik na symlink)U
: Niescalone plikiX
: Nieznane plikiB
: Uszkodzone pliki
Odnośniki
Książka: Przewodnik po śledzeniu malware dla systemów Linux: Przewodniki po śledzeniu cyfrowym
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