Feature extraction z danych sieciowych

Dowiedz się, jak skutecznie ekstraktować cechy z danych sieciowych – od logów i pakietów po adresy IP. Klucz do analizy zagrożeń i detekcji anomalii.
22 kwietnia 2025
blog
Poziom: Średnio zaawansowany

Artykuł przeznaczony dla analityków bezpieczeństwa, administratorów sieci oraz osób uczących się data science/ML, które chcą praktycznie tworzyć cechy z danych sieciowych.

Z tego artykułu dowiesz się

  • Czym jest ekstrakcja cech w danych sieciowych i dlaczego jest kluczowa dla analizy oraz uczenia maszynowego?
  • Jakie typy danych sieciowych (logi, pakiety, netflow, adresy IP) wykorzystuje się do tworzenia cech i czym się różnią?
  • Jakie metody przygotowania danych (preprocessing, normalizacja) oraz przykładowe cechy wspierają detekcję anomalii i analizę zagrożeń?

Wprowadzenie do ekstrakcji cech w kontekście danych sieciowych

Współczesne sieci komputerowe generują ogromne ilości danych, obejmujących logi systemowe, przepływy sieciowe, pakiety, adresy IP oraz informacje o sesjach. Aby skutecznie analizować takie dane w kontekście wykrywania zagrożeń, monitorowania wydajności czy uczenia maszynowego, kluczowe staje się zastosowanie procesu ekstrakcji cech.

Ekstrakcja cech (ang. feature extraction) to proces przekształcania surowych danych w uporządkowaną reprezentację, która może być bezpośrednio wykorzystana przez algorytmy analityczne i modele uczenia maszynowego. W przypadku danych sieciowych oznacza to identyfikowanie i selekcjonowanie istotnych informacji, takich jak liczba połączeń z danego hosta, średni czas trwania sesji czy liczba unikalnych portów docelowych.

Dane sieciowe mają charakter wielowymiarowy, nieliniowy i dynamiczny, co stawia przed procesem ekstrakcji cech szereg wyzwań. Kluczowe różnice w stosunku do innych typów danych (np. obrazów czy tekstu) wynikają m.in. z czasowej natury zdarzeń sieciowych, zmienności źródeł oraz konieczności zachowania kontekstu komunikacji.

Ekstrakcja cech z danych sieciowych znajduje zastosowanie w wielu obszarach, takich jak:

  • Wykrywanie anomalii: identyfikacja nietypowych wzorców ruchu sieciowego mogących świadczyć o ataku lub błędzie konfiguracyjnym,
  • Analiza zachowania użytkowników i hostów: np. klasyfikacja maszyn w sieci w oparciu o ich aktywność,
  • Optymalizacja infrastruktury: poprzez zrozumienie wykorzystania pasma, częstości występowania błędów czy przepływów międzysegmentowych.

Ekstrakcja cech stanowi zatem niezbędny krok w analizie danych sieciowych, umożliwiając przekształcenie złożonych i często nieczytelnych informacji w wartościowy i zrozumiały materiał analityczny.

Pojęcie cech w uczeniu maszynowym i ich znaczenie

W kontekście uczenia maszynowego cechy (ang. features) stanowią podstawowe jednostki informacji, które są wykorzystywane przez modele do analizy i podejmowania decyzji. Cechy to mierzalne właściwości lub atrybuty danych, które umożliwiają opisanie obserwacji w sposób zrozumiały dla algorytmów uczenia.

Proces ekstrakcji cech polega na wydobyciu istotnych informacji z surowych danych i przekształceniu ich w ustrukturyzowaną formę. W przypadku danych sieciowych mogą to być np. liczba połączeń z danego adresu IP, czas trwania sesji, liczba przesłanych pakietów czy typ użytego protokołu. Takie cechy są następnie wykorzystywane jako wejście do modeli analitycznych, takich jak klasyfikatory czy algorytmy wykrywania anomalii.

