BOLU HABERLERİ

SSDEEP

Bir Dosya Nasıl Tanınır?

What is the File Identify?

27.01.2013

Mehmet Keçeci

[caption id="" align="alignnone" width="640"]Fuzzy hashing Bulanık Adresleme[/caption]

Bu konu bir öneki MD5 Nedir? [1] makalemizin devamı olmasa da bir dosyayı tanımlamada benzer özelliklere sahiptir. Context Triggered Piecewise Hashing/CTPH (Bağlam Tetiklemeli Parçalı Adresleme) veya Fuzzy Hashing (Bulanık Adresleme) [2] 2006 yılında Andrews Trigdell [3, 4] tarafından ortaya konularak her hangi bir kötü yazılım veya e-mailleri tanıyarak bunları engelleyebilme yeteneğini ortaya koymuş ve SpamSum e-mail detektörünü geliştirmiştir [5]. 

"ssdeep is a program for computing context triggered piecewise hashes (CTPH). Also called fuzzy hashes, CTPH can match inputs that have homologies. Such inputs have sequences of identical bytes in the same order, although bytes in between these sequences may be different in both content and length." Jesse Kornblum

Hashing: Belirli algoritmalara dayalı yapılan adresleme.

Bir kriptografik adresleme fonksiyonu (cryptographic hash function) kaynak kodumuzda oluşabilecek en küçük değişikliklerin sonucu olarak çıktı adreslemelerimizinde değişmesidir. Bunu MD5 Nedir? makalemizde örnek vererek açıklamıştık.

Bir dosyayı, programı vs. tanımlamak için belirli ölçülerimiz vardır?

Dosya Tanımlama Ölçülerimiz:

  1. Dosyanın uzantısı/extention (.exe, .doc, .xml, ppsx, vs.)
  2. Dosyanın hash değerleri (md5, sha-1, crc32, elf, vs.)
  3. Dosyanın Bulanık Adreslemesi/FuzzyHashing (SSDEEP)
  4. TrID, TrIDScan (Şu anda 5007dosya tanımlanmış)
  5. Dosyanın Exif Araç Bilgileri (Exif Tool)
  6. Dosya Tanımlayıcıları/ File Identifier, Verifier
  7. Dosya hakkındaki genel bilgiler (boyut/size, atributes, DOS adı/name, oluşturulma tarihi/created, en son değişiklik tarihi/last modified, en son açılma tarihi/last access, kaç kere değiştirildiği, yazıcıya gönderilme tarihi, Hash değerleri, ilk tespit tarihi, yazarı vs.)
  8. ...

Tamamen iki farklı dosya için normal hash karşılaştırmamız doğru sonuç veriyor.

Fakat içinde küçük bir değişiklik yaptığımızda bunları tamamen farklı iki dosya olarak görmektedir. Fakat bizim istediğimiz bu değildir. Aynı dosyanın değiştirildiğini ve bunun ne kadarının değiştirildiğini öğrenmek istiyoruz. Hatta ve hatta nelerin değiştirildiğini dahi bulmak istiyoruz.

İşte bu problemin çözümü için SSDEEP/ Bulanık Hash [6] hesaplaması geliştirilmiştir. Bu dosyanın içini farklı bölümlerini algroitmalayarak içinde oluşan değişikliklerini ve bu değişikliklerin nerelerde hangi oranlarda olduğunu bulmaya yarayan bir algoritmadır. PHP (Personal Home Page) kodu içinde bu iki dosyanın karşılaştırılma kodu int ssdeep_fuzzy_compare ( string $signature1 , string $signature2 ) [7] veya bir dosyanın ssdeep kodunu yine PHP içerisinde hesaplanması string ssdeep_fuzzy_hash ( string $to_hash ) [8] kodlarımız sayesinde yapılmaktadır. Sakın PHP bunu doğrudan yaptığını zannetmeyin. Bu kodu işletebilmesi için genelde C, C++, Pyhton gibi programlama dillerinde bunların algoritmaları çıkarıldıktan sonra Windows'ta .dll, Unix, Linux'te .so uzantılı dosyalar içinde derlenmiş ve kullanıma hazır hale getirilmişlerdir. Fuzzy komutu için php.ini dosyasında herhangi bir düzenleme gerekmemektedir. Fakat PECL'in kurulması gerekir [9, 10, 11]. Bunun API'si için [12]'e bakınız.

