RPL Tabanlı IOT Cihazları Zafiyetinin Tespiti İçin Makine Öğrenmesi Algoritmalarının Karşılaştırılması

İçerik Tablosu

Simülasyon ve Ham Veri

Önceki makalede, D’Hondt ve diğerlerinin yapmış olduğu RPL Saldırıları İş Çerçevesinden (Framework) Taşma Saldırıları, Azaltılmış Rank Saldırıları ve Sürüm Numarası Artırma Saldırıları için oluşturulan düğümlerin nasıl elde edildiğini açıklamıştım. Bu makaleye buradan ulaşabilirsiniz.

Bu makalede ise, bu düğümlerle Cooja’yı kullanarak simülasyon yapacak ve ağ verilerini elde edeceğim. Contiki ve Coojanın nasıl kurulduğu ile ilgili makaleye de buradan ulaşabilirsiniz.

Makine öğrenmesi için iki adet sınıflandırılmış veri setine ihtiyacımız olacaktır. Bunlardan bir tanesi, içerisinde zafiyetli düğüm barındırmayan ve tamamen normal IoT düğümleri ile yapılan simülasyondan oluşturulan verilerdir. Diğeri ise çerisinde zafiyetli düğüm barındıran normal IoT düğümleri ile yapılan simülasyondan oluşturulan verilerdir. Böylece, bu iki veri setini sınıflandırıp, sınıflandırma algoritmaları ile anomaliyi tespit edeceğiz.

Simülasyonun yapılması ve ham verilerin elde edilmesi ile ilgili videoya aşağıdan ulaşabilirsiniz.

Simülasyonun yapıldığı bilgisayarda, masa üstünde “Experiments” isimli klasörümüz bulunmaktadır. Bu klasörün burada nasıl oluşturulduğuyla ilgili detaylı bilgiye buradan ulaşabilirsiniz.

Experiment Klasörü

“Experiments” klasörünün içerisinde saldırıların klasörleri bulunmaktadır. Bu klasörlerin içerisinde ise düğümler bulunmaktadır. Bu düğümler “.z1” uzantılı düğümlerdir.

Saldırılar Klasörü
Düğümler

Cooja simülatörü başlatmak için, yeni bir terminal açıyoruz, coojayı çalıştıracağımız klasöre girmemiz gerekmektedir.

Cooja Simülatörünü Çalıştırma

				
					cd contiki-ng/tools/cooja
				
			

Cooja aşağıdaki komutla çalıştırılır.

				
					sudo ant run big-mem
				
			

Yeni Simülasyonun Oluşturulması

Burada big-mem parametresini girmemizin nedeni, simülatörü RAM’de daha fazla hafıza alanı ile çalıştırmaktır.

Cooja simülatörü açıldığında, yeni simülasyon oluşturmak için:

File->New Simulation… butonunu tıklıyoruz.

Simülasyona bir isim veriyoruz. Burada

HF-1R10M ismi verilmiştir.

İsim verirken tarafımızdan şöyle bir kodlama yapılmıştır.

HF: Hello Flood (Taşma Saldırısı)

DR: Decreased Rank (Azaltılmış Rank)

VI: Version Number Increase (Sürüm Numarası Artırma)

R: Root (Kök)

N: Normal (Normal)

M: Malicious (Zafiyetli)

Numaralar: Düğüm Sayıları

Örneğin

HF-1R10N1M

İsimli simülasyon için Taşma Saldırısı, 1 adet kök düğüm, 10 adet normal düğüm ve 1 adet zafiyetli düğüm

 

İlk simülasyonda, tamamen normal düğümler kullanacağız. Böylece, normal sınıfına ait veri üretebileceğiz.

Yeni Simülasyon
Simülasyon Adı

Düğümlerin Eklenmesi

Kök Düğümün Eklenmesi

Ardından sırasıyla düğümleri simülasyona ekleyeceğiz. Bunun için

Motes->AddMotes->create new mote type->Z1 mote…

Seçeneğini seçiyoruz.

“Descriptions” bölümüne “root” yazıyoruz ve

Experiments ->hello-flood->with-malicious->motes  klasöründeki root.z1’i seçip Create tuşuna basıyoruz. Sonrasında açılan pencerede bizden bu düğümden kaç adet nereye yerleştireceğini sormaktadır. 1 adet kök düğüm belirlediğimiz için “Number of motes” bölümünü “1” olarak bırakacağız ve “Random positioning”i seçeceğiz. “Add motes” düğmesine bastığımızda simülasyona 1 adet kök düğüm yerleştirecektir.

Düğümlerin Eklenmesi
Root Düğüminin Eklenmesi