Odpowiedni dobór cech ma kluczowe znaczenie dla skuteczności modelu. Dobrze zaprojektowane cechy umożliwiają modelowi lepsze zrozumienie struktury danych, co przekłada się na trafniejsze prognozy czy decyzje. Z kolei cechy nieistotne lub zawierające szum mogą obniżyć jakość modelu i prowadzić do błędów predykcyjnych.

W praktyce ekstrakcja cech może być procesem ręcznym, opartym na wiedzy eksperckiej, lub automatycznym – realizowanym z użyciem algorytmów typu deep learning czy metod statystycznych. W kontekście danych sieciowych dobór odpowiednich cech zależy m.in. od rodzaju danych (np. logi, pakiety) oraz celu analizy (np. detekcja ataków, klasyfikacja ruchu).

Rodzaje danych sieciowych wykorzystywanych do ekstrakcji cech

Ekstrakcja cech z danych sieciowych opiera się na analizie różnych typów danych generowanych w trakcie komunikacji sieciowej. Każdy z tych typów dostarcza unikalnych informacji, które mogą być przetwarzane i przekształcane w cechy opisujące zachowania lub właściwości ruchu sieciowego. Poniżej przedstawiono najważniejsze kategorie danych wykorzystywanych w tym kontekście:

  • Dane z logów (logi systemowe i aplikacyjne) – obejmują zapisy zdarzeń generowane przez systemy operacyjne, serwery, firewalle, IDS/IPS czy aplikacje. Są często wykorzystywane do wykrywania nieautoryzowanej aktywności, analizowania zdarzeń bezpieczeństwa oraz śledzenia historii działań użytkowników.
  • Dane z pakietów sieciowych (raw packets) – zawierają surowe dane przesyłane między hostami, w tym nagłówki protokołów (np. TCP, IP) i fragmenty danych aplikacyjnych. Analiza pakietów pozwala na dokładne odwzorowanie komunikacji i identyfikację anomalii na poziomie protokołów.
  • Przepływy sieciowe (netflows) – są to zagregowane informacje o komunikacji pomiędzy adresami IP w ustalonym czasie. Przykładowe systemy generujące dane przepływowe to NetFlow, sFlow i IPFIX. Format ten jest mniej szczegółowy niż pakiety, ale bardziej efektywny pod względem przechowywania i analizy statystycznej.
  • Adresy IP, porty i identyfikatory protokołów – stanowią podstawowe metadane transmisji w sieci. Mogą być wykorzystywane do budowania cech geolokalizacyjnych, identyfikujących usługi, czy rozróżniających ruch wewnętrzny i zewnętrzny.
  • Dane o czasie i częstotliwości – obejmują znaczniki czasowe, częstotliwość połączeń, czas trwania sesji itp. Te dane są często używane do określania wzorców zachowań i detekcji odstępstw od normy.

Aby lepiej zobrazować różnice między typami danych, poniższa tabela prezentuje porównanie ich cech:

Typ danych Poziom szczegółowości Typowe zastosowania
Logi systemowe Średni Audyt, analiza zdarzeń, wykrywanie incydentów
Pakiety sieciowe Wysoki Analiza protokołów, rekonstrukcja sesji, wykrywanie exploitów
Dane przepływowe Niski / średni Statystyka ruchu, detekcja anomalii, monitoring obciążenia
Adresy i porty Niski Kategoryzacja ruchu, filtry bezpieczeństwa
Dane czasowe Średni Analiza zachowań, korelacja zdarzeń

Przykładowy fragment kodu w Pythonie ilustrujący podstawowy odczyt przepływów z pliku CSV może wyglądać następująco:

import pandas as pd

# Wczytanie danych przepływowych
netflow_df = pd.read_csv("netflow_data.csv")

# Podgląd podstawowych informacji
print(netflow_df.head())