Fuzzy için dil kodları dosyasıHer iki fuzzy.dll ve fuzzy1.dll'yi ssdeep'te karşılaştırdığımızda %100 aynı olduğunu gördük.Hiç bir adresleme kullanmadan bir karşılaştırma yaptığımızda çok az değişen dosyaları aynı zannedebilirdik.Her iki fuzzy.dll ve fuzzy3.dll'yi ssdeep'te karşılaştırdığımızda %100 aynı olduğunu gördük.ssdeep -hssdeep version 2.9 by Jesse Kornblum Copyright (C) 2012 Kyrus Usage: ssdeep [-m file] [-k file] [-dpgvrsblcxa] [-t val] [-h|-V] [FILES] -m - Match FILES against known hashes in file -k - Match signatures in FILES against signatures in file -d - Directory mode, compare all files in a directory -p - Pretty matching mode. Similar to -d but includes all matches -g - Cluster matches together -v - Verbose mode. Displays filename as its being processed -r - Recursive mode -s - Silent mode; all errors are supressed -b - Uses only the bare name of files; all path information omitted -l - Uses relative paths for filenames -c - Prints output in CSV format -x - Compare FILES as signature files -a - Display all matches, regardless of score -t - Only displays matches above the given threshold -h - Display this help message -V - Display version number and exit
Bir *.jpg dosyasını tanıyalım:

SHA-1: 5816e6f2f3ddaa599751c59e00373cd90b4b6f4f

SHA256: 1aa35f4ca2f53c963d930573cf771f4e216f3e5abbdc06f9e07c0ca2666fefd0

MD5: aec6cbbeab6e7a59ed598d3fb4928a64

CRC32: 036d7e26

ssdeep:

ssdeep,1.1--blocksize:hash:hash,filename

24:fquKM0XxDuLHeOWXG4nGIgb6p6NA7MzuVVgxyIUmyAqESpEa4UOf7Qi5Tq3AVRM9:f1ruEjNtA7M6fKy/7X4Hf7Qi9owZLS
TrID [13]
JFIF JPEG Bitmap (50.0%) JPEG Bitmap (37.4%) MP3 audio (12.4%)ExifTool [14]MIMEType: image/jpeg YResolution: 72 BitsPerSample/Bit depth : 8 bits ImageSize: 90x109 FileType/Format: JPEG ResolutionUnit: inches ColorComponents: 1 JFIFVersion: 1.01 XResolution: 72 Image Width: 90 pixels EncodingProcess: Baseline DCT, Huffman coding Image Height: 109 pixels Compression mode : Lossy Dosya Boyutu: /File size : 1.41 KB/1445 Byte Tag: jpeg File Extension: .jpg Developer: JPEG Hex: FF D8 FFExifTool'da komut satırı ve çıktısı:X:\>exiftool.exe md5.zip ExifTool Version Number : 9.15 File Name : md5.zip Directory : . File Size : 25 kB File Modification Date/Time : 2010:02:17 10:25:42+02:00 File Access Date/Time : 2013:01:28 22:25:27+02:00 File Creation Date/Time : 2013:01:28 22:25:27+02:00 File Permissions : rw-rw-rw- File Type : ZIP MIME Type : application/zip Zip Required Version : 20 Zip Bit Flag : 0 Zip Compression : Deflated Zip Modify Date : 2007:02:18 13:14:20 Zip CRC : 0x31a11c83 Zip Compressed Size : 23750 Zip Uncompressed Size : 101716 Zip File Name : md5.exe

Tanım/Description:

JPG uzantılı dosyalar kayıplı sıkıştırma (lossy compression) metodu kullanırlar. Fakat kullanım alanları çok geniş ve yaygındır. Özellikle internet sayfalarının hızlı açılması için kullanımı yaygındır. Diğer kullanım alanları kaliteye gerek duyulmadığı veya alandan tasarruf amaçlı kullanılırlar.

Küçük bir değişiklik yaptığımızda sadece bir ssdeep adreslemesinin değiştiğini görmekteyiz. Buda bize değişim oranını vermektedir. Yani bu dosya en az %99 oranında benzer ama %100 olmadığından orijinal dosya değildir.

SHA-1: 15fff08ec250b083decbe6dd17e623e87070add5SHA256: 3f0e5d08f02dd3b35c8c27928cf96eff93360d621cee5c01018ed388578f0b55MD5: a06fc5d6580cef1036fb8ed6fe635a47CRC32: ff86d9cf  bu adresleme tamamen değiştiğinden değişme yeri ve oranını göremeyiz. Fakat ssdeep'te bunu görebiliriz. Dosya Boyutu: 1444 Byte (yalnızca bir karakter silinerek 1 Byte düşürülmüştür.)ssdeep:24:fquKM0XxDuLHeOWXG4nGIgb6p6NA7MzuVVgxyIUmyAqESpEa4UOf7Qi5TqJAVRM9:f1ruEjNtA7M6fKy/7X4Hf7Qi9EwZLS Boyut: 1444 Byte Oluşturulma/Created: ‎28 ‎Ocak ‎2013 Son Düzenleme/Modified: ‎28 ‎Ocak ‎2013 Son Ulaşım:/Accessed: ‎28 ‎Ocak ‎2013o-->E'ye dönüşmüştür. Yapılan değişiklik çok azdır. Fakat artık aynı dosya değildir. Ayrıca bu tür konuların önemi için [15, 16, 17, 18, 19, 20]'e kaynaklarına bakabilirsiniz.Kaynaklar/References:
  1. /populer-galeriler
1.638