Karmaşıklaştırmak ya da Karmaşıklaştırmamak. — Fuzzy Hash Nedir?

Bu yazıyı yazmaktaki ilhamımı TryHackMe’nin Pyramid of Pain odası ile karşılaştığımda (tools başlığı altında bahsediliyor) aldım.

Hash’lerin kullanım alanlarında gayet güzel bir teknoloji olduğunu düşünüyordum. Ama en küçük değişimde bambaşka bir sonuç vermesi bana hep burada sanki bir eksiklik yatıyor hissini veriyordu. Sanki, dosya azıcık değiştiğinde, bambaşka bir dizi harf ve sayı üretmeyecek bir teknoloji bir yerlerde var olmalıydı. O yüzden bu geneli yazı tabanlı THM odasında bu teknolojiyi öğrendiğimde, işte buymuş dedim. Daha önce pek bir kimseden de bunu duymadığım için kesinlikle bunu yazmalıyım ve daha çok kişiye bahsetmeliyim diye düşündüm. Hazırsanız dalışa başlayalım.

Soru gelsin, bu teknolojide NEDİR?

İngilizce teknik adı “context triggered piecewise hashes (CTPH), endüstri içi tabiri ile fuzzy hash veya similarity hashing olarak da biliniyor bu güzel isimli yaklaşım.

Türkçe sonuçları aradığımda bu konuda ancak bir avuç sonuç çıkıyor ve çeviri araçları kullanarak çevirmek istediğimde aşağıdaki sonuçlar elde ediliyor.

Deepl: Bağlam tetiklemeli parçalı karmalar
Google Translate: Bağlam tetiklemeli parça parça karmalar

Araçların, alanımızın teknik bilgisinden uzak nötr çevirileri ile yetinmedim ve alakalı parçadan tetiklenen karmalar olarak çevrilebileceğini düşünüyorum. Hatta hash’in Türkçesi “karma” olarak karşıma çıkması ve bunun popüler bir endüstri kullanımı olmamasından dolayı ve teknik konuşmalarda sıklıkla İngilizce ile Türkçeyi beraber tükettiğimiz için “alakalı parçadan tetiklenen hashler” olarak en azından endüstri halkı arasında bahsetmeyi daha uygun bulduğumu söylemeliyim. Bu sayede ismini telaffuz ettiğinizde biraz siber güvenlik teknik bilgisi olan birine tam anlamını da ulaştırmış oluyor. Ki bu genelde Türkçe dilinin kendine has bir özelliğidir. Bence müthiştir.

Hashlerin genel kullanımı açısından baktığınızda, yani bir girdi için eşsiz bir tanımlayıcı dizi üretmek ve orijinal girdiyi referans etmek. Genellikle gizlilik prensibi ile güvenliğin sağlanması amacına sahiptir ve eşleşen veya benzeşen girdiler üretmesi kesinlikle istenmez.

Hashlerin en sık kullanımı, bir girdi için eşsiz bir tanımlayıcı dizi üretmek ve orijinal girdiyi referans etmek ve bunu her defasında eşsiz olarak yapmaktır.

Eminim sizde hashlerle her temas ettiğinizde birileri bir yerde kısmi eşleşen hashlere ihtiyaç duymuyor mu diye düşünmüşsünüzdür. Ben bu konuya hiç denk gelmemiştim. Dijital içerik servisi sağlayıcıların içerik koruma taktikleri genelde zararlı içeriğin hashini alıp, hashi eşleşen içeriği otomatik olarak engellemek şeklinde olduğu için peki ya kısmi olarak değiştirildiğinde ne olacak diye düşünürdüm. Aynı inceleme prosedürü yeniden gerçekleştirilmesi gerekiyorsa bu vakit ve işlem gücü kaybına yol açar diye düşünürdüm.

Bu yazıda bahsedeceğim kullanım alanı zararlı yazılım analizi dünyasından. Zararlı yazılım analizlerinde de ilgili yazılımın hashini alarak sistemler üzerinde bloklamak işin belkemiği bir taktik. Ama bu zihinsel satranç oyununda, sıra tabanlı hamlelerin bir sonrakini tahmin etmek oldukça zor.

Bu görselde hashi alınan bir radyo görseli görüyoruz. Çıktığında onu temsil eden bir sonuç elde ediliyor. Burada çıktıların benzerliğini, teorik olarak kısmi parçalı hashleri temsil etmek için kullanıyorum, şekil ve renk benzerliklerine dikkatinizi çekmek isterim.

Bu görselde şekli aynı olan ama renkleri farklı olan bir radyo görselimiz var. Hashlerin geleneksel kullanımında, bu farklılık bambaşka bir çıktı almamızı sağlardı. Ama kısmi parçadan tetiklenen hashleme yöntemi kullandığınızda farklı kısmı belli eden, ama bunu yaparken aynı olan kısımlarını da net bir şekilde gösteren sonuçlar elde ediyoruz.