W zależności od rodzaju danych, proces ekstrakcji cech będzie różnił się zakresem możliwych transformacji i analiz. Wybór odpowiedniego źródła danych jest zatem kluczowy dla efektywności całego procesu. Jeśli chcesz praktycznie nauczyć się tych zagadnień, sprawdź nasze szkolenie Feature extraction z danych sieciowych.

Metody ekstrakcji cech z logów, pakietów i adresów IP

Ekstrakcja cech z danych sieciowych obejmuje analizę różnych źródeł informacji, z których najczęściej wykorzystywane to: logi systemowe i aplikacyjne, pakiety sieciowe oraz adresy IP. Każde z tych źródeł dostarcza innego typu danych i wymaga odmiennych podejść w procesie ekstrakcji cech, w zależności od celu analizy – czy to wykrywania anomalii, klasyfikacji ruchu czy analizy zagrożeń.

Logi (np. syslog, logi firewalli, serwerów www)

Logi to uporządkowane zapisy zdarzeń, które mogą zawierać informacje takie jak czas zdarzenia, źródłowy i docelowy adres IP, akcja (np. przyznanie dostępu, zablokowanie), kod błędu, itp. Ekstrakcja cech z logów obejmuje najczęściej:

  • Parsowanie i ekstrakcję kluczowych pól (np. timestamp, user-agent, status code)
  • Agregację zdarzeń (np. liczba żądań z jednego IP w danym przedziale czasowym)
  • Tworzenie cech czasowych (np. pora dnia, dzień tygodnia)
import pandas as pd
from datetime import datetime

# Przykład: ekstrakcja godziny z logu
log_df['timestamp'] = pd.to_datetime(log_df['timestamp'])
log_df['hour'] = log_df['timestamp'].dt.hour

Pakiety sieciowe (np. dane z tcpdump, pcap)

Pakiety dostarczają szczegółowych informacji o ruchu sieciowym, takich jak protokoły warstwy transportowej (TCP/UDP), rozmiary pakietów, flagi, porty źródłowe i docelowe. Z danych pakietowych można pozyskać:

  • Cechy statystyczne (średnia/mediana rozmiaru pakietu, liczba pakietów na sesję)
  • Cechy protokołu (użyty protokół, kierunek transmisji)
  • Metadane sesyjne (czas trwania sesji, liczba pakietów w obu kierunkach)
from scapy.all import rdpcap

packets = rdpcap('example.pcap')
packet_lengths = [len(pkt) for pkt in packets]
avg_len = sum(packet_lengths) / len(packet_lengths)

Adresy IP i informacje pochodne

Adresy IP, same w sobie, mogą być źródłem wielu cech, szczególnie w połączeniu z danymi geolokalizacyjnymi lub reputacyjnymi. Typowe techniki ekstrakcji to:

  • Geolokalizacja IP (kraj, miasto, ASN)
  • Informacja o klasie adresu (publiczny/prywatny, IPv4/IPv6)
  • Agregacja ruchu według źródłowego lub docelowego IP
import geoip2.database

reader = geoip2.database.Reader('GeoLite2-City.mmdb')
response = reader.city('8.8.8.8')
print(response.country.name)  # np. "United States"

Podsumowanie porównawcze

Źródło danych Typowe cechy Zastosowanie
Logi Czas zdarzenia, status, typ żądania Analiza błędów, wykrywanie nadużyć
Pakiety Rozmiar, protokół, czas trwania sesji Klasyfikacja ruchu, analiza ataków
Adresy IP Geolokalizacja, typ IP, ASN Identyfikacja źródeł zagrożeń, analiza geograficzna

Każde źródło danych wnosi unikalne informacje, które – odpowiednio przekształcone w cechy – mogą znacząco zwiększyć skuteczność modeli uczenia maszynowego w analizie bezpieczeństwa sieciowego.

Przetwarzanie wstępne i normalizacja danych sieciowych

