Aktivitas jaringan dapat menunjukkan pola yang berbeda antara trafik normal dan trafik yang dikategorikan sebagai serangan. Dengan menganalisis data seperti jumlah paket, jumlah byte, protokol, dan durasi koneksi, kita dapat menemukan karakteristik trafik yang tidak biasa dan menjadikannya sebagai indikasi awal aktivitas mencurigakan.
Pada artikel ini digunakan UNSW-NB15 Testing Set untuk melakukan Exploratory Data Analysis (EDA) terhadap trafik jaringan. Analisis dilakukan menggunakan Python, Pandas, Matplotlib, dan Seaborn dengan melihat struktur dataset, distribusi aktivitas, protokol, karakteristik trafik, outlier, serta perbedaan antara aktivitas normal dan serangan.
Kenapa Kita Tidak Bisa Langsung Menyebut Sebuah Trafik sebagai Serangan?
Ketika melihat trafik jaringan yang sangat besar, kita mungkin langsung berpikir bahwa aktivitas tersebut mencurigakan. Masalahnya, trafik yang besar tidak selalu berarti serangan.
Sebuah server yang sedang digunakan oleh banyak pengguna juga dapat menghasilkan jumlah paket dan byte yang tinggi. Karena itu, diperlukan analisis terhadap data untuk mengetahui apakah aktivitas tersebut memang berbeda dari pola normal.
Mengenal Dataset UNSW-NB15
Dataset yang digunakan adalah UNSW-NB15, khususnya file:
UNSW_NB15_testing-set.parquetDataset tersebut berisi record aktivitas jaringan yang memiliki berbagai informasi seperti port, protokol, durasi koneksi, jumlah paket, jumlah byte, serta label yang menunjukkan apakah aktivitas tersebut normal atau termasuk serangan.
Beberapa kolom yang akan digunakan:
| Kolom | Keterangan |
|---|---|
sport | Port sumber |
dsport | Port tujuan |
proto | Protokol jaringan |
state | Status koneksi |
dur | Durasi koneksi |
sbytes | Jumlah byte dari sumber |
dbytes | Jumlah byte dari tujuan |
spkts | Jumlah paket dari sumber |
dpkts | Jumlah paket dari tujuan |
service | Layanan jaringan |
rate | Rate trafik |
attack_cat | Kategori aktivitas |
label | Label normal atau serangan |
Dengan memahami isi dataset terlebih dahulu, kita tidak hanya melihat angka, tetapi juga mengetahui informasi apa yang sebenarnya sedang kita analisis.
Bagaimana Cara Membaca Dataset yang Digunakan?
Dataset yang digunakan memiliki format .parquet. Untuk membacanya, kita dapat menggunakan Pandas.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_parquet("UNSW_NB15_testing-set.parquet")
df.head()
Melalui df.head(), kita dapat melihat bagaimana data disusun dan informasi apa saja yang terdapat pada setiap record.
Tahap ini memang terlihat sederhana, tetapi penting dilakukan sebelum analisis. Kita perlu mengetahui bentuk data terlebih dahulu sebelum menentukan analisis apa yang akan dilakukan.
Sebanyak Apa Data yang Sedang Kita Hadapi?
Setelah dataset berhasil dibaca, pertanyaan berikutnya adalah: seberapa besar data yang akan dianalisis?
Jumlah data dapat memengaruhi cara kita membaca hasil analisis. Karena itu, kita dapat melihat jumlah baris dan kolom menggunakan shape.
print("Jumlah baris :", df.shape[0])
print("Jumlah kolom :", df.shape[1])
Jumlah baris menunjukkan banyaknya record aktivitas jaringan, sedangkan jumlah kolom menunjukkan banyaknya fitur yang tersedia.
Dari sini kita sudah mendapatkan gambaran awal mengenai ukuran dataset yang akan dieksplorasi.
Apakah Dataset Ini Sudah Bersih untuk Dianalisis?
Sebelum mencari pola serangan, kita perlu memastikan bahwa data yang digunakan tidak memiliki masalah dasar seperti missing value atau data duplikat.
Apakah Ada Data yang Kosong?
Data kosong dapat memengaruhi hasil perhitungan maupun visualisasi. Oleh karena itu, kita perlu memeriksa jumlah missing value pada setiap kolom.
df.isnull().sum()
Jika hasilnya 0, berarti tidak ditemukan data kosong pada dataset.
Jika terdapat data kosong, jangan langsung menghapusnya. Kita perlu melihat terlebih dahulu kolom yang terdampak dan menentukan apakah data tersebut perlu ditangani.
Apakah Ada Data yang Sama?
Selain missing value, kita juga perlu memeriksa apakah terdapat baris yang memiliki isi sama di dalam dataset.
Untuk mengeceknya, gunakan:
df.duplicated().sum()
Artinya, terdapat 32.361 baris yang terdeteksi sebagai duplikat.
Untuk melihat perbandingannya dengan jumlah data awal, kita dapat menjalankan:
print("Jumlah data awal :", len(df))
print("Jumlah data unik :", len(df.drop_duplicates()))
print("Jumlah duplikat :", df.duplicated().sum())
Dari hasil tersebut, dataset awal memiliki 82.332 baris. Setelah baris yang terduplikasi tidak dihitung, terdapat 49.971 baris unik, sedangkan 32.361 baris terdeteksi sebagai duplikat.
Hasil ini cukup besar sehingga muncul pertanyaan: apakah semua data duplikat tersebut memang harus dihapus?
Tidak selalu.
Dalam analisis data, duplikasi perlu dilihat berdasarkan konteks dataset. Baris yang memiliki nilai sama belum tentu merupakan kesalahan data. Karena dataset merupakan kumpulan record trafik jaringan, kemunculan record dengan karakteristik yang sama dapat menjadi bagian dari data yang memang dikumpulkan.
Oleh karena itu, pada tahap ini kita tidak langsung menghapus data duplikat. Hasil pengecekan tersebut dicatat sebagai bagian dari kondisi dataset, kemudian analisis dilanjutkan menggunakan data yang tersedia.
Apakah Aktivitas Normal Lebih Banyak daripada Serangan?
Dataset UNSW-NB15 memiliki kolom label yang dapat digunakan untuk membedakan aktivitas normal dan aktivitas serangan.
Kita dapat melihat jumlah masing-masing label menggunakan:
df["label"].value_counts()
Kemudian membuat grafik:
df["label"].value_counts().plot(kind="bar")
plt.title("Distribusi Aktivitas Normal dan Serangan")
plt.xlabel("Label")
plt.ylabel("Jumlah Data")
plt.show()
Pada dataset ini:
0 = Normal
1 = AttackHasil tersebut memberi kita gambaran mengenai komposisi data.
Tetapi ada hal yang perlu diperhatikan. Mengetahui jumlah serangan belum memberi tahu kita serangan seperti apa yang terdapat di dalam dataset.
Apakah Semua Serangan Memiliki Karakteristik yang Sama?
Aktivitas yang diberi label serangan tidak selalu berasal dari jenis serangan yang sama. Untuk melihat kategorinya, kita dapat menggunakan kolom attack_cat.
df["attack_cat"].value_counts()
Kemudian membuat grafik:
df["attack_cat"].value_counts().plot(
kind="bar",
figsize=(10, 5)
)
plt.title("Distribusi Kategori Aktivitas")
plt.xlabel("Kategori")
plt.ylabel("Jumlah Aktivitas")
plt.xticks(rotation=45)
plt.show()
Dari hasil tersebut, kategori Normal memiliki jumlah data paling banyak, yaitu 37.000 record. Di antara kategori serangan, Generic menjadi kategori dengan jumlah terbanyak, yaitu 18.871 record, kemudian Exploits sebanyak 11.132 record dan Fuzzers sebanyak 6.062 record.
Sementara itu, kategori seperti Worms, Shellcode, dan Backdoor memiliki jumlah record yang jauh lebih sedikit.
Hal ini menunjukkan bahwa distribusi setiap kategori tidak sama. Ada jenis aktivitas yang jauh lebih sering muncul dibandingkan jenis lainnya.
Protokol yang Paling Banyak Muncul, Apakah Berarti Paling Mencurigakan?
Protokol merupakan salah satu karakteristik yang menarik untuk dilihat.
Pertama, kita dapat melihat protokol yang paling sering muncul:
df["proto"].value_counts().head(10)
Dari output tersebut kita dapat mengetahui protokol yang paling banyak digunakan.
Namun, apakah protokol yang paling banyak digunakan otomatis merupakan protokol yang mencurigakan?
Tidak.
Sebuah protokol dapat digunakan dalam aktivitas normal maupun serangan. Karena itu, kita perlu membandingkannya berdasarkan label.
pd.crosstab(df["proto"], df["label"])
Visualisasikan hasilnya:
pd.crosstab(
df["proto"],
df["label"]
).plot(
kind="bar",
figsize=(12, 6)
)
plt.title("Protokol Berdasarkan Label Aktivitas")
plt.xlabel("Protokol")
plt.ylabel("Jumlah Aktivitas")
plt.show()
Sekarang kita tidak hanya melihat protokol yang paling banyak muncul, tetapi juga melihat bagaimana penggunaannya tersebar pada aktivitas normal dan serangan.
Kalau Jumlah Paket Sangat Tinggi, Apakah Itu Serangan?
Jumlah paket merupakan salah satu karakteristik yang dapat membantu kita memahami trafik.
Mau Kuasai Mendeteksi Pola Aktivitas Mencurigakan dengan Data Analysis Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
UNSW-NB15 memiliki kolom spkts untuk jumlah paket dari sumber dan dpkts untuk jumlah paket dari tujuan.
Kita dapat melihat statistiknya:
df[["spkts", "dpkts"]].describe()
Selain melihat angka statistik, kita juga dapat menggunakan boxplot untuk melihat distribusi datanya.
sns.boxplot(data=df[["spkts", "dpkts"]])
plt.title("Distribusi Jumlah Paket")
plt.show()
Dari boxplot, kita dapat melihat penyebaran data dan mengetahui apakah terdapat nilai yang jauh dari kelompok utama.
Nilai yang sangat jauh dari mayoritas data dapat menjadi kandidat outlier.
Kalau Ada Outlier, Apakah Itu Berarti Aktivitas Berbahaya?
Belum tentu.
Outlier hanya menunjukkan bahwa suatu nilai berbeda cukup jauh dari mayoritas data. Dalam trafik jaringan, nilai ekstrem bisa muncul karena aktivitas tertentu yang memang menghasilkan trafik besar.
Untuk melihat contoh lainnya, kita dapat menganalisis sbytes, yaitu jumlah byte yang dikirim dari sumber.
sns.boxplot(x=df["sbytes"])
plt.title("Distribusi Source Bytes")
plt.show()
Jika terdapat nilai yang jauh lebih tinggi dibandingkan mayoritas data, kita dapat melihat record dengan nilai sbytes terbesar.
df.nlargest(10, "sbytes")[
[
"proto",
"sbytes",
"dbytes",
"spkts",
"dpkts",
"label",
"attack_cat"
]
]
Dari hasil tersebut, kita dapat melihat aktivitas dengan jumlah byte dari sumber yang paling tinggi sekaligus membandingkannya dengan jumlah byte tujuan, jumlah paket, protokol, label, dan kategori aktivitas.
Dengan cara ini, nilai ekstrem tidak hanya dilihat sebagai titik pada boxplot, tetapi dapat ditelusuri kembali ke record yang menghasilkan nilai tersebut.
Hal ini penting karena nilai sbytes yang tinggi belum tentu menunjukkan aktivitas serangan. Kita masih perlu melihat karakteristik lainnya dan membandingkannya dengan label aktivitas.
Apakah Aktivitas dengan Nilai Ekstrem Memang Lebih Banyak Berlabel Serangan?
Sekarang kita dapat menguji dugaan tersebut.
Ambil beberapa aktivitas dengan sbytes terbesar:
df.nlargest(20, "sbytes")[
[
"sbytes",
"spkts",
"dbytes",
"dpkts",
"label",
"attack_cat"
]
]
Kita dapat melihat apakah aktivitas dengan nilai ekstrem lebih banyak memiliki label 1 atau 0.
Pada hasil tersebut, sebagian besar record dengan nilai sbytes tertinggi memiliki label = 1, sehingga terdapat pola yang menarik untuk diperiksa lebih lanjut.
Namun, hasil ini belum cukup untuk menyimpulkan bahwa nilai sbytes yang tinggi selalu menunjukkan serangan.
Apakah Jumlah Paket Normal dan Serangan Memang Berbeda?
Setelah melihat outlier, kita dapat membandingkan karakteristik trafik secara keseluruhan.
Gunakan:
df.groupby("label")[
["sbytes", "dbytes", "spkts", "dpkts"]
].mean()
Kemudian visualisasikan:
df.groupby("label")[
["sbytes", "dbytes", "spkts", "dpkts"]
].mean().plot(
kind="bar",
figsize=(10, 5)
)
plt.title("Karakteristik Trafik Berdasarkan Label")
plt.xlabel("Label")
plt.ylabel("Nilai Rata-rata")
plt.show()
Sekarang pertanyaan yang kita jawab adalah:
Apakah karakteristik trafik normal dan serangan memang memiliki perbedaan?
Jika terdapat perbedaan pada variabel tertentu, variabel tersebut dapat menjadi salah satu karakteristik yang menarik untuk diperiksa lebih lanjut.
Namun, perbedaan rata-rata tidak berarti seluruh aktivitas dalam kelompok tersebut memiliki pola yang sama.
Aktivitas Seperti Apa yang Perlu Diperiksa Lebih Lanjut?
Setelah melakukan beberapa tahap eksplorasi, kita mulai memiliki beberapa karakteristik yang dapat digunakan untuk menemukan aktivitas yang menarik.
Beberapa contohnya:
- jumlah paket jauh lebih tinggi dibandingkan mayoritas data,
- jumlah byte memiliki nilai ekstrem,
- rate trafik sangat tinggi,
- karakteristik tertentu lebih sering muncul pada aktivitas berlabel serangan,
- atau beberapa nilai ekstrem muncul secara bersamaan.
Misalnya sebuah aktivitas memiliki kombinasi:
Jumlah paket tinggi
+
Jumlah byte tinggi
+
Rate tinggi
+
Label = 1Aktivitas seperti ini lebih menarik untuk diperiksa dibandingkan hanya melihat satu karakteristik.
Namun, Data Analysis pada tahap ini belum menjadi sistem pendeteksi serangan otomatis.
Tujuan analisis ini adalah menggunakan data untuk menemukan pola dan membantu menentukan aktivitas mana yang perlu diperiksa lebih lanjut.
Jadi, Pola Apa yang Sebenarnya Kita Cari?
Kita tidak mencari satu angka yang secara otomatis berarti bahwa sebuah aktivitas adalah serangan.
Sebaliknya, kita mencoba menemukan kombinasi karakteristik yang membuat suatu aktivitas terlihat berbeda dari mayoritas data.
Proses analisisnya dapat digambarkan seperti berikut:
Data Trafik
↓
Memahami Struktur Dataset
↓
Memeriksa Kondisi Data
↓
Melihat Aktivitas Normal dan Serangan
↓
Menganalisis Protokol
↓
Menganalisis Jumlah Paket dan Byte
↓
Mencari Nilai Ekstrem
↓
Memeriksa Outlier
↓
Membandingkan dengan Label
↓
Menemukan Pola yang Perlu DiperiksaMelalui proses tersebut, kita tidak hanya mencari data yang terlihat aneh.
Kita juga mencoba menjawab pertanyaan yang lebih penting
Mengapa data tersebut terlihat berbeda dari aktivitas lainnya?
Pertanyaan inilah yang menjadi bagian penting dari Exploratory Data Analysis.
Kesimpulan
Exploratory Data Analysis dapat diterapkan pada data trafik jaringan untuk membantu menemukan pola aktivitas yang tidak biasa.
Menggunakan dataset UNSW-NB15 Testing Set, kita dapat melihat berbagai karakteristik seperti distribusi aktivitas normal dan serangan, kategori aktivitas, protokol, jumlah paket, jumlah byte, serta nilai ekstrem atau outlier.
Dari proses tersebut, kita dapat menemukan record yang memiliki karakteristik berbeda dari mayoritas data. Namun, nilai yang ekstrem tidak dapat langsung dianggap sebagai serangan.
Sebuah aktivitas baru dapat dipahami dengan lebih baik ketika kita melihat konteks dan menggabungkan beberapa karakteristik sekaligus.
Dengan demikian, tujuan utama analisis ini bukan sekadar mencari data yang terlihat aneh, tetapi menggunakan data untuk memahami:
Pola apa yang membuat sebuah aktivitas berbeda, dan apakah perbedaan tersebut layak diperiksa lebih lanjut?
Pendekatan ini menjadi salah satu contoh bagaimana Data Analysis dan Exploratory Data Analysis dapat diterapkan pada bidang jaringan dan cybersecurity, khususnya untuk memahami karakteristik trafik sebelum melakukan analisis atau pengembangan sistem keamanan yang lebih lanjut.
Dibuat oleh:
Mau Kuasai Mendeteksi Pola Aktivitas Mencurigakan dengan Data Analysis Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