İşin kulağa hoş gelen kısmı, zararlı yazılımın hashini alma aşaması acı piramidinde en temel ve kolay yaklaşımlardan biri olarak görünüyor. Zararlı yazılım avcıları olan analistler, bu yazılımları hashlerini alarak blokluyor ve gelecekte geri gelmeyeceğinden emin oluyor.

Bu sıra tabanlı zihinsel mücadelede en beklenen hareket tehdit aktörünün geliştirdiği zararlı yazılımları biraz farklılaştırarak kullanması. Benim aklıma ilk gelen yaklaşımlar, tehdit aktörlerinin geliştirdikleri ya da hazır aldıkları zararlı yazılımları azıcık değiştirerek kullanmaları ya da defansif operatörlerin ilk hamlesi gayet belli olduğu için, her hedefte azıcık farklılaştırarak kullanmaları.

İşte bu hamlenin karşılığı kısmi olarak farklılaşan hashler oluyor. Bu hashler değişen girdinin aynı kısımları için aynı çıktıyı üretirken farklı kısımları için farklı çıktılar üretiyor. Analistler, kötü amaçlı yazılım tespit kaçınma tekniklerine karşı bu benzerlik hashlerini kullanıyor.

Bu amaçla kullanılabilecek araçları merak ediyorsanız ilgili Wikipedia sayfasından diğer araçların isimlerini de öğrenebilirsiniz. Pek fazla araç bu işi yapmıyormuş gibi görünüyor. Alanı kısıtlı bir kullanıma sahip olduğu için mi yoksa aşırı spesifik mi kalıyor sorusunun cevabını size bırakıyorum.

THM odası çok anlamlı bir cümleyle sonra eriyor. “David Bianco’nun belirttiği gibi, “bir tehdit aktörüne verdiğiniz acı miktarı, kullanabildiğiniz indakatörlerin türlerine bağlıdır”.” Bu açıdan baktığınızda alakalı parçalardan tetiklenen bu fuzzy hashler çok temel ve hafif kalan bir savunma mekanizması. Verimin elde edilebilmesi ise tehdit istihbaratı konusunda hizmet alan kurumun büyük kütüphaneler oluşturan siber firmalarından genellikle abonelik hizmeti almasını gerektiriyor.

Bu konu “Tespit Etme Olgunluğu” ile de yakından alakalı. Bu konuda hem ilgili hem de bu yazıya ilham olan odanın bir üst başlığı sayılabilecek Intro to Detection Engineering odasının linkini de ilgilenenler için buraya ekliyorum. Hem insan bu konuya ve günümüz siber endüstrisine bakınca bu yaklaşımın oldukça yeni ve henüz belki de çoğu organizasyonun sadece yüksek bütçe ve eforla ancak hazır olabildiğini düşünüyor, o da hazır olabilmişlerse diye düşünmeden edemiyor. İşin komiği ikinci bahsettiğim THM odasının belki de atası sayılabilecek Detection Maturity Level Model’i tanıtan blog yazısı 2014 yılında yazılmış.

Kişisel olarak ben bunları okurken belki en fazla birkaç yıllık olan bilgileri öğrendiğimi düşünürken bu bilgilerin temelinin 2014 yılında atılmış olması ve yazarı Ryan Stillions’ın hafifçe bir tebessümle “daha hala tespit etme olgunluğu olmayan bir sürü organizasyon var” diye kendince yakındığını hayal edince oldukça komik bir durum ortaya çıkıyor.

Son olarak bu yazıyı aklıma gelen belki saçma belki de hınzır bir çılgın soruyla bitirmek istiyorum, proaktif zararlı yazılım tehdit avcılığı olarak, zararlı yazılım üzerindeki bir sonraki geliştirme hamlesi ilgili operatör tarafından gerçekleştirilip, ilgili davranış kuralını koruduğu sistemler üzerinde oluşturulup tehdit aktörlerinin önüne geçmeyi deneyebilir mi? Ben bir yerlerde birinin bunu kesinlikle düşünüp denediğine eminim. Ama yapılabilirlik eforunu veya ne kadar verimli veya imkanlı olup olmadığını bilmiyorum. Belkide bir tavşan deliği problemi yaratıyodur? Belki de yapay zeka ile ofansif güvenliğin birleşebileceği ilginç bir fikirdir?

Bu yazı için interneti araştırırken, henüz herkesin dilinde yapay zeka kelimesi geçmiyorken, Microsoft’un fuzzy hashing ve deep learning sürecini birleştirerek elde ettiği sonucu anlatan bir blog yazısı olduğunu gördüm. Kesinlikle incelemenizi tavsiye ederim.

Ek olarak, böyle basit bir konu için bu kadar uzun bir yazı yazmak tam da benlik bir hareket.

Bir sonraki yazıda buluşmak üzere kadar değerli okuyucular, lütfen harika olmaya devam ediniz!