Skuteczna ekstrakcja cech z danych sieciowych wymaga odpowiedniego przygotowania danych. Przetwarzanie wstępne i normalizacja to dwa kluczowe etapy prowadzące do uzyskania spójnych, czystych i użytecznych danych wejściowych dla algorytmów analizy i uczenia maszynowego. Choć terminy te bywają używane zamiennie, pełnią różne role w procesie analitycznym.

Przetwarzanie wstępne

Przetwarzanie wstępne obejmuje działania mające na celu oczyszczenie i ustrukturyzowanie danych przed ich analizą. W kontekście danych sieciowych — takich jak logi systemowe, zrzuty pakietów czy strumienie NetFlow — typowe operacje obejmują:

  • Usuwanie duplikatów: eliminacja powtarzających się wpisów, które mogą zakłócać analizę.
  • Uzupełnianie brakujących danych: np. zastępowanie brakujących portów wartością domyślną lub interpolacją.
  • Parsowanie pól: rozdzielanie złożonych wartości, takich jak adresy IP z portami (192.168.1.10:443) na osobne kolumny.
  • Agregacja danych: łączenie wielu zdarzeń w jedną reprezentację — np. sumowanie liczby pakietów w danym połączeniu.

import pandas as pd

# Usunięcie duplikatów z danych logów
logs = pd.read_csv('network_logs.csv')
logs.drop_duplicates(inplace=True)

# Parsowanie adresów IP i portów
logs[['src_ip', 'src_port']] = logs['src'].str.split(':', expand=True)

Normalizacja danych

Normalizacja jest procesem przekształcania danych do wspólnej skali lub formatu, tak aby żaden atrybut nie dominował nad innymi wyłącznie ze względu na skalę jednostek. Jest to szczególnie istotne dla modeli uczących się, które są wrażliwe na zakres cech, takich jak kNN czy SVM. Przykładowe techniki normalizacji to:

  • Min-max scaling: przekształcenie wartości do przedziału [0,1]
  • Standaryzacja: przyjęcie rozkładu o średniej 0 i odchyleniu standardowym 1
  • Logarytmowanie: zmniejszenie wpływu bardzo dużych wartości (np. liczby bajtów w sesji)
Typ cechyPrzed normalizacjąPo normalizacji (min-max)
Liczba bajtów1500000.75
Czas trwania (ms)3000.3

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
logs[['bytes', 'duration']] = scaler.fit_transform(logs[['bytes', 'duration']])

Właściwe przygotowanie danych sieciowych poprzez przetwarzanie wstępne i normalizację jest fundamentem dalszej analizy i poprawnego działania algorytmów ekstrakcyjnych. Dobrze przetworzone dane ułatwiają identyfikację wzorców, anomalnych zachowań i cech charakterystycznych dla danych typów ruchu sieciowego. Jeśli chcesz pogłębić wiedzę z tego zakresu, sprawdź nasze szkolenie Feature extraction z danych sieciowych.

💡 Pro tip: Zbuduj powtarzalny pipeline: waliduj schemat, usuwaj duplikaty, parsuj IP i port do osobnych pól, a braki uzupełniaj według reguł domenowych. Skalowanie dopasuj wyłącznie na zbiorze treningowym i zapisz parametry (np. min/max, średnia i odchylenie standardowe), aby identycznie przekształcać dane w walidacji i produkcji.

Przykłady cech wykorzystywanych w analizie sieci

W procesie analizy danych sieciowych istotne jest zidentyfikowanie właściwych cech (features), które mogą być wykorzystane do efektywnego modelowania, wykrywania anomalii czy klasyfikacji ruchu. Cechy te mogą być wyodrębniane na różnych poziomach — od pojedynczych pakietów, przez połączenia sesyjne, aż po logi systemowe.

