Hash Değeri Ve Kullanım Alanları

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.

Örneğin:

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.

Konsol ekranına:

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.

http://mirrors.prometeus.net/centos/7.2.1511/isos/x86_64/md5sum.txt

c875b0f1dabda14f00a3e261d241f63e  CentOS-7-x86_64-DVD-1511.iso

dba29c59117400b111633be2bf2aaf0e  CentOS-7-x86_64-Everything-1511.iso

7e46208ba6c5fe817a3ce981aa122f54  CentOS-7-x86_64-LiveGNOME-1511.iso

d9f8e2ae2148d0abdf55a2a9eef42f00  CentOS-7-x86_64-LiveKDE-1511.iso

88c0437f0a14c6e2c94426df9d43cd67  CentOS-7-x86_64-Minimal-1511.iso

99d305fa40ec9e28ef8450c3bcc45f85  CentOS-7-x86_64-NetInstall-1511.iso
http://mirrors.prometeus.net/centos/7.2.1511/isos/x86_64/sha256sum.txt

907e5755f824c5848b9c8efbb484f3cd945e93faa024bad6ba875226f9683b16  CentOS-7-x86_64-DVD-1511.iso
148449e661535f52aa846aa4a0112798f9153df8526b83e76075560a1de3accf  CentOS-7-x86_64-Everything-1511.iso
10dccb7c028d7afafbe1ade59dacf809edb3af2f24b1b69bafce9e6ec3c6ee17  CentOS-7-x86_64-LiveGNOME-1511.iso
ba9fed39d7e5398f4cd6b96497ba28da9979be12a4e0424d3030277d716c9e3f  CentOS-7-x86_64-LiveKDE-1511.iso
f90e4d28fa377669b2db16cbcb451fcb9a89d2460e3645993e30e137ac37d284  CentOS-7-x86_64-Minimal-1511.iso
9ed9ffb5d89ab8cca834afce354daa70a21dcb410f58287d6316259ff89758f5  CentOS-7-x86_64-NetInstall-1511.iso

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.

Son Yazılar
Bir cevap bırakın
Malazgirt Meydan Muharebesi kaç yılında yapıldı ?