Cara menyiapkan / membuat fitur untuk deteksi anomali (data keamanan jaringan)

9

Tujuan saya adalah untuk menganalisis log jaringan (mis., Apache, syslog, audit keamanan Direktori Aktif, dan sebagainya) menggunakan deteksi pengelompokan / anomali untuk tujuan deteksi intrusi.

Dari log saya memiliki banyak bidang teks seperti alamat IP, nama pengguna, nama host, port tujuan, port sumber, dan sebagainya (total 15-20 bidang). Saya tidak tahu apakah ada beberapa serangan di log, dan ingin menyoroti peristiwa yang paling mencurigakan (pencilan).

Biasanya, deteksi anomali menandai titik-titik dengan probabilitas / frekuensi rendah sebagai anomali. Namun, setengah dari catatan log berisi kombinasi unik bidang. Jadi, setengah dari catatan dalam dataset akan memiliki frekuensi serendah mungkin.

Jika saya menggunakan deteksi anomali berdasarkan pengelompokan (misalnya, menemukan cluster dan kemudian memilih titik yang jauh dari semua pusat cluster), saya perlu mencari jarak antara titik yang berbeda. Karena saya memiliki 15-20 bidang, itu akan menjadi ruang multi-dimensi, di mana pengurangan adalah nama pengguna, port, alamat IP dan sebagainya. Namun, jarak Mahalanobis hanya bisa diterapkan pada fitur yang terdistribusi normal. Ini berarti bahwa tidak ada cara untuk menemukan jarak antara titik data dan membangun cluster ...

Sebagai contoh, mari kita bayangkan bahwa saya memiliki pengguna Alice, Bob, Carol, Dave, Eve dan Frank dalam dataset 20 catatan. Mereka bisa memiliki jumlah kejadian berikut dalam database: 2,5,2,5,1,5. Jika saya hanya memetakan nama pengguna ke angka, mis

Alice --> 1
Bob --> 2
Carol --> 3
Dave --> 4
Eve --> 5
Frank --> 6

Kemudian, distribusi probabilitas saya untuk nama pengguna akan terlihat sebagai berikut:

p (1) = 0,1, p (2) = 0,25, p (3) = 0,1, p (4) = 0,25, p (5) = 0,05, p (6) = 0,25

Tentu saja, ini bukan distribusi normal, dan ini juga tidak masuk akal, karena saya bisa memetakan nama pengguna dengan cara yang berbeda ...

Dengan demikian, pemetaan sederhana bidang-bidang seperti nama pengguna, tindakan, nomor port, alamat IP dan sebagainya ke nomor tidak membawa apa-apa.

Oleh karena itu, saya ingin bertanya, bagaimana bidang teks diproses / fitur dibangun biasanya untuk membuat deteksi anomali / outlier tanpa pengawasan menjadi mungkin?

EDIT: struktur data.

Saya memiliki sekitar 100 kolom dalam tabel database, yang berisi informasi dari Peristiwa Direktori Aktif. Dari 100 kolom ini saya memilih yang paling penting (dari sudut pandang saya): SubjectUser, TargetUser, SourceIPaddress, SourceHostName, SourcePort, Komputer, DestinationIPaddress, DestinationHostName, DestinationPort, Tindakan, Status, FilePath, EventID, WeekDay, DayTime.

Acara adalah acara Direktori Aktif, di mana EventID mendefinisikan apa yang dicatat (misalnya, pembuatan tiket Kerberos, log masuk pengguna, logoff pengguna, dll.).

Sampel data terlihat seperti berikut:

