Hash Değeri Ve Kullanım Alanları | Fatih Mehmet Dişçioğlu | Bilgi Güvenliği Uzmanı
Ana Sayfa/ Security / Hash Değeri Ve Kullanım Alanları
işisel güvenlik ve adli bilişim noktalarında önemli bir yere sahip olan hash değerleri parmak izi veya dna niteliğini taşıyarak benzersizlik temeli üzerine kurulu yapıdır. Genel itibariyle md5 veya sha1 algoritmalarıyla karşımıza çıkan bu şifreleme türlerinin oluşturmuş olduğu hash değerleri indirmiş olduğumuz dosyanın ne kadar güvenli olduğunu belirlemede bir etken olduğu gibi adli bilişim incelemelerinde de deliller üzerinde oynama yapılıp yapılmadığı noktasında ipuçları vermektedir.
İşte her iki noktayı da konuşacağımız bu konumuzun devamında aklımızdaki soruları giderdikten sonra windows ve linux ortamlarında farklı araçları kullanarak temel bağlamda bir analiz sürecini işleyeceğiz.
Hash Değeri Ve Kullanım Alanları!
Mesaj özeti olarak adlandırılan hash değerleri uzun bir girdinin daha kısa bir şekilde gösterilmesidir diyebiliriz. Tabii bu şekilde ortaya çıkan hash değerinin uzunluğu şifrelendiği algoritmanın bit sayısına göre değişmektedir.
128 bitten oluşan md5 şifreleme türünde 32 karakterden oluşan bir çıktı üretilir.
160 bitten oluşan sha1 şifreleme türündeyse 40 karakterden oluşan bir çıktı üretilir.
Yani sha1’den örnek verecek olursak; elimizdeki word dosyasının içindeki girdi sadece bir harfte olsa, yüzlerce sayfada olsa bize verilen hash değeri 40 karakterden oluşan bir çıktıdan meydana gelecektir.
Bununla beraber gözden kaçırılmaması gereken noktaysa, eldeki verinin içindeki bir harfin veya girdinin en ufak değişikliğe uğraması sonucunda çıktı olarak verilen hash değerinin tamamen farklı olacağıdır. İşte bu sebeple parmak izi veya dna niteliği taşıdığını ifade etmiştik.
Tabii elde edilen bu hash değerleri tek yönlü olduğundan dolayı üzerinde geri dönüşüm yaparak asıl veriye ulaşmanın imkânsız olduğu unutulmamalıdır.
Kişisel Güvenlik Bağlamında Hash Değeri!
Hepimiz zaman zaman internet üzerinden indirmeler yaparız. Fakat yapmış olduğumuz bu indirmelerden bazıları (programlar, işletim sistemleri) bizim için kritik öneme sahiptirler ve gözden kaçırdığımız ufak detaylar bizleri amansız bir tehlikenin içine sürükleyebilir. Peki nasıl?
Bilgisayarınıza format atmanız gerektiğini varsayalım. Dvd’ye yazmak için internetten indirmiş olduğunuz bu ıso dosyası üzerinde herhangi bir değişiklik yapılıp yapılmadığını yani aslıyla bir olup olmadığını anlamamız için hash değeri devreye giriyor. Nitekim bu noktada indirmiş olduğunuz veriye zararlı bir yazılım (backdoor, trojan vs.) Enjekte edilerek piyasaya sunulma ihtimali sıklıkla görünen bir vakıa olmakla beraber yüksek bir ihtimaldir. Haliyle orijinal dosya üzerindeki en ufak bir değişikliğin dahi hash değerinin değişmesini sağlamasıyla bunu fark edip önlem almamızı gerektiriyor. O zaman bunu nasıl yapabileceğimiz konusuna geçelim.
Kali linux ile kurulu gelen foresics kategorisindeki hashdeep aracını kullanarak indirmiş olduğumuz dosyanın hash değerleriyle resmî sitesinde yayınlanan değerlerini karşılaştıracağız. Şayet hash değerlerinde herhangi bir farklılık yoksa elimizdeki dosyayı kullanmamamız için herhangi bir neden yok demektir. Fakat hash değerlerimiz farklı çıkacak olursa o zaman sorun büyük demektir!
Evet, bunun için indirmiş olduğumuz centos 7 sisteminin ıso dosyasını denek olarak kullanacağız.
root@kali:# hashdeep “Dizin/DosyaAdi.iso”
root@kali:# hashdeep “Downloads/CentOS-7-x86-x64-DVD-1511.iso”
(Sadece klasör adı yazdığımız takdirde komut tanımlanamaz. Doğru çalışabilmesi için sıkıştırılmış dosya formatları uzantısında ya da .txt gibi formatlarda olması gerekiyor. )
Komutunu girdikten sonra bir süre bekleyerek (dosyanın büyüklüğüne bağlı olarak bekleme süresi değişebilir) hash değerlerinin karşımıza çıkmasını bekleyeceğiz.
Evet karşımıza çıkan değerler: Dosya boyutu, MD5 Hash, SHA-2 (256Bit), Dosya Adı
şeklinde sıralanmaktadır. Bize lazım olan kısım ise Md5 Ve Sha-2 çıktılarıdır.
Şimdi CentOs’un resmi sitesinden mirrors kısmına erişerek elimizdeki centos versiyon numarasını da gözeterek orijinal hash değerlerine ulaşıp karşılaştırma yapacağız.
Evet, her iki değer de elimizdeki dosyanın çıktılarıyla eşleşiyor. Yalnız bu karşılaştırma esnasında dikkat edilecek nokta md4/md5 ya da sha-1/sha-2 gibi farklı değerleri birbirleriyle kıyaslamamak. Şayet böyle bir durum söz konusu olursa elimizdeki çıktılarla kaynak değerler eşleşmeyecektir. Mesela http://mirrors.prometeus.net/centos/7.2.1511/isos/x86_64/ kaynağında md5, sha-1, sha-2 değerlerinin verildiğini görüyoruz. Karşılaştırma yapacağımız hashdeep aracı ise bize md5 ve sha-2 çıktılarını veriyor. Haliyle kaynaktan aldığımız değerin kullandığımız programla eşleşmesine dikkat etmemiz gerekiyor. Yani kullandığımız aracın vermiş olduğu sha-2 çıktısını resmi sitedeki sha-1 çıktısıyla karşılaştırmaya çalıştığımız takdirde değerlerimiz eşleşmeyecektir.
Şimdi aynı işlevi çok basit bir şekilde windows ortamında yerine getiren HashCheck (http://code.kliu.org/hashcheck/) aracını kullanalım.
Aracımızı indirip kurduktan sonra hash değerini almak istediğimiz dosya üzerine gelip sağ tıklayarak özellikler penceresini açtıktan sonra “Dosya Hash’leri” sekmesinden CRC-32, MD4, MD5, SHA-1 çıktılarını görüntüleyebiliriz.
Evet, şimdi de kali linux ıso dosyamızın hash değerlerini resmi sitesindeki değerlerle karşılaştırıyoruz. https://www.kali.org/downloads/ gördüğünüz gibi burada verilen değer sha-1 olduğundan dolayı karşılaştırmamızı da ona göre yapıyoruz.
Adli Bilişimde Fuzzy Hashing!
Evet, şimdi dijital veri analizi yapan bir adli bilişimci olarak düşünün kendinizi. Hash değerlerinin bu noktadaki ana fonksiyonu delilin içeriğinin değiştirilip değiştirilmediğini tespit etmektir. Görünürde aynı olan dosyalar arasında karşılaştırma yapmanız gerektiğinde ya da elinizdeki dosyanın bir kopyasının/benzerinin hedef bilgisayarda bulunup bulunmadığını araştırıyorsanız yukarıda örneklendirdiğimiz hashdeep ve hashcheck uygulamaları yetersiz kalacaktır. Ve elinizde bulunan birçok verinin analizini tek tek yapmakta oldukça güç olacaktır.
Çözüm olarak dosyayı parçalara bölerek iki dosya arasındaki benzerliği orantısal olarak tespit eden fuzzy hashing yöntemini kullanılır. Yani karşılaştırma esnasında içeriğine müdahale edilen dosyaları ayrıştırmamıza yarar. Diğer bir şekilde örneklendirecek olursak, bir önceki konumuzla bağdaştırdığımızda daha iyi yerleşecektir zihninize. Hatırlarsanız indirdiğimiz işletim sisteminin içeriğin değiştirilip değiştirilmediğini hash değerlerini karşılaştırdıktan sonra fark etmiştik. Bu işin detayına inilmeyen sadece kişisel güvenliği baz alan bir adımdı. Şimdi ise içeriğinin değiştirildiğini anladığımız bu işletim sisteminin hangi dosyasına müdahale edildiğini görme vakti.
root@kali:# apt-get install ssdeep
Bu komutumuzu girerek fuzzy hashing işlemini gerçekleştirme yeteneğine sahip ssdeep aracımızı sistemimize yüklüyoruz. Ve bu aşamadan sonra yapmamız gereken iki kod parçacığını yazmak kadar kolay bir işlem.
root@kali:# ssdeep -lr asil-veri > veri.hash
ssdeep -lr ifadesiyle programımızın hangi şartlar altında çalışması gerektiğini belirttikten sonra asıl kaynak dosyamızın yolunu belirterek “>” işleciyle kaynak klasörün içindeki dosyaların tek tek hash değerlerini yazdırıyoruz.
root@kali:# ssdeep -lrm veri.hash sahte-veri
son komutumuzla bir önceki adımda yazdırmış olduğumuz kaynak dosyamızın hash değeriyle elimizdeki karşılaştırmak istediğimiz ikinci verinin yolunu belirterek benzerlik oranını tespit ederek gerekli ayrıştırmayı yapmış oluyoruz.
Resimde de görüldüğü üzere kimi dosyaların benzerlik oranı %97-%99 iken diğer bir belgenin benzerlik oranı %100 olarak görünüyor. Böylelikle müdahale edilen dosyaları ayırt etmiş oluyoruz.
adli bilişim , Alanlar , fuzzing , hash ayarlama , hash kontrol etme , hash kullanımı , hash nedir , Kullan , md5 kontrol etme , Otomatik , taslak