Günlük hayattta saldırıların çoğu son kullanıcının bir e-postayı açmasını veya kötü niyetli bir bağlantıyı tıklatmasını sağlamakla başarıya ulaşabiliyor fakat IoT dünyasında bu durum biraz daha farklı. Bu nedenle, gömülü cihazlara girmek diğer sızma testlerine göre daha zordur ve daha fazla emek ister. Geleneksel ve geleneksel olmayan sızma testi arasındaki temel fark, IoT’deki çeşitliliktir. Geleneksel sızma testinde genellikle Windows veya Linux x86/x64-bit işletim sistemleri, bilinen TCP/UDP protokolleri ve uygulamaları ile karşılaşmaktasınız. Ancak, IoT dünyasına  geçtiğinizde, sızma testlerinde (ARM, MIPS, SuperH, PowerPC, vb.) yaygın olmayan yeni mimarilere sahip cihazlarla karşı karşıya kalmaktasınız. ZigBee, SDR (Yazılım Tanımlı Radyo), BLE (Düşük Enerjili Bluetooth), NFC (Yakın Alan İletişimi) gibi farklı iletişim protokollerini test etmek için yeni uzmanlıklara ve araçlara sahip olmanız gerekir. Bu sebeple geleneksel sızma testi cihazları ve araçları, gömülü cihazların ve bu protokollerin güvenlik açıklarını tespit etmede tamamen kaybolabilir.
Ayrıca birçok insan IoT’yi üç bileşen olarak düşünür. donanım, sunucu ve kullanıcı. Neredeyse güvenlik açığı bulunan yayınlanmış araştırmaların tamamı donanıma odaklanıyor. Gördüğüm mevcut eğitimlerin çoğu, donanıma saldırmaya odaklanır. Ama bana göre bu resmin sadece küçük bir kısmıdır. Sadece bunlara odaklanırsanız, sisteminizin geri kalanını riske maruz bırakırsınız. IoT sistemleri bu kadar basite alınmamalıdır ve daha karmaşık bileşenlere sahip olduğu gerçeği kabullenilmelidir.
Daha önceki yazılarımda saldırı yüzeylerinin ne kadar önemli olduğunu sizlerle paylaşmıştım. Saldırı yüzeyini değerlendirmek için bir IoT ortamının hangi bileşenlerden oluştuğununa hep birlikte bakalım:

  • Ağ (Network): Bir IoT ortamı, Internet, BLE, 4G, LTE, Zigbee, LoRA, WiFi, MQTT, 802.11.15.4 vb. bir haberleşme ağına sahiptir.
  • Uygulamalar (Applications): IoT uygulamaları cihaz-Web Uygulamasını, Mobil Uygulamayı yönetir ve bunlar web uygulamaları, mobil uygulamalar veya API’ler (SOAP, REST) olabilir.
  • Firmware: Bu, aygıtın yazılımı ve işletim sistemidir.
  • Şifreleme (Encryption): Şifreleme, cihazda depolanan verileri ve onların iletişimlerini korur.
  • Donanım (Hardware): IoT sistemlerin aygıt bileşenleridir. (Yonga seti, Storagestorage, JTAG, UART bağlantı noktaları, Sensörler, Kamera, bağlantı noktası, algılayıcı, kamera veya diğer aygıtlar gibi)

IoT cihazlarının sızma testlerini gerçekleştirmek için diğer tüm güvenlik testi uygulamalarında iyi bir beceriye sahip olmanızın yanı sıra gömülü cihazlara özgü bir kaç özelliğe de sahip olmanız gerekmektedir. Sızma Testini uygulayacak olan kişinin sahip olması gerektiği niteliklere bakalım;

  • Bir protokolün hangi protokollerin kullanıldığını ve hangi bilgilerin risk altında olabileceğini belirlemek için ağ güvenliğinde iyi bir bilgiye sahip olması gerekiyor.
  • Herhangi bir web tabanlı konfigürasyon arayüzü ile herhangi bir zayıflık olup olmadığını görmek için normal web testlerinde olduğu gibi iyi bir bilgiye sahip olması gerekiyor.
  • Gömülü mühendislikte iyi olması ve arka-kapı (backdoor) test arayüzlerini bulmak için mühendislik araçlarını kullanması gerekiyor.
  • Belirsiz İşletim sistemi örneklerini test etmede iyi bir bilgiye sahip olması gerekiyor. Bu cihazların büyük bir kısmı Linux’un bazı versiyonlarını çalıştıracak olsa da, birçok çalışan QNX, VXworks, gömülü Windows olan veya bazen cihaza özel işletim sistemleri bulunmaktadır.
  • Tersine mühendislik ve çıkarılan ürün yazılımından uygulamaların derlenmesine kadar iyi bir bilgiye sahip olması gerekiyor. Bazı cihazlar, bir işletim sistemine sahip olmayabilir, bu tarz süprizlere hazırlıklı olmak gerekiyor. Bu durumda cihazının saldırıya açık olup olmadığını belirlemek için uygulama üzerinde tamamen tersine mühendislik yapması gerekecektir.

Mikro düzeyde, her bileşenin derinliğini ve potansiyel zayıflıklarını anlamak gerekmektedi. Ne tür bir donanım, ne tür yazılım, ne tür iletişim, hangi yazılım dili, içerisinde hangi eklentileri barındırıyor, bu konuları detaylı bir şekilde irdelemek gerekiyor. Bireysel bileşenlerin zayıflıklarının yanı sıra bileşenlerin etkileşimindeki zayıflıkları da iyi anlamak ve analiz etmek gerekiyor.
Genel hatlarıyla, en sade şekliyle IoT sızma testi methodolojisini 4 grupta özetleyebiliriz.

1. IoT Platformunun Tanımlanması
– Son Kullanıcı IoT: Giyilebilir teknolojiler, Ev Cihazları, Akıllı Telefonlar vb.
– Kurumsal IoT: Kontrol Sistemleri, Araç Filo Yönetimi, Medikal Cihazlar vb.
– ICS/SCADA: Enerji SCADA’sı, Trafik Kontrol SCADA’sı, Process SCADA’sı vb.
2. Atak Yüzeylerinin Tanımlanması
– Cihaz Ekosistemi
– Cihaz Belleği
– Cihaz Fiziksel Arayüzleri
– Cihaz Web Arayüzü
– Cihaz Yazılımı (Firmware)
– Cihaz Ağ Sevisleri
– Yönetici Arayüzü
– Yerel Veri Depolama
– Bulut Web Arayüzü
– 3. Parti Backhand API’leri
– Güncelleme Mekanizması
– Mobil Uygulama
– Üretici Backhand API’leri
– Ortamdaki Cihazlarla Haberleşme Altyapısı
– Ağ Trafiği
– Kimlik Doğrulama ve Yetkilendirme Gizliliği
– Donanım (Sensörler)
3. Zafiyet Testlerinin Gerçekleştirilmesi
Bu kısmı 3 alt başlıkta inceleyebiliriz. Konumuzdan sapmamak adına ben sadece OWASP Top-10’daki önemli maddeleri kulak aşinalığınız olsun diye vereceğim ve detaylarına bu yazımda girmeyeceğim.
1. OWASP Top 10 – Mobil Uygulama Arayüzü
– Hatalı Platform Kullanımı
– Güvensiz Veri Saklama
– Güvenli Olmayan İletişim
– Güvensiz Doğrulama
– Yetersiz Şifreleme
– Güvensiz Yetki
– İstemci Kod Kalite Problemleri
– Kod Kurcalama (Tampering)
– Tersine Mühendislik
– Gereksiz İşlevsellik
2. OWASP Top 10 – IoT
– Güvensiz Web Arayüzleri
– Yetersiz Kimlik doğrulama/Yetkilendirme
– Güvensiz Ağ Servisleri
– Şifreli iletişimden kaynaklanan zafiyetler
– Gizlilik problemleri
– Güvensiz Bulut Hizmeti
– Güvensiz Mobil Arayüzü
– Yetersiz Güvenlik Yapılandırması
– Güvensiz Yazılımlar/Firmware
– Zayıf Fiziksel Güvenlik
3. OWASP Top 10 – Web Arayüzü
– Enjeksiyon (Injection)
– Kırık Kimlik Doğrulama ve Oturum Yönetimi
– Siteler Arası Betik Çalıştırma
– Güvensiz Doğrudan Nesne Başvurusu
– Güvenliğin Yanlış Yapılandırılması
– Hassas Veriyi Açıkta Bırakma
– İşlev Seviyesi Erişim Kontrolü Eksikliği
– Siteler Arası İstek Sahteciliği
– Bilinen Açıklık Bileşenlerini Kullanma
– Doğrulanmayan Yönlendirme ve İletme
4. Elde Edilen Bulguların Değerlendirilmesi
– Risklerin belirlenmesi
– Olasılığın tahmin edilmesi için faktörlerin belirlenmesi
– Yaratabileceği tahmini etkiler için faktörlerinin belirlenmesi
– Riskin ciddiyetinin belirlenmesi
– Bu zafiyetin nasıl giderilebileceğinin belirlenmesi
– Risk derecelendirme modelinin oluşturulması
Gelin bu anlattığımız IoT sızma testi methodolojisini firma isimi vermeden bir IoT ürünü olan “x marka akıllı lamba” üzerinde tanımlayarak pekiştirelim.

  1. IoT Platformunun Tanımlanması: Son kullanıcıların kullandığı bir IoT cihazı
  2. Atak Yüzeylerinin Tanımlanması: Diğer cihazlarla ekosistemi, Cihaz Hafızası, Cihaz Fiziksel Arayüzü, Cihaz Yazılımı, Yerel Veri Depolaması, Güncelleme Mekanizması, Mobil Uygulama, Diğer Cihazlarla Haberleşmesi, Ağ trafiği, Kimlik Doğrulama ve Yetkilendirme Gizliliği
  3. Zafiyet Testlerinin Gerçekleştirilmesi: Yeniden gönderme (Re-play) atağı (Komutların dinlenerek (Sniffing) Lambanın açıp kapatılması ve ışık renginin değiştirilmesi), Cihaz hafızasına fiziksel erişim izni (WPA2 clear text şifreleme)
  4. Elde Edilen Bulguların Değerlendirilmesi: Replay atağı için riski ve Cihaz hafızasına fiziksek erişim izini riskimiz düşük olarak belirlenmiştir.

Bu kadar genel bilgi verdikten ve örnek uygulama ile pekiştirdikten sonra IoT sızma testi aşamalarını 6 bölüme ayırarak neleri analiz edeceğimize hep birlikte bir bakalım. Ben IoT sızma testi aşamalarını 6 bölüme ayırarak incelemenin daha doğru olduğuna inanıyorum.

1. Aşama Donanım Analizi
Bu aşamada, bir saldırganın platform bileşenlerini ve normal yürütme akışını değiştirmesini önlemesinde yeterli olup olmadığını görmek için fiziksel ve donanım denetimlerini değerlendirerek analizine başlanmalıdır. Donanımda bulunan her bileşenin tersine mühendislik yetenekleri incelenmelidir. Örneğin, donanım girişleri JTAG, SWD ve USB arayüzlerinin donanım ile etkileşimde olduğu yollar detaylıca incelenmelidir. Hassas verileri koruyan donanım modüllerini atlatma teknikleri denenmelidir.
2. Aşama Firmware ve İşletim Sistemi Analizi
Bu aşamada, Donanım/yonga yapımcılarının ürün yazılımı ve işletim sistemi için en iyi güvenlik uygulamalarını tam olarak uygulayıp uygulamadığını anlamak önemlidir. İşletim sistemi düzeyinde, yazılım önyükleme modu, kod yürütme, uygulama çekirdek dökümleri ve veri gizlilik korumalarını ayrı ayrı iredeleyerek incelemelidir. Bu analizin bir parçası olarak ayrıca, hassas verilerin uygulama tarafından düzgün bir şekilde silinip silinmediğini test etmek için cihaz belleğini incelemelidir.
3. Aşama Kablosuz (Wireless) Protokol Analizi
Bu aşamada, ZigBee, 6LoWPAN ve Bluetooth LE gibi yerel cihaz iletişimi için kullanılan kablosuz iletişim protokollerinin güvenliğini ve yapılandırmasını doğrulamak için bir kablosuz yapılandırma incelemesi yapılmalıdır. Bu güvenlik incelemesinde, aygıt rolleri, kriptografik ilkeller, şifreleme anahtarları, kimlik doğrulama ve güvenlikle ilgili diğer algoritmaları tanımlayarak işe başlanmalıdır. Çeşitli güvenlik bileşenlerinin envanterini çıkarttıktan sonra, ortadaki adam (MiTM), Yeniden gönderme atağı (re-play), yetkisiz ağ devreye alma ve ardından fuzz protokol yığınının testi gibi ortak saldırıları analizlerinin yapılması gerekmektedir.
4. Aşama Mobil Uygulama Analizi
Bu aşamada, Eğer IoT cihazı kontrol eden bir mobil uygulama varsa, tipik olarak IoT platformlarında olduğu gibi, bu aşamada birkaç temel unsurların test edilmesi gerekmektedir: depolama seviyesi ve aktarım düzeyi veri koruma kontrolleri, kimlik doğrulama ve yetkilendirme, oturum yönetimi ve veri doğrulama vb. Sızma testi esnasında bu unsurlardan her biri için ne arayacağınıza detaylıca bakalım:

  • Depolama seviyesi verileri – Yerel API’ler doğru kullanılmış mı ? Önemli müşteri bilgileri güvenli bir şekilde saklanmış mı ? (örneğin kullanıcı kimlik bilgileri, kişisel bilgiler veya diğer hassas uygulama verileri); ve hassas verileri düzgün bir şekilde siliniyor mu?
  • Aktarım seviyesi verileri – Mobil uygulama ile uzaktaki sistemler arasındaki trafikte bilgilerin ifşası, kurcalanması ve sahteciliğiyle ilgili güvenlik açıkları var mı ?
  • Kimlik doğrulama/yetkilendirme – Geliştirilmiş kimlik doğrulama protokolleri, sertifika doğrulama, parola ilkesi uygulaması ve hesap kilitleme mekanizmaları var mı ?
  • Oturum yönetimi – Ayrılmış bir bağlantıyla karşılaşıldığında kalıcı soketlerin esnekliği nasıl ? Brute-force, oturum sabitlemesi vb. saldırılara duyarlı olup olmadıklarını görmek için oturum tanımlayıcılarının entropisi, uzunluğu, zaman aşımı ve rotasyonu test etmek gerekiyor.
  • Veri doğrulama – Bir saldırgan veya kötü amaçlı uygulama tarafından kullanılabilecek açık bağlantı noktaları, arabirimler, IPC kanalları veya diğer giriş modları test edilmelidir. Arayüzdeki açıklıklar, hatalı girdiyi filtreleme, sanitasyon ve doğrulama yoluyla nasıl ele aldıklarını görmek için test edilmelidir. XSS, SQLi, komut enjeksiyonu, hatalı kullanılan istisnalar ve bellek bozulması saldırıları (RCE veya DoS) bunlara birer örnektir.
  • 5. Aşama Web Uygulaması Analizi
    Bu aşamada; web uygulama testi, temel platformların güvenli bir şekilde yapılandırıldığından emin olmak için ağ ve işletim sistemi testi ile başlar. Ardından, web uygulama katmanına geçilerek analizlere devam edilmelidir. Sızma testinin bu kısmında, birden çok rol oynamanız önemlidir: Birinci rolde, web uygulamasında geçerli kimlik bilgileri olmayan bir saldırgan olarak, ikinci rolde ise geçerli kimlik bilgilerine sahip kullanıcılar olarak testleri gerçekleştirmeniz gerekmektedir. İkinci rolde, uygulamanın karmaşık yetkilendirme kontrollerini tam olarak incelemek için test tüm kullanıcı rollerinde yürütülmelidir. İkinici rolde kullanıcının aynı rolden başka bir kullanıcının bilgilerine erişme yeteneğini ve ayrıca kullanıcının daha yüksek bir rolde başka bir kullanıcıya ait bilgilere erişme yeteneği olup olmadığı (dikey ayrıcalık yükseltme) test etmelidir.
    6. Aşama Bulut Hizmetleri ve Altyapısı Analizi
    Bu aşamada; IoT ağları, uygulamaları, cihazları ve sensörleri ile veri alışverişi yapmak için kullanılan tüm arka uç platformlar, bir saldırganın yetkisiz erişim elde edip edemeyeceğini ya da hassas bilgileri alabildiğini görmek için test edilmelidir. Bu aşama, harici bulut hizmetlerini (Amazon EC2, Google CE, Azure VM) veya API’lerini içerir. Platformun bulut dağıtımının güvenliğini değerlendirmek için ağ diyagramları, dokümantasyon ve bulut yönetim konsolu erişimini kullanmalısınız. Güvenlik mimarisini ve dağıtımını ana bileşenlerini inceleyerek değerlendirmekte fayda var: bunlar, temel güvenlik mimarisi tasarım varsayımları, mevcut ağ topolojisi, varolan güvenlik teknolojilerinin envanteri, güvenlik ilkeleri, yönergeler ve yordamlar, örnek grup ilkeleri, ağ erişim denetimleri ve ağ bölümlendirme, uzaktan erişim ve sanal özel ağlar, iki faktörlü kimlik doğrulama ve tek oturum açma, veri deposu şifreleme ve anahtar yönetimi, Docker ve Roket gibi konteynerizasyon teknolojileri ve oturumları izleme ve izleme gibi kimlik doğrulama kontrollerinden oluşmaktadır.
    Şimdi sıra her biri kendi avantaj ve dezavantajlarına sahip olan IoT sistemlerini test etmek için kullanılabilecek üç genel test yöntemi metodolojisiden bahsedelim. Bunlar; Siyah Kutu (Black Box) / Beyaz Kutu (White Box) / Gri Kutu (Grey Box) Testleridir.

    1. Kara kutu (Black Box) testi

    Testi gerçekleştirecek olan kişi sistemi gerçek dünyadaki bir saldırgan olarak ele aldığı test methodolojisidir. Sahip oldukları tek bilgi, halka açık olan bilgidir. Gerçek bir saldırı için tek fark, testi gerçekleştirecek olan kişilerin sunuculara ve servislere saldırmaya yetkili olmasıdır.
    Çoğu zaman, bu testin büyük bir kısmı, ürün yazılımının kurtarılmasına veya cihazın rootlanmasına odaklanacaktır. Bununla, API’ler dahil sistemin nasıl çalıştığı hakkında bilgi toplarsınız. Bu ciddi sistematik sorunları bulmak için çok önemlidir.
    Kara kutu testi genellikle görev odaklı değil, zaman odaklıdır. Testi gerçekleştirecek kişi prosedürleri takip etmesine rağmen, testler, güvenlik açıkları vermesi muhtemel olan yolları izleyerek organik bir şekilde akış içerisinde bulunacaktır.

    Avantajları

    En düşük müşteri çabası – kapsam netleştirilir ve kabul edilir, üretim cihazları size gönderilir, sonrasında test başlar.
    Neredeyse tüm sistemlerle mümkün – yasal, teknik ve hatta iç politika bazen dış tarafların beyaz kutu testi yapmasını engeller.
    Gerçek dünyayı simüle eder – herhangi bir saldırganın sisteme nasıl yaklaşacağıdır. Bu aşamada tersine mühendislik çok eğlencelidir.

    Dezavantajları

    Kullanım süresini en üst düzeye çıkarmaz – kısıtlı erişim veri sayfalarını elde etme, gizlenmiş parçalardan parça numaralarını belirleme ve tersine mühendislik çok katmanlı kartlar gibi görevler için harcanan zaman, güvenliğinizi artırmaz.
    Potansiyel olarak düşük kapsama alanı – zamanın tersine mühendislik yaparak ve sistemi keşfederken, güvenlik testinin kendisi için daha az zaman harcanır.
    Çoğu zaman, derinlemesine savunmayı göz ardı eder – bir aygıtın yazılımı test sırasında kurtarılamazsa, ancak ürün yazılımı gizli güvenlik açıkları ile doluysa, güvenli bir sistemi korumak için gereken çoklu koruma katmanlarına sahip olmazsınız.

    Beyaz kutu (White Box) testi

    Testi gerçekleştirecek olan kişi tasarım dokümantasyonuna, özelliklerine, veri sayfalarına, şemalara, mimari şemalara, ürün yazılımına ve hatta potansiyel olarak kaynak koduna erişebilir. Bu bilgileri kullanarak, sisteme saldırırlar. Belgeye açık erişim, Testi gerçekleştirecek kişi test başlamadan önce test için bir plan geliştirmesini sağladığından, beyaz kutu testi görev odaklıdır.

    Avantajları

    Zamanın kullanımını en üst düzeye çıkarır – test kullanıcıları doğrudan güvenlik testlerine geçebilir.
    Tam kapsama – belgelenen her şey uygun şekilde test edilebilir.
    Savunma derinlemesinedir – sistemin birçok katmanı, derleme zamanı güvenlik korumaları gibi yönlerden, ana bilgisayarlarda saldırı tespitine kadar incelenebilir.

    Dezavantajları

    En yüksek müşteri çabası – belgelerin ve diğer bilgilerin sağlanması zaman alıcı olabilir.
    Gerçek dünya değil – çalışmalarının çok zayıf bir şekilde yayılmasına neden olabilir ve istismar edilmeyecek kadar derin gizlenmiş güvenlik açıklarına odaklanabilir.
    Satın almak zor – birçok satıcı, belgelerine, sistemlerine, fikri mülkiyetlerine veya kodlarına bu erişim düzeyine izin vermek için hala isteksizdir.
    Üçüncü taraflar – test edilen sistem birden fazla üçüncü tarafın içeriyorsa, bunların hepsinde beyaz kutu erişim düzeyi elde etmek son derece zor olabilir.

    Gri kutu (Grey Box) testi

    Bu siyah-beyaz kutu testi arasındaki orta yoldur. Bazı bilgiler açıktır, ancak hepsi değil. Bu, gerçekleştirilen en yaygın test türüdür. Genel anlamda hem siyah hem de beyaz kutu testinin bazı avantaj ve dezavantajlarını birlikte taşır.
    Bugünkü yazımı özetlemek gerekirse; Nesnelerin interneti sızma testinin farklılıklarından bahsettik, sonrasında detaylı bir sızma testi methodolojisini oluşturduk ve son olarak 3 farklı genel test yöntemi metodolojisiden bahsettik. Umarım sizlerle paylaştığım bilgiler faydalı olmuştur. Bir başka yazıda görüşmek dileğiyle şimdilik hoşçakalın…