+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| ID | SubjectUser | TargetUser | SourceIPaddress | SourceHostName | SourcePort | Computer | DestinationIPaddress | DestinationHostName | DestinationPort | Action | Status | FilePath | EventID | WeekDay | DayTime |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| 171390673 |? |? |? |? |? | domaincontroller1.domain.com | 1.1.1.1 | domaincontroller1.domain.com |? | / Otentikasi / Verifikasi | / Sukses |? | 4624 | 1 | 61293 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| 173348232 |? |? |? |? |? | domaincontroller2.domain.com | 2.2.2.2 | domaincontroller2.domain.com |? | / Otentikasi / Verifikasi | / Sukses |? | 4624 | 1 | 61293 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| 180176916 |? |? |? |? |? | domaincontroller2.domain.com | 2.2.2.2 | domaincontroller2.domain.com |? | / Otentikasi / Verifikasi | / Sukses |? | 4624 | 1 | 61293 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| 144144725 |? | John.Doe | 3.3.3.3 | domaincontroller3.domain.com | 2407 | domaincontroller3.domain.com | 3.3.3.4 | domaincontroller3.domain.com |? | / Otentikasi / Verifikasi | / Sukses |? | 4624 | 3 | 12345 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +

Secara keseluruhan, saya memiliki sekitar 150 juta acara. Peristiwa yang berbeda memiliki bidang yang berbeda, dan tidak semua peristiwa terkait dengan log masuk / keluar pengguna.

Andrey Sapegin
sumber
"Namun, jarak Mahalanobis hanya bisa diterapkan pada fitur yang terdistribusi normal." Sebenarnya berbentuk elips. Bisakah Anda memposting beberapa baris pertama dari kumpulan data Anda (atau beberapa angka palsu tetapi memiliki fitur yang sama dengan yang asli)?
user603
Saya berasumsi bahwa elips berbentuk berarti produk dari dua fitur yang terdistribusi normal, dengan mean dan standar deviasi yang berbeda, tetapi masih terdistribusi secara normal.
Andrey Sapegin
Tidak, berbentuk elips berarti berbentuk seperti bayangan sepak bola dalam 2D, sepak bola dalam 3D dan pada umumnya sepak bola dimensi-D dalam ruang dimensi D.
user603
Karena penasaran. Bisakah Anda membagikan beberapa data / dataset apa yang Anda kerjakan? Apakah ini set penelitian publik / akademik?
sabalaba
Sayangnya, ini bukan dataset publik dan saya tidak dapat membagikannya. Namun, harus ada dataset KDDCup 1999 yang terkenal, atau dataset Scan34 dari Honeynet ( old.honeynet.org/scans/scan34 ). Kedua set data memiliki log (bukan lalu lintas jaringan) untuk analisis (Apache, Snort, syslog, dll.). Dalam dataset yang saya miliki, sebagian besar log adalah log Direktori Aktif. Saya tidak yakin apakah ada AD / Windows Events publik yang tersedia untuk analisis (sebelumnya saya menggunakan dataset yang dihasilkan sendiri karena tidak adanya yang asli). Juga, dataset yang saya miliki sangat besar (catatan 150 Mio).
Andrey Sapegin

Jawaban:

2

Saya jelas bukan ahli deteksi anomali . Namun, ini area yang menarik dan inilah dua sen saya. Pertama, pertimbangkan catatan Anda bahwa "jarak Mahalanobis hanya dapat diterapkan untuk fitur yang terdistribusi normal". Saya menemukan beberapa penelitian yang berpendapat bahwa masih mungkin untuk menggunakan metrik dalam kasus data yang tidak normal . Lihatlah diri Anda di makalah ini dan laporan teknis ini .

Saya juga berharap bahwa Anda akan menemukan sumber daya berguna berikut pada deteksi anomali tanpa pengawasan (AD) dalam konteks keamanan jaringan TI , menggunakan berbagai pendekatan dan metode: makalah ini , menyajikan kerangka kerja geometris untuk AD tanpa pengawasan; makalah ini , yang menggunakan pendekatan clustering berbasis kepadatan dan grid ; slide presentasi ini , yang menyebutkan penggunaan peta yang dapat diatur sendiri untuk AD.

Akhirnya, saya menyarankan Anda untuk melihat jawaban saya berikut, yang saya percaya relevan dengan topik dan, dengan demikian, mungkin membantu: jawaban pada pendekatan pengelompokan , jawaban pada pengelompokan berbasis non-jarak jauh dan jawaban pada opsi perangkat lunak untuk AD .