Poniżej przedstawiono wybrane przykłady cech, które często pojawiają się w kontekście analizy sieciowej:

  • Adresy IP źródłowe i docelowe – pozwalają identyfikować źródło oraz cel ruchu. Często wykorzystywane do profilowania aktywności lub detekcji nieautoryzowanego dostępu.
  • Porty źródłowe i docelowe – umożliwiają określenie rodzaju usługi (np. HTTP, SSH) i analizę wzorców komunikacji.
  • Protokół – informuje o typie użytej komunikacji (np. TCP, UDP, ICMP). Pomaga klasyfikować ruch i wykrywać nietypowe protokoły w kontekście danego środowiska.
  • Czas trwania połączenia – może wskazywać na sesje utrzymujące się nienaturalnie długo lub bardzo krótkie, co bywa symptomem ataków typu scan lub DoS.
  • Rozmiar pakietów – statystyki takie jak średnia, maksimum i odchylenie standardowe rozmiaru mogą ujawnić anomalie w transmisji danych.
  • Liczba pakietów wysłanych i odebranych – dysproporcje mogą sugerować nieprawidłowości, np. jednostronną komunikację lub transmisję danych.
  • Flagi TCP – zestaw flag (SYN, ACK, FIN, RST, itd.) może być używany do identyfikacji typów połączeń, prób nawiązania sesji lub skanowania portów.
  • Czas między pakietami (inter-arrival time) – cecha temporalna, która pomaga odróżnić regularny ruch od burstów lub ataków typu flooding.
  • Ilość unikalnych adresów IP w danym przedziale czasu – może służyć jako wskaźnik skanowania sieci lub rozproszonego ataku.

Dla lepszego zobrazowania poniżej przedstawiono uproszczony przykład przetwarzania danych sieciowych w Pythonie z wykorzystaniem biblioteki pandas, gdzie ekstraktujemy kilka cech z ramki danych:

import pandas as pd

# Przykładowa ramka danych z logiem ruchu sieciowego
data = pd.DataFrame({
    'src_ip': ['192.168.1.2', '192.168.1.3'],
    'dst_ip': ['10.0.0.5', '10.0.0.5'],
    'protocol': ['TCP', 'UDP'],
    'packet_size': [1500, 65],
    'duration': [0.5, 0.01]
})

# Wyciągnięcie kilku przykładowych cech
data['is_large_packet'] = data['packet_size'] > 1000
print(data[['src_ip', 'dst_ip', 'protocol', 'is_large_packet']])

Poniższa tabela podsumowuje grupy cech z uwzględnieniem ich przykładowych zastosowań:

Kategoria cechy Przykłady Typowe zastosowanie
Adresowe src_ip, dst_ip, src_port, dst_port Identyfikacja źródła i celu ruchu
Czasowe duration, inter-arrival time Analiza wzorców czasowych, detekcja anomalii
Protokolarne protocol, flags Charakteryzacja typu ruchu
Rozmiarowe packet_size, byte_count Określanie objętości transmisji

Dobór odpowiednich cech zależy od konkretnego przypadku użycia i rodzaju analizowanego ruchu. Warto przy tym pamiętać, że kombinacja wielu cech często daje lepsze rezultaty niż analiza pojedynczych metryk.

Zastosowania ekstrakcji cech: detekcja anomalii i analiza zagrożeń

Ekstrakcja cech z danych sieciowych odgrywa kluczową rolę w systemach bezpieczeństwa informatycznego, umożliwiając skuteczne wykrywanie nietypowych zachowań oraz identyfikację potencjalnych zagrożeń. Dwa główne obszary zastosowań to detekcja anomalii oraz analiza zagrożeń.

Detekcja anomalii polega na identyfikacji odchyleń od znanych, normalnych wzorców ruchu sieciowego. Cechy takie jak liczba połączeń w jednostce czasu, długości pakietów czy kierunki komunikacji mogą wskazywać na nieautoryzowane działania, jak np. skanowanie portów lub próby włamań. Modele uczące się na podstawie normalnych danych potrafią wykryć anomalie nawet wtedy, gdy nie są one jednoznacznie sklasyfikowane jako znane ataki.

