Połączenia sieciowe w systemie Linux¶
Informacje o połączeniach sieciowych, nasłuchujących portach, tablicy ARP, regułach zapory sieciowej oraz routingu pochodzące z działającego systemu Linux, mogą pomóc między innymi w ustaleniu adresów IP infrastruktury wykorzystywanej przez atakującego.
NIE URUCHAMIAJ WYŁĄCZONEGO URZĄDZENIA
Jeżeli urządzenie było połączone z zaatakowaną domeną lub siecią, mogło zostać skompromitowane. W takim przypadku nie jest zalecane uruchomienie go przed ustaleniem zakresu incydentu. Należy uznać je za skompromitowane i poddać analizie. Uruchomienie takiego urządzenia może spowodować zaszyfrowanie danych przez szkodliwe oprogramowanie, nawet jeśli urządzenie jest odłączone od sieci wewnętrznej instytucji.
Jeżeli urządzenie nie jest objęte atakiem ransomware, samo uruchomienie systemu operacyjnego może nadpisać kluczowe dla analizy dane, takie jak dzienniki zdarzeń czy pliki usunięte przez atakującego.
Zalecanym rozwiązaniem jest przekazanie dysków z takiego urządzenia lub całego urządzenia do wyspecjalizowanej instytucji, która zabezpieczy dane znajdującie się na dyskach w sposób nie nadpisujący ich zawartości, bez uruchamiania systemu.
Wymagania¶
- Uruchomione urządzenie
- Dostęp do konta z uprawnieniami root
Wymagane narzędzia¶
- Czysty nośnik zewnętrzny przygotowany na zaufanym urządzeniu, zgodnie z instrukcją Przygotowanie nośnika
Opis poleceń wykorzystanych w procedurze
| Polecenie | Opis |
|---|---|
ss -tunap |
Wyświetla informacje o gniazdach sieciowych: połączeniach TCP (-t) i UDP (-u), wszystkie (-a), z numerami portów (-n), z powiązanymi procesami (-p). |
netstat -peanut |
Alternatywa dla ss. Wyświetla wszystkie gniazda TCP (-t) i UDP (-u), nasłuchujące i połączone (-a), z rozszerzonymi danymi (-e), numerami portów bez rozwiązywania nazw (-n) oraz powiązanymi procesami (-p). |
lsof -i -P -n -R +c 0 |
Wyświetla otwarte gniazda sieciowe (-i) z numerami portów (-P), bez tłumaczenia adresów na nazwy (-n), z identyfikatorem procesu nadrzędnego (-R) i pełną nazwą polecenia (+c 0). |
ip neigh |
Wyświetla tablicę ARP, czyli odwzorowanie adresów IP na adresy MAC urządzeń w sieci lokalnej. |
ip a / ifconfig -a |
Wyświetla adresy IP i stan interfejsów sieciowych, w tym interfejsów nieaktywnych. |
iptables-save / ip6tables-save |
Zabezpiecza reguły zapory sieciowej iptables/ip6tables w formacie możliwym do ponownego załadowania poleceniem. |
nft list ruleset |
Wyświetla pełny zestaw reguł nftables. |
ufw status verbose |
Wyświetla status i wszystkie reguły zapory UFW. |
firewall-cmd --list-all-zones |
Wyświetla konfigurację wszystkich stref zapory firewalld, w tym reguły, usługi i porty. |
ip route / ip -6 route |
Wyświetla tablicę routingu IPv4 i IPv6, określającą sposób kierowania pakietów do ich celów. |
ip rule / ip -6 rule |
Wyświetla reguły routingu, pozwalające na kierowanie ruchu różnymi trasami. |
date -u +%Y%m%dT%H%M%S-UTC |
Generuje bieżący znacznik czasu w strefie UTC. |
echo "..." >> $nosnik/error.log |
Dopisuje komunikat o rozpoczęciu i zakończeniu procedury do dziennika błędów na nośniku zewnętrznym. |
2>> $nosnik/error.log |
Przekierowuje strumień błędów polecenia do dziennika błędów na nośniku zewnętrznym. |
Procedura¶
Przed uruchomieniem polecenia należy spełnić poniższe warunki:
- powłoka systemowa jest uruchomiona z uprawnieniami roota.
- zmienna
$nosnikwskazuje na katalog docelowy na zewnętrznym nośniku, w przeciwnym wypadku należy przypisać ją poniższym poleceniem
Poniższe polecenia zabezpieczają informacje o aktualnej aktywności sieciowej badanego urządzenia oraz tablicę ARP.
Wykonanie jednego z trzech poniższych poleceń zapisze informacje o aktywnych połączeniach sieciowych.
echo "Rozpoczęcie zabezpieczania informacji o połączeniach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
ss -tunap > "$nosnik/connections_ss_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o połączeniach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
echo "Rozpoczęcie zabezpieczania informacji o połączeniach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
netstat -peanut > "$nosnik/connections_netstat_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o połączeniach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
echo "Rozpoczęcie zabezpieczania informacji o połączeniach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
lsof -i -P -n -R +c 0 > "$nosnik/connections_lsof_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o połączeniach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
Wykonanie poniższego polecenia zapisze informacje dotyczące tablicy ARP badanego urządzenia.
echo "Rozpoczęcie zabezpieczania informacji o tablicy ARP $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
ip neigh > "$nosnik/arp_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o tablicy ARP $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
Informacje o interfejsach sieciowych¶
Wykonanie jednego z dwóch poniższych poleceń zapisze informacje o aktualnym stanie interfejsów sieciowych badanego urządzenia.
echo "Rozpoczęcie zabezpieczania informacji o interfejsach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
ip a > "$nosnik/ip_addr_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o interfejsach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
echo "Rozpoczęcie zabezpieczania informacji o interfejsach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
ifconfig -a > "$nosnik/ifconfig_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o interfejsach sieciowych $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
Zapora sieciowa¶
Reguły zapory sieciowej określają, który ruch jest dozwolony, blokowany czy przekierowywany. Atakujący może modyfikować te reguły, aby otworzyć porty dla komunikacji z serwerem C2, zezwolić na połączenia z określonych adresów IP lub wyłączyć mechanizmy obronne. Zabezpieczenie konfiguracji zapory pozwala wykryć takie modyfikacje.
Różne dystrybucje Linux korzystają z różnych mechanizmów zapory. Poniższe polecenie zabezpiecza reguły ze wszystkich popularnych rozwiązań: iptables/ip6tables, nftables, ufw oraz firewalld. Narzędzia nieobecne w systemie wygenerują jedynie wpis w dzienniku błędów.
echo "Rozpoczęcie zabezpieczania informacji o zaporze sieciowej $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
iptables-save > "$nosnik/iptables_.txt" 2>>"$nosnik/error.log"
ip6tables-save > "$nosnik/ip6tables_.txt" 2>>"$nosnik/error.log"
nft list ruleset > "$nosnik/nftables_.txt" 2>>"$nosnik/error.log"
ufw status verbose > "$nosnik/ufw_.txt" 2>>"$nosnik/error.log"
firewall-cmd --list-all-zones > "$nosnik/firewalld_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o zaporze sieciowej $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
Routing¶
Tablica routingu określa, w jaki sposób pakiety sieciowe są kierowane do ich celów. Atakujący może modyfikować trasy routingu, aby przekierować ruch przez kontrolowany serwer.
echo "Rozpoczęcie zabezpieczania informacji o routingu $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
ip route > "$nosnik/routes_.txt" 2>>"$nosnik/error.log"
ip -6 route > "$nosnik/routes6_.txt" 2>>"$nosnik/error.log"
ip rule > "$nosnik/ip_rules_.txt" 2>>"$nosnik/error.log"
ip -6 rule > "$nosnik/ip6_rules_.txt" 2>>"$nosnik/error.log"
echo "Zakończenie zabezpieczania informacji o routingu $(date -u +%Y%m%dT%H%M%S-UTC)" >> "$nosnik/error.log"
Ostatnia aktualizacja artykułu: 2026-09-02.