Aleksandr Blekh
sumber
1
Terima kasih atas tautannya, mereka sangat berguna. (1) Makalah pertama yang Anda sebutkan sangat menarik. Tampaknya mungkin untuk mengubah distribusi menjadi normal untuk menerapkan jarak Mahalanobis nanti. Saya akan mencoba masuk ke dalamnya. (2) Apakah Anda tahu jika ada beberapa pendekatan lain, misalnya beberapa langkah kesamaan seperti jarak cousine, yang tidak beroperasi pada jarak? (3) Slide presentasi yang Anda sebutkan, bagaimanapun, difokuskan pada paket lalu lintas jaringan, bukan pada log.
Andrey Sapegin
1
Sehubungan dengan pendekatan lain, saya berpikir tentang mengikuti 2: (1) SVM satu kelas dapat mengetahui korelasi antara fitur, jika model polinomial tinggi digunakan; (2) mengancam garis log sebagai kalimat, dan menggunakan kesamaan sepupu untuk mengelompokkan / mengelompokkannya. Yang pertama sudah saya coba implementasikan, tetapi sudah berjalan lebih dari seminggu di 1 CPU (saya pertama kali melatih model pada paruh pertama data, dan berlaku untuk yang kedua. Lalu sebaliknya). Pendekatan kedua menyiratkan ruang dimensi tinggi (misalnya, setiap nilai yang berbeda dari nama pengguna akan menjadi fitur).
Andrey Sapegin
1
@AndreySapegin: Jika hasil upaya Anda saat ini tidak cukup baik, Anda dapat mencoba beberapa pendekatan lain, yang disebutkan dalam makalah yang saya rujuk. Itulah idenya. Satu hal lagi - coba GraphLab perangkat lunak open source ML (beberapa di antaranya sekarang bermerek Dato): dato.com/products/create/open_source.html . Perangkat lunak GraphLab berkinerja tinggi dan sangat terukur tidak hanya pada inti prosesor, tetapi juga prosesor dan bahkan mesin.
Aleksandr Blekh
1
@AndreySapegin: Sebuah makalah dari rekan universitas saya baru saja muncul di aliran ResearchGate saya. Saya pikir ini mungkin sangat membantu Anda (menggunakan pendekatan JST untuk mendeteksi intrusi - melalui perpustakaan Encog ML yang keren, di mana ia adalah pencipta dan kontributor utama - Encog juga dapat diukur melalui multicore & GPU). Inilah makalahnya: researchgate.net/profile/Jeff_Heaton/publication/… . Ini info tentang Encog: heatonresearch.com/encog .
Aleksandr Blekh
1
Kepada siapa pun yang memberikan hadiah untuk jawaban saya: Saya menghargai kemurahan hati Anda dan juga mengakui upaya saya terhadap jawaban berkualitas.
Aleksandr Blekh
3

Pertama-tama, saya pikir ada beberapa hal yang Anda mungkin harus mengundurkan diri.

Satu kendala sulit yang saya lihat pada masalah ini adalah bahwa Anda mungkin harus siap untuk memiliki tingkat positif palsu yang cukup tinggi. Sejauh yang saya tahu, tingkat dasar catatan yang menjadi bagian dari anomali jaringan cukup rendah (rujukan?). Sebut saja peluang 1000: 1, demi argumen. Kemudian bahkan jika Anda mengamati suatu pola yang 100 kali lebih mungkin terjadi jika catatan itu mengganggu maka jika itu sah, Bayes 'Rule mengatakan bahwa peluang posterior adalah 10: 1 bahwa lalu lintas masih sah.

Masalah lainnya adalah beberapa intrusi sulit dideteksi bahkan pada prinsipnya . Misalnya, jika seseorang secara sosial merekayasa saya agar memberi mereka komputer saya, dan kemudian mereka masuk ke layanan ini dan mengunduh satu file rahasia yang saya kerjakan, ini akan sangat sulit ditemukan. Pada dasarnya, penyerang yang cukup gigih dapat membuat perilaku intrusif mereka hampir sewenang-wenang mendekati perilaku normal sistem.

Selain itu, musuh Anda cerdas, bukan proses statistik, jadi jika Anda mulai mendeteksi beberapa pola dan mematikannya, mereka mungkin merespons dengan tidak mengikuti pola itu lagi. Inilah sebabnya, misalnya, Anda akan melihat banyak pesan spam dengan spasi di antara semua surat (menawarkan Anda " V I A G R A" atau apa pun). Filter spam menemukan bahwa string "viagra" adalah spam, jadi penyerang mulai melakukan sesuatu yang lain.

Karena itu, saya pikir layak untuk berpikir cukup keras tentang jenis intrusi yang menurut Anda layak untuk dideteksi. Tentu saja ada buah-buah yang mudah digantung, jadi jangan biarkan yang sempurna menjadi musuh orang baik dan cobalah untuk membuat algoritma yang dapat mendeteksi semua intrusi.


Selain itu, mari kita bicara tentang buah yang menggantung rendah. Di sini, saya pikir mungkin produktif bagi Anda untuk memindahkan unit analisis Anda dari catatan individu, ke sekelompok catatan.

Misalnya, Anda mengatakan bahwa setengah dari semua rekaman memiliki kombinasi bidang yang unik. Tetapi mungkin, misalnya, sebagian besar IP sumber muncul dalam lebih dari satu catatan - itu adalah bidang lain dalam permintaan yang mengubah dan membuat kombinasi unik. Jika Anda mengelompokkan permintaan berdasarkan IP, Anda dapat mengajukan pertanyaan seperti:

  • Apakah beberapa IP tampaknya mengotentikasi sebagai banyak pengguna yang luar biasa (atau sedikit sekali)?
  • Apakah beberapa IP mengalami kegagalan otentikasi dalam jumlah besar?
  • Apakah beberapa IP memiliki pola waktu akses yang tidak biasa (misalnya, banyak aktivitas sekitar pukul 3 pagi di zona waktu mereka, atau meminta setiap 1 detik sepanjang hari)?

Anda dapat melakukan hal serupa untuk pengelompokan lain, seperti nama pengguna:

  • Apakah pengguna ini mengautentikasi dari komputer yang berbeda ketika mereka sebelumnya menggunakan komputer yang sama untuk semua permintaan?
  • Apakah pengguna ini tiba-tiba menyentuh bagian dari sistem file yang belum pernah mereka sentuh sebelumnya?

Saya tidak tahu adanya pengklasifikasi di luar rak yang tampaknya sangat cocok untuk ini, karena perilaku potensial pengguna Anda sangat beragam, dan Anda mungkin lebih tertarik pada perubahan perilaku dari waktu ke waktu. Itu berarti Anda mungkin ingin membangun semacam model apa yang setiap pengguna / IP / apa pun mungkin lakukan di masa depan, dan menandai penyimpangan dari model ini. Tapi itu proses yang cukup intensif jika pengguna Anda memiliki pola perilaku yang berbeda!

Karena kesulitan ini, saya pikir untuk saat ini mungkin lebih produktif untuk melakukan jenis analisis mode eksplorasi yang saya uraikan di atas. Itu mungkin memberi tahu Anda tentang jenis pola apa yang paling menarik, dan kemudian Anda dapat mulai menggunakan algoritma statistik mewah untuk mendeteksi pola-pola itu.

Ben Kuhn
sumber
2
Terima kasih atas jawaban Anda, ini poin bagus. Seperti yang saya pahami, Anda menawarkan untuk fokus pada analisis yang lebih sederhana daripada deteksi anomali. Dari perspektif teknis (industri), Anda benar. Namun, saya sedang melakukan penelitian dan ingin fokus pada analisis pembelajaran mesin. Analisis berbasis permintaan seperti yang Anda tawarkan telah kami lakukan (mungkin tidak persis identik dengan permintaan yang Anda tawarkan, tetapi serupa) ... Argumen lain untuk melakukannya adalah bahwa banyak perusahaan saat ini MENCOBA untuk melakukan deteksi anomali selain 'normal' ( lebih sederhana, tetapi masih memenuhi) kueri dan aturan ...
Andrey Sapegin
2

Saya pikir pertama-tama Anda harus memiliki dataset yang merekam data untuk periode tanpa serangan. Dataset ini harus menangkap variasi yang melekat pada sistem yang berperilaku normal. Saya ingin menekankan poin bahwa ini bukan tentang memiliki dataset beranotasi.

Selanjutnya, saya akan mencoba menggabungkan semua (atau subset) metrik menjadi satu. Metrik baru ini harus mencerminkan jumlah "kejutan". Misalnya, nilai rendah berarti sistem berjalan secara normal, puncak / dataran tinggi bernilai tinggi berarti ada beberapa perubahan cepat. Di sini saya berpikir tentang CUSUM atau grafik gaya grafik Shewhart.

Bisakah Anda memberikan beberapa contoh data yang tersedia? Apakah ini terutama string, angka, indikator 1/0?

Vladislavs Dovgalecs
sumber
1

Kemungkinannya adalah untuk mempelajari jaringan bayesian antara fitur yang diberikan beberapa data latar belakang tanpa serangan. Mempelajari jaringan bayesian bermanfaat karena memunculkan independensi bersyarat antar fitur. Karenanya, Anda tidak berurusan dengan masing-masing dan setiap kombinasi fitur yang mungkin. Misalnya, jika fitur A mempengaruhi B dan C dan fitur B dan C bersama-sama mempengaruhi D, maka Anda hanya mempelajari model untuk bagaimana A mempengaruhi B, bagaimana mempengaruhi C, dan bagaimana B dan C secara bersama-sama mempengaruhi D. Model ini akan membutuhkan jauh lebih sedikit parameter dari seluruh distribusi probabilitas dan merupakan alasan utama mengapa jaringan bayesian digunakan alih-alih hanya menyimpan seluruh distribusi probabilitas gabungan. Untuk menguji anomali yang diberikan jaringan Bayesian, hitung kemungkinan datapoint yang masuk menggunakan model jaringan Bayesian yang dipelajari. Jika probabilitasnya sangat rendah,

Abhinav Maurya
sumber
Masalahnya adalah sangat rumit untuk mendapatkan sampel data tanpa serangan. Seringkali tidak ada yang tahu jika ada beberapa serangan dalam dataset.
Andrey Sapegin
0

Saya pikir tanggapan dari Ben Kuhn adalah pragmatis dan berwawasan luas.

Sekarang latar belakang saya sendiri termasuk dalam klasifikasi teks, sistem pakar, pengelompokan dan keamanan. Mengingat latar belakang ini, saya ingin berpikir bahwa saya mungkin memiliki sesuatu untuk ditambahkan ke percakapan. Tetapi pernyataan sebelumnya oleh Ben Kuhn menyoroti bahwa pendekatan langsung dapat menghasilkan banyak kesalahan positif. Staf TI, ketika dihadapkan dengan banyak positif palsu, biasanya "tune out" karena mereka tidak punya waktu untuk mengejar positif palsu sepanjang waktu.

Jadi apa yang harus dilakukan?

Tentu saja log dengan serangan di dalamnya bisa membantu tetapi kemudian kita memiliki catch-22 kecuali perusahaan entah bagaimana berbagi data serangan. Sementara beberapa pemula di Silicon Valley mungkin mengejar berbagi ancaman seperti itu, apa lagi yang bisa kita lakukan?

Salah satu pendekatan yang mungkin adalah membuat simulasi jaringan dan kemudian menemukan cara untuk menghasilkan serangan terhadap simulasi. Artinya, misalkan kita membuat simulasi di mana topi hitam (juga disimulasikan) tidak diketahui sebelumnya ke topi putih. Dengan adanya serangan ini, kami kemudian dapat mencoba membuat algoritma yang harus menemukan serangan ini. Jika topi hitam beroperasi secara independen dari topi putih, maka kita memiliki pertempuran nyata yang akan dimainkan. Jika penyerang membobol sistem, atau tidak terdeteksi, maka topi putih, sampai taraf tertentu, gagal.

Seseorang bahkan dapat memiliki struktur insentif ketika analis keamanan di tim topi hitam dihargai atas keberhasilan mereka (pelanggaran atau serangan yang belum ditemukan). Demikian pula, kelompok yang terdiri dari topi putih diberi hadiah karena menghentikan celana dan / atau mendeteksi serangan.

Tidak ada yang sempurna tentang pengaturan ini. Jelas topi hitam nyata mungkin melebihi talenta tim topi hitam "ramah". Meskipun demikian, sebagai orang yang memiliki cukup banyak analisis data, tampaknya bagi saya sangat sulit untuk mengukur keberhasilan topi putih tanpa pemahaman yang lebih baik tentang topi hitam. Intinya adalah ini. Jika kita tidak tahu apa yang sebenarnya dilakukan topi hitam, hal terbaik berikutnya adalah topi hitam ramah.

Saya juga punya ide yang agak tidak biasa. Misalkan selain topi hitam ramah dan topi putih, ada tim topi abu-abu. Apa artinya menjadi topi abu-abu? Idenya sederhana. Topi abu-abu diizinkan untuk melihat apa yang dilakukan topi hitam ramah dan topi putih. Tapi kenapa?

Misalkan topi hitam ramah meluncurkan serangan menggunakan pendekatan A, B dan C, dan topi putih tidak pernah menemukan salah satu dari tiga pendekatan ini. Ya, topi abu-abu diberdayakan untuk melihat apa yang dilakukan oleh topi hitam ramah maupun topi putih, dan mereka mencoba mempertimbangkan prinsip-prinsip apa yang mungkin digunakan untuk menemukan serangan yang tidak terdeteksi ini. Jika topi abu-abu menemukan prinsip-prinsip tersebut, tim topi abu-abu kemudian dapat membagikan prinsip-prinsip ini dengan tim topi putih tanpa menjelaskan serangan yang tepat secara rinci.

Harapannya adalah bahwa "petunjuk" yang diberikan oleh tim topi abu-abu ini mendorong tim topi putih ke arah yang benar tanpa mengungkapkan terlalu banyak.

Dalam retrospeksi, saya minta maaf jika tanggapan saya benar-benar bukan tentang teknik spesifik. Jelas tanggapan saya bukan tentang teknik spesifik. Tetapi dalam pengalaman saya, banyak masalah dalam pembelajaran mesin - termasuk yang dalam keamanan - sering gagal karena datanya tidak memadai. Pendekatan ini, menggunakan topi putih, topi abu-abu dan topi hitam, dapat membantu menghasilkan data yang memungkinkan perusahaan keamanan (atau staf TI) untuk tidak hanya mengukur efektivitas pertahanan mereka, tetapi juga menyediakan struktur organisasi yang mendorong tim topi putih. untuk secara progresif meningkatkan pertahanan dan pemantauan mereka.

Saya benar-benar tidak tahu jika pendekatan yang saya sarankan adalah asli. Saya belum pernah mendengar tentang topi abu-abu, tetapi saya benar-benar berpikir bahwa peran topi abu-abu bisa sangat penting untuk mendorong tim putih ke depan, tanpa mengungkapkan terlalu banyak.


Catatan: saya menggunakan istilah "topi abu-abu" di sini bukan standar. Lihat http://www.howtogeek.com/157460/hacker-hat-colors-explained-black-hats-white-hats-and-gray-hats/ . Jadi beberapa istilah lain, mungkin "topi bergaris" harus digunakan sebagai gantinya.

Tapi tetap saja idenya tetap sama: topi bergaris dapat membantu memediasi antara pekerjaan topi hitam ramah dan pembela (topi putih), sehingga ide-ide dan petunjuk tertentu dapat dibagikan secara bijaksana dengan topi putih.

sfgower
sumber
1
Tampaknya Anda mungkin secara tidak sengaja membuat akun kedua - lihat di sini untuk cara menggabungkannya. Ini akan memungkinkan Anda mengedit posting Anda sendiri.
Silverfish
0

Karena saya telah memposting pertanyaan asli, saya telah melakukan banyak penelitian tentang topik ini dan sekarang dapat memberikan hasil saya sebagai jawaban.

Pertama-tama, di lab kami, kami mengembangkan sistem SIEM yang menggunakan algoritma pendeteksian anomali. Deskripsi sistem dan algoritme tersedia di makalah saya Menuju sistem analisis kompleks peristiwa keamanan dalam jaringan skala besar

Selain itu saya menulis ringkasan singkat tentang cara menangani data tersebut dalam jawaban saya untuk pertanyaan serupa tentang Cross Validated

Andrey Sapegin
sumber