Analiza zagrożeń z kolei koncentruje się na identyfikacji, klasyfikacji i korelacji znanych zagrożeń w ruchu sieciowym. Ekstrahowane cechy mogą wskazywać na obecność złośliwego oprogramowania, aktywność botnetów lub działania phishingowe. W tym przypadku stosuje się często podejścia oparte na nadzorowanym uczeniu maszynowym, gdzie cechy pochodzące z wcześniejszych incydentów bezpieczeństwa służą do budowy modeli predykcyjnych.

Oba podejścia – choć różnią się celami i metodami – opierają się na tej samej podstawie: precyzyjnej i przemyślanej ekstrakcji cech z surowych danych sieciowych. To właśnie odpowiednio dobrane cechy decydują o skuteczności systemów detekcyjnych i analitycznych w dynamicznym środowisku sieciowym.

💡 Pro tip: Stosuj cechy agregowane w wielu oknach czasowych (np. 1 min, 15 min, 24 h) oraz baseline per host/usługę, co redukuje fałszywe alarmy w detekcji anomalii. Do analizy zagrożeń utrzymuj aktualne IOC i słowniki cech oraz okresowo retrenuj modele, by nadążać za dryfem i nowymi TTP.

Podsumowanie i najlepsze praktyki

Ekstrakcja cech z danych sieciowych stanowi kluczowy etap w procesie analizy bezpieczeństwa, monitoringu sieci oraz budowy systemów opartych na uczeniu maszynowym. Jej głównym celem jest przekształcenie surowych i często nieustrukturyzowanych danych w reprezentacje liczbowo-opisowe, które można bezpośrednio wykorzystać w modelach analitycznych.

Dane sieciowe charakteryzują się dużą zmiennością i złożonością, dlatego wymagają szczególnego podejścia do ekstrakcji cech. Inaczej bowiem analizuje się cechy z poziomu pakietów sieciowych, inaczej z logów systemowych, a jeszcze inaczej z danych metrycznych takich jak adresy IP czy znaczniki czasu. Każde z tych źródeł może ujawniać inne aspekty aktywności w sieci – od podstawowych statystyk, przez wzorce zachowań, aż po oznaki potencjalnych incydentów.

W praktyce skuteczna ekstrakcja cech wymaga nie tylko zrozumienia kontekstu analizowanych danych, ale także stosowania sprawdzonych strategii i narzędzi. Do najważniejszych najlepszych praktyk należą:

  • Selekcja informacji: nie każda dostępna dana sieciowa przekłada się na użyteczną cechę – należy wybierać te, które mają potencjalną wartość predykcyjną lub opisową.
  • Uwzględnianie kontekstu czasowego: cechy oparte na oknach czasowych lub zależnościach sekwencyjnych często lepiej oddają dynamikę ruchu sieciowego.
  • Standaryzacja i normalizacja: różne skale wartości mogą zakłócać działanie algorytmów – preprocessing danych jest konieczny dla zachowania spójności.
  • Redukcja wymiarowości: zachowanie balansu między bogactwem cech a ich licznością zwiększa efektywność i interpretowalność modeli.
  • Testowanie i walidacja cech: warto weryfikować skuteczność wyodrębnionych cech przy pomocy prostych modeli klasyfikacyjnych lub regresyjnych.

Wdrażając te zasady, możliwe jest nie tylko zwiększenie jakości danych wejściowych, ale także poprawa skuteczności wykrywania anomalii, identyfikowania zagrożeń czy przewidywania zdarzeń w sieci. Nawet proste cechy, odpowiednio dobrane i przetworzone, mogą znacząco wpłynąć na wyniki analizy.

icon

Formularz kontaktowyContact form

Imię *Name
NazwiskoSurname
Adres e-mail *E-mail address
Telefon *Phone number
UwagiComments