Normal Düğümlerin Eklenmesi

Normal düğümleri eklemek için de aynı yöntem kullanılacaktır. Motes->AddMotes->create new mote type->Z1 mote…

Seçeneğini seçiyoruz.

Descriptions bölümüne “normal” yazıyoruz ve

Experiments ->hello-flood->with-malicious->motes  klasöründeki “sensor.z1”i seçip Create tuşuna basıyoruz. Sonrasında açılan pencerede bizden bu düğümden kaç adet nereye yerleştireceğini sormaktadır. Buraya 10 rakamını giriyoruz ve “create” düğmesine basıyoruz. Aynı yöntemle zafiyetli düğümü de simülasyona ekliyoruz fakat add mote seçeneğinde “Do not add motes” butonuna basıyoruz. Zafiyetli düğümle yapılan simülasyondan veri elde etmek için bu düğümü sonradan kullanacağız.

Not : Normal düğümlerle yapılan simülasyonu farklı kaydedip sonradan zafiyetli düğümü eklemeye çalıştığımızda, program hata vermektedir. Düğümlerin yerini değiştirmemek ve aynı koşullarla simülasyonu gerçekleştirmek maksadıyla zafiyetli düğümü simülasyona ekledik fakat simülasyonda kullanmadık.

Düğümleri birbirinden ayırt edebilmek için, düğümlerin yerleştirildiği penceredeki “view” menüsünde, “mote type” ı seçiyoruz. Böylece, farklı türdeki düğümler farklı renklerle gösterilecektir.

Normal Düğümlerin Eklenmesi

Ağ Verilerinin Kaydedilmesi

Normal düğümlerle yapılan simülasyondan ham verileri elde edebilmek için ağ verilerini kaydetmemiz yeterli olacaktır. Ağ verilerini katdetmek için,

Tools -> Radio Messages…

Seçeneğini seçiyoruz

Radyo Mesajları

Açılan yeni pencerede “6LoWPAN Analyzer with PCAP” seçeneğini seçiyoruz. Böylece ham verileri elde edeceğimiz PCAP dosyası kaydedilecektir. Ayrıca simülasyon esnasında network paketlerini burada görebileceğiz.

6LoWPAN Analyzer with PCAP

Zaman Scriptinin Simülasyona Eklenmesi

Simülasyonu 5 dakika boyunca çalıştırmak istiyoruz. Bunun için script editor’ü kullanabiliriz.

Tools -> Simulation Script Editor…

Seçeneğini seçtikten sonra çıkan pencerede

TIMEOUT(300000) yazmamız yeterli olacaktır.

(5 x60 = 300 sn. = 3000000 milisaniye )

Scripti girdikten sonra penceredeki menüden Run-Activate seçeneğini işaretlenmediği zaman script çalışmayacaktır.

Simulation Script Editor

Simülasyonun Başlatılması

Start düğmesine basarak simülasyonu başlatıyoruz.

Simülasyonun Başlatılması

Simülasyon 5 dakika boyunca çalışıp duracaktır. Makine öğrenmesi için kullanacağımız veriler PCAP formatında aşağıdaki klasöre kaydedilecektir.

Network Paketleri

PCAP Dosyasının CVS Dosyasına Dönüştürülmesi

Home/contiki-ng/tools/cooja/build

Oluşan PCAP dosyasının adını simülasyonun adıyla kaydediyoruz.

Paketleri analiz etmemiz için PCAP formatından CSV (Comma Seperated Value) formatına çevirmemiz gerekiyor. Bunun için Wireshark programını kullanacağız.

Wireshark programını açtıktan sonra

File-> Open…

Düğmesine bastıktan sonra,

Home/contiki-ng/tools/cooja/build

Klasörünün altında bulunan PCAP dosyamızı seçiyoruz. Sonrasında ise,

File->Export Packet Dissections->As CSV…

Düğmesine basıyoruz. Açılan pencerede, CSV dosyasının adını verip dosyayı kaydediyoruz.

PCAP dosyasını bu sayede CSV dosyasına çevirmiş olduk.

PCAP Dosyasının CSV Dosyasına Dönüştürülmesi

Simülasyonun Yeniden Yüklenmesi ve Zafiyetli Düğümle Simülasyonun Yapılması

Normal düğümlerle simülasyonu yapıp ağ paket verilerini elde ettikten sonra aynı işlemi zafiyetli düğümle yapıp ağ paketlerini elde ettik.

Bunun için, simülasyonu yeniden yüklememiz gerekmektedir.

Simülasyonda “Reload” düğmesine basarak simülasyonu yeniden yüklüyoruz.

Simülasyonun yeniden yüklenmesi

Normal düğümlerden en son eklenen düğümü silip, en son düğümün bulunduğu noktaya, daha önceden simülasyona eklediğimiz “malicious” düğümünü ekliyoruz.

Zafiyetli Düğümün Eklenmesi

Diğer Saldırılar İçin Simülasyonun Yapılması

Zafiyetli düğümle yapılan simülasyondan elde ettiğimiz PCAP dosyasını CSV dosyasına yukarıda anlatılan metotla çeviriyoruz.

Hello Flood saldırısında elde ettiğimiz verilerle, normal verileri karşılaştırdığımız zaman, saldırıdaki veri satırlarının daha fazla olduğunu görebiliriz.

Aynı deneyi, Azaltılmış Rank Saldırısı ve Versiyon Numarası Artırma Saldırısı için de yapıp normal ve zafiyetli düğümlerle yaptığımız deneylerden elde ettiğimiz verileri kaydediyoruz.

Simülasyonlara ait zafiyetli, kök ve normal düğüm sayıları tablo 3.1’dedir.

 

Normal

Zafiyetli

Saldırı Türü

Kök

Normal

Kök

Normal

Zafiyetli

Taşma Saldırısı

1

10

1

9

1

Azaltılmış Rank

1

10

1

9

1

Sürüm Numarası Artırma Saldırısı

1

10

1

9

1

Tablo 3.1: Simülasyon Düğümlerinin Türleri ve Adetleri.

Oluşturulan ham veri formatı Tablo  3.2’dedir.

No

Time

Source

Destination

Protocol

Length

Info

1

0

fe80::c30c:0:0:c

ff02::1a

ICMPv6

64

RPL Control (DODAG Information Solicitation)

2

3270

fe80::c30c:0:0:c

ff02::1a

ICMPv6

64

RPL Control (DODAG Information Solicitation)

3

6565

fe80::c30c:0:0:c

ff02::1a

ICMPv6

64

RPL Control (DODAG Information Solicitation)

…………..

Tablo 3.2: Simülasyon Sonucunda Oluşturulan Ham Veri.

Ayrıca oluşturulan ham verileri buradan indirebilirsiniz.

Ham Veri

Blog özeti

Önceki makalede, D’Hondt ve diğerlerinin yapmış olduğu RPL Saldırıları İş Çerçevesinden (Framework) Taşma Saldırıları, Azaltılmış Rank Saldırıları ve Sürüm Numarası Artırma Saldırıları için oluşturulan düğümlerin nasıl elde edildiğini açıklamıştım.Bu makalede ise, bu düğümlerle Cooja’yı kullanarak simülasyon yapacak ve ağ verilerini elde edeceğim.Makine öğrenmesi için iki adet sınıflandırılmış veri setine ihtiyacımız olacaktır. Bunlardan bir tanesi, içerisinde zafiyetli düğüm barındırmayan ve tamamen normal IoT düğümleri ile yapılan simülasyondan oluşturulan verilerdir. Diğeri ise çerisinde zafiyetli düğüm barındıran normal IoT düğümleri ile yapılan simülasyondan oluşturulan verilerdir. Böylece, bu iki veri setini sınıflandırıp, sınıflandırma algoritmaları ile anomaliyi tespit edeceğiz.

Yazar Hakkında

Diğer Yazılar

Tezim
Murat Uğur KİRAZ

Sonuç

Bu bölümde, RPL protokolüne yapılan Taşma Saldırısı, Azaltılmış Rank Saldırısı ve Sürüm Numarası Artırma Saldırısı “Karar Ağacı”, “Lojistik Regresyon”, “Rasgele Orman”, “Naive Bayes”, “K En Yakın Komşu” ve “Yapay Sinir Ağları” algoritmaları ile eğitilmiş ve test edilmiştir.

Taşma Saldırılarının tespitinde %97,2 doğruluk oranı ile Yapay Sinir Ağları algoritması, Sürüm Numarası Artırma Saldırılarının tespitinde %81 doğruluk oranı ile K En Yakın Komşu algoritması, Azaltılmış Rank saldırılarının tespitinde %58 doğruluk oranı ile Yapay Sinir Ağları algoritması başarı gösterdiği tespit edilmiştir.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

Makine Öğrenmesi Değerlerinin Yorumlanması

RPL Tabanlı IOT Cihazları Zafiyetinin Tespiti İçin Makine Öğrenmesi Algoritmalarının Karşılaştırılması başlıklı yüksek lisans tezimi nasıl yaptığımı, bu süreçte elde ettiğim tecrübelerimi ve bu tezdeki kodları bir yazı dizisi halinde blog sayfamda paylaşmaya devam ediyorum.

Şimdiye kadar, RPL protokolü ve RPL protokolünde gerçekleşen saldırılarla ilgili detaylı bilgi verdim. Sonrasında, Taşma Saldırıları, Sürüm Numarası Artırma Saldırısı ve Azaltılmış Rank Saldırısı ile ilgili deneyler yapıp, ham verileri elde ettim ve bu ham verileri anlamlı hale getirdim. Zafiyetli düğümlerle yapılan deney sonuçları ile, iyicil düğümlerle yapılan deney sonuçlarını istatistiksel metotlarla karşılaştırdım.

Bu bölümde ise makine öğrenmesi algoritmaları ile tespit ettiğimiz saldırıların sayısal sonuçlarını yorumlayacağım.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

İstatistiksel Analiz

“RPL Tabanlı IOT Cihazları Zafiyetinin Tespiti İçin Makine Öğrenmesi Algoritmalarının Karşılaştırılması” isimli yüksek lisans tezimi bu blog sayfasını kullanarak açıkladım. Şimdiye kadar, RPL protokolü ve RPL protokolünde gerçekleşen saldırılarla ilgili detaylı bilgi verdim. Sonrasında, Taşma Saldırıları, Sürüm Numarası Artırma Saldırısı ve Azaltılmış Rank Saldırısı ile ilgili deneyler yapıp, ham verileri elde ettim ve bu ham verileri anlamlı hale getirdim. Bu bölümde, zafiyetli düğümlerle yapılan deney sonuçları ile, iyicil düğümlerle yapılan deney sonuçlarını istatistiksel metotlarla karşılaştıracağım. İstatistiksel metotlar bizlere makine öğrenmesi metotlarının düzgün çalışıp çalışmadığı hakkında bilgi verecektir.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

Deneylerin Yapılması ve Deney Sonuçları

RPL Tabanlı IOT Cihazları Zafiyetinin Tespiti İçin Makine Öğrenmesi Algoritmalarının Karşılaştırılması başlıklı yüksek lisans tezimi nasıl yaptığımı, bu süreçte elde ettiğim tecrübelerimi ve bu tezdeki kodları bir yazı dizisi halinde blog sayfamda paylaşmaya devam ediyorum.

Bu yazımızda işlenen verileri eğitip RPL protokolünde saldırıyı makine öğrenmesi algoritmaları ile tespit edeceğiz.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

Saldırı Tespitinde Kullanılan Makine Öğrenmesi Algoritmaları

Ham verileri, anlamlı hale getirirken, zafiyetli düğümle yapılan simülasyondan elde edilen veri seti 1 ile, normal düğümlerle yapılan simülasyon 0 ile etiketlendikten sonra bu iki veri seti birleştirilmiştir. Elde edilen bu yeni veri seti ile “sınıflandırma” algoritmaları karşılaştırılacaktır. Karşılaştırılacak makine öğrenmesi algoritmalarının tanımları bu sayfada açıklanmıştır.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

Ham Verilerin Anlamlı Hale Getirilmesi

Ham veri kümesinden elde edilen bilgiler, makine öğrenimini uygulamak için yeterli olmayacaktır. Zayıf düğümler içeren simülasyonlardan elde edilen ham veriler, normal düğümler içeren simülasyonlardan elde edilen ham verilerden tamamen farklıdır. Bu farkın paket sayısı, mesaj türleri, toplam paket uzunlukları ve oranları olduğu gözlemlenmiştir. Bu anormalliği algılamak için, ham veriler 1 saniyelik karelere bölünmüştür. Her saniyenin çerçeveleri içinde aşağıdaki değerler hesaplanmış ve yeni bir veri kümesi oluşturulmuştur.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

Simülasyon ve Ham Veri

Önceki makalede, D’Hondt ve diğerlerinin yapmış olduğu RPL Saldırıları İş Çerçevesinden (Framework) Taşma Saldırıları, Azaltılmış Rank Saldırıları ve Sürüm Numarası Artırma Saldırıları için oluşturulan düğümlerin nasıl elde edildiğini açıklamıştım.

Bu makalede ise, bu düğümlerle Cooja’yı kullanarak simülasyon yapacak ve ağ verilerini elde edeceğim.

Makine öğrenmesi için iki adet sınıflandırılmış veri setine ihtiyacımız olacaktır. Bunlardan bir tanesi, içerisinde zafiyetli düğüm barındırmayan ve tamamen normal IoT düğümleri ile yapılan simülasyondan oluşturulan verilerdir. Diğeri ise çerisinde zafiyetli düğüm barındıran normal IoT düğümleri ile yapılan simülasyondan oluşturulan verilerdir. Böylece, bu iki veri setini sınıflandırıp, sınıflandırma algoritmaları ile anomaliyi tespit edeceğiz.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

Düğümlerin Elde Edilmesi

Önceki yazımda, Contiki ve Cooja ile, Ubuntu 18.04 işletim sistemine sahip sanal bir bilgisayarda IoT cihazlarının simülasyonunu yapabilmek için Contiki ve Cooja’yı nasıl kurduğumuzu anlatmıştım. Bu sanal bilgisayar ile normal ve zafiyetli IoT cihazlarının veri transferi simülasyonunu yapıp ağ bilgisini alacağız. Elbette bu simülasyonu yapabilmemiz için “normal” ve “zafiyetli” düğümlere ihtiyacımız var. Bu zafiyetli ne normal düğümleri elde etmek için D’Hondt’s RPL Framework başlığı altında D’Hondt ve diğerlerinin (2015) yapmış oldukları iş çerçevesinin (framework) kurulumunun nasıl yapıldığını anlattım.
Bu yazımda ise, D’Hondt ve diğerlerinin (2015) yapmış olduğu çalışmadan “Hello Flood”, “Decreased Rank” ve “Version Number Increase” saldırılarının yapılacağı zafiyetli düğümler ile normal düğümleri nasıl elde ettiğimizi anlatacağım.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

D’Hondt’un RPL Saldırı Çerçevesi

D’Hondt ve diğerlerinin (2015) hazırladıkları akademik rapor ile Cooja IoT simülatörünü kullanarak RPL protokolüne yönelik saldırılardan Taşma Saldırılarını, Sürüm Numarası Artırma Saldırılarını ve Azaltılmış Rank Saldırılarını (Decreased Rank) simüle etmeyi başarmışlardır.
Bu yazıda D’Hondt’s RPL Saldırı Çerçevesinin nasıl kurulduğu ile ilgili bilgi bulabilirsiniz.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

Contiki ve Cooja

Ubuntu 18.04 üzerinde Contiki İşletim Sistemi ve Cooja nasıl kurulur? Bu blog sayfasındai bu sorunun cevabını ve çözümünü bulabilirsiniz.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

Simülasyon ve Ham Veri

Bu başlık altında, RPL protokolünde gerçekleşebilecek Taşma Saldırıları, Versiyon Numarası Yükseltme Saldırıları ve Azaltılmış Rank saldırısına ilişkin deneyler yapılıp veri seti oluşturulacaktır.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

RPL Protokolüne Yapılan Saldırılar

Tezin protokol katmanları bölümünde RPL protokolü ile ilgili detaylı bilgi verilmiştir. Bu bölümde, RPL protokolünde uygulanan saldırılara değinilecektir.
RPL yapısı itibari ile birçok parametreye sahiptir. DIS mesajları, DAO Mesajları, Versiyon numarası, ağaç yapısı vs. Bu protokol parametrelerinde meydana gelecek herhangi bir değişiklik sistemin kusursuz işleyişini engelleyeceği için bir saldırı niteliğinde olacaktır. Bu bölümde RPL protokolünde yapılan saldırılar görülmektedir.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

6LoWPAN ve RPL

Bu tez çalışmasının konusu, “RPL tabanlı nesnelerin interneti cihazlarına yapılan saldırıların tespiti için kullanılabilecek makine öğrenmesi yöntemlerinin karşılaştırılması” olduğu için RPL protokolü üzerinde biraz daha fazla durulacaktır.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

Diğer Protokoller

Tez konusu RPL protokolünü içerdiği için bu bölümde RPL ve 6LoPWAN dışındaki protokoller açıklanmıştır. Bunlar: Kısıtlı Uygulama Protokolü (CoAP), Veri Dağıtım Hizmeti (DDS), Mesaj Kuyruğu Telemetri Aktarımı (MQTT), Gelişmiş Mesaj Kuyruk Protokolü (AMQP), Genişletilebilir Mesajlaşma ve Durum Protokolü (XMPP), Çok Noktaya Yayın Alan Adı Sistemi (mDNS), DNS Hizmet Keşfi (DNS-SD), Altyapı Katmanı Protokolleri, Fiziksel Link Katmanı Protokolleri, EPCglobal, Z-wave, Bluetooth Düşük Enerji (BLE), IEEE 802.15.4, IEEE 802.11ah, ZigBee, Gelişmiş Uzun Vadeli Evrim (LTE-A)

Daha Fazla oku >>

Yazıyı paylaşın

LinkedIn
Twitter