Makine Öğrenmesi Teknikleriyle Kötü Amaçlı Yazılımların Tespiti

Aslıhan Reyhanoğlu
Nettsi Bilişim Teknoloji A.Ş.
6 min readAug 14, 2020

Günümüzde internetin hızla gelişmesi ve kullanıcı sayısının artmasıyla kötü amaçlı yazılımlar önemli siber tehditlerden biri haline gelmiştir. Kaspersky Laboratuvarı tarafından geliştirilen antivirüs çözümleri 2015 yılında 6.563.145 farklı ana bilgisayarın saldırıya uğradığını tespit etmiş ve 4.000.000 farklı kötü amaçlı yazılım nesnesini ortaya çıkarmıştır(2016).[1] Kullanıcı yetkisi olmadan sisteme sızmak üzere tasarlanmış ve istenmeyen eylemde bulunan program veya kod, kötü amaçlı yazılım olarak adlandırılır. Kötü amaçlı yazılıma truva atı, casus yazılım, reklam yazılımı, solucan, virüs, fidye yazılımı örnek olarak verilebilir.[2]

Kötü amaçlı yazılımlar gizliliğin ihlal edilmesine ve veri kayıplarına neden olabilir. Şirketlerin ve bireysel kullanıcıların bilgisayar sistemlerinin bunlara karşı korunması siber güvenlik görevlerindendir. Korunmada etkili olunması, ancak kötü amaçlı yazılımların doğru ve zamanında tespitiyle mümkündür.[3]

Kötü amaçlı yazılım algılama yaklaşımları[14]

Yazılımın kötü niyetli mi yoksa zararsız mı olduğuna karar verirken statik analiz veya dinamik analiz teknikleri kullanılabilir.[4] Statik teknikler kodu çalıştırmaz. Sadece kod yapısını ve ikili veri özelliklerini inceler. Dinamik teknikler ise kodun ağ üzerinden veya uçtan uca cihazlarda çalışma davranışlarını gözlemlemek için yazılımı çalıştırır. Bazı kötü amaçlı yazılım tespit sistemleri yalnızca statik veya dinamik teknikler kullanır, bazıları ise her ikisini birden uygular. Günümüzde yavaş yavaş bu teknikler yerlerini makine öğrenmesi(ML) metotlarına bırakmaktadır(Özellikle zero-day saldırılarıyla karşılaşıldığında statik ve dinamik teknikler yeterli olmamaktadır).

Önceki yazımda da belirttiğim gibi makine öğrenmesi, bilgisayarlara öğrenme yeteneğini açıkça programlanmadan kazandırma yöntemi olarak tanımlanır. Kısacası, ML farklı problemleri çözüme ulaştırmak için programlar oluşturabilen bir program’dır. Eğer ML algoritması bir problemi çözerken daha önce varılmış sonuçlardan yararlanıyorsa bu algoritma denetimli öğrenme algoritmasıdır.[5] Belirli bir veri kümesinde benzerlikleri ve korelasyonları buluyorsa denetimsiz öğrenme algoritması olarak tanımlanır(Denetimsiz öğrenmede etiketleme yapılmaz). Denetimli öğrenmede algoritma özellikler ve etiketlerden oluşan nesneleri içeren eğitim veri kümesiyle eğitilir.

Makine öğrenmesi eğitim ve tespit döngüsü(Kaspersky Lab[12])

Kötü amaçlı yazılım tespitinde bu nesneler dosyalar; özellikler ise farklı dosya istatistikleri, kullanılan API işlevlerinin listesi vb. olabilir.[5] Basitçe kötü amaçlı yazılım veya zararsız olarak etiketlenebilir. Daha sonra ML algoritması bu eğitim veri kümesini kullanarak tahmine dayalı bir model oluşturur. Böylece daha önce görmediği nesneleri (yeni dosyaları) doğru şekilde etiketleyebilir (kötü amaçlı yazılım veya zararsız). Denetimsiz öğrenmede, algoritma incelenen verilerdeki gizli örüntüleri ve kümeleri ortaya çıkarmaya çalışır( benzer nesnelerden oluşan gruplar, yüksek düzeyde ilişkili özellikler). Bu öğrenme stilinde veriler etiketlenmeden kullanılır. Algoritma, korelasyonları kendi kendine anlamaya çalışır. Siber güvenlikte denetimsiz öğrenme, davranış analizi ve anormallik tespiti açısından ayrı bir öneme sahiptir. Makine öğrenmesi yöntemlerini siber güvenlik sistemlerinde uygularken dikkat edilmesi gerekenler şu şekildedir:

1-Yanlış pozitif oranı

2- Sağlamlık

3-Modelin yorumlanabilirliği

4- Kullanılan yöntemin ne kadar üçüncü taraf verilerine ve mimarilerine(genel veri kümeleri gibi) bağlı olduğu sorgulanmalıdır.

5- Makine öğrenmesi, tamamlayıcı koruma teknolojileri ve insan uzmanlığının birlikte çalıştığı birçok katmanlı güvenlik yaklaşımının bir parçasıdır. Nihai sonuç değildir.

Literatür Taraması

Naeem ve arkadaşlarının 2018'de yazdıkları makalelerinde IoT kötü amaçlı yazılımını tespit etmek için önerdiği teknik, kötü amaçlı yazılım dosyasını gri tonlamalı yazılı bir görüntüye dönüştürmektir. Görsel özellikleri kullanarak kötü amaçlı yazılımları ayırt etmek amaçlanmıştır. SVM sınıflandırıcıyı eğitmek için kullandıkları bir dizi görsel özellikle(kötü amaçlı yazılım yazılımından) %97,4 doğruluk elde etmişlerdir.[6][8] Yeo ve arkadaşları ise 2018'de ağ trafiğindeki kötümcül davranışları izleyerek yeni bir kötümcül yazılım tespit etmek amacıyla kötü amaçlı trafiği tanımlamak için 35 özellik belirlemişlerdir. Bunu CNN, MLP, SVM ve Random Forest gibi çeşitli makine öğrenimi algoritmalarıyla gerçeklemişlerdir.[6][9] CNN veya Random Forest kullanıldığında % 85'in üzerinde bir doğruluk elde etmişlerdir. Kötü amaçlı uygulamaları tespit etmek için ağırlıklı mesafe işlevi, KNN ve Naive Bayes sınıflandırıcı ile uygulamanın gerektirdiği izinleri kullanmışlardır. % 93,27'ye kadar doğruluk elde etmişlerdir.[6] Kolter ve arkadaşları(2006) ise kötü amaçlı yazılımları ayırt etmede n-gramlar(n-gram, bir özellik çıkarma tekniğidir. N-gram modeli kötü amaçlı yazılım tespitinde yaygın olarak kullanılmasına rağmen bazı dezavantajlara sahiptir) üzerinde çalışan güçlendirilmiş karar ağaçlarının hem Naive Bayes sınıflandırıcısından hem de Destek Vektör Makinelerinden daha iyi sonuçlar ürettiğini bulmuşlardır.[7][10] Ye ve arkadaşlarının çalışmasında kötü amaçlı yazılım ve temiz program dosyalarını ayırt etmek için Windows API yürütme dizilerinde ilişkilendirme kurallarının otomatik olarak çıkarılması hedeflenmektedir.[7][11]

Makine Öğrenmesi Siber Güvenlik için Güvenli mi?

Kaspersky’nin 2019'daki makalesinde son birkaç yıldır güvenlik konferanslarında AI’dan değil de Rakip AI’dan bahsediliği belirtilmiştir.[5] Başka bir deyişle, günümüzde saldırı altındaki makine öğrenmesi yöntemleri ile de başa çıkmak gerekmektedir. Kötücül yazılım tespit sistemlerinde, yüz tanımada kullanılanlara benzer makine öğrenmesi teknikleri kullanılır. Makine öğrenmesinden yararlanan kötücül yazılımdan koruma sistemlerine yapılan saldırıların etkisi sarsıcı olabilir. Yanlış tanımlanan bir truva atının milyonlarca cihaza virüs bulaşmasına ve milyonlarca dolar kaybına neden olma ihtimali vardır. Ancak belirli şartları yerine getirerek ve makine öğrenmesi sistemlerini koruyarak bu problemler giderilebilir.

Siber Güvenlikte Faydalanılan Makine Öğrenmesi Tekniklerine Yapılabilecek Bazı Saldırılar ve Çözüm Önerileri

1- Etiket zehirlenmesi: Bu tür saldırı yapabilen bir bilgisayar korsanı eğitim veri kümesine erişebiliyor demektir. Yani eğitim veri setine yanlış etiketlenmiş nesneler ekleyebilir. Bu yanlış veriler üzerinde eğitilen makine öğrenmesi modeli benzer nesnelerle karşılaştığında tespit etme hataları yapar.[5]

Çözüm önerisi: Birçok kez kontrol etme ve bir araya getirme çalışması(ensemble) yapılabilir. Örneğin; Kaspersky tarafından üçüncü kaynaklardan alınan tüm etiketli dosyalar doğru şekilde sınıflandırıldıklarından emin olmak amacıyla iki kez kontrol edilir. Makine öğrenimi tabanlı sınıflandırmadaki hatalar da “bir araya getirme” metodu ile azaltılır.

2- Eğitim veri kümesi zehirlenmesi: Saldırgan, modelin performansını düşüren özel nesneler ekleyerek bir veri kümesini zehirleyebilir. Bu tür saldırıda etiketler (denetimli öğrenmede kullanılan) doğrudur, fakat eklenen nesneler sorunludur. Birçok geliştirici üçüncü şahıslar tarafından kolayca zehirlenebilen halka açık veri kümeleri kullanmaktadır. Bu tehdit özellikle onları etkiyebilecek bir türdür.[5]

Çözüm Önerisi: Veri kümelerini koruma ve yabancı nesneleri ayırt etme. Bir saldırgan, modeli eğitmek için hangi örneklerin kullanıldığını bilmiyorsa işi biraz zorlaşabilir. Örneğin; Kaspersky’nin bu tür saldırılarla mücadele etmek için davranışsal makine öğrenimi tabanlı sistemlerine garip dosyaları ayırt etme ve sınıflandırmalarını reddetme yeteneği verir. Böylece modelin bozulmasını önler.

3- Beyaz kutu / kara kutu düşmanca saldırısı: Eğitim veri kümelerine erişimi olmayan bir saldırgan algoritmayla etkileşime girebilir. Modelin kendisine erişebilen hacker, kodu inceleyebilir. Tersine mühendislikle model mimarisini öğrenebilir. Modelin hangi özellikleri kullandığını belirleyebilir. Sonrasında bu özelliklere müdahale ederek kötü amaçlı yazılım oluşturabilir. Bu olay beyaz kutu veya model çalma saldırısı olarak adlandırılır. Kaynak kodu yoksa saldırgan oluşturulan kötü amaçlı yazılımda art arda küçük değişiklikler yapabilir. Elde ettiği sonuçları da test ederek modelde zayıf bir nokta bulabilir. Buna kara kutu saldırıları denir. Kara kutu saldırıları yoğun emek gerektirir. Saldırgan, saldırı örneklerini oluşturmak için “rakip yapay zeka” kullanarak bunu otomatikleştirebilir.[5]

Çözüm Önerisi: Bulut makine öğrenmesi modelleri kullanılabilir. Örneğin; Android için makine öğrenimi tehdit tespiti. Bu durumda kullanıcının cihazındaki bir aracı, yeni bir uygulamanın özelliklerini toplar. Bu veriler daha sonra örnekler üzerinde eğitilmiş güçlü bir bulut makine öğrenmesi modeline gönderilir. Karar anında veriler mobil cihaza geri gönderilir. Ancak yine de bir saldırgan bulut makine öğrenmesi modelini zorlayabilir. Böyle bir kara kutu saldırısı çok zaman alabilir. Bu nedenle, kolayca tespit edilebilir.

Sonuç olarak makine öğrenmesi kötü amaçlı yazılım tespitinde önemli bir rol oynayabilir. Bu alanda yapılmış birçok akademik çalışma bulunmaktadır, hatta bazı şirketler kendi laboratuvarlarında makine öğrenmesi üzerine çalışmalarını sürdürmektedir. Örneğin; Kaspersky, laboratuvarlarında gelen dosya akışlarını önceden işlemek için kümeleme yöntemleri, bulut algılama için derin öğrenme modelleri ve ürün veritabanlarında makine öğrenmesi tarafından oluşturulan kayıtları kapsayan birçok alanda ML algoritmalarını kullanmaktadır. Fakat, bu alanda yapılan çalışmalar sonucunda farklı saldırı formlarının ML metotlarını etkileyebileceği düşünülmektedir.

Referanslar

1-https://securelist.com/kaspersky-security-bulletin-2015-overall-statistics-for-2015/73038 (Son erişim tarihi: 14.08.2020)

2-https://arxiv.org/pdf/1903.02966.pdf#:~:text=This%20dynamic%20characteristic%20of%20the,admired%20approach%20for%20malware%20defenders. (Son erişim tarihi: 14.08.2020)

3-https://core.ac.uk/download/pdf/80994982.pdf (Son erişim tarihi: 14.08.2020)

4-https://arxiv.org/abs/1905.07573 (Son erişim tarihi: 14.08.2020)

5-https://media.kaspersky.com/en/business-security/enterprise/machine-learning-cybersecurity-whitepaper.pdf (Son erişim tarihi: 14.08.2020)

6-https://towardsdatascience.com/building-trust-in-machine-learning-malware-detectors-d01f3b8592fc (Son erişim tarihi: 14.08.2020)

7-https://arxiv.org/abs/1904.02441 (Son erişim tarihi: 14.08.2020)

8-Naeem, H., Guo, B., and Naeem, M. R. A lightweight malware static visual analysis for IoT infrastructure. 2018.

9-Yeo, M., Koo, Y., Yoon, Y., Hwang, T., Ryu, J., Song, J., and Park, C. Flow-based malware detection using convolutional neural network. 2018.

10-J. Z. Kolter and M. A. Maloof, “Learning to detect and classify malicious executables in the wild,” Journal of Machine Learning Research, vol. 7, pp. 2721–2744, December 2006, special Issue on Machine Learning in Computer Security

11-Y. Ye, D. Wang, T. Li, and D. Ye, “Imds: intelligent malware detection system,” in KDD, P. Berkhin, R. Caruana, and X. Wu, Eds. ACM, 2007, pp. 1043–1047.

12-https://www.kaspersky.com/enterprise-security/wiki-section/products/machine-learning-in-cybersecurity (Son erişim tarihi: 14.08.2020)

13-https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8949524 (Son erişim tarihi: 14.08.2020)

--

--