adlİ bİlİŞİm İÇİn ram İmaji alinarak elektronİk delİl...
TRANSCRIPT
T.C.
SÜLEYMAN DEMİREL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ
ADLİ BİLİŞİM İÇİN RAM İMAJI ALINARAK ELEKTRONİK DELİL ELDE ETME
Ahmet Ali SÜZEN
Danışman Dr. Öğr. Üyesi Kubilay TAŞDELEN
DOKTORA TEZİ BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİM DALI
ISPARTA - 2018
© 2018 [Ahmet Ali SÜZEN]
i
İÇİNDEKİLER
Sayfa İÇİNDEKİLER ......................................................................................................................... i ÖZET ......................................................................................................................................... iii ABSTRACT .............................................................................................................................. iv TEŞEKKÜR .............................................................................................................................. v ŞEKİLLER DİZİNİ ................................................................................................................. vi ÇİZELGELER DİZİNİ ............................................................................................................ ix KISALTMALAR DİZİNİ ....................................................................................................... x 1. GİRİŞ..................................................................................................................................... 1 2. KAYNAK ÖZETLERİ ........................................................................................................ 5 3. MATERYAL VE YÖNTEM .............................................................................................. 10
3.1. Adli Bilişim ............................................................................................................... 10 3.1.1. Elektronik delil .............................................................................................. 10 3.1.1. İmaj alma ........................................................................................................... 11
3.2.RAM Analizi ............................................................................................................... 12 3.2.1. RAM imajı alma araçları .......................................................................................... 13 3.2.2. RAM imajı analizi araçları .............................................................................. 15
3.3. Microsoft Word ....................................................................................................... 17 3.3.1. DOC dosya yapısı .......................................................................................... 17 3.3.2. DOCX dosya yapısı ........................................................................................ 18
3.4. PDF Dosya Yapısı ................................................................................................... 20 3.5. Kernel ve User Mode ............................................................................................ 24 3.6. Windows Bellek Yönetimi .................................................................................. 26
3.6.1. Sanal adres alanı ........................................................................................... 27 3.6.2. Sanal adres tanımlayıcısı ........................................................................... 28 3.6.3. Sayfa tabloları ................................................................................................ 29 3.6.4. EPROCESS ........................................................................................................ 30 3.6.5. File_Object ....................................................................................................... 30 3.6.6. Page dosyası ................................................................................................... 30
3.7. Ucucu Veri Analizi ................................................................................................. 31 3.7.1. Dizgi arama ..................................................................................................... 32 3.7.2. Dosya kazıma ................................................................................................. 33 3.7.3. Process analizi ............................................................................................... 35
3.8. Windows Driver Kit .............................................................................................. 36 4. ADLİ BİLİŞİM YAZILIMI ................................................................................................ 38
4.1. Kernel Mode RAM Sürücüsünün Geliştirilmesi .......................................... 41 4.1.1. Kernel Mode RAM sürücüsünün test edilmesi .................................. 45
4.2. İmaj Alma Yazılımının Gerçekleştirilmesi .................................................... 47 4.2.1. İmaj alma yazılımının test edilmesi ....................................................... 51
4.3. Dosya Kazıma Yazılımının Geliştirilmesi ...................................................... 53 4.3.1. Dosya kazıma yazılımının test edilmesi ............................................... 58
4.4. Veri Kurtarma Yazılımının Geliştirilmesi ..................................................... 60 4.4.1. DOC uzantılı dosyalardan verileri kurtarılması ................................ 61 4.4.1. PDF uzantılı dosyalardan verileri kurtarılması ................................ 62 4.4.1. DOCX uzantılı dosyalardan verileri kurtarılması ............................. 65
5. ARAŞTIRMA BULGULARI ............................................................................................. 70
ii
6. TARTIŞMA VE SONUÇLAR ........................................................................................... 74 KAYNAKLAR .......................................................................................................................... 77 EKLER....................................................................................................................................... 82
EK A. Dosyalara Ait Header ve Footer Listesi ..................................................... 83 EK B. Kernel Mode RAM Sürücüsünün C++ Kodları ................................................. 84 EK C. RİMAY Yazılımın C++ Kodları ............................................................................. 86 EK D. DOKAY Yazılımın C++ Kodları ............................................................................ 88 EK E. Veri Kurtama Yazılımın C# Kodları ............................................................. 90
ÖZGEÇMİŞ ............................................................................................................................... 91
iii
ÖZET
Doktora Tezi
ADLİ BİLİŞİM İÇİN RAM İMAJI ALINARAK ELEKTRONİK DELİL ELDE ETME
Ahmet Ali SÜZEN
Süleyman Demirel Üniversitesi Fen Bilimleri Enstitüsü
Bilgisayar Mühendisliği Anabilim Dalı
Danışman: Dr. Öğr. Üyesi Kubilay TAŞDELEN
Bu çalışmada, Kernel Mode RAM sürücü ile RAM (Random Access Memory) imajı alan ve RAM imajından MS Word, PDF dosyalarını kazıyarak içerisindeki okunabilir bilgilerin çıkartılmasını sağlayan yazılımlar geliştirilmiştir. Kernel Mode RAM sürücüsü kullanan RAM imajı alma yazılımı (RİMAY) Windows’da Kernel mode seviyesinde RAM’in sanal adreslerine, fiziksel adreslerine ve tablo sayfalarına erişim sağlamaktadır. Geliştirilen imaj alma yazılımı RAM’in tüm adreslerini bit-to-bit kopyalayarak imajını almaktadır. Alınan imaj dosyasına, Windows’ta geçici hafıza olarak kullanılan pagefile.sys’de dahil edilmiştir.
Dosya kazıma ve analizi yazılımı (DOKAY), RAM imajı yazılım ile alınan imaj dosyasını kullanmaktadır. Yazılım tasarımında dizgi arama, imza tarama ve veri kazıma teknikleri kullanılmıştır. Analiz işlemleri 14 GB’lık RAM imajı dosyasında yapılmıştır. İmaj dosyasında yapılan veri kazımada 41dk 10sn’de 10 adet doc uzantılı, 37dk 45sn’de 10 adet docx’e ait document.xml dosyasına ve 45dk 01sn’de 10 tane PDF dosyasına ulaşılmıştır. Word dosyalarının her biri üzerinde dizgi arama ve sıkıştırma çözme teknikleri uygulanarak veriler kurtarılmıştır. PDF dosyalarında flatedecode sıkıştırma algoritması kullanıldığından dolayı, veri blokları çözülerek verilere ulaşılmıştır.
Kurtarılan veriler, orijinal dosyadaki veriler ile karşılaştırılarak her dosya için başarı oranı çıkartılmıştır. Sonuç olarak docx dosyalarında ortalama %40,4’lük, doc dosyalarında %35,6’lık ve pdf dosyalarında %16’lık başarı sağlandığı görülmüştür. RAM’e yüklenen word veya pdf dosyasının boyutunun artması, içerisindeki verinin kurtarılma oranını azalttığı tespit edilmiştir. Geliştirilen imaj alma yazılımı RAM’de 156 KB’lık yer kaplamaktadır. Bu sonuç ile de RAM’e yazılımın yüklenmesinden kaynaklı veri kayıpları en aza indirilmiştir. Anahtar Kelimeler: Adli Bilişim, Elektronik Delil, İmaj Alma, RAM, Veri Kazıma. 2018, 92 sayfa
iv
ABSTRACT
Ph. D. Thesis
OBTAINING DIGITAL EVIDENCE BY ACQUIRING RAM IMAGE FOR COMPUTER FORENSICS
Ahmet Ali SÜZEN
Süleyman Demirel University
Graduate School of Natural and Applied Sciences Department of Computer Engineering
Supervisor: Asst. Prof. Dr. Kubilay TAŞDELEN
In this study, capture RAM with Kernel Mode RAM Driver and a piece of software has been developed to recover the readable data by carving MS Word and PDF files from the RAM image. Virtual addresses, physical addresses and table pages for RAM can be accessed using the developed RAM imager software in windows. In this way, image acquisition software using this driver is able to carry out bit-to-bit copying of RAM. File carving and analysis software use the image file received with the RAM image software. String searching, signature scanning, and data carving methods are used in the design of the software. The analysis was performed on a RAM image of 14 GB by using the software that was developed. In 41m and 10s, 10 files with DOC extension were recovered, in 37m and 45s, 10 document files with XML extension files of the 10 DOCX files were recovered, and in 45m and 1 s, 10 PDF files were recovered during data carving on the image file. Data carving was carried out separately for the MS Word and PDF files. The data was recovered by applying string searching and decoding techniques to each MS Word file. Since a flatedecoding algorithm was used for the PDF files, the data were accessed by decoding the data blocks. The success rate for each file was determined by comparing the recovered data to the data in the original file. In the end, it was observed that the average of the success rate was 42% for the MS Word files and 16% for the PDF files. It was determined that the rate of data recovery decreases as the size of the MS Word or PDF files loaded onto RAM increases. 10 files with DOC extension, 10 DOCX files and 10 PDF files were recovered during data carving previously used on the image file. When the image retrieval software is installed in RAM it occupies a meager 156 KB of space. Keywords: Computer Forensics, Electronic Evidence, File Carving, Image Acquisition, RAM. 2018, 92 pages
v
TEŞEKKÜR
Bu araştırma için beni yönlendiren, karşılaştığım zorlukları bilgi ve tecrübesi ile aşmamda yardımcı olan değerli danışman hocam Dr. Öğr. Üyesi Kubilay TAŞDELEN’e teşekkürlerimi sunarım. Bu sürecin her anında bilgi birikimi ve tecrübesi ile bana zaman ayıran ve destek olan hocam Doç. Dr. Ecir Uğur KÜÇÜKSİLLE’ ye teşekkür ederim. 5035-D1-17 No’lu Proje ile tezimi maddi olarak destekleyen Süleyman Demirel Üniversitesi Bilimsel Araştırma Projeleri Yönetim Birimi Başkanlığı’na teşekkür ederim. Tezimin her aşamasında beni yalnız bırakmayan eşim ve kızıma sonsuz sevgi ve saygılarımı sunarım.
Ahmet Ali SÜZEN
ISPARTA, 2018
vi
ŞEKİLLER DİZİNİ
Sayfa Şekil 1.1. Geliştirilen sistemin bölümleri .................................................................... 3 Şekil 3.1. Adli bilişim süreçleri ....................................................................................... 10 Şekil 3.2. İmaj alma yöntemleri yapısı ......................................................................... 12 Şekil 3.3. Doc uzantılı Word dosyasının ayrıştırılmış yapısı ............................... 17 Şekil 3.4. FIB yapısı ve bölümleri................................................................................... 18 Şekil 3.5. Docx uzantılı Word dosyasının verilerin ayrıştırılmış yapısı .......... 19 Şekil 3.6. Content_Types.xml dosyası içerği .............................................................. 19 Şekil 3.7. document.xml dosyasındaki XML yapısı ................................................. 20 Şekil 3.8. Örnek PDF dosyasının standart yapısı ..................................................... 22 Şekil 3.9. PDF dosyasındaki sıkıştırma etiketi .......................................................... 24 Şekil 3.10. Windows güvenlik seviyeleri .................................................................... 24 Şekil 3.11. Kernel ve user mode etkileşimi ................................................................ 25 Şekil 3.12. Sanal adres alanı ve fiziksel adres alanı eşleme ................................. 27 Şekil 3.13. Sanal belleğin fiziksel belleğe adreslemesi .......................................... 27 Şekil 3.14. 32 bit, 64 bit ve IA64 bit için sanal adres alanı kullanımı .............. 28 Şekil 3.15. Sayfa tablolarının etkileşimi ...................................................................... 29 Şekil 3.16. İmajda dizgi arama yöntemi örneği ........................................................ 33 Şekil 3.17. RAM’de bulunan resim dosyasının bellek haritasında görünümü 34 Şekil 3.18. WDK ile geliştirilen sürücü türleri .......................................................... 36 Şekil 4.1. Geliştirilen sisteme ait yazılımların gösterimi ...................................... 38 Şekil 4.2. Yazılım modelinin yapısı ve akış şeması ................................................. 39 Şekil 4.3. Kernel Mode Driver şablonu ........................................................................ 41 Şekil 4.4. DriverEntry ve A2SRamDriverEvtDeviceAdd ‘nın kullanımı ........ 42 Şekil 4.5. IoCreateDeviceSecure fonksiyonun çağrılması .................................... 42 Şekil 4.6. IRP_MJ_READ ve IRP_MJ_WRITE ................................................................ 43 Şekil 4.7. Driver’ın RAM Erişim Fonksiyonları ......................................................... 43 Şekil 4.8. Sürücü için Test Sertifikası Alma ................................................................ 44 Şekil 4.9. Sürücüye ait imzalanmış dijital sertifika ................................................. 44 Şekil 4.10. Test ortamının oluşturulması ................................................................... 45 Şekil 4.11. Test için kullanılacak donanımın seçim ekranı .................................. 45 Şekil 4.12. Alınacak imaj dosyasına ait tanımlama ................................................. 46 Şekil 4.13. A2SSistem isimli sınıf yapısı ...................................................................... 47 Şekil 4.14. Sürücü yükleme servisinin oluşturulması ........................................... 47 Şekil 4.15. A2SRAMinfo isimli struct yapısı ............................................................... 48 Şekil 4.16. RAM’in adresinin okunması ....................................................................... 48 Şekil 4.17. İmaj dosyasının sabit diske yazılması .................................................... 49 Şekil 4.18. Sürücü dosyasının sistemden kaldırılması .......................................... 49 Şekil 4.19. Sürücünün çalışma modeli ......................................................................... 50 Şekil 4.20. RİMAY’ın imaj alma işlemini görüntüsü ............................................... 51 Şekil 4.21. Oluşturulan imaj dosyasının görüntüsü................................................ 51 Şekil 4.22. RAM imajının hex görünümü .................................................................... 51 Şekil 4.23. Sabitler ve değişkenlerin tanımlanması................................................ 53 Şekil 4.24. CarveBilgi isimli yapının tanımlanması ................................................ 54 Şekil 4.25. Adres_Arama isimli yapının tanımlanması .......................................... 54
vii
Şekil 4.26. İmzası bulunan dosyaların geçici belleğe atılması ............................ 55 Şekil 4.27. Footer verisi olmayan dosya taraması .................................................. 55 Şekil 4.28. İmzası bulunan dosyaların geçici belleğe atılması ............................ 56 Şekil 4.29. Kazınan dosyaların orijinal dosya formatlarına aktarımı .............. 56 Şekil 4.30. Dosya kazıma yazılımın ekran görüntüsü ............................................ 57 Şekil 4.31. Kazınan dosyaların listesi ........................................................................... 57 Şekil 4.32. PDF dosyasının açık metin görünümü ................................................... 58 Şekil 4.33. DOCX dosyasının açık metin görünümü ............................................... 59 Şekil 4.34. DOC dosyasının açık metin görünümü .................................................. 59 Şekil 4.35. Veri kurtarma yazılımının ana form ekran .......................................... 60 Şekil 4.36. Sıkıştırılmış DOC uzantılı MS Word dosyası ........................................ 61 Şekil 4.37. Sıkıştırılmış verilerin codepage1251 ile decode işlemi .................. 61 Şekil 4.38. Veri kurtarma yazılımının doc taraması akış şeması ....................... 62 Şekil 4.39. DOC dosyalarını kurtarma formu ............................................................ 63 Şekil 4.40. Sıkıştırılmış bir PDF dosyası ...................................................................... 64 Şekil 4.41. Veri kurtama yazılımının pdf taraması akış şeması ......................... 64 Şekil 4.42. PDF dosyasındaki veri bloklarının indexlerinin bulunması .......... 65 Şekil 4.43. Standart yapıda boş PDF dosyasının oluşturulması......................... 65 Şekil 4.44. PDF dosyasının kurtarılma arayüzü ....................................................... 66 Şekil 4.45. Kazınan docx uzantılı dosyanın XML görünümü ............................... 66 Şekil 4.46. Veri kurtama yazılımının DOCX taraması akış şeması .................... 67 Şekil 4.47. XML ve docx uzantılı dosyalarda dizgi arama tekniğinin uygulanması ..................................................................................................... 67 Şekil 4.48. DOCX dosyasının kurtarılma arayüzü .................................................... 68 Şekil 4.49. Başarı oranın tespit edilmesi için kullanılan arayüz ........................ 69 Şekil 5.1. Windows işletim sistemi sürümüne göre imaj alma süreleri .......... 70 Şekil 5.2. RAM İmajı alma yazılımlarının RAM’de kapladığı alanlar ................ 71
viii
ÇİZELGELER DİZİNİ
Sayfa Çizelge 3.1. RAM imajı alma araçları ............................................................................ 14 Çizelge 3.2. İmaj alma araçlarının dosya formatları ve kapladığı alanların karşılaştırılması ........................................................................................... 15 Çizelge 3.3. RAM analizi araçlarının karşılaştırılması ........................................... 15 Çizelge 3.4. PDF dosyasının sürümleri ve sürüm yenilikleri .............................. 20 Çizelge 3.5. PDF dosya yapıları ve örnekleri ............................................................. 21 Çizelge 3.6. PDF verilerinin şifreleme etiketleri ...................................................... 23 Çizelge 3.7. PDF dosyalarında kullanılan şifreleme teknikleri ........................... 23 Çizelge 3.8. Sosyal medya hesaplarına ait veriler için kullanılan dizgiler ..... 32 Çizelge 3.9. Dosyaların header ve footer imzaları................................................... 34 Çizelge 4.1. RAM imajına ait sistem bilgisi ................................................................. 39 Çizelge 5.1. PDF ve Word dosyaları kazıma süreleri.............................................. 71 Çizelge 5.2. Word (DOC) dosyalarının kurtarılma analizleri .............................. 72 Çizelge 5.3. Word (DOCX) dosyalarının kurtarılma analizleri ........................... 73 Çizelge 5.4. PDF dosyalarının kurtarılma analizleri ............................................... 73
ix
KISALTMALAR DİZİNİ CPU Central Processing Unit DOC Document File EVCSC Extended Validation Code Signing Certificates GPU Graphics Processing Unit FIB File Information Block FILO First In First Out IRPs IO Request Packess IO Input / Output LIFO Last In First Out PEB Process Environment Block PTE Page Table Entry PDF Portable Document Format RAM Random Access Memory WDK Windows Driver Kit WDF Windows Driver Frameworks XML Extensible Markup Language
1
1. GİRİŞ
Bilişim teknolojilerinde bilginin, yazılımın, donanımın ve haberleşme ağlarının
hırsızlığı, yasadışı kullanımı, değiştirilmesi veya kopyalanması bilişim suçları
olarak tanımlanmaktadır. Bilişim suçların aydınlatılmasında fiziksel delillerden
ziyade dijital delillere ihtiyaç duyulur. Dijital delil, elektronik veya manyetik
cihazlarda kayıt edilen ve suçun aydınlatılmasını sağlayacak nitelikteki
verilerdir (Allen, 2005).
Dijital deliller bilişim sistemlerinde genel olarak;
• Sabit diskler, CD, DVD, Harici Diskler, Hafıza kartları,
• İnternet veya network,
• Cep Telefonları,
• Oyun konsolları,
• Yazıcı ve faks cihazları,
• Network cihazlarında bulunmaktadır (Alherbawi vd., 2016).
Dijital deliller yapıları itibarı ile kolaylıkla bozulabilir, silinebilir veya değişikliğe
uğrayabilirler. Bilişim suçlarında depolama aygıtlarından elde edilen dijital
deliller bozulmadan ve zarar görmeden toplanması adli bilişim ile sağlanır. Adli
Bilişim; bilişim sistemlerinde bulunan verilerin mahkemelere dijital delil olarak
sunulması için inceleme ve analiz tekniklerini kapsayan bilim dalıdır. Adli
bilişim; ilk müdahale, toplama, saklama, delil çıkartma ve raporlama
süreçlerinden oluşmaktadır (Wang ve Qi, 2011).
Adli bilişimde dijital delillerin elde edilmesi, olay yeri çalışmaları ile başlayan
uzun bir süreçtir. Delil elde edilecek bilişim sistemlerinde yapılacak olan
incelemeler, veri depolama aygıtlarından alınmış birebir kopya üzerinde
yapılmalıdır (Rogers ve Seigfried, 2004). Veri depolama aygıtlarının bit-to-bit
kopyasının alınması imaj alma olarak bilinir. İmaj alma; yazılım veya donanım
tabanlı sistemler ile yapılmaktadır (Zhang vd., 2010).
2
İşletim sistemi; çalışan uygulama bilgilerini, internet aktivitelerini, ağ
bağlantılarını, kullanıcı dokümanlarını ve şifrelerini RAM’de saklamaktadır. Adli
bilişim sürecinde RAM’den elde edilecek deliller önem arz etmektedir. RAM
imajında çeşitli analiz yöntemleri ve teknikler kullanılarak delil aranmaktadır.
RAM’e ait veri yapıları analiz edilerek ayrılmış veya ayrılmamış bölgelerdeki
verilere erişilir (Russinovich vd., 2009).
RAM’in içerisindeki verilerin önemi, 1990’lı yıllarda yapılan çalışmalarda ortaya
konmuştur. Fakat verilerin elde edilmesine yönelik bir yöntem
geliştirilememiştir (Richard ve Roussev, 2005). İlk RAM imajı alma ve analiz
uygulaması, 2005 yılında geliştirilen KnTTools olarak bilinir. KnTTools ile RAM
imajında çalışan process ve thread arama analizi yapılmıştır (Garner, 2007).
2006 - 2012 yılları arasında yapılan çalışmalarda Windows XP’de RAM’den dizgi
arama ve kazıma yöntemleri ile 4KB altındaki veriler çıkartılmıştır (Amari,
2009). Bu çalışmalar, Windows Vista işletim sisteminde RAM’e tam erişimin
kısıtlanması ile beraber özelliğini kaybetmiştir. Windows Vista, 7, 8, 8.1 ve 10
işletim sistemlerinde RAM imajı almak için kernel mode RAM sürücüsü
kullanılması gerekmektedir (Quina vd., 2017). RAM sürücüsü ve bu sürücüyü
kullanan imaj alma yazılımları, ticari firmalar ve açık kaynak kod geliştiricileri
tarafından geliştirilmiştir (Hejazi vd., 2009).
RAM imajından verilere ulaşmak için dizgi tarama, imza arama, dosya kazıma ve
veri yapısı analizi yöntemleri kullanılmaktadır. Analiz işlemlerinde hangi
yöntemin kullanılacağı, istenilen veriye göre değişmektedir. Kullanıcının sosyal
medya veya uygulama şifrelerine erişim için dizgi arama tekniği uygulanır.
RAM’deki veri tabloları içerisinde çalışan veya sisteme yüklü process bilgileri
tutulmaktadır (Okolica ve Peterson, 2010). Bu bilgilere erişim için, veri yapısı
analizi yöntemi kullanılır. RAM’de dosyalara ait verilerin elde edilmesi için
öncelikle dosyanın çıkartılması gerekmektedir. İmaj içindeki dosyalar sırasıyla
imza arama ve dosya kazıma teknikleri ile çıkartılır. Kurtarılan dosyalar içindeki
bilgilere erişim için, dosya türüne göre farklı veri kurtarma teknikleri
uygulanmaktadır (Okolica ve Peterson, 2011).
3
Bu tez çalışmasına adli bilişim sürecinde RAM’den delil niteliğindeki MS Word
ve PDF dosyalarının çıkartılması için yazılım geliştirilmiştir. Bu yazılım Şekil
1.1’de görüldüğü gibi dört bölümden oluşmaktadır. Sürücü dosyası, imaj alma
ve dosya kazıma yazılımları C++, veri kurtarma yazılımı C# programlama dili ile
geliştirilmiştir.
Şekil 1.1. Geliştirilen sistemin bölümleri
Çalışmanın ilk bölümünde RAM imajının alınması için gerekli kernel-mode RAM
sürücüsü geliştirilmiştir. Sürücü, WDK (Windows Driver Kit) kütüphanesini
kullanmaktadır. Geliştirilen RAM sürücüsü 32bit ve 64 bit Windows işletim
sistemlerinde RAM’in sanal adreslerine, fiziksel adreslerine ve tablo sayfalarına
erişilebilmektedir.
İmaj alma yazılımı sürücüye kullanarak RAM’in tüm adreslerinin ve işletim
sistemi tarafından geçici bellek olarak ayrılan pagefile.sys dosyasının imajını
almayı sağlamaktadır. İmaj alma işlemi 4GB, 6GB, 8GB, 14GB’lık RAM
kapasitelerinde test edilmiştir. Bu testler sonunda RAM kapasitelerinin artması
imaj alma süresini uzattığı görülmüştür. Ayrıca yazılım RAM’e yüklendiğinde
156 KB’lık yer kaplamaktadır.
Çalışmanın son aşamasında, RAM imajından MS Word ve PDF dosyaları
kazınarak, içerisindeki okunabilir verilerin çıkartılmasını sağlayan yazılım
geliştirilmiştir. Yazılım tasarımında dizgi arama, imza tarama ve veri kazıma
teknikleri kullanılmıştır. Geliştirilen yazılımda analiz işlemleri, 14 GB’lık RAM
imajında gerçekleştirilmiştir. İmaj dosyasında yapılan veri kazımada; 41dk
10sn’de 10 adet doc uzantılı, 37dk 45sn’de 10 adet docx’e ait document.xml
dosyasına ve 45dk 01sn’de 10 tane pdf dosyasına ulaşılmıştır. Word ve pdf
Kernel Mode RAM
Driver RAM İmajı
Yazılımı
Dosya Kazıma Yazılımı
Veri Kurtarma Yazılımı
4
dosyaları için tarama ayrı ayrı gerçekleştirilmiştir. Word dosyalarının her biri
üzerinde dizgi arama ve decode tekniği uygulanarak veriler kurtarılmıştır. Pdf
dosyalarında flatedecode algoritması kullandığından veri blokları decode
edilerek, verilere ulaşılmıştır. Kurtarılan veriler, orijinal dosyasındaki veriler ile
karşılaştırılarak her dosya için başarı oranı çıkartılmıştır. Sonuç olarak docx
dosyalarında ortalama %40,4’lük, doc dosyalarında %35,6’lık ve PDF
dosyalarında %16’lık başarı sağlandığı görülmüştür. RAM’e yüklenen word veya
PDF dosyalarının boyutlarının artması durumunda, içerisindeki verinin
kurtarılma oranını azaldığı tespit edilmiştir.
5
2. KAYNAK ÖZETLERİ
İşletim sisteminden ilk RAM imajı alma ve analiz uygulaması, 2005 yılında
geliştirilen KnTTools olarak bilinir. KnTTools ile RAM imajında çalışan process
ve thread arama analizi yapılmıştır (Hejazi vd., 2008). Harici donanım ile imaj
alma AfterLife uygulaması ile gerçekleşmiştir. AfterLife uygulamasının
bulunduğu USB bellek sisteme takıldıktan sonra sistem yeniden başlatılır.
Açılışta sistemin kontrolünü sağlayan uygulama, RAM içeriğini USB belleğin boş
alanına kopyalamaktadır. Bu yöntemde USB bellek kullanıldığı için hedef
sistemin BIOS boot ayarının USB bellek olarak değiştirilmesi gerekir. Ayrıca
uygulama 4 GB’ tan büyük RAM imajlarını alamamaktadır (Vidas, 2010) .
Ii ve Heiser (2001) kitaplarında adli bilişim ve süreçlerine yönetik tespitler
yapmıştır. Adli bilişimde araştırma, saklama ve raporlama süreçlerinin önemine
dair bilgiler verilmiştir. İlk adli bilişim incelemesinin 20MB’lık bir disk üzerinde
yapıldığı ve veri orjinalliğinin tespitinde MD5 hash değeri kullanıldığı
vurgulanmıştır.
Vidas (2007), RAM imajında yazılım tabanlı araçlar ile veri analizi konusunda
çalışma yapmıştır. Çalışma windows 2000, XP, XP SP2, 2003 ve Vista işletim
sistemleri üzerinde gerçekleştirilmiştir. RAM imajı üzerinde process kazıma
tekniği uygulanmış ve process’ler kazınmıştır. Analiz Windows Memory
Forensic Toolkit isimli yazılımda gerçekleştirilmiştir. Çalışma sonunda işletim
sistemlerinde ortalama 30 MB’lık process dosyaya erişim sağlanmıştır.
Garcia (2007), Adli bilişim için RAM analizi yapan araçların incelemesini
konusunda çalışma yapmıştır. Bu incelemeyi yazılım ve donanım tabanlı araçlar
olarak ayırmıştır. Donanım tabanlı analiz araçlarında Tribble ve FireWire Bus’ı
karşılaştırmıştır. Tribble, bilgisayarların PCI slotunu, FireWire Bus’ın ise IEEE
1394 portunu kullanıdığı tespit etmiştir. Yazılım tabanlı araçlarda Data Dumper,
Windows crach dump utility’i incelemiş ve RAM yapılarına erişim kıyaslaması
6
yapılmıştır. Çalışmaya göre elde edilmek istenilen verilere göre analiz araçların
tercih edilmesi gerekmektedir.
Trivedi (2007) gerçekleştirdiği çalışmada Windows işletim sistemlerinde
bulunan pagefile.sys dosyasını incelemiştir. Windows’un geçici hafıza olarak
pagefile.sys kullandığını ve içerisinden işletim sistemine ait bilgilere
erişilebileceğini ifade etmiştir. Sonuç olarak pagefile.sys dosyasını Hex editör ile
açarak internet sayfası linklerine, dosya konumlarına ve kullanıcı şifrelerine
erişim sağlamıştır.
Gavitt (2007) çalışmasında, RAM alanındaki adli bilişim çalışmaları için RAM’in
VAD (Virtual Address Descriptor) veri yapısı için tanımlamalarda bulunmuştur.
Çalışma, sanal sunucu üzerinde Windows 2000 ve XP işletim sistemlerinde
gerçekleşmiştir. VAD yapısının çıkartılması için işletim sisteminde notepad.exe
process’i kullanılmıştır. Örnek process’e ait ConrolAreas ve FileObjects yapıları
listelenmiştir.
Baar ve arkadaşları (2008) çalışmalarında, RAM’deki dosya yapısı haritaları
üzerinden yorumlar çıkartmışlardır. RAM haritalarının çıkartılması için 90 farklı
RAM imajı kullanılmıştır. Bu imajlar VMWare sanal sürücüde Windows XP SP2
işletim sisteminden 256 MB RAM kapasitesinde alınmıştır. Çalışmada imajların
içerisindeki toplam %25 oranında dosya dökümüne erişilmiştir. Erişim
sağlanan dökümlerin %40’nın process ve process bağlantıları tespit edilmiştir.
Vömel ve Freiling (2011) yaptıkları çalışmada, Windows işletim sisteminde
RAM’den veri toplama ve analiz teknikleri ile ilgili önerilerde bulunmuştur.
RAM’in adres yapılarında ve sayfalarında tarama işlemleri yaparak, işletim
sistemine ait şifrelerin ve zararlı yazılım bilgilerinin bulunabileceği tespitini
yapmışlardır. RAM’den bulunan verilerin toplanması için kayıt defteri, network
ve process analizi yapılması gerekmektedir. RAM üzerinden veri toplama
işlemlerinde donanımsal veri toplama kartlarının daha etkili olduğu
7
belirtilmiştir. Yazılım tabanlı veri kurtarma araçlarını user ve kernel mode
seviyesinde karşılaştırmışlardır.
Butler ve Murdock (2011) çalışmalarında, RAM’in dosya ve cache yapısına
yönelik çalışma yapmışlardır. Çalışmada örnek olarak kullanılan AcroRd32.exe
isimli process’in FILE_OBJECT veri yapısı içerisinde nasıl saklandığına dair
bilgiler verilmiştir. Örnek process’in FILE_OBJECT içerisinde DataSectionObject,
SharedCacheMap ve ImageSectionObject yapıları içindeki veriler incelenmiştir.
İşletim sisteminde çalışan dosyaların RAM’de FILE_OBJECT yapısına yüklendiği
ve bu yapının taranması ile dosyalara ait bilgilere ulaşılabileceği sonucu
çıkarılmıştır.
Suma ve arkadaşları (2013), 64 Bit Windows 7 işletim sisteminden alınan RAM
imajında işletim sistemi bilgisi, yüklü DLL ve process bilgilerine erişim ile ilgili
çalışma yapmışlardır. Çalışmada kullanılan RAM imajı Dumpit yazılımı
kullanılmıştır. RAM’in PEB (Process Environment Block) yapısında KPCR
(Kernel Processor Control Region) blokları incelenmiştir. EPROCESS yapısı
içerisinde tarama yapılarak sistem hakkında bilgilere erişilmiştir.
Cai ve arkadaşları (2013) yazılım tabanlı RAM imajı alma yazılımı Dumplt ve
imaj analizi yapan Volatility ile ilgili çalışma gerçekleştirmişlerdir. Freeware
olarak indirilen DumpIt ile Windows 7 SP1 üzerinde RAM imajı alınmıştır. Bu
imaj üzerinden Volatility açık kaynak analiz yazılımı ile RAM’deki çalışan
process ve kayıt defteri analizi gerçekleştirilmiştir. Çalışmada Volatility
içerisindeki pslist ve psscan komutları kullanılmıştır. Sonuç olarak çalışan
processlerin çalışma zamanları, kullanıcı bilgileri ve dosya konumlarına
erişilmiştir.
Carvajal ve arkadaşları (2013) çalışmalarında, FTK Imager, Pro Discover,
Win32dd, Nigilant32, Memoryze, and Helix3 (dd) isimli imaj alma araçlarını test
etmişlerdir. Bu test işleminde araçların kullanıcı arayüzleri, raporlamaları, işlem
süreleri, RAM’de kapladıkları alanlar incelenmiştir. İşlem sonuçlarını
8
Memoryze’nın XML, Win32dd’nin vermediğini, Pro Discover’ın RTF, Helix3
(dd)’in PDF olarak verdiği görülmüştür. Ayrıca Win32dd’nin RAM’de kapladığı
alanın en düşük olduğu tespit edilmiştir.
Xu ve Wang (2013), Windows’da RAM imajından sistem giriş şifrelerinin
çıkartılmasına yönenik çalışma yapmışlardır. Çalışma Windows XP ve 7 işletim
sisteminde şifrelerin saklandığı lsasrv.dll dosya içeriğinin incelenmesini
kapsamaktadır. Lsasrv.dll dosyasının RAM’e yüklendiği zaman
PsActiveProcesHead yapısına bıraktığı izlerden açık şifreler tespit edilmiştir.
Thomas ve arkadaşları (2013), Windows 7 64bit işletim sisteminde RAM
metodolojisi üzerine çalışma gerçekleştirmişlerdir. Çalışmada, 64bit
sistemlerden alınan RAM imajlarından veri toplama teknikleri üzerinde
tespitlerde bulunulmuştur. Çalışma sonuçlarına göre; EPROCESS’de çalışan
process’ler, PEB_LDR_DATA’ da yüklü DLL dosyaları, HANDLE_TABLE’da açık
bayraklar bulunmaktadır. Ayrıca DBGKD_GET_VERSION64 içerisinden işletim
sistemi sürümü bilgisine erişilmektedir.
Thongjul ve Tritilanunt (2015), RAM’den kullanıcıların sosyal medya
hesaplarının kullanıcı adı ve şifrelerine erişim için taramalar yapmışlardır.
Taramalarda, sosyal medya hesaplarının tarayıcılarda kullandığı dizgi
yapılarından yararlanılmıştır. Çalışmada Blogger, Gmail, Google+, Play Store
Yahoo Mail ve Youtube hesapları kullanılmıştır. Arama ve dizgi yöntemi
taraması sonucunda Yahoo Mail’de %20, diğer hesaplarda %80’in üstünde
başarı elde edilmiştir.
Al-Sharif ve arkadaşları (2015), Open SUSE işletim sisteminde RAM imajından
PDF dosyalarınının çıkartılma testleri yapmışlardır. PDF dosyalarının yapısı
incelenerek, imzaları çıkartılmıştır. İşletim sisteminde Firefox tarayıcısı
üzerinde açık olan 10 tane PDF dosyası ve disk üzerinde açık olan 10 PDF
dosyası üzerinde imza taraması yapılmıştır (Al-Sharif vd., 2015).
9
Al-Sharif vd. (2017) çalışmasında, RAM imajından dizgi arama yöntemi ile DOCX
uzantılı WORD dosyalarına erişim sağlamıştır. Çalışmada kullanılan 2 GB’lık
imaj dosyası DumpIt isimli yazılım ile alınmıştır. Kurtarma yazılımı Windows 7
işletim sistemi üzerinde uygulanmış ve sonucunda başarı oranının ortalama % 6
olduğu görülmektedir.
Akbal ve Dogan (2018) çalışmasında, imaj dosyalarından dijital delillerin
çıkartılması sağlayan yazılımların incelenmesini sağlamıştır. Çalışmada
donanım tabanlı imaj alma araçları olan CRU Ditto and Tableau TD3 cihazları,
yazılım tabanlı imaj alma araçları FTK Imager and Forensic Imager
incelenmiştir. Bu araçlardan alınan imaj dosyaları olan E01 ve DD raw
formatları arasındaki farklar belirtilmiştir. Çalışma sonucunda donanım ve
yazılım tabanlı imaj alma araçları arasında performas karşılaştırmaları
gerçekleştirilmiştir.
10
3. MATERYAL VE YÖNTEM
3.1. Adli Bilişim
Adli bilişim; şüphelilerin bilişim sistemleri üzerinde işlediği suçun, Şekil 3.1’de
gösterildiği gibi suçlunun şüpheli olduğu süreçten başlayarak olay yerinin analiz
edilmesi, verilerin toplanması, verilerin incelenmesi ve suç ile ilgili
ilişkilendirmeler yapılarak, sonuçların düzenli bir rapor halinde adli makamlara
sunulmasıdır (Bui vd., 2003).
Şekil 3.1. Adli bilişim süreçleri
Adli bilişim sürecinde ilk müdahalenin önemini Edmond Locard’ın “her temas
bir iz bırakır” tespiti ile açıklanabilir. Suç ortamında, bilgisayar üzerindeki ilk
müdehale adli bilişim alanında uzman kişiler tarafından yapılması
gerekmektedir. Olay yerinde yapılan hatalar delil bütünlüğünün bozulması,
silinmesi veya değiştirilmesine sebep olabilir. Bu yüzden fiziksel, manyetik ve
elektronik izalasyonun sağlanması gerekmektedir (Hu vd., 2012).
Adli bilişimde inceleme ve analiz aşamasında adli bilişim inceleme yazılımları
kullanılır. Analiz ve inceleme sürecinde kullanılacak teknik ve yöntem, olay
türüne göre değişmektedir. Bundan dolayı olay yerinde bulunan delillerin ne
olduğu ve nerede aranması gerektiklerinin bilinmesi gerekir.
İlk Müdahale Delil Toplama ve Saklama Delil Çıkartma Rapor
Hazırlama Sunum
11
3.1.1. Elektronik delil
Elektronik delil, bilişim sistemlerinde hafızaya sahip elektronik aygıtlardan elde
edilen ve suçun aydınlatılması için kullanılan sayısal verilerdir. Bu veriler
kullanıcı tarafından oluşturulan veya sistemin bıraktığı izlerden oluşabilir.
Elektronik delillerin gizli bir yapıda olması, delillerin elde edilmesi için yazılım
incelemelerinin gerekliliğini ortaya koymaktadır. Elektronik deliller yapı
itibariyle değişikliğe uğrayabilir veya silinebilir (Hejazi vd., 2008).
Elektronik deliller bilişim sistemlerinde; depolama aygıtları (Hard disk, USB
Disk, Hafıza Kartı, CD/DVD, vb.), RAM, cep telefonu ve yazıcıda
bulunabilmektedir. Bu aygıtlardan elde edilen ve elektronik delil niteliğinde
olabilecek veriler;
• Resim dosyaları,
• Videolar,
• Metinsel dökümanlar,
• Programlar,
• İletişim kayıtları,
• İnternet kayıtları,
• Network kayıtları,
• Gizli veya şifreli dosyalardan oluşmaktadır (Petroni vd., 2009).
Adli bilişimde elektronik delillerin elde edilmesi olay yerinde, depolama
cihazlarından alınan imaj üzerinden yapılmaktadır. Elde edilen elektronik
delillerin kabul edilebilir olması için değişikliğe uğramadığının ispat edilmesi
gerekir. Bu ispat hash değerlerinin hesaplanması ile gerçekleşmektedir. Hash
tek yönlü şifrelenmiş algoritmik bir fonksiyondur. Hash değerlerinden geriye
dönülerek veriye ulaşılması çok fazla zaman almaktadır. Hash değerlerinin
üretilmesi için MD5 ve SHA1 algoritmaları kullanılır (Russinovich vd., 2012).
12
3.1.2. İmaj alma
Bilişim sistemlerinde depolama aygıtlarındaki verilerin tamamımın farklı bir
kaynağa kopyalanması imaj alma olarak nitelendirilir. Adli bilişim alanında
yapılan inceleme ve analizler, diskin veya belleğin orijinalinde herhangi bir
değişiklik veya zarar oluşturmaması için imajlar üzerinden yapılır. İmaj alma
işlemi özel yazılım ve donanımlarla gerçekleştirilmektedir. İmaj, delil
niteliğindeki donanımın üzerindeki bütün verilerin kopyasının alınması
anlamına gelmektedir. Alınan imaj; hâlihazırdaki verileri, silinmiş verileri ve
izlerini de kapsamaktadır Adli bilişim süreçlerinde imaj alma delilin bozulması,
silinmesi veya değiştirilmesini önlemek için yapılan bir işlemdir (Schatz ve
Director, 2007).
İmaj alma işlemleri donanım ve yazılım tabanlı olarak yapılmaktadır. Donanım
tabanlı imaj alma yönteminde, imaj almak için geliştirilmiş özel cihazlar
kullanılmaktadır. Yazılım tabanlı imaj alma sürecinde yazılım, sisteme CD, DVD
veya harici depolama kaynakları ile yüklenip, sistemin imajını alan
yazılımlardır. İmaj alma yöntemlerinde kullanılan yapı Şekil 3.2’de
gösterilmiştir (Simon ve Slay, 2010).
Şekil 3.2. İmaj alma yöntemleri yapısı
3.2. RAM Analizi
RAM’lerin hızı sabit disklere göre çok yüksektir. Bu nedenle işletim sistemi
üzerinde kullanılan process ve dosyalar RAM’e yüklenerek çalıştırılmaktadır.
13
RAM bellekler bilgisayarlı sistemlerde kısa süreli veri saklamaya imkân
sağlamaktadır. Bundan dolayı RAM’deki veriler, uçucu veri olarak
adlandırılmaktadır.
İşletim sistemi RAM’de;
• Çalışan process ve hizmetlere ait bilgiler,
• Sisteme ait bilgiler,
• Kullanıcıya ait bilgiler,
• Ağ bağlantısı bilgileri,
• Panoda bulunan bilgiler,
• Çalışan yazılımlara ait bilgiler,
• Kayıt defteri bilgileri,
• Sosyal medya hesaplarına ait bilgiler,
• İnternet günlükleri,
• Eposta bilgileri,
• Kripto anahtarları,
• Sisteme ait şifreler gibi bilgiler saklanabilmektedir (Sitaraman, 2006).
RAM analizi adli bilişim incelemelerinin zorunlu basamaklarından biri haline
gelmiştir. Müdahale sırasında alınan RAM imajından, delil niteliğinde çok sayıda
elektronik veriler elde edilmektedir.
3.2.1. RAM imajı alma araçları
Adli bilişimin bir basamağı olan RAM analizi, siber suçların aydınlatılmasında
önemli yer tutmaktadır. RAM analizinin doğru bir şekilde yapılabilmesi için olay
anında imajın alınması gerekmektedir. İmaj alma süreci yazılım ve donanım
tabanlı araçlar ile gerçekleştirilir (Stüttgen vd., 2015).
Donanım tabanlı araçlara Tribble, Crash Dump ve FireWire Bus örnek
verilebilir. Bu araçlar bilgisayar sistemlerine PCI slotları ve portlar aracılığla
bağlanmaktadır. Günümüzde donanım tabanlı araçların hem maliyet yüksekliği
14
hem de kullanım zorluğu sebebi ile RAM imajı alma sürecinde kullanılmadığı
görülmektedir (Vömel ve Stüttgen, 2013).
Yazılım tabanlı imaj alma araçları bilgisayar sistemlerine harici kaynaklardan
yüklenerek, sistemin imajını alabilmektedir. Genel olarak imaj alma araçlarının
yaptıkları işlev birbirlerine benzemektedir. Adli bilişim alanında RAM imajı
almak için kullanılan araçlar ve işletim sistemi karşılaştırması Çizelge 3.1’de
verilmiştir (Walter ve Petroni, 2007). Bu karşılaştırma sonucunda Memory DD,
KnTDD ve Fast Dump Pro yazılımları Vista sonrası Windows işletim
sistemlerinde kullanılmadığı görülmektedir.
Çizelge 3.1. RAM imajı alma araçları
İmaj Alma Aracı Windows Versiyonları FTK (Forensic Toolkit) Windows Vista, 7, 8, 8.1 ve 10 Imager, Encase v7 Windows Vista, 7, 8, 8.1 ve 10 Belkasoft Live RAM Capturer Windows Vista, 7, 8, 8.1 ve 10 Memory DD Win2000, XP, Vista ve Windows
Server Memoryze Windows XP, Vista, 7, ve 8 DumpIt Windows Vista, 7, 8, 8.1 ve 10 WinEn (EnCase) Windows Vista, 7, 8, 8.1 ve 10 Forensic Toolkit Windows Vista, 7, 8, 8.1 ve 10 KnTDD (KnTTools) Win2000, XP ve Vista Fastdump Pro Win2000, XP ve Vista MagnetRAM Capture Windows Vista, 7, 8, 8.1 ve 10 Windows Memory Toolkit Win2000, XP, Vista ve 7
İmaj dosyaları RAM’in tüm adreslerini bit-to-bit saklayan ham veri
dosyalarından oluşmaktadır. Geliştirilen imaj alma araçlarına göre farklı dosya
uzantıları verilmektedir. Fakat dosya uzantıları ham veri dosyalarını temsil
etmektedir. Yazılım tabanlı imaj almada kullanılan yazılımın RAM’de kapladığı
alan önemlidir. Bu alan ne kadar büyürse RAM’de bulunan verilere zarar verme
ihtimali de artmaktadır. Bundan dolayı imaj alma yazılımlarının RAM’de
minimum alan kaplamayanlar tercih edilir (Yasinsac vd., 2003). İmaj alma
yazılımlarının Windows işletim sisteminde, RAM’de kapladığı alanlar ve imaj
dosyasının uzantıları Çizelge 3.2’de verilmiştir. İmaj alma yazılımları arasında
15
DumpIt yazılımı RAM’de en az yer kapladığı görülmüştür. Bu da imaj alma
sırasında meydana gelebilecek veri kaybını en aza indirilmesini sağlamaktadır.
Bu sebeple literatürde RAM imajı üzerinden yapılan analiz çalışmalarında
DumpIt yazılımının kullanıldığı görülmektedir.
Çizelge 3.2. İmaj alma araçlarının dosya formatları ve kapladığı alanların karşılaştırılması
Araç İmaj Dosyası
Uzantısı RAM’de Kullandığı Alan
Forensic Toolkit Raw 13 MB WinEn (EnCase) Raw 120 MB KnTDD (KnTTools) Mem 19 MB
Fastdump Pro Bin 3 MB Guymager Aff 56 MB Fmem Mem 43 MB Memoryze Mem 6 MB Memory DD Dd 7 MB Belkasoft Live RAM Capturer
Mem 6.5MB
DumpIt Raw 0,58 MB Windows Memory Toolkit
Raw 12 MB
MagnetRAM Capture Raw 6.5MB
3.2.2. RAM imajı analizi araçları
Olay yerinde alınan RAM imajının, RAM analizi araçları kullanılarak analizi
yapılmaktadır. Bu analizlerde kullanılan algoritma ve tekniğe göre elektronik
deliller elde edilmektedir (Zhang vd., 2010). RAM imajı analizi yazılımları
process, ağ, dosya, sistem kayıt analizi başlıklarında işlem yapmaktadır. Çizelge
3.3’de RAM analizi araçlarının hangi analizleri gerçekleştirdiği ve elde
edebileceği veri türleri karşılaştırılmıştır (Süzen vd., 2016).
16
Çizelge 3.3. RAM analizi araçlarının karşılaştırılması Analiz Aracı
İşletim Sistemi
Özellikleri
Forensic Toolkit
Windows ve Linux
Process Analizi: Açık Dosya Tespiti, Çalışan Uygulama Tespiti, Kötücül Yazılım Tespiti. Ağ Analizi: İnternet Sayfası Kayıtları, Kötücül Yazılım Tespiti, Pornografik Erişim, E-mail Kayıtları, Ağ bağlantıları, DDOS kayıtları. Dosya Analizi: Kripto Anahtarına Erişim, Kayıtlı Şifre Tespiti, Kötücül Yazılım ve Virüs Tespiti, Açık Dosya Tespiti, İndirilen Dosyalar, Şifreli ve Gizli Dosyalar, Silinmiş Dosya Tespiti. Sistem Kayıt Analizi: Dosyaların oluşturulma ve silinme tarihleri, İşlem kayıtları, Sistem ve uygulama ayarlarına erişim.
FTK Imager
Windows ve Linux
Process Analizi: Açık Dosya Tespiti, Çalışan Uygulama Tespiti, Kötücül Yazılım Tespiti. Ağ Analizi: İnternet Sayfası Kayıtları, Kötücül Yazılım Tespiti, Pornografik Erişim, E-mail Kayıtları, Ağ bağlantıları, DDOS kayıtları. Dosya Analizi: Kripto Anahtarına Erişim, Kayıtlı Şifre Tespiti, Kötücül Yazılım ve Virüs Tespiti, Açık Dosya Tespiti, Şifreli ve Gizli Dosyalar.
Memoryze Windows Process Analizi: Açık Dosya Tespiti, Çalışan Uygulama Tespiti, Kötücül Yazılım Tespiti. Ağ Analizi: İnternet Sayfası Kayıtları, Kötücül Yazılım Tespiti, Açık Ağ bağlantıları. Dosya Analizi: Kripto Anahtarına Erişim, Kayıtlı Şifre Tespiti, Kötücül Yazılım ve Virüs Tespiti, Açık Dosya Tespiti.
HBGary Responder PRO
Windows ve Linux
Process Analizi: Açık Dosya Tespiti, Çalışan Uygulama Tespiti, Kötücül Yazılım Tespiti ve Şifreleri. Ağ Analizi: Kötücül Yazılım Tespiti, Pornografik Erişim, Aktif Ağ bağlantıları, DDOS kayıtları. Dosya Analizi: Dosya Sistemi Tespiti, Kripto Anahtarına Erişim, Kayıtlı Şifre Tespiti, Kötücül Yazılım ve Virüs Tespiti, Açık Dosya Tespiti, İndirilen Dosyalar, Şifreli ve Gizli Dosyalar. Sistem Kayıt Analizi: Sistem ve uygulama ayarlarına erişim.
Mandiant RedLine
Windows ve Linux
Process Analizi: Açık Dosya Tespiti, Çalışan Uygulama Tespiti, Kötücül Yazılım Tespiti. Ağ Analizi: Açık Ağ bağlantıları. Dosya Analizi: Dosya Sistemi Tespiti, Kötücül Yazılım ve Virüs Tespiti, Açık Dosya Tespiti. Sistem Kayıt Analizi: Web Geçmişi.
17
3.3. Microsoft Word
Microsoft tarafından 1990 yılında yayınlanan Microsoft Ofis uygulamalarının bir
türü olan Word; metin, ses, resim ve video saklayabilen kelime işlemci
yazılımıdır. Word dokümanlarına ait dosyalar iki farklı dosya uzantısına
sahiptir. Word 2007 öncesi dokümanlar doc uzantısını kullanmaktadır. Word
2007 ve sonrası doküman dosyalarının uzantısı ise docx’dir (Microsoft, 2017).
3.3.1. DOC dosya yapısı
Doc uzantılı word dosyaları Şekil 3.3’de görüldüğü gibi yapılandırılmış OLE
Compound Binary File (CBF) dosya formatındadır. OLE Compound Binary File
tek bir dosyada birden fazla veri akışının depolanması için kullanılan bir
yöntemdir. Doc uzantılı dosyaların içerisindeki veriler, WordDocument blokları
arasında codepage 1252 ile sıkıştırılmıştır. Dosya içerisindeki sıkıştırılmış
veriler [Content_Types] ile STX etiketleri arasında yer almaktadır.
Şekil 3.3. Doc uzantılı word dosyasının ayrıştırılmış yapısı
Doc uzantılı bir word dosyasında 1Table veya 0Table veri akışı tablosu bulunur.
WordDocument içerisindeki base.fWhichTblStm yapısı 1 ise akış için 1Table
çağrılır. base.fWhichTblStm 0 olarak ayarlanırsa akış için 0Table kullanılır. Doc
uzantılı dosyalarda 1Table ve 0Table akışı 0x7FFFFFF’den büyük olmamaktadır.
18
FIB (File Information Block), doc dosyasına ait bilgileri ve belgeyi oluşturan
bölümlere ait işaretçileri saklayan yapıdır. Doc dosyalarında FIB değişken
uzunlukta yapıya sahiptir. Şekil 3.4’de görüldüğü gibi FIB içerisindeki bölümleri
farklı uzunlukta ve birbirini takip eden konumdadır. Yeni oluşturulan doc
dosyasının metinleri ve nesnelerinin adresleri FIB içinde tutulur. FIB
bloklarındaki bağlantılar izlenerek döküman içerisindeki veriler
bulunabilmektedir (Microsoft, 2017).
Şekil 3.4. FIB yapısı ve bölümleri
3.3.2. DOCX dosya yapısı
Docx uzantılı word dosyaları sıkıştırılmış Office Open XML dosyalarından
oluşmaktadır. Word dosyalarının XML formatına ayrıştırılması için sıkıştırma
programları kullanılır. Word dokümanı ayrıştırıldığında metinsel veri, stil,
resim, ses, video ve dosyaya ait yapısal bilgiler xml uzantılı dosyalara
çıkarılmaktadır. Şekil 3.5’de örnek docx uzantılı word dosyasının veri bloğunun
ayrıştırılmış yapısı gösterilmektedir.
19
Şekil 3.5. Docx uzantılı word dosyasının veri bloğunun ayrıştırılmış yapısı
DOCX uzantılı word dosyası nasıl ayrıştırılacağı Content_Types.xml dosyası
içerisinde belirtilmektedir. Content_Types.xml’da dosyaya ait tüm bilgiler şekil
3.6’da verildiği gibi XML formatında saklanmaktadır.
Şekil 3.6. Content_Types.xml dosyası içerği
DOCX dosyası içinde bulunan xml dosyaları ve sakladığı verinin özellikleri aşağıda verilmiştir.
• document.xml : metinsel veriler • core.xml : dosyayı ait kullanıcı bilgileri • app.xml : sayfa, kelime, karakter, paragrah, satır sayıları • style.xml: yazı tipleri, stiller • footer1.xml : sayfa numarası • fontTable.xml : kullanılan fontlar • theme1.xml : kullanılan tema • settings.xml: sayfa yapısı ayarları
20
Word dosyasında verilerin ham halleri document.xml içerisinde tutulmaktadır.
Bu XML dosya içerisinde Şekil 3.7’de gösterildiği gibi <w:t> </w:t> etiketileri
arasında her paragrafın verisi yer almaktadır (Al-Sharif vd., 2018).
Şekil 3.7. document.xml dosyasındaki XML yapısı
3.4. PDF Dosya Yapısı
PDF yazılım, donanım ve işletim sisteminden bağımsız taşınabilir ve
yazdırılabilir belge oluşturma amacıyla geliştirilen sayısal bir yöntemdir. PDF
dosya biçimi ilk olarak 1992 yılında Adobe firması kurucularından olan Camelot
tarafından geliştirilmiştir. Günümüzde bu format, ISO (International
Organization for Standardization) tarafından yönetilen açık standart olarak
kullanılmaktadır. PDF dosyaları içerisinde metin, ses, video ve resim verileri
bulunmaktadır. PDF dosyaları Adobe Acrobat yazılımı ile düzenlenmektedir.
Ancak 2003 yılında PDF 1.5 tanıtılması ile beraber Adobe Acrobat ve Adobe
Reader kullanılmaya başlanmıştır (Adobe, 2017). PDF dosyalarının tarihsel
gelişimi Çizelge 3.4’de gösterilmiştir.
21
Çizelge 3.4. PDF dosyasının sürümleri ve sürüm yenilikleri
PDF Sürüm Yıl Yenilik
PDF 1.0 1992 RGB renk desteği, Metin desteği
PDF 1.1 1994 Harici Link, Şifreli Koruma, Çoklu sütun, Yönlendirme linki, notlar, Bağımsız renkler
PDF 1.2 1996 Formlar, Unicode desteği, OPI 1.3, CMYK
PDF 1.3 1999 Temalar, Dijital İmzalama, Java Script desteği, RC4 şifreleme
PDF 1.4 2001 128-bit RC4 şifreleme, JBIG2 Sıkıştırma, Şeffaflık görünümü, PDF tag
PDF 1.5 2003 Nesne şifreleme, JPEG 2000 sıkıştırması, XRef Table, XRef stream desteği, XML yapısı, Katmanlı Yapı
PDF 1.6 2005 Gömülü 3D desteği, AES şifreleme, XML Formlar, DeviceN renkler,
PDF 1.7 2006 Yorum ve güvenlik destekleri, 3D Objeler ve Animasyon desteği, 256-bit AES Şifreleme, XFA 3.0
PDF 2.0 (ISO 32000-2)
2017 AES-256-bit güvenlik desteği, Birden fazla sayfa birleştirmesinde farklı tema desteği, 3D nesne bileşenlerini inceleme, Matbaa basım desteği, CxF/X-4 renk desteği
PDF dosyaları doğrusal ve sabit bir yapıya sahiptir. Standart bir PDF dosyası
yapısında bulunan bileşenler ve bunların örnekleri Çizelge 3.5’de verilmiştir.
Ayrıca PDF dosyalarının farklı yazılımlar ile oluşturulduğu veya farklı dosya
formatlarından dönüştürüldüğü görülmektedir. Bundan dolayı bazı PDF
dosyalarındaki doğrusal ve sabit yapı bozulmaktadır.
Çizelge 3.5. PDF dosya yapıları ve örnekleri
Yapı Örnek
Başlık %PDF-1.7 Doğrusal Parametreler 43 0 obj
<< /Linearized 1 /L 54567 /H [475 598] /O 45 /E 5437 /N 11 >> endobj
22
İlk Sayfa xref table yapısı xref 43 14 0000000052 00000 n 0000000392 00000 n trailer << /Size 57 /Prev 52776 /Root 44 0 R startxref 0 %%EOF
Dosya seviye nesneleri 44 0 obj << /Type /Catalog /Pages 42 0 R >> endobj
İlk Sıkıştırma 56 0 obj << /Length 457 stream …. endstream endobj
İlk Sayfa nesneleri 45 0 obj << /Type Page >>
Kalan sayfaların nesneleri 1 0 obj << /Type /Page stream …. endstream
Main xref table ve trailer xref 0 43 0000000000 65535 f trailer<< /Size 43 >> startxref 257
Kullanıcı tarafından oluşturulmuş ve veri girilmemiş standart bir PDF
dosyasının yapısal görünümü Şekil 3.8’de verilmiştir.
23
Şekil 3.8. Örnek PDF dosyasının standart yapısı
PDF dosyalarında yapısı dışındaki veriler de sıkıştırılmaktadır. PDF sürümlerine
göre farklı sıkıştırma teknikleri uygulanmaktadır. PDF dosyalarında verilerin
sıkıştırmasında kullanılan etiketler Çizelge 3.6’ da verilmiştir (Adobe 2015).
Çizelge 3.6. PDF verilerinin sıkıştırma etiketleri
Anahtar Tanım Length Zorunludur. Stream ve endstream arasındaki
karakterlerin uzunluğu temsil edilir Filter Zorunludur. Verilere uygulanan filitrenin ismi saklanır. DecodeParms Opsiyoneldir, Şifre çözme anahtarı ihtiyaç ise kullanılır. F Opsiyoneldir. Şifrelenen verilere ait dosya adı saklanır. FFilter Opsiyoneldir. Verilere uygulanan filitrenin dosya adını
saklar. FDecodeParms Opsiyoneldir. Şifre çözmek için kullanılan parametreleri
saklar. PDF dosyalarındaki binary veya metinsel veriler Çizelge 3.7’de verilen teknikler
ile sıkıştırılmaktadır. PDF dosyalarında kullanılan sıkıştırma, dosya içerisindeki
referans etiketlerde verilmektedir. Günümüzde PDF programları, PDF
dosyalarını FlateDecode ile sıkıştırılmaktadır. PDF dosyalarında sıkıştırılmış
veriler stream ve endstream blokları arasında saklanır. Verilerin sıkıştırılması
24
için kullanılan algoritma Şekil 3.9’daki gibi filter etiketinde gösterilmektedir
(Didier, 2017).
Çizelge 3.7. PDF dosyalarında kullanılan şifreleme teknikleri
Şifreleme Türü Tanım ASCIIHexDecode Binary verilerin ASCII hexdecimal gösterimidir. LZWDecode Metin veya binary verileir LZW sıkıştırması uygular. RunLengthDecode Sıkıştırılmamış binary verilerinin uzunluğuna göre
şifreler. CCITTFaxDecode Sıkıştırılmamış binary verilerinin CCITT facsimile
standartına göre şifreler. DCTDecode Resim ve veriyi JPEG sıkıştırması uygular. FlateDecode Sıkıştırılmamış binary veya metinlere Flate
sıkıştırma metodunu uygular.
Şekil 3.9. PDF dosyasındaki sıkıştırma etiketi
3.5. Kernel ve User Mode
x86 veya x64 işlemcilerde Şekil 3.10’da görüldüğü üzere 4 farklı güvenlik
seviyesi vardır. Bunlar ring0 (kernel mode), ring1, ring2, ring3 (user mode)’dür.
Windows işletim sistemlerinde kernel ve user mode kullanılmaktadır. İşlemci,
üzerinde çalışan komut türüne bağlı olarak iki mod arasında geçiş yapar.
Uygulamalar user mode’da çalışır. Çekirdek işletim sistemi bileşenleri de Kernel
mode’da çalışır (Ariffin vd., 2015). Aynı zamanda birçok sürücü kernel mode’da
çalışırken, bazı sürücüler user mode’da çalışabilir (Liv vd., 2010). Bir user mode
uygulaması başlatıldığında Windows işletim sistemi, uygulama için bir process
oluşturur. Process, uygulamaya özel sanal adres alanı ve özel bir tanıtıcı tablo
sağlar. Bir uygulamanın sanal adres alanı özel olduğu için, uygulama başka bir
uygulamaya ait verileri değiştiremez. Her bir uygulama tek başına çalışır ve bir
Veri Bloğu
Filtre Yapısı
25
uygulama çökerse kilitlenme bu uygulama ile sınırlıdır. Diğer uygulamalar ve
işletim sistemi kilitlenmeden etkilenmez (Ball vd., 2006).
Şekil 3.10. Windows güvenlik seviyeleri
User Mode güvenlik seviyesinde sanal adres alanı sınırlıdır. User mode’da
çalışan bir process, işletim sistemi için ayrılmış olan sanal adreslere erişemez
(Okolica ve Peterson, 2010). Bir user mode uygulamanın sanal adres alanını
sınırlamak, uygulamanın kritik sistem verilerini değiştirmesini ve zarar
vermesini engellemektedir. Kernel mode’da çalışan komutlar ortak ve tek bir
sanal adres alanını paylaşır. Bundan dolayı kernel mode driver yanlışlıkla, farklı
bir sanal adrese yazarsa, işletim sistemine veya başka bir driver’a ait verileri
tehlikeye atabilir. Ayrıca sistem içerisinde bir kernel mod driver hata oluşturur
ise işletim sistemi de bu hatadan etkilenmektedir.
Şekil 3.11’de verilen diyagramda user ve kernel mode bileşenleri arasındaki
etkileşim yapısı gösterilmektedir. Bu yapıya göre user mode içerisinde çalışan
komutların doğrudan donanıma erişme yetkisi yoktur. İşletim sistemine ait
API’ler aracılığı ile CPU (Central Processing Unit), RAM gibi kaynaklara
erişebilirler (Matousek ve Jezek, 2009).
26
Şekil 3.11. Kernel ve user mode etkileşimi (Microsoft, 2017)
3.6. Windows Bellek Yönetimi
RAM, işletim sistemlerinde işlemlerin veya sürecin belirli bir süre tutulduğu
hafıza olarak kullanılmaktadır. RAM fiziksel donanımın ismi olmakla beraber
işletim sistemlerinde bellek olarak isimlendirilir. Windows işletim sisteminde
çalışan tüm işlemler belleği kullanılır. RAM bellekteki veriler, donanım üzerinde
enerji olduğu sürece saklanmaktadır. Enerji kesintilerinde bellek içerisindeki
veriler kaybolmaktadır (Ni vd., 2012).
İşletim sistemi fiziksel bellek alanının yetersiz olduğu durumlarda sabit diskin
bir bölümünü bellek olarak kullanılmasına izin verir. Sabit diskten alınan bu
bölüm sanal bellek olarak geçmektedir. Bu sanal belleğin sabit diskteki karşılığı
pagefile.sys isimli dosyadır (Poisel vd., 2011). Windows toplam bellek alanını
standart olarak mevcut RAM boyutunun minimum 1,5 katı maksimum ise 3 katı
olacak şekilde ayarlar. Yani 4GB’lık RAM için disk üzerinde minimum 2 GB’lık,
maksimum ise 8GB sanal bellek ayrılabilmektedir. Bu büyüklükler istenildiği
zaman kullanıcı tarafından değiştirilebilmektedir (Ruichao vd., 2009).
27
Windows işletim sisteminde çalışan uygulamalar direk fiziksel bellekteki
adreslere veya verilere erişemez. Bundan dolayı Windows, üzerinde çalışan her
uygulamaya özel sanal adres alanları verir (Microsoft, 2017). Çalışan
uygulamalar fiziksel bellekte bulunan verilere Şekil 3.12’de görüldüğü gibi sanal
adres alanını kullanarak erişim sağlar. İşletim sistemi bu sanal adreslerin
fiziksel adres karşılığını bulur ve bu adresteki veriyi istemci programa iletir. Bu
dönüşüm işlemini gerçekleştiren işletim sistemi bileşenleri bellek yöneticisidir
(Vidas, 2010).
Şekil 3.12. Sanal adres alanı ve fiziksel adres alanı eşleme
3.6.1. Sanal adres alanı
Windows’da bellek yöneticisi, uygulamaların belleği kullanması için her
uygulamaya yer ayırması gerekir. Şekil 3.13’de görülüğü gibi uygulamalara
ayrılan bu bölümler sanal adres alanı olarak tanımlanır. Sanal adres alanları
uygulamaya özeldir. Çalışan bir uygulama farklı uygulamaya ait sanal adres
alanlarına erişemez. Bundan dolayı uygulamalar, başka bir uygulama tarafından
bozulamamaktadır (Povar ve Bhadran, 2011).
28
Şekil 3.13. Sanal belleğin fiziksel belleğe adreslemesi
Windows’da sanal adres alanı Şekil 3.14’de görüldüğü gibi 32 bit sistemlerde
maksimum 4GB, 64 bit sistemlerde 8 TB ve IA64 bit sistemde ise 7 TB
büyüklüğünde olmaktadır (Dolan-Gavitt, 2007). Şekil 3.14’de verilen adres
alanı büyüklükleri 32 bit ve 64 bit donanımlarının sınırladığı maksimum
değerlerdir. Teknik olarak 32 bit mimarisinde 65 GB’lık ve 64 bit mimarisinde
17 milyar GB’lık bir adresleme yapılabilmektedir (Ravi vd., 2016).
Şekil 3.14. 32 bit, 64 bit ve IA64 bit için sanal adres alanı kullanımı
29
3.6.2. Sanal adres tanımlayıcısı
Sanal adres tanımlayınıcısı (VADs), windows bellek yöneticisi tarafından ayrılan
bellek aralıklarının ve fiziksel sayfa listelerini tanımlamak ve yönetmek için
kullanılır. Ayrıca yazma veya kopyalama işlemleri sırasında görev yerine
getirilene kadar sayfaların yapı içinde bekletilmesini sağlar (Dolan-Gavitt,
2007).
Sanal adres tanımlayıcısının procestion ve private memory isimli 2 yapısı
bulunmaktadır.
Protection: Bellek bölgelerine erişimde verilen izinleri saklayan yapıdır. Bu
yapının sabitleri aşağıdaki gibidir.
• PAGE_EXECUTE: Bellekte çalıştırılabilir.
• PAGE_EXECUTE_READ: Bellekte çalıştırılabilir, okunabilir.
• PAGE_EXECUTE_READWRITE: Bellekte çalıştırılabilir, okunabilir ve
yazılabilir.
• PAGE_NOACCESS: Bu bellek bölgesine bağlantı sağlanamaz.
• PAGE_READONLY: Sadece okunabilir.
• PAGE_READWRITE: Okunabilir ve yazılabilir.
Private Memory: Process’ler ile paylaşılmayan özel alanları temsil etmektedir.
3.6.3. Sayfa tabloları
Sayfa tabloları Şekil 3.15’de görüldüğü gibi RAM’in fiziksel adreslerinin sanal
adres alanları ile eşleşmesini sağlayan veri tablolarıdır. Aynı zamanda işlemlerin
diskten yaptıkları takasların durumları da bu tablo üzerinde tutulmaktadır.
Sayfa tabloları fiziksel bellekte saklanmaktadır (Ariffin vd., 2015).
30
Şekil 3.15. Sayfa tablolarının etkileşimi
RAM üzerinde çalışan her process’in sayfa tablosu bulunur. Windows işletim
sisteminde her process’e ait sayfa tabloları maksimum 4 MB büyüklüğünde
olmaktadır. Sistem üzerinde çalışan bir process bellekteki verilere erişmek
istediği zaman fiziksel belleğin adreslerine sayfa tablolarından erişir.
3.6.4. EPROCESS
Windows işletim sistemi üzerinde çalışan tüm process’ler EPROCESS (Executive
Process) tablosunda tutulur. EPROCESS veri tablosunda çalışan process’in,
Process ID, oluşturulma tarihi, çıkış tarihi ve çıkış durumu bilgisi saklamaktadır
(Dolan-Gavitt, 2007).
3.6.5. File_Object
File_Object tablosunda windows işletim sistemi tarafından oluşturulmuş I/O
fonksiyonları, dosya adları ve sonlandırılan process’in cache bilgileri
tutulmaktadır. Aynı zamanda File_Object içerisinde açık olan dosyaların klasör
ve aygıt bilgileri de yer almaktadır (Okolica ve Peterson, 2010).
31
3.6.6. Pagefile.sys dosyası
Fiziksel belleğin kapasitesi her bir process’e bellek yöneticisi tarafından atanan
bellek alanlarına göre sınırlı kalmaktadır. Bundan dolayı bazı durumlarda
çalışan tüm process’ler tarafından kullanılan sanal belleğin toplamı fiziksel
belleğin kapasitesine geçmektedir. Bu problemin çözülmesi için Windowsda
paging olarak adlandırılan bir teknik kullanılır. Bu teknik ile bellek yöneticisi,
fiziksel bellekte boş alan oluşturabilmek için bellekte bulunan bazı sayfaları
diske taşır. Hangi sayfanın diske kopyalanacağı işletim sistemi tarafından karar
verilmektedir. Taşınacak process’lere FIFO (First In First Out) ve LIFO (Last In
First Out) gibi farklı algoritmaların yanında process’in öncelik seviyelerine ve
boyutlarına bakılarakta karar verilir (Thomas vd., 2013).
Bellek dışına taşınan sayfalar, işletim sisteminin kök sürücüsü altında bulunan
pagefile.sys dosyasında depolanır. Windows işletim sistemleri 16 farklı page
dosyasını desteklenmesine rağmen genellikle bir tane oluşturmaktadır. Çoğu
durumda, page dosyasının boyutu fiziksel belleğin 1,5 ile 3 katı kadar
olmaktadır. Bilgisayar çalışır durumda iken, bu dosya işletim sistemi tarafından
kullanılır. Bundan dolayı kullanıcı bu dosyaya erişim sağlayamaz. Bu dosya
işletim sistemini tarafından varsayılan olarak silinmez. Fakat bu seçenek kayıt
defterindeki ilgili anahtar ayarı ile değiştirilebilir (Zhang vd., 2010).
Bir sayfa bellek dışına taşındığında, bellekte bulunan ilgili page tablosunda
işaretlenir. Bir process diske taşındığında sayfaya ihtiyaç duyarsa, bir sayfa
hatası (page fault) oluşur. Bu hata ile bellek yöneticisi tetiklenir ve ilgili sayfalar
tekrar belleğe yüklenir (Burdach, 2013).
3.7. Uçucu Veri Analizi
Uçucu veriler, sürekli veri akışının olduğu bellek üzerinde geçici olarak
depolanan ve güç kesildiği zaman kaybolan verilerdir. Bilişim suçlarında disk
analizi ile elde edilemeyen veriler, uçucu veri analizi ile elde edilebilmektedir.
32
Uçucu veri analizinin yapılabilmesi için RAM imajının alınması gerekmektedir.
RAM imajı üzerinden yapılan analizler ile elde edilebilecek veriler aşağıda
listelenmiştir (Garcia, 2007).
• Sistemde çalışan process’ler,
• Çalışan process’lerin ne zaman ve hangi kullanıcı tarafından başlatıldığı,
• Gizli programlar,
• Kötücül Yazılım ve virüs,
• Aktif ağ bağlantıların durumu,
• Kullanıcı şifreleri,
• Kripto anahtarları,
• Kaydedilmemiş veya sonlandırılmış dokümanlar,
• Yakın geçmişte gerçekleşen internet üzerindeki aktiviteler veya mailler.
Windows işletim sisteminde uçucu veri elde etmek için 2 farklı yöntem
uygulanmaktadır.
3.7.1. Dizgi arama
Dizgi arama, RAM imajı üzerinde yapılacak analiz işlemlerinden biridir. Bu
yöntemde RAM imajı içerisindeki veri yapılarının kullanılmasına gerek
olmamaktadır. RAM imajında üzerinde çeşitli arama seçenekleri belirlenerek,
özel yazım biçimlerine sahip ASCII ve Unicode dizgileri taranabilmektedir. Dizgi
arama yöntemi Windows’da çalışan uygulamaların RAM’de bıraktığı açık
metinlere uygulanmaktadır. RAM’e yüklenmiş dosya türlerinde veri dizilimi,
belirli algoritma ve teknikler ile yapıldığından dolayı bu tür yapılara dizgi arama
yöntemi uygulanmamaktadır. Dosya türlerine ait veriler dosya kazıma yöntemi
ile kurtarılmaktadır (Amari, 2009).
Linux ve Windows ortamlarda kullanılabilen String ve Winhex gibi yazılımlar ile
totalrecall.sh <imaj_dosyası> <imza_dosyası> şeklinde ilk argüman olarak imaj
dosyasını, ikinci argüman olarak da imza dosyasını vererek arama işlemi
gerçekleştirilir (Ball vd., 2006).
33
Windows işletim sisteminde çalışan internet tarayıcıları, kullanıcıya ait bilgileri
belirli bir süre şifreleme kullanılmadan RAM’de saklamaktadır. Bu bilgilere RAM
imajından, dizgi arama yöntemi kullanarak erişim sağlanır. Bu noktada her
uygulama için ayrı dizgi yöntemleri belirlenerek tarama yapılmaktadır (Poisel
vd., 2011). Çizelge 3.8’de sosyal medya hesaplarına ait kullanıcı adı ve şifre
taraması için oluşturulmuş dizgi örnekleri verilmiştir.
Çizelge 3.8. Sosyal medya hesaplarına ait veriler için kullanılan dizgiler
Hesap Adı Hesap Adı Şifre Gmail &Email= &Passwd= Facebook &email= &pass= Google+ &Email= &Passwd= Youtube &Email= &Passwd= Twitter &session%5Busername_or_email
%5D= &Session%5Bpassword%5D=
Amazon &Email= &password Blogger &Email= &Passwd Playstore &Email= &Passwd
Dizgi arama yöntemi RAM’de belirli kurallara göre dizelenmiş tüm açık
metinlere uygulanmaktadır. İnternet tarayıcıları web sayfalarına ait verileri
RAM’de açık olarak saklamaktadır. Saklanan bu verilere erişmek için RAM
içerisinde yapılacak dizgi arama örneği aşağıdaki verilmiştir. Ayrıca Şekil
5.16’da Internet Explorer’dan giriş yapılmış bir sosyal medya hesabına ait
tarama yapılmış kullanıcı bilgisi ve şifre dizilimi gösterilmektedir (Thongjul ve
Tritilanunt, 2015).
Gmail signin: &Email==[0-9]?{15}[a-z]?{15}%40([a- z]{8}\.)?[a-z]{8}\.com&Passwd== Facebook: locale=el_GR&email=[0-9]?{15}[a-z]?{15}%40([a-z]{8}\.)?[a-z]{8}\.com&pass=[0-9]?{15}[a-z]?{15} Hotmail signin: MSPPre=[0-9]?{15}[a-z]?{15}@[a-z]{8}.com|[a-z]?{18}[0-9]?{18}||MSPCID= [a-z]?{18}[0-9]?{18}
34
Şekil 3.16. İmajda dizgi arama yöntemi örneği
3.7.2. Dosya kazıma
Dosya kazıma, RAM’de binary olarak saklanan sonlandırılmış veya silinmiş
dosyaları arama-kurtarma süreci olarak bilinir. Windows işletim sisteminde
kullanılan dosyalar, RAM’de header ve footer imzaları arasında saklanmaktadır.
RAM’de bulunan dosyalar, header ve footer imza taraması yapılarak
çıkartılmaktadır. Dosya türlerinin sürümlerine göre header ve footer imzaları
değişebilmektedir. Çizelge 3.9’da farklı dosya türlerine ait header ve footer
imzaları verilmiştir. Ayrıca adli bilişimde elektronik delil elde edilecek dosya
türlerine ait header ve footer imzaları EK 1’de verilmiştir (Yasinsac vd., 2003).
Çizelge 3.9. Dosyaların header ve footer imzaları
Dosya Türü
Header Footer
PNG 89 50 4E 47 0D 0A 1A 0A 49 45 4E 44 JPEG FF D8 FF FF D9 JPG FF D8 FF E0 00 10 FF D9 GIF 47 49 46 38 39 61 00 00 3B PDF 25 50 44 46 25 25 45 4F 46 WORD D0 CF 11 E0 A1 B1 1A E1 00 00 D0 CF 11 E0 A1 B1 E1 00 00 XML 3C 3F 78 6D 6C 20 76 65 72 73
69 6F 6E 3D 22 31 2E 30 22 3F 3E
-
RAM imajı içerisinde dosya kazıma yöntemi ile kurtarılan verilerde oluşan kayıplar dosya yapısını bozabilmektedir. Bundan dolayı dosya kazıma tekniğinde öncelikle veri blokları kurtarılmaya çalışılmaktadır. Şekil 3.17’de
35
RAM’de bulunan jpeg dosyasına ait dosya boyutu, veri yapısı işaretçileri, header ve footer imzaları görüntülenmektedir.
Şekil 3.17. RAM’de bulunan resim dosyasının bellek haritasında görünümü
Bazı dosya türleri RAM’e footer imzası bırakmamaktadır. RAM imajı analizinde
footer imzası olmayan dosya türleri için header imzasından sonra maksimum
büyüklük girilerek sonlandırma yapılmaktadır. Footer imzası olmayan
dosyalarda kullanılan maksimum büyüklük o dosyaya ait gömülü boyuttan
alınmaktadır (Walters ve Petroni, 2007).
3.7.3. Process analizi
Process, içerisinde iş parçacıklarının, tanıtıcıların ve güvenlik halkaları gibi
sistem bileşenlerini bulunduran bir yapıdır. İşletim sisteminde diskte bulunan
program kodlarının işlemci tarafından çalışması için bu kodların ve eriştiği
verilerin belleğe yüklenmesi gerekmektedir.
36
Process analizinin yapılabilmesi için process’lerin bellekte bulunduğu
durumların bilinmesi gerekmektedir. Process’ler bellekte çalışma biçimlerine
göre 3 farklı durumda bulunmaktadır. Birinci tip process’ler işletim sisteminin
ilk açıldığı zaman bellekte çalışırlar. Bu process’lerin analizi ile sistemde hangi
programların çalıştığı, bu programların eriştiği dosyalar ve açık ağ
bağlantılarına ait bilgiler öğrenilebilir (Okolica ve Peterson, 2010). Uçucu
bellekte bulunabilen ikinci process tipi ise sonlandırılmış process’lerdir. Bir
process sonlandırıldığında bu process için ayrılmış bellek boş olarak işaretlenir.
Eğer sonlandırılmamış process’e ait bellek alanına yeni bir process
yüklenmemiş ise, bu process’lere tekrar ulaşılabilir. Son tip olarak kötücül
yazılımların oluşturdukları gizli process’lerdir. Örneğin rootkit, aslında bir
Windows hizmeti olan svchost adı altında bir process oluşturarak kendini
saklayabilmektedir (Karayianni vd., 2012).
Windows işletim sisteminde process’ler kendine ait özelliklerini ve veri
yapılarını içeren Eprocess veri yapısı içerisinde saklanır. Bellekte Eprocess
block ve içerdiği veri yapıları sistem adres alanında bulunur. Eprocess block
içerisindeki veri yapılarından biri olan Process Environment Block (PEB) ise
istisna olarak sürece ait adres alanında bulunur ve user mode’da çalışan
process’in kullanım bilgilerini içermektedir. Eprocess bloklar RAM’de,
List_Entry veri yapısı kullanılarak birbirlerine bağlanmaktadır (Stevens ve Casey,
2010).
List_Entry kullanılarak, process ile ilgili process numarası, parent numarası,
ilişkili thread sayısı, açık handle sayısı, oturum numarası, açılma tarih ve saati
gibi birçok bilgiye erişilebilir.
3.8. Windows Driver Kit
WDK, Şekil 3.18’de görüldüğü gibi Visual Studio platformu üzerinden C++ ile
User veya Kernel Mode üniversal driver geliştirmek için kullanılan
37
kütüphanedir. Universal driver modeli ile tek driver’ın bilgisayar, tablet, telefon
ve Xbox üzerinde çalışabilmesi amaçlanmaktadır (Microsoft, 2018).
Şekil 3.18. WDK ile geliştirilen sürücü türleri
WDK Windows Vista işletim sisteminde değişen dosya yapısı sonrasında
kullanılmaktadır. Vista işletim sistemi öncesi DDK (Driver Development Kit) ile
sürücü geliştirilmekteydi. Bundan dolayı WDK ile geliştirilen driver’lar Vista
sonrası Windows işletim sistemlerinde kullanılmaktadır.
WDK ile geliştiren sürücünün sisteme sorunsuz yüklenmesi için gerekli testler
için Windows Hardware Lab Kit (Windows HLK), Windows Hardware
Certification Kit (Windows HCK) ve Windows Logo Kit (WLK) kullanılmaktadır
(Microsoft, 2018).
Windows Hardware Lab Kit (Windows HLK) : Sürücünün donanım yükleme
testlerinin yapılması için kullanılır.
Windows Hardware Certification Kit (Windows HCK) : Geliştirilen
sürücünün dijital imzasının üretilmesi için kullanılır.
Windows Logo Kit (WLK) : Cihaz imza kalitesi ve performans testleri için
kullanılır.
38
4. ADLİ BİLİŞİM YAZILIMI
Adli bilişimde sürecinde RAM’den elektronik delil elde etmek için geliştirilen
yazılım Şekil 4.1’de gösterildiği gibi 4 bölümden oluşmaktadır. Birinci bölümde
RAM’e Kernel mode’da erişim sağlanıp, adreslerinin alınması için RAM sürücüsü
yazılmıştır. İkinci bölümde bu RAM sürücüyü kullanıp Windows’da RAM imajı
alan RİMAY isimli yazılım geliştirilmiştir. Alınan imaj dosyasından MS Word ve
PDF dosyalarının kazıma işlemleri DOKAY yazılımı ile üçüncü bölümde
gerçekleştirilmiştir. Dördüncü bölümde ise kazınan dosyalar içerisinde
okunabilir verileri kurtarılması sağlanmaktadır. Geliştirilen sistemin Şekil 4.2’de
çalışma modeli ve algoritması verilmiştir.
Şekil 4.1. Geliştirilen sisteme ait yazılımların gösterimi
Yapılan çalışmanın imaj alma ve analiz işlerinde kullanılan donanımın özellikleri
Çizelge 4.1’de verilmiştir. Ayrıca farklı boyutlardaki RAM’lerin imaj alma
sürelerin ölçümü için farklı RAM kapasitelerinde sanal sunucu oluşturulmuştur.
•Kurtarılan dosyalardaki verilerin toplanmasını sağlar.
•DOC,DOCX, XML ve PDF ait dosyaların çıkartılması sağlar.
•RAM ve pagefile.sys dosyasının içeriğini bit-to-bit kopyalar.
•Kernel Mode seviyesinde RAM'in tüm adreslerine erişimi sağlar.
Kernel Mode RAM Driver
RAM İmajı Alma Yazılımı
(RİMAY)
Veri Kurtarma Yazılımı
Dosya Kazıma Yazılımı (DOKAY)
39
Çizelge 4.1. RAM imajına ait sistem bilgisi
Fiziksel Donanımının özellikleri İşletim sistemi Windows 10 64 Bit RAM 12 GB Page File 2 GB CPU Intel i7 7300U 2.90 Ghz
Şekil 4.2. Yazılım modelinin yapısı ve akış şeması
40
4.1. Kernel Mode RAM Sürücüsünün Geliştirilmesi
RAM analizin yapılabilmesi Windows üzerinde belleğin içerisindeki tüm
adreslerin ve verilerin imajının alınması gerekmektedir. İmaj alma yazılımları
Windows Vista öncesi, RAM adreslerine erişim sağlamaktadır. Fakat Windows
Vista sonrası RAM’in adreslerine erişim kısıtlanmıştır. Windows’da user
mode’da RAM’e tam erişim sadece Kernel mode seviyesinde çalışan uygulamalar
ile mümkündür. Bir uygulamanın Windows’da kernel mode seviyesinde
çalışabilmesi için Kernel mode sürücü dosyası kullanması gerekir. Bundan
dolayı imaj alma yazılımı için öncelikle kernel mode RAM driver geliştirilmiştir.
Kernel Mode RAM sürücüsü, WDF (Windows Driver Frameworks)
kütüphanesini kullanan WDK şablonunda C++ programlama dili ile
geliştirilmektedir. Sürücü geliştirmek için gerekli WDK, Visual Studio 2015 ve
2017 platformlarına yüklenmektedir. Ayrıca WDK, Windows 7 ve üzeri işletim
sistemlerinde kullanılır.
Geliştirilen sürücü, Windows Vista ile beraber işletim sisteminde çalışması için
dijital imzasının bulunması gerekmektedir. Kernel Mode sürücüsü için dijital
imzalamada Extended Validation Code Signing Certificates (EVCSC) kullanılır.
EVCSC, işletim sistemlerinde kernel mode sürücünün çalışabilmesi için gerekli
donanım güvenlik modüllerini içeren dijital imza sertifikasıdır. Bu sertifika
ticari kullanımlarda, güvenlik firmalarından satın alınmaktadır. WDK ile sürücü
geliştirme ve test işlemlerinde dijital imzalama, Test Certificate Kit ile
yapılmaktadır. Test Certificate Kit, Kernel mode sürücünün Windows işletim
sisteminde test edilmesi ve kullanılmasını sağlayan bir yazılımdır. Test
Certificate Kit ile üretilen sertifikanın kullanılması için Windows işletim
sisteminin başlangıç ayarlarından “sürücü imza zorlamasını devre dışı bırak”
yapılması gerekir.
İşletim sistemine yeni bir kernel driver yüklendiği zaman I/O, Güç ve Tak &
Çalıştır yöneticileri ile iletişime girer. Sürücünün ilk yükleme sürecinde I/O
41
yöneticine istekte bulunulur. Bu istek, driver dosyası içindeki IRPs (I/O Request
Packets) parametreleri ile gerçekleşir. Yüklenecek sürücünün I/O yöneticisinin
isteklerine IRPs parametresi ile doğru cevap vermesi gerekir. Hatalı parametre
gönderme kernel mode üzerinden olacağı için kilitlenme, donma veya mavi
ekran hatalarına neden olmaktadır.
Sürücü geliştirme süreci Şekil 4.3’de görüldüğü gibi Visual Studio 2017
üzerinden yeni bir Kernel Mode Driver şablonunun açılması ile başlamaktadır.
Şekil 4.3. Kernel Mode Driver şablonu
Açılan şablon proje içerisine, sürücü oluşturma için driver.c ve PTE üzerinde
adreslere erişim için kullanılacak address_pte_list.c isimli C++ kütüphane
dosyası oluşturulmuştur. driver.c dosyası içerisinde I/O yöneticisine istekte
bulunan DriverEntry ve A2SRamDriverEvtDeviceAdd fonksiyonları Şekil 4.4’ teki
gibi tanımlanmıştır.
42
Şekil 4.4. DriverEntry ve A2SRamDriverEvtDeviceAdd fonksiyonu kullanımı
Driver’in RAM adres erişimi için WDF’de yer alan wdm.h kütüphanesine ait
FILE_READ_DATA fonksiyonu kullanılır. Driver’ın RAM erişimi için
IoCreateDeviceSecure fonksiyonunun Şekil 4.5’deki gibi çağrılması
gerekmektedir.
Şekil 4.5. IoCreateDeviceSecure fonksiyonun çağrılması
IoCreateDeviceSecure fonksiyonu Windows’ta kullanılacak yeni donanımı
oluşturabilmesi için DriverObject, DeviceExtensionSize, DeviceName, DeviceType,
DeviceCharacteristics, Exclusive, DeviceObject parametrelerinin verilmesi
gerekmektedir.
Sürücünün sisteme yüklendikten sonra imaj alma yazılımından RAM’e erişim
için aygıt ismi tanımlanması yapılmaktadır. Bu tanımlama için kullanılan etiket
yapısı aşağıda verilmiştir.
43
#define A2S_DEVICE_NAME L"a2sram"
Sürücü sisteme yüklenirken, IRPs parametreleri I/O yöneticisi ile iletişimi
wdm.h kütüphanesinden Şekil 4.6’daki gibi referans alınan IRP_MJ_READ ve
IRP_MJ_WRITE fonksiyonları ile sağlanmaktadır.
Şekil 4.6. IRP_MJ_READ ve IRP_MJ_WRITE fonksiyonları
wdm.h kütüphanesine ait __outword ve __inword fonksiyonları, Şekil 4.7’de
gösterilen fonksiyonlarda kullanılarak RAM’in adres aralıklarına erişim imkanı
sağlamaktadır. Ayrıca her adrese test verisi ve okuma komutu gönderme işlemi
yapılmaktadır. Bu sayede RAM imajı alınırken adres atlamalarının önlenmesi
sağlanmaktadır.
Şekil 4.7. Driver’ın RAM’e erişim fonksiyonları
RAM Driver’ın işletim sistemine yüklenebilmesi için dijital imza dosyasının
olması gerekir. Dijital imza, Şekil 4.8’de gösterildiği gibi projede property
penceresinden Signing > Test Certificate > Create Test Certificate yolu
izlenerek alınabilmektedir. Geliştirilen RAM sürücü için alınan dijital imza
sürücü dosyası içerisine Şekil 4.9’da görüldüğü gibi yüklenmiştir. Alınan dijital
imzalar 10 yıl geçerliliğe sahiptir.
44
Şekil 4.8. Sürücü için test sertifikası alma
Şekil 4.9. Sürücüye ait imzalanmış dijital sertifika
4.1.1. Kernel Mode sürücünün test edilmesi
Kernel Mode RAM sürücünün sistem dosyalarının oluşturulması için projenin
derlenmesi gerekir. Derlemeden sonra Debug klasör içerisine,
A2SRamDriver.sys isimli kernel mode driver ve A2SRamDriver.inf isimli driver
kurulum dosyası üretilir. Geliştiren sürücü, Visual Studio’da 32bit ve 64bit için
ayrı ayrı derlenerek sürücü dosyaları oluşturulur.
45
Kernel mode RAM driverin işletim sistemi üzerine yüklenip fiziksel donanıma
erişiminin test edilmesi için WDK ile beraber gelen Driver Test kiti
kullanılmıştır. Bu kit visual studio içerisinde sanal donanım oluşturarak,
sürücünün bu donanıma yüklenmesini sağlamaktadır. Visual Studio’da test
ortamının oluşturulması için Şekil 4.10’da görüldüğü gibi Driver menüsü
içerisinden Test>New Test Group menüsüne tıklanmaktadır.
Şekil 4.10. Test ortamının oluşturulması
Driver’ın testi için oluşturulan test ortamında hangi donanıma yükleneceği Şekil
4.11’de gösterildiği gibi seçilmesi gerekmektedir. Test ortamı çalıştırıldığında
driver’ın sisteme yüklenme sürecinde oluşan hatalar output penceresinde
görülmektedir.
Şekil 4.11. Test için kullanılacak donanımın seçim ekranı
46
4.2. RİMAY Yazılımının Geliştirilmesi
Windows işletim sisteminde RAM imajının alınması için öncelikle Kernel mode
seviyesine geçilmesi gerekir. Bunun için imaj alma yazılımı tarafından kernel
mode RAM sürücünün sisteme yüklenmesi gerekmektedir. Yüklenen sürücü
üzerinden RAM’in tüm adreslerine ve verilerine erişim sağlanılarak bit-to-bit
kopyası sabit diske alınmaktadır. RİMAY yazılımının çalışması sırasında RAM’de
az yer kaplaması için Windows komut satırı üzerinde çalıştırılmaktadır. Böylece
yazılımın imaj alma sürecinde RAM’de kapladığı alandan dolayı verilerin silinme
ihtimali azaltılmaktadır.
RİMAY’ın geliştirilmesinde öncelikle imaj dosyasının tanımlamalarının
yapılması gerekmektedir. Şekil 4.12’de verildiği gibi imaj dosyasının dosya adı,
sistem bilgisi, sanal bellek konumu bilgileri tanımlanmıştır. Yazılımın Kernel
mode’da çalışması için gerekli sürücü dosyaları projeye kaynak dosya olarak
eklenip, referansları A2S_64BIT_DRIVER ve A2S_32BIT_DRIVER isimli
değişkenler içerisinde saklanmaktadır.
Şekil 4.12. Alınacak imaj dosyasına ait tanımlama
İmaj dosyasının alındığı sistemin bilgilerinin dosya içine aktarılması için
kullanılan A2SSistem isimli sınıf Şekil 4.13’de verilen kodlar ile oluşturulmuştur.
A2SSistem isimli sınıf mevcut sistemin işlemci ve işletim sistemi bilgisini ana
sınıfa parametre olarak döndürmektedir.
47
Şekil 4.13. A2SSistem isimli sınıf yapısı
Sürücünün sisteme yüklenmesi servis üzerinden gerçekleşir. Bunun için yazılım
içerisinde winsvc.h kütüphanesinde yer alan SC_HANDLE sınıfından aşağıdaki
kod bloğu ile nesne alınmıştır. Oluşturulan nesneye Şekil 4.14’deki görüldüğü
gibi CreateService fonksiyonu ile servisin adı, sürücü dosyası ve gerekli sabit
değerler yollanarak çalıştırılır.
SC_HANDLE servis = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE);
Şekil 4.14. Sürücü yükleme servisinin oluşturulması
Kernel mode RAM sürücüsü üzerinden erişilen fiziksel belleğin yapısını sisteme
yüklemek için Şekil 4.15’de verilen A2SRAMinfo isimli struct oluşturulmuştur.
Bu yapı ile RAM’e ait bellek haritası çıkartılmaktadır.
48
Şekil 4.15. A2SRAMinfo isimli struct yapısı
SC_HANDLE sınıfından alınan servis nesnesinin tetiklediği driver’ın sisteme
yüklenmesi ile RAM’ın adresleri ve adreslere ait yapılar bu servis üzerinden
gelmektedir. RAM driver’dan RAM’e ait gelen bilgiler A2SRAMinfo
saklanmaktadır. Şekil 4.16’da verilen döngü bloğu ile RAM’in ilk adresi ile son
adresi arasındaki verileri ReadFile fonksiyonu ile buffer’a atılmaktadır. Aynı
zamanda ReadFile fonksiyonu okuma sırasında hata oluşturmaz ise buffer’daki
veriler, WriteFile fonksiyonu ile geçici imaj dosyası içerisine eşzamanlı olarak
yazılmaktadır.
Şekil 4.16. RAM’in adresinin okunması
Yazılım tarafından oluşturulacak olan RAM imajı dosyasının sabit diske
yazılması için fileapi.h C++ kütüphanesi içerisinden CreateFile fonksiyonu
kullanılmaktadır. CreateFile fonksiyonu ile Şekil 4.17’de görüldüğü gibi imaj
dosyasının adı ve sabit parametreleri gönderilmektedir. Sabit diske
49
oluşturulacak dosyanın durumu bool tipindeki cikisi_dosya_yol isimli değişkende
saklanmaktadır.
Şekil 4.17. İmaj dosyasının sabit diske yazılması
RAM’ın tüm adreslerinin ve verilerin imaj dosyasına aktarılması
tamamlandıktan sonra sisteme yüklü olan sürücünün kaldırılması
gerekmektedir. Sürücüyü kaldırmak için öncelikle OpenService fonksiyonu ile
sürücüyü yükleyen servisin bulunması gerekir. Daha sonra ControlService
fonksiyonu aktif servise SERVICE_CONTROL_STOP parametresi ile durdurma
komutu gönderir. Son olarak servis sistemden silinir ve RAM’den işaretçisi
kaldırılır. RAM sürücüsüne ait servisin sistemden kaldırılmasını sağlayan
driver_kaldir fonksiyonu Şekil 4.18’de verilmiştir.
Şekil 4.18. Driver dosyasının sistemden kaldırılması
4.2.1. İmaj alma yazılımın test edilmesi
Geliştirilen imaj alma yazılımının test edilmesi için Kernel mode RAM driver ile
kullanılması gerekmektedir. RAM driver dosyası imaj alma yazılımın çalıştığı
debug klasörü içerisinde bulunmaktadır. İmaj alma işlemi, Windows 8, 8.1 ve
50
10 (32 ve 64 bit) işletim sistemleri üzerinde farklı RAM kapasitelerinde
uygulanmıştır. Ayrıca bellek yönetimi tarafından geçici hafıza olarak ayrılan
2GB pagefile.sys dosyası da imaja dahil edilmiştir. RİMAY yazılımın sürücüyü
kullanma modeli Şekil 4.19’da verilmiştir.
Şekil 4.19. Driver’ın çalışma modeli
İmaj alma yazılımının RAM sürücüsünün sisteme yükleyebilmesi ve çalıştırması
için Windows işletim sisteminin “Başlangıç Ayarları” ekranından “7) Sürücü
imzası zorlamasını devre dışı bırak“ seçeneğinin seçilmesi gerekmektedir. Bu
başlangıç ayarı penceresi, Windows’un çalıştır ekranına “shutdown /o /r -t 00”
komutu girilip, sistem yeniden başladıktan sonra açılmaktadır.
Şekil 4.20’de ekran görüntüsü verilen RİMAY yazılımı Windows komut satırı
üzerinde administrator olarak çalışmaktadır. Yazılım çalıştığında ilk olarak
sürücü sisteme yüklenmektedir. Daha sonrada RAM adresleri ve verileri
okunarak imaj dosyası içerisine yazılır. Yazma işlemi tamamlandıktan sonra
dosya kapatılır ve sürücü sistemden kaldırılır. Windows 10 işletim sistemi
üzerinde alınan RAM imajı dosyası Şekil 4.21’de görüldüğü gibi test.raw ismi ile
kaydedilmiştir. Alınan imaj dosyasında 12GB lık fiziksel RAM ve 2GB ‘lık
pagefile.sys sanal bellek dosyası bulunmaktadır. İmaj dosyasına ait ham veriler
Şekil 4.22’de hex haritası üzerinde gösterilmiştir.
51
Şekil 4.20. RİMAY’ın imaj alma işlemini görüntüsü
Şekil 4.21. Oluşturulan imaj dosyasının görüntüsü
Şekil 4.22. RAM imajının hex görünümü
4.3. DOKAY Yazılımının Geliştirilmesi
DOKAY, RİMAY yazılımdan ile alınan raw uzantılı RAM imajı dosyasından dizgi
tarama ve kazıma tekniği ile MS Word ve PDF dosyalarını kazımaktadır. Yazılım
Visual Studio 2017 plaformunda C++ programlama dili ile geliştirilmiştir. Ayrıca
yazılımda görevlerin iş parçacıklarına bölünüp eş zamanlı tarama yapılması için
52
POSIX Kütüphanesi kullanılmıştır. POSIX kütüphanesi Visual Studio ile
derlenmediği için derleme işlemi TDM-GCC isimli yazılım ile yapılmıştır.
TDM-GCC : C/C++ ve Fortran dillerine ait çoklu dosyaları hızlı olarak derleme
avantajı sağlayan bir derleyicidir. 32 bit ve 64 bit Windows işletim
sistemlerinde farklı kütüphaneleri ortak bir derleme dosyası içerisinden
çalıştırılabilir dosyalarını oluşturmaktadır.
DOKAY yazılımı imaj içerisindeki MS Word ve PDF dosyaların çıkartılması için
dosyaların RAM’de bıraktığı imzalarını taramaktadır. MS Word dosyalarında
bilindiği üzere 2 farklı uzantı kullanılmaktadır. Word 2007 öncesinde kullanılan
DOC uzantılı dosyalarda yapılacak imza taramasında doc dosyasına ait imzalar
kullanılmaktadır. Word 2007 sonrasında kullanılan DOCX uzantılı dosyalarda
ise DOCX ve XML dosyalarına ait imza taraması yapılmaktadır. Yazılımda imza
taramasında kullanılan header ve footer verileri EK 1’de verilmiştir. PDF, DOC,
DOCX ve XML dosyalarına ait kullanılan imza örneği aşağıdaki verilmiştir.
İmza Örneği
PDF Header:25 50 44 46 Footer:25 25 45 4F 46 DOC Header:50 4B 03 04 14 00 06 00 Footer:50 4B 05 06 DOCX Header:50 4b 03 04 14 00 06 00 Footer: XML Header:3c 3f 78 6d 6c Footer:
DOKAY yazılımı kazıma işlemi için imaj dosyasına ve imza veri tabanına ihtiyaç
duymaktadır. Kullanılan imaj dosyası boyutlarının büyük olması ve farklı imza
türlerinin bulunması kazıma işlemi süresini artırmaktadır. Bu sürenin kısalması
için her imza türü GPU (Graphics Processing Unit) üzerinde ayrı bir process
üzerinde işlenmektedir. Bu teknik ile aynı imaj dosyasını kullanılan imza türü
sayısı process oluşturulmaktadır. GPU üzerinde çoklu process çalıştırmak için
POSIX kütüphanesi kullanılmıştır.
RAM imajı içerisinde kazıma işlemi öncelikle işlem sürecinde kullanılacak genel
değişken ve sabitlerin Şekil 4.23’deki gibi tanımlanması gerekmektedir.
Tanımlanan sabit ve değişkenlerin işlevleri aşağıda verilmiştir.
53
• toplam_aranan: Tarama sürecinde kaç adet dosyanın arandığının
bilgisini tutar.
• toplam_kuyruk: Kazınacak kaç adet dosyanın olduğunun bilgisini tutar.
• toplam_okunan: İmaj içerisinden kaç adet dosyanın okunduğunun
bilgisini tutar.
• toplam_yazilan: Kuyruğa kaç adet dosyanın yazıldığının bilgisini tutar.
• PARS_DEFAULT_CONFIG_FILE: Dosyalara ait imzaların saklandığı konum
bilgisini saklar.
• PARS_DEFAULT_OUTPUT_DIR : Kazınan dosyaların çıkartılacağı dosya
bilgisini saklar.
• STARTCARVE, STOPCARVE, STARTSTOPCARVE, CONTINUECARVE: Kazıma
sürecinde kullanılan sabit değerlerdir. Sırasıyla 1,2,3,4 verilerini saklar.
Şekil 4.23. Sabitler ve değişkenlerin tanımlanması
Tarama sonucunda elde edilecek olan dosyaların geçici bellekte saklanması için
Şekil 4.24’deki gibi CarveBilgi isimli yapı tanımlaması yapılmıştır. Bu yapı
içerisinde dosyanın adı, dosya yapısı, imajdaki başlangıç ve bitiş adresi ve ham
verileri tutulmaktadır. İmaj içerisinde yapılan ilk taramada bulunan dosyalara
ait bilgileri CarveBilgi yapısınden referans alan jeneriklerde saklanacaktır.
Şekil 4.24. CarveBilgi isimli yapının tanımlanması
54
İmza veri tabanında bulunan header ve footer verilerine göre tarama yapılması
için Adres_Arama isimli yapı tanımlanmıştır. RAM’e yüklenen her dosya header
imzası bırakmaktadır. Fakat bazı dosyalar RAM’e yüklenirken footer imzası
bırakmazlar. Dosyalara ait footer imzası olmadığı zaman kazıma işlemleri için
tahmini büyüklük değerleri girilir ve bu büyüklüğe göre dosya sonu oluşur. Şekil
4.25’de gösterilen Adres_Arama isimli yapı içerisinde header ve footer
imzalarına ait veri ve büyüklük değerleri saklanabilmektedir. Footer bilgisinin
olmadığı dosyalarda 1.5 MB’lık tahmini bir boyut girilmektedir. Bu boyutun
adres aralıkları içerisinde yeni bir header bulunursa header adresinin öncesine
çekilmektedir. Tercih edilen 1.5 MB boyut ortalama yüz sayfalık doküman
dosyasına ait bir boyutudur. Boyutun 1.5 MB fazla olması kazınan dosyaların
boyutlarını artırak veri kurtarmayı zorlaştıracaktır.
Şekil 4.25. Adres_Arama isimli yapının tanımlanması
RAM imaj dosyasının içinde imza veritabanında yer alan header ve footer
verileri ile eşlenen dosyalar için dosya büyüklükleri kadar yer ve adresleri geçici
hafızada malloc fonksiyonu ile oluşturulmaktadır. Geçici hafızada adresleri
oluşturulan dosyalar Toplanan_Dosya_Kontrol fonksiyonu ile kazınmak için
biriktirilmektedir. Şekil 4.26’da görüldüğü gibi Toplanan_Dosya_Kontrol
fonksiyonu ile biriktirilen dosyaların verileri strcopy fonksiyonu ile
yazılmaktadır.
55
Şekil 4.26. İmzası bulunan dosyaların geçici belleğe atılması
Veri tabanında footer imzası bulunmayan dosyaların taranmasında sabit
büyüklük değeri ile dosya sonu belirlenmiştir. Header verisine ait adrese 5 MB
büyüklüğünde sabit bir uzunluk eklenerek o dosyanın kapanışı yapılmaktadır.
Şekil 4.27’de verilen şart bloğunda footer adresi olmayan dosyaların
taranmasını sağlanmıştır.
Şekil 4.27. Footer verisi olmayan dosya taraması
İmza veri tabanından gelen header ve footer verilerine göre tarama yapılırken
imaj içerisinde aranılan dosyaya ait adresler bulunduğunda Kuyruga_Ekle
fonksiyonu ile geçici hafızaya alınmaktadır. Tarama sırasında bulunan tüm
adreslerin hafızaya atılması için Kuyruga_Ekle isimli fonksiyon Şekil 4.28’deki
gibi döngü içerisinde tetiklenmektedir.
Şekil 4.28. İmzası bulunan dosyaların geçici belleğe atılması
56
Geçici bellekte bulunan dosya verilerinin adreslerinden okunarak imza veri
tabanında bulunan dosya formatına aktarılması için, Şekil 4.29’da gösterilen
RAM_Data_Topla fonkiyonunun çağrıldığı kod bloğu kullanılmaktadır.
Şekil 4.29. Kazınan dosyaların orijinal dosya formatlarına aktarımı
4.3.1. Dosya kazıma yazılımının test edilmesi
Yazılımın geliştirilmesinden sonra exe dosyasının üretilmesi için öncelikle C++
dosyalarının TDM-GCC programı ile derlenmesi gerekir. Bu derleme işlemi için
komut satırına “mingw32-make -f Makefile” komutunun girilmesi
gerekmektedir. Derleme işlemi bittikten sonra yazılımın exe dosyası derleme
yapılan klasör içerisinde oluşturulacaktır. Komut satırı üzerinden, derlenen
pars.exe yazılımı çalıştırıldığı zaman Şekil 4.30’da görüldüğü gibi imza
veritabanında yer alan verilere göre tarama ve kazıma işlemini başlatacaktır.
Şekil 4.30. Dosya kazıma yazılımın ekran görüntüsü
57
RAM imajında dosya kazıma işlemi bittikten sonra hafızadan çıkartılan DOC,
DOCX, PDF ve XML formatlarına ait dosyalara sıralı rakamlardan isim
verilmektedir. Sabit diske çıkartılan dosyaların listesi Şekil 4.31’de verilmiştir.
İşletim sisteminde sonlandırılmış dosyaların üzerine yazılan verilerden dolayı
dosyaların yapısında ve verilerinde bozulmalar olmaktadır. Kazınan dosyalar
üzerinde veri kurtarma teknikleri uygulanarak ayrı bir yazılımda içerisindeki
okunabilir verilere ulaşılacaktır.
Şekil 4.31. Kazınan dosyaların listesi
RAM’de dosyalar parçalı bloklarda ve farklı adreslerde saklanmaktadır.
Sonlandırılmış dosyalara ait veriler kurtarılırken kayıplar meydana
gelmektedir. Yâda Windows bu adreslere yeni veriler yazabilmektedir. Bundan
dolayı her dosyada oluşacak veri kaybı büyüklüğü ve yapısı farklı olmaktadır.
Kazıma sonucunda kurtarılan her dosyanın, dosya yapısı analizinin yapılması
gerekmektedir. Şekil 4.32, Şekil 4.33 ve Şekil 4.34’ de verilen örneklerde
görüldüğü gibi hex editör üzerinden her dosyanın yapısı gözden geçilmiştir.
Buna göre veri kurtarma yazılımında kullanılacak teknikler belirlenmektedir.
58
Şekil 4.32. PDF dosyasının açık metin görünümü
Şekil 4.33. DOCX dosyasının açık metin görünümü
59
Şekil 4.34. DOC dosyasının açık metin görünümü
4.4. Veri Kurtarma Yazılımının Geliştirilmesi
RAM imajından kazınan dosyalar üzerinde veri kurtarma tekniklerinin
uygulanması gerekmektedir. Dosyaların RAM’den kazınması sırasından dosyaya
ait veri ve yapı bilgisinde kayıplar oluşmaktadır. Bundan dolayı kurtarılan
dosyalar Windowsda uygulamaları üzerinden açılmamaktadır. Dosyalar
içerisindeki verilere erişim sağlamak ve okunabilir verileri kurtarmak için veri
kurtarma yazılımına ihtiyaç duyulmuştur. Şekil 4.35’de ana formu gösterilen
veri kurtarma yazılımında MS Word ve PDF dosyalarındaki verilerin
kurtarılması için 3 farklı teknik uygulanmıştır.
60
Şekil 4.35. Veri kurtarma yazılımının ana form ekran
Birinci teknikte, PDF dosyalarında yer alan veri blokları (stream-endstream)
yazılım tarafından tek tek çıkarılarak boş bir PDF yapısı içerisinine
yerleştirilmiştir. Oluşturulan PDF yapısı, PDF dosya formatında kaydedilerek
kurtarılan verilere erişim sağlanmıştır.
İkinci teknikte, word dosyasına ait veriler için docx ve xml uzantılı dosyalarda
dizgi arama işlemi kullanılmıştır. Docx ve xml uzantılı dosyalardaki ham
verilerin <w:t> ve <w:tbl> etiketleri içinde kalan kısımları birleştirilerek
dosyaya ait kurtarılan veriler elde edilmektedir.
Üçüncü teknikte, word dosyalarına ait doc uzantılı dosyalarda RAM yüklenirken
şifrelenen veriler çözülmüştür. Her bir doc uzantılı dosyaya ait ham verilerin
sisteme yüklenip içerisindeki veri blokları tespit edilmiştir. Tespit edilen
sıkıştırılmış veri blokları decode edilerek içerisindeki verilere erişim
sağlanmıştır.
Veri kurtarma yazılımının geliştirilmesinde Visual Studio 2017 üzerinde C# 6.0
programlama dili kullanılmıştır. Yazılımın Windows Vista ve üstü tüm işletim
sistemlerinde çalışması için Framework 3.5 ‘de çalışılmıştır.
61
4.4.1. DOC uzantılı dosyalardan verilerin kurtarılması
Doc uzantılı bir word dosyası 7 parçaya bölünerek şifrelenmektedir. Dosya
içerisindeki veriler WordDocument kısmında yer almaktadır. Dosya içerisinde
WordDocument bloğu [Content_Types] etiketi ile başlamaktadır. Dosya
içerisindeki şifreli veriler, Şekil 4.36’da görüldüğü gibi başlangıç ile STX etiketi
arasında kalan adreslerden çıkartılmaktadır.
Şekil 4.36. Sıkıştırılmış DOC uzantılı MS Word dosyası
Kazınan doc dosyasında yer alan şifreli veri blokları C# programlama dili
içerisinde bulunan codepage 1252 ile decode edilmiştir. Gerçekleştirilen decode
işlemine ait kod bloğu Şekil 4.37’de verilmiştir.
Şekil 4.37. Sıkıştırılmış verilerin codepage1251 ile decode işlemi
Doc uzantılı word dosyalarında yer alan veri bloklarındaki kodların çözülmesi
ve toplanan verilerin yeni word dosyasına aktarılma süreci Şekil 4.38’de verilen
akış şemasında gösterilmiştir.
62
Şekil 4.38. Veri kurtama yazılımının doc taraması akış şeması
Veri kurtarma yazılımının Şekil 4.39’da gösterilen formu ile DOC uzantılı
dosyaların bloklar arasındaki sıkıştırılmış veriler çözülerek editör içerisine
aktarılmaktadır. Aynı zamanda elde edilen verilerin başarı oranının tespit
edilmesi için kurtarılan verilerin KB türünden boyutu ekranda gösterilmektedir.
63
Şekil 4.39. DOC dosyalarını kurtarma formu
4.4.2. PDF uzantılı dosyalardan verilerin kurtarılması
PDF dosyası içerisinde oluşan 1 byte’lık kayıp bile dosyanın yapısı bozmaktadır.
Bundan dolayı pdf dosyalarından okunabilir verileri çıkartmak için Şekil 4.40’da
yapısı verilen dosyanın içindeki stream ve endstream arasında bloklar tespit
edilmektedir. PDF dosyalarında verilerin kurtarılmasını sağlayan yazılım Şekil
4.41’de verilen akış şemasına göre çalışmaktadır. Buna göre editöre yüklenen
dosyanın içindeki stream ve endstream etiketlerinin bulunması gerekmektedir.
Veri bloklarını saklayan etiketler birden fazla yerde olabilmektedir. Aynı
zamanda oluşan kayıplardan dolayı etiketlerin bazıları bulunmamaktadır.
Birden fazla stream etiketi bulunup endstream etiketi bulunmaz ise, iki stream
etiketi arası alınmaktadır. İki veya daha fazla endstream etiketi bulunursa ilk
endstream etiketinin index değerine 1500 karakter ekleyerek başlangıç
belirlenir. Dosya içerisinde stream ve endstream etiketlerinin aranması için Şekil
4.42’deki gibi tanımlama yapılmıştır.
64
Şekil 4.40. Sıkıştırılmış bir PDF dosyası
Şekil 4. 41. Veri kurtama yazılımının PDF taraması akış şeması
65
Şekil 4.42. PDF dosyasındaki veri bloklarının indexlerinin bulunması
Okunabilir veri blokları flatedecode ile sıkıştırılmaktadır. Bundan dolayı
sıkıştırılmış veriyi çözmek için boş bir pdf dosya yapısından yararlanılmaktadır.
C#’da yeni bir pdf dosyası oluşturmak için itextsharp.dll kütüphanesi
kullanılmaktadır. Bu boş pdf yapısı için Şekil 4.43’da verilen kod bloğu
kullanılmıştır.
Şekil 4.43. Standart yapıda boş PDF dosyasının oluşturulması
Veri kurtarma yazılımında PDF dosyalarının içerisindeki okunabilir verilerin
kurtarılması için Şekil 4.44’deki form kullanımaktadır. Kazınan PDF dosyası
yazılıma yüklenmektedir. Yazılım tarafından açılan boş PDF dosyası içerisine
kazınan dosyadaki veri blokları aktarılmaktadır. Form üzerinde bulunan Kurtar
butonu ile kurtarılan yeni PDF dosyası diske kaydedilmektedir.
66
Şekil 4.44. PDF dosyasının kurtarılma arayüzü
4.4.3. DOCX uzantılı dosyalardan verilerin kurtarılması
DOCX uzantılı word dosyaları içerisindeki okunabilir veriler RAM’e
yüklendiğinde XML yapısından dolayı sıkıştırılmaz. XML yapısındaki Word
dosyaları içerisinde veriler, kullanılan tema, renk, font ve düzen ayarlarına göre
farklı etiketler içerisinde saklanmaktadır. Kurtarılan DOCX uzantılı Word
dosyasının XML yapısı Şekil 4.45’de verilmiştir.
Şekil 4.45. Kazınan DOCX uzantılı dosyanın XML görünümü
Kurtarılan her word dosyası Şekil 4.46’de verilen akış şemasında görüldüğü gibi
yazılıma tek tek yüklenerek her birinde dizgi araması yapılmaktadır. Dosya
içerisinde okunabilir verilerin bulunduğu <w:t> ve </w:t> etiketlerinin açılış ve
kapanış etiketi arasında kalan tüm veriler toplanmaktadır. Toplanan bu
verilerin itextsharp.dll kütüphanesi kullanılarak yeni MS Word dosyası
oluşturulmaktadır. Bu dizgi taraması için Şekil 4.47’da verilen kod bloğu
kullanılmaktadır.
67
Şekil 4.46. Veri kurtama yazılımının DOCX taraması akış şeması
Şekil 4.47. XML ve DOCX uzantılı dosyalarda dizgi arama tekniğinin uygulanması
68
Veri kurtarma yazılımında, kazınan DOCX dosyalarınındaki okunabilir verilerin
kurtarılması Şekil 4.48’de gösterilen form üzerinden yapılmaktadır. Kurtarılan
verilerin başarı oranının bulunması için boyut bilgisi KB türünden ekranda
gösterilmektedir.
Şekil 4.48. DOCX dosyasının kurtarılma arayüzü
Kazınan dosyalardan elde edilen veriler kendi dosya formatına aktarıldıktan
sonra kurtarma oranlarının çıkartılması için Şekil 4.49’da gösterilen form ile
yapılmıştır. Bu form orijinal veriler ile kurtarılan veri arasında karakter ve
boyut tabanlı karşılaştırma yaparak benzerlik oranını bulmaktadır. Orijinal ve
kurtarılan verilere ait dosyalar gözat butonu ile editöre yüklenmektedir. Editör
içerisinde bulunan veriler, işlenerek label’da iki dosya arasındaki benzerlik
yüzdesi verilmektedir.
69
Şekil 4.49. Başarı oranın tespit edilmesi için kullanılan arayüz
70
5. ARAŞTIRMA BULGULARI
Geliştirilen imaj alma yazılımının amacı Windows işletim sisteminde, kullanıcı
arayüzünden RAM’in tüm içeriğinin kopyalanmasını sağlamaktır. Bunun için de
RAM’e tam erişim sağlayan kernel mode sürücü geliştirilmiştir. Geliştirilen
kernel mode RAM sürücüsü Windows 8, 8.1 ve 10 (32 ve 64 bit) işletim
sistemleri üzerinde test edilmiş ve imaj alma işlemi gerçekleştirilmiştir. Şekil
5.1’de işletim sistemi sürümlerinde farklı RAM boyutlarının imajının alınma
süresi verilmiştir. Bu verilere göre RAM kapasitesinin artması imaj alma
süresini de artırmaktadır. Ayrıca işletim sisteminin sanal veya fiziksel makineye
kurulmasının imaj alma süresine etkisinin olmadığı görülmektedir.
Şekil 5.1. Windows işletim sistemi sürümüne göre imaj alma süreleri RAM imajı alınırken, imaj alma yazılımın RAM’de minimum yer tutması gerekir.
İmaj alma yazılımı çalışması sırasında RAM’e yüklendiği için var olan verileri
silebilir. Geliştirilen RAM driver ve imaj alma yazılımı RAM’de 156 KB’lık yer
kaplamaktadır. Buna göre Şekil 5.2’de verilen imaj alma yazılımları ile
kıyaslandığında veri kaybının en az olduğu görülen yazılımdır.
4 46 6
1014 14
13,6 14,217,1 17,5
21,1
33,6 33,7
Windows 832 bit
(VirtualMachine)
Windows 864 bit
(VirtualMachine)
Windows 8.132 bit
((VirtualMachine)
Windows 8.164 bit
(VirtualMachine)
Windows 1032 bit
(VirtualMachine)
Windows 1064 bit
(VirtualMachine)
Windows 1064 bit
(PhysicalMachine)
0
5
10
15
20
25
30
35
40
Toplam Boyut (GB) RAM Image Geçen Süre (Saniye)
71
Şekil 5.2. RAM İmajı alma yazılımlarının RAM’de kapladığı alanlar
DOKAY isimli yazılım test edilirken 4 farklı imaj dosyası kullanılmıştır. Bu imaj
dosyaları içerisinden MS Word ve PDF dosyaları kazınmıştır. Çizelge 5.1’de
görüldüğü gibi pdf dosyaları, imaj dosyası büyüklüğüne göre 23 dk ile 37 dk
arasında çıkartılmıştır. Word dosyaları için tarama süresi 17 dk ile 45 dk
arasındadır. MS Word dosyalarındaki tarama süresinin uzun olması, tarama
işlemine XML dosyalarının da dâhil olmasından kaynaklanmaktadır.
Çizelge 5.1. PDF ve MS Word dosyaları kazıma süreleri
Süre
Toplam İmaj Dosyası PDF Word (DOCX) Word (DOC) 4 GB 23d 17s 32d 25s 17d 03s 6 GB 28d 54s 36d 25s 30d 52s
10 GB 32d 03s 39d 23s 39d 12s 14 GB 37d 45s 45d 01s 41d 10s
MS Word ve PDF dosyalarındaki verilerin kurtarılmasında 14GB’lık RAM
imajından kazınan dosyalar kullanılmıştır. Bu imaj dosyası geliştirilen RAM
imajı alma yazılımı ile oluşturulmuştur. İşletim sisteminde daha önceden
açılmış ve sonlandırılmış 10’ar adet DOC, DOCX ve PDF dosyası analize dâhil
edilmiştir. Analiz işlemleri C# programlama dili ile geliştirilmiş yazılımda
yapılmaktadır.
120
19
3
56
43
6
7
6,5
0,5
12
0,156
0 20 40 60 80 100 120 140
WinEn (EnCase)
KnTDD (KnTTools)
Fastdump Pro
Guymager
Fmem
Memoryze
Memory DD
Belkasoft Live RAM Capturer
DumpIt
Windows Memory Toolkit
Rimay
72
DOC uzantılı Word dosyalarına ait veriler codepage1252 ile decode edilmiştir.
Elde edilen verilerin, orijinal dosya ile karşılaştırılması Çizelge 5.2’de
verilmiştir. 300KB’ın altındaki dosyalarda %50’nin üzerinde başarı
sağlanmıştır. Dosya boyutu artıkça verilerin kurtarılma oranı da düşmektedir.
Sonuç olarak 10 adet DOC uzantılı word dosyasındaki verilerin kurtarılma oranı
%35,6 ’dır.
Çizelge 5.2. Word (DOC) dosyalarının kurtarılma analizleri
Doküman Toplam (KB)
Kurtarılan Dosya Boyutu(KB)
Kurtarılan Metin Boyutu (KB)
Oran %
DOC1 100 56 50 50,0 DOC2 180 160 120 66,7 DOC3 205 200 110 53,7 DOC4 270 201 140 51,9 DOC5 490 350 143 29,2 DOC6 672 600 300 44,6 DOC7 730 540 103 14,1 DOC8 750 590 130 17,3 DOC9 840 400 102 12,1 DOC10 1.205 900 201 16,7 Ort (%) 35,6
Kazınan DOCX uzantılı word dosyalarında dizgi tarama ile kurtarılan verilerin,
orijinal dosya ile karşılaştırılması Çizelge 5.3’de verilmiştir. Boyutu 200 KB’ın
altındaki Word dosyalarındaki verilerin kurtarılmasında ortalama %50 başarı
sağlanmıştır. Dosya boyutu artıkça verilerin kurtarılma oranı da düşmektedir.
Sonuç olarak 10 adet Word dosyasındaki verilerin kurtarılma oranı %40,4’ dür.
73
Çizelge 5.3. Word (DOCX) dosyalarının kurtarılma analizleri
Doküman Toplam Boyut (KB)
Toplam Metin Blocks
Toplam Paragraf
Kurtarılan Dosya Boyutu(KB)
Kurtarılan Metin Boyutu (KB)
Oran (%)
DOCX1 38 22 20 23 12 52,2 DOCX2 47 31 27 28 14 50,0 DOCX3 58 42 32 45 21 46,7 DOCX4 87 46 34 28 17 60,7 DOCX5 120 51 45 34 19 55,9 DOCX6 145 76 65 66 32 48,5 DOCX7 236 89 71 80 21 26,3 DOCX8 350 91 75 120 29 24,2 DOCX9 3.512 156 130 320 80 25,0 DOCX10 5.200 280 213 824 120 14,6 Ort (%) 40,4
PDF dosyalarındaki veriler flatedecode ile sıkıştırılmaktadır. Kurtarılan veriler
içerisindeki blokların her biri decode edilerek verilere ulaşılmıştır. Çizelge
5.4’de görüldüğü gibi 10 adet PDF dosyasına ait verilerin kurtarılma oranları
verilmiştir. Buna göre dosya boyutu 250 KB’ın altında olan PDF dosyalarına ait
kurtarılma oranı %30’un üstündedir. Dosya boyutu 250 KB’tan büyük
dosyalara ait verilerin kurtarılma oranı %8,6 ile %17,4 arasındadır.
Çizelge 5.4. PDF dosyalarının kurtarılma analizleri
Doküman Toplam Boyut (KB)
Kurtarılan Dosya (KB)
Kurtarılan Metin Boyutu (KB)
Oran (%)
PDF1 158 149 60 38,0 PDF2 244 200 76 31,1 PDF3 298 290 52 17,4 PDF4 305 251 40 13,1 PDF5 561 352 43 7,7 PDF6 630 427 54 8,6 PDF7 728 549 103 14,1 PDF8 757 520 67 8,9 PDF9 900 630 102 11,3
PDF10 1.056 900 107 10,1 Ort (%) 16,0
74
6. TARTIŞMA VE SONUÇLAR
Bilişim teknolojilerinde bilginin, yazılımın, donanımın ve haberleşme ağının
hırsızlığı, yasadışı kullanımı, değiştirilmesi veya kopyalanması bilişim suçları
olarak tanımlanmaktadır. Bilişim suçların aydınlatılmasında fiziksel delillerden
ziyade elektronik delillere ihtiyaç duyulur. Delil niteliğindeki veriler depolama
aygıtları ve RAM’den elde edilmektedir. Delillerin silinmemesi için olay yerinde
delil kaynaklarının imajının alınması gerekmektedir. Alınan imajda yapılan
analizler ile elektronik deliller elde edilmektedir (Bui vd., 2003).
Gerçekleştirilen çalışmada, RAM imajı alan RİMAY ve alınan imaj dosyasından
verileri kazıyan DOKAY yazılımı tasarlanmıştır. Bu süreçte RAM’in imajının
alınması için öncelikle sisteme kernel mode seviyesinde erişim sağlanmalıdır.
Bunun için WDK ile Windows için RAM sürücüsü geliştirilmiştir. İmaj alma
yazılımı RAM sürücüyü sisteme yükleyerek RAM’e tam erişim sağlamaktadır.
Bununla beraber RAM’in bit-to-bit kopyasını almaktadır.
RAM imajında elektronik delil etme sürecinde yazılım tabanlı işlemler RAM’e
yüklenmektedir. Bundan dolayı yazılıma ait adresler RAM’deki mevcut verilerin
adresleri üzerine denk gelebilmektedir. Bunun sonucunda veri kayıpları
oluşabilmektedir. Oluşabilecek veri kayıplarını en aza indirmek için imaj alma
yazılımının RAM’de kapladığı alanın minimum seviyede olması gerekmektedir.
Geliştirilen imaj alma yazılımının RAM’de kapladığı boyut, ticari ve açık kaynak
olarak kullanılan RAM imajı alma yazılımları ile karşılaştırılmıştır. Karşılaştırma
sonucunda RİMAY yazılımının RAM’de 156 KB boyut ile en az yer kaplayan
yazılım olduğu görülmektedir. Bundan dolayı imaj alma sürecinde oluşabilecek
veri kayıpları minimum seviyede tutulmuştur.
Windows işletim sisteminde bir process sonlandırıldığı zaman process’e ait
adres bilgileri silinmektedir. Fakat RAM veri yapılarında process’e ait verileri
silinmemektedir. Bu verilere RAM imajında yapılacak dosya kazıma ve veri
kurtarma yöntemleri ile erişilmesi mümkün olmaktadır. Adli bilişimde
kullanılmak üzere RAM imajından MS Word ve PDF dosyalarının kazınması için
75
DOKAY isimli yazılım geliştirilmiştir. Kazıma yapılacak imaj dosyasının
boyutunun küçük olması silinmiş dosyalara erişim oranının düşürdüğünden
dolayı 14 GB ‘lık bir imaj dosyası seçilmiştir. DOKAY yazılımı ile 14 GB’lık RAM
imajından rastgele seçilen 10 adet PDF, DOC ve DOCX dosyası orijinal
dosyalarındaki veriler ile karşılaştırılmıştır. Karşılaştırma sonucunda her dosya
için kurtarılma başarı oranı elde edilmiştir.
Elde edilen sonuçlara göre PDF dosyalarının kurtarılmasında ortalama %16’lık
başarı elde edilmiştir. PDF dosyalarındaki her paragraf, farklı veri bloklarında
flatedecode sıkıştırma tekniği ile sıkıştırılmaktadır. Kazıma sürecinde
sıkıştırılmış veri bloklarında oluşan 1 byte’lık kayıp, o bloğun içindeki verilerin
kurtarılmasını engellemektedir. Kurtarılma oranının düşük olmasının sebebinin
sıkıştırılmış bloklarda oluşan kayıplar olduğu görülmektedir.
Word dosyalarında iki farklı dosya yapısı olduğundan dolayı iki farklı sonuç elde
edilmiştir. DOCX uzantılı word dosyaları, XML tabanlı ve RAM’de açık metin
olarak saklandığından dolayı dizgi tarama yöntemi ile verilere erişilmiştir.
Kurtarılan veriler orijinal dosyaları ile karşılaştırıldığında %40.4’lük başarı
sağlanmıştır. DOC uzantılı word dosyaları, Word 2007 öncesi sürümleri temsil
etmektedir. Bu dosya tipinde veriler şifrelenerek saklanmaktadır. Kurtarılan
DOC uzantılı Word dosyalarındaki verilerin çözümlenerek %35.6’lık başarı elde
edilmiştir.
Windows işletim sisteminde veri kurtarma ve elektronik delil elde etme ile ilgili
birçok çalışma bulunmaktadır. Literatürde yapılan çalışmalar disk ve RAM’e
göre ayrılmaktadır. Disk üzerinden silinmiş dosyalar, sistem bilgileri, çalışan
process’ler gibi birçok veriler kurtarılmaktadır. Ayrıca bu bilgilerin kurtarılması
için ticari ve açık kaynak yazılımlarda bulunmaktadır. RAM üzerinden veri
kurtarma ve elektronik delil etme çalışan process’ler üzerinde yapılmaktadır.
RAM imajından veri kazıma işlemleri için açık kaynak ve ticari yazılımlar
geliştirilmiştir. Bu yazılımlar ile çalışan sistem bilgisi, aktif process ve verileri,
multimedya dosyaları ve açık metin veriler elde edilmektedir. Ayrıca diskte
76
kullanılan veri kazıma teknikleri kullanılarak silinmiş dosyalara erişim
sağlanmaktadır. Fakat bu dosyaların içerisindeki sıkıştırılmış verilere erişim
sağlanmamaktadır. Geliştirilen DOKAY yazılımı RAM kazıma teknikleri ile
silinmiş veya sonlandırılmış MS WORD ve PDF dosyaları kazımaktadır. Bununla
beraber kazınan her dosya içerisindeki okunabilir verileri kurtarmaktadır.
Çalışma, literatür ve ticari yazılımlar ile karşılaştırıldığında benzeri
bulunmamaktadır.
Literatür çalışmalarında RAM’deki PDF dosyalarının kazınması için yöntemler
önerilmiştir. Fakat önerilen yöntemlerin Windows Vista öncesine ait olması
nedeni ile Windows Vista ve sonrası işletim sistemlerinde kullanılamamaktadır.
Bununla beraber Vista işletim sistemi sonrasında PDF dosyalarının kazınmasına
yönelik çalışma bulunmamaktadır.
RAM’den elektronik delil elde etmek için kullanılan dosya türlerinden biri de
word’tür. Literatürde RAM’den word dosyalarının kurtarılması ile ilgili yapılan
ve kısmen sonuç gösteren tek çalışma bulunmaktadır. Al-Sharif vd. 2017
yılındaki çalışmasında, RAM imajından dizgi arama yöntemi ile sadece DOCX
uzantılı word dosyalarına erişim sağlamıştır. Bu çalışma Windows 7 işletim
sistemi üzerinde uygulanmış ve sonucunda başarı oranının ortalama %6 olduğu
görülmektedir. Sonuç olarak DOKAY yazılımı ile elde edilerin verilerin başarı
oranının daha yüksek olduğu görülmektedir.
Geliştirilen adli bilişim yazılımlarının performans ve veri kurtarma başarı
oranlarının iyileştirilmesine yönetik çalışmalar yapılabilir. DOKAY yazılımında
kullanılan imza veri tabanının genişletilmesi daha çok MS Word ve PDF
dosyalarının kazınmasını sağlayacaktır. Ayrıca kazıma işleminin yapıldığı
donanımın özelliklerinin artırılarak GPU ‘da yapılan işlerimlerin hızlandırılması
kazıma sürelerine de düşürecektir. Veri kurtarma yazılımda sıkıştırılmış veri
bloklarının çözülmesi karakter tabanlı tersine mühendislik algoritmaları ile
güçlendirilebilir. Bunun sonucunda veri kurtarma başarı oranının artması
beklenilebilir.
77
KAYNAKLAR
Adobe, 2017. Erişim Tarihi: 29.05.2017. https://acrobat.adobe.com/tr/tr/why-
adobe/about-adobe-pdf.html Adobe, 2015. Accessing PDF Documents with Assistive Technology, Adobe
Press, P1-27, USA. Akbal, E., Dogan, S., 2018. Forensics Image Acquisition Process of Digital
Evidence, I. J. Computer Network and Information Security, 5, 1-8. Al-sharif Z., A, Bagci, H., Asad, A., 2018. Towards the Memory Forensics of MS
Word Documents, Information Technology-New Generations. Springer, Cham 558, 179–85.
Allen, W. H., 2005. Computer Forensics. IEEE Security and Privacy Magazine, 3,
59–62. Alherbawi N, Shukur Z, Sulaiman R., 2016. A Survey On Data Carving in Digital
Forensic. Asian Journal Information Technology, 15, 5137–44. Amari, K., 2009, Techniques and Tools for Recovering and Analyzing Data from
Volatile Memory. SANS. Ariffin, K., A., Z., Mahmood, A., K., Jaafar, J., & Shamsuddin, S., 2015. Tracking
File's Metadata from Computer Memory Analysis. In Computer and Information Technology; Ubiquitous Computing and Communications; Dependable, Autonomic and Secure Computing; Pervasive Intelligence and Computing (CIT/IUCC/DASC/PICOM), 2015 IEEE International Conference, 975-980.
Ball, T., Bounimova, E., Cook, B., Levin, V., Lichtenberg, J., McGarvey, C., A., 2006.
Thorough static analysis of device drivers. ACM SIGOPS Operating Systems Review, 40(4), 73-85.
Baar, R. B., Alink, W., & van Ballegooij, A. R., 2008. Forensic memory analysis:
Files mapped in memory. Digital Investigation, 5(SUPPL.), 52–57. Bui, S., Enyeart, M., & Luong, J., 2003. Issues in Computer Forensics. Santa Clara
University Computer Engineering, USA. Butler, J., & Murdock, J., 2011. Physical Memory Forensics for Files and Cache.
Craigchamberlain.Dreamhosters.Com. Erişim Adresi: http://www. Craigchamberlain.dreamhosters.com/blackhat2011/materials/Butler/BH_US_11_ButlerMurdock_Physical_Memory_ForensicsWP.pdf%5Cnpapers2://publication/uuid/0D588947-26F8-4823-86C4-B1E231D50CD4
78
Cai, L., Sha, J., Qian, W., 2013. Study on Forensic Analysis of Physical Memory. International Symposium on Computer, Communication, Control and Automation, (3ca), 221–224.
Carvajal, L., Varol, C., Chen, L., 2013. Tools for collecting volatile data: A survey
study. 2013 The International Conference on Technological Advances in Electrical, Electronics and Computer Engineering, TAEECE 2013, 318–322.
Burdach M., 2013. Digital forensics of the physical memory. J Natl Cancer Inst
Monogr, Warsaw University, 3, 1134-1139. Didier, S.,2017. Erişim Tarihi:29.05.2017, https://blog.didierstevens.com /2008
/05 /19/pdf-stream-objects/. Dolan-Gavitt B., 2007 The VAD tree: A process-eye view of physical memory.
Digit Investigation 2007. 4, 62–4. Garcia, G. L., 2007. Forensic physical memory analysis: an overview of tools and
techniques. In TKK T-110.5290 Seminar on Network Security (pp. 305-320).
Garner, George M., 2007. KnTTools with KnTList. http://gmgsystemsinc.com/
knttools/. Hu L, Zhang XL, Wang F, Wang WB, Zhao K., 2012. Research on the architecture
model of volatile data forensics. Procedia Eng 2012, 29, 4254–8. doi:10.1016/j.proeng.2012.01.653.XXX
Hejazi SM, Debbabi M, Talhi C., 2008. Automated Windows memory file
extraction for cyber forensics investigation. J Digit Forensic Pract 2008, 2, 117–31. doi:10.1080/15567280802552829.XXX
Hejazi SM, Talhi C, Debbabi M., 2009. Extraction of forensically sensitive
information from Windows physical memory. Digit Investig 2009, 6. doi:10.1016/j.diin.2009.06.003.XXX
Quina, G., N., Diaz J., Park, S., G., Y., Piccirilli, D., 2017. Data restoration and file
carving [Restauración de datos y el File Carving]. Iber Conf Information System Technology Cist.
Karayianni, S., Katos, V., Georgiadis, C. K., 2012. A framework for password
Harvesting From Volatile Memory. IJESDF, 4(23), 154–163. Li, S., Jia, X., Lv, S., & Shao, Z., 2010. Research and Application of USB Filter
Driver Based on Windows Kernel. In Intelligent Information Technology and Security Informatics (IITSI), 2010 Third International Symposium, 438-44.
79
Microsoft, 2017. Erişim Tarihi: 13.06.2017. https://support.office.com/tr-tr/article/Open-XML-Bi%C3%A7imleri-ve-dosya-ad%C4%B1-uzant%C4%B1lar%C4%B1-5200d93c-3449-4380-8e11-31ef14555b18
Microsoft, 2018. Erişim Tarihi: 02.01.2018. https://docs.microsoft.com/en-
us/windows-hardware/drivers. Matousek, T., Jezek, P., 2009. DeSpec: Modeling the Windows Driver
Environment11This work was partially supported by the Czech Academy of Sciences project 1ET400300504 and the Grant Agency of the Czech Republic project GD201/05/H014. Electronic Notes in Theoretical Computer Science, 203(7), 55-69.
Ni, T., Yin, Z., Wei, Q., Wang, Q., 2012. High-Coverage Security Testing for
Windows Kernel Drivers. In Multimedia Information Networking and Security (MINES), 2012 Fourth International Conference, 905-908.
Okolica, J., Peterson, G. L., 2011. Extracting the Windows Clipboard From
Physical Memory. Digital Investigation, 8, S118-S124. Okolica, J., Peterson, G. L., 2010. Windows Operating Systems Agnostic Memory
Analysis. Digital Investigation, 7, S48-S56. Petroni, N., L., Walters A., Fraser T., Arbaugh W., A., 2009. FATKit: A Framework
For The Extraction And Analysis Of Digital Forensic Data From Volatile System Memory. Digital Investigation,3(4).
Poisel, R., Tjoa, S., Tavolato, P. 2011. Advanced File Carving Approaches For
Multimedia Files. JoWUA, 2(4), 42-58. Povar, D., Bhadran V., K., 2011. Forensic data carving. Lect Notes Inst Computer
Science Soc Telecommun Engineering LNICST 2011, 53, 137–48. Ravi, A, Kumar, T.,R., Mathew A., R., 2016. A Method For Carving Fragmented
Document And Image Files. Internation Conferences Advanced Human Mach Interaction HMI, 43–7.
Richard III, G. G., Roussev, V., 2005. Scalpel: A Frugal, High Performance File
Carver. In DFRWS. Rogers, M. K., Seigfried, K., 2004. The future of computer forensics: A needs
analysis survey. Computers and Security, 23(1), 12–16. Russinovich, M., Solomon, A., Ionescu, A., 2012. Windows Internals (6th Edition),
Part 2, Microsoft Press, USA.
80
Ruichao, Z., Lianhai, W., Shuhui, Z., 2009. Windows Memory Analysis Based on KPCR. In: Fifth International Conference on Information Assurance and Security, 2, 677-680.
Schatz, B., Director, E., 2007. Recent developments in volatile memory forensics.
URL: http://www.schatzforensic.com/presentations/BSchatz-CERT-CSD2007 .pdf.
Simon, M., Slay, J., 2010. Recovery of Skype Application Activity Data from
Physical Memory. 2010 International Conference on Availability, Reliability and Security, 284-288.
Sitaraman, S., 2006. Computer and Network Forensics. Digital Crime and
Forensic Science in Cyberspace. Hershey Idea Group Inc, 55-74. Stüttgen, J., Vömel, S., Denzel, M., 2015. Acquisition and analysis of compromised
firmware using memory forensics. Digital Investigation, 12, 50–S60. Stevens, R. M., Casey, E., 2010. Extracting Windows command line details from
physical memory. Digital Investigation, 7, 18-31. Süzen, A., A., Taşdelen, K., Küçüksille, E., U., 2016. Volatile Data Analysis And
Methods In Computer Forensics ", International Conference on Research in Education and Science (ICRES), 1441-1448.
Thongjul, S., Tritilanunt, S., 2015. Analyzing and Searching Process of Internet
Username and Password Stored in Random Access Memory (RAM), 12th International Joint Conference on Computer Science and Software Engineering (JCSSE).
Thomas, S., Sherly, K. K., Dija, S., 2013. Extraction Of Memory Forensic Artifacts
From Windows 7 Ram ımage. 2013 IEEE Conference on Information and Communication Technologies, ICT 2013, (Ict), 937–942.
Suma, G. S., Dija, S., & Thomas, K. L., 2015. A novel methodology for windows 7
x64 memory forensics. 2014 IEEE International Conference on Computational Intelligence and Computing Research, IEEE ICCIC 2014.
Vidas T., 2010. Volatile memory acquisition via warm boot memory
survivability. Proc Annu Hawaii Int Conf Syst Sci 2010, 12(2), 11-14. Vidas, T., 2007. The acquisition and analysis of random Access memory. Journal
of Digital Forensic Practice, 1(4), 315-323. Vömel, S., Freiling, F. C., 2011. A survey of main memory acquisition and analysis
techniques for the windows operating system. Digital Investigation, 8(1), 3-22.
81
Vömel, S., Stüttgen, J., 2013. An Evaluation Platform For Forensic Memory Acquisition Software, Digital Investigation Elsevier, S30.
Walters, A, Petroni, Jr N., L., 2007. Volatools Integrating Volatile Memory
Forensics Into The Digital Investigation Process. In Black Hat DC. Wang, Y. Q., Qi, M., 2011. Computer Forensics İn Communication Networks. IET
International Communication Conference on Wireless Mobile and Computing (CCWMC 2011), 379-383.
Xu, L., Wang, L., 2013. Research on Extracting System Logged-In Password
Forensically from Windows Memory Image File. In 2013 Ninth International Conference on Computational Intelligence and Security, IEEE, 716–720.
Yasinsac, A., Erbacher, R. F., Marks, D. G., Pollitt, M., Sommer, P. M., 2003.
Computer forensics education. IEEE Security and Privacy, 4, 123,140. Zhang, S., Wang, L., Zhang, R., & Guo, Q., 2010. Exploratory study on memory
analysis of Windows 7 operating system. In Advanced Computer Theory and Engineering (ICACTE), 2010 3rd International Conference, IEEE 6-373.
Zhang L, Zhang D, Wang L., 2010. Live Digital Forensics in a Virtual Machine.
ICCASM 2010 - 2010 Int Conf. Computer Apply System Model Proc 2010, 4, 322-329.
82
EKLER
EK A. Dosyalara ait Header ve Footer Listesi EK B. Kernel Mode RAM Driver’ın C++ Kodları EK C. RİMAY Yazılımın C++ Kodları EK D. DOKAY Yazılımın C++ Kodları EK E. Veri Kurtama Yazılımın C# Kodları
83
EK A. Dosyalara ait Header ve Footer Listesi
#Doküman Dosyaları PDF Header:25 50 44 46 Footer:25 25 45 4F 46 PDF Header:25 50 44 46 Footer:25 25 45 4F 46 0A PDF Header:25 50 44 46 Footer:0D 0A 25 25 45 4F 46 0D 0A PDF Header:25 50 44 46 Footer:0D 25 25 45 4F 46 0D PDF Header:25 50 44 46 2d 31 2e 32 0d 0a 25 e2 e3 cf Footer: #WORD Dosyaları DOC Header:50 4B 03 04 14 00 06 00 Footer:50 4B 05 06 DOC Header:d0 cf 11 e0 a1 b1 1a e1 00 00 Footer:d0 cf 11 e0 a1 b1 1a e1 00 00 DOC Header:0d 44 4f 43 Footer: DOC Header:31 be 00 00 00 ab 00 00 Footer: DOC Header:50 4b 03 04 14 00 00 00 00 00 Footer: DOC Header:7f fe 34 0a Footer: DOC Header:cf 11 e0 a1 b1 1a e1 00 Footer: DOC Header:d0 cf 11 e0 a1 b1 Footer: DOC Header:d0 cf 11 e0 a1 b1 1a e1 Footer: DOCX Header:50 4b 03 04 Footer: DOCX Header:50 4b 03 04 14 00 06 00 Footer: #XML Dosyaları XML Header:3c 3f 78 6d 6c Footer: XML Header:3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 3f 3e Footer: XML Header:ff fe 3c 00 52 00 4f 00 4f 00 54 00 53 00 54 00 55 00 42 Footer:
84
EK B. Kernel Mode RAM Driver’ın C++ Kodları
#include "read.h" static int EnsureExtensionHandle(PDEVICE_EXTENSION extension) { NTSTATUS NtStatus; UNICODE_STRING PhysicalMemoryPath; OBJECT_ATTRIBUTES MemoryAttributes; if(!extension->MemoryHandle) { RtlInitUnicodeString(&PhysicalMemoryPath, L"\\Device\\PhysicalMemory"); InitializeObjectAttributes(&MemoryAttributes, &PhysicalMemoryPath, OBJ_KERNEL_HANDLE, (HANDLE) NULL, (PSECURITY_DESCRIPTOR) NULL); NtStatus = ZwOpenSection(&extension->MemoryHandle, SECTION_MAP_READ, &MemoryAttributes); if (!NT_SUCCESS(NtStatus)) { WinDbgPrint("Failed ZwOpenSection(MemoryHandle) => %08X\n", NtStatus); return 0; } }; return 1; } static LONG PhysicalMemoryPartialRead(IN PDEVICE_EXTENSION extension, LARGE_INTEGER offset, PCHAR buf, ULONG count) { ULONG page_offset = offset.QuadPart % PAGE_SIZE; ULONG to_read = min(PAGE_SIZE - page_offset, count); PUCHAR mapped_buffer = NULL; SIZE_T ViewSize = PAGE_SIZE; NTSTATUS NtStatus; if (EnsureExtensionHandle(extension)) { /* Map page into the Kernel AS */ NtStatus = ZwMapViewOfSection(extension->MemoryHandle, (HANDLE) -1, &mapped_buffer, 0L, PAGE_SIZE, &offset, &ViewSize, ViewUnmap, 0, PAGE_READONLY); if (NT_SUCCESS(NtStatus)) {
85
RtlCopyMemory(buf, mapped_buffer + page_offset, to_read); ZwUnmapViewOfSection((HANDLE)-1, mapped_buffer); } else { WinDbgPrint("Failed to Map page at 0x%llX\n", offset.QuadPart); RtlZeroMemory(buf, to_read); }; }; return to_read; }; // MmMapIoSpace'i kullanarak tek bir sayfa okumayı burda yapıyoruz. static LONG MapIOPagePartialRead(IN PDEVICE_EXTENSION extension, LARGE_INTEGER offset, PCHAR buf, ULONG count) { ULONG page_offset = offset.QuadPart % PAGE_SIZE; ULONG to_read = min(PAGE_SIZE - page_offset, count); PUCHAR mapped_buffer = NULL; SIZE_T ViewSize = PAGE_SIZE; NTSTATUS NtStatus; LARGE_INTEGER ViewBase; // Ortalama sayfa boyutu. ViewBase.QuadPart = offset.QuadPart - page_offset; // Haritalanmış sayfayı tam olarak eşleme. mapped_buffer = a2s_KernelExports.MmMapIoSpace( ViewBase, PAGE_SIZE, MmNonCached); if (mapped_buffer) { RtlCopyMemory(buf, mapped_buffer + page_offset, to_read); } else { // Sayfa eşleştirilemedi, arabellek hatası. RtlZeroMemory(buf, to_read); }; a2s_KernelExports.MmUnmapIoSpace(mapped_buffer, PAGE_SIZE); return to_read; };
86
EK C. RİMAY Yazılımın C++ Kodları
#include "windows.h" #include "stdio.h" #include "tchar.h" #include <stdint.h> #include "elf.h" #include <stdio.h> #include <stdarg.h> #include <varargs.h> #define A2S_SURUM "v1.0" // RAM driver'ında değişiklik yapılması gerekiyor. #define A2S_SURUCU_ISIM "a2sdriver" #define A2S_SERVIS_ISIM TEXT("AhmetAliSUZEN") // Exe versiyon (inş bitince düzeltiriz). //static TCHAR surum[] = TEXT(A2S_SURUM) TEXT(" ") TEXT(__DATE__); #define A2S_64BIT_DRIVER 104 #define A2S_32BIT_DRIVER 105 #define A2S_FCAT_EXECUTABLE 106 #define PAGE_BOYUTU 0x1000 #define PT_A2S_METADATA (PT_LOOS + 0xd656d70) class a2S { public: a2S(); virtual ~a2S(); virtual __int64 driver_yukle(); virtual __int64 driver_kaldir(); virtual __int64 yazma_aktif(); virtual __int64 veri_toplama(unsigned __int32 mod); virtual void driver_dosya_ata(TCHAR *driver_dosyaadi); virtual void pagefile_yol_ata(TCHAR *pagefile_konumu); virtual void page_sayfa_yazdir(); virtual void ram_bilgi_yazdir(); virtual __int64 imaj_dosyasi_olustur(TCHAR *cikis_dosyadi); virtual __int64 raw_image_yaz(); virtual __int64 coredump_yaz(); __int64 suppress_output; TCHAR cikis_hatasi[1024]; virtual __int64 driver_cikar() = 0; virtual __int64 driver_cikar(TCHAR *driver_dosyaadi);
87
protected: void ProcessOlustur(TCHAR *komut, HANDLE bayrak); __int64 Dosya_Cikar_(__int64 kaynak_id, TCHAR *dosyaadi); virtual __int64 coredump_header_yaz(struct A2SRAMinfo *info); virtual void LogHata(TCHAR *mesaj); virtual void Log(const TCHAR *mesaj, ...); virtual void LogSonHata(TCHAR *mesaj); __int64 sayfalama(__int64 uzunluk); __int64 ram_kopyala(unsigned __int64 start, unsigned __int64 end); HANDLE fd_; HANDLE cikisi_dosya_yol; TCHAR *servis_adi; char *buffer_; size_t buffer_size_; TCHAR *driver_dosyaadi1; bool driver_gecici_dosya; // Maksimum hafıza hesapla. unsigned __int64 max_ram_hafiza; unsigned __int64 cikis_adres; unsigned __int32 mod; unsigned __int32 default_mod_; TCHAR *pagefile_konum; private: char *metadata_; DWORD metadata_len_; unsigned __int64 header_adres_son; }; class a2S32: public a2S { virtual __int64 driver_cikar(); }; class a2S64: public a2S { virtual __int64 driver_cikar(); };
88
EK D. DOKAY Yazılımın C++ Kodları
#include "pars.h" char wildcard; int signal_caught; int ttywidth; int inputReaderVerbose; int extractSearchSpecData(struct parsState *state, struct SearchSpecLine *s, char **tokenarray) { int err = 0; s->suffix = (char *) malloc(MAX_SUFFIX_LENGTH * sizeof(char)); checkMemoryAllocation(state, s->suffix, __LINE__, __FILE__, "s->suffix"); s->begin = (char *) malloc(MAX_STRING_LENGTH * sizeof(char)); checkMemoryAllocation(state, s->begin, __LINE__, __FILE__, "s->begin"); s->end = (char *) malloc(MAX_STRING_LENGTH * sizeof(char)); checkMemoryAllocation(state, s->end, __LINE__, __FILE__, "s->end"); s->begintext = (char *) malloc(MAX_STRING_LENGTH * sizeof(char)); checkMemoryAllocation(state, s->begintext, __LINE__, __FILE__, "s->begintext"); s->endtext = (char *) malloc(MAX_STRING_LENGTH * sizeof(char)); checkMemoryAllocation(state, s->endtext, __LINE__, __FILE__, "s->endtext"); if (!strncasecmp(tokenarray[0], PARS_NOEXTENSION_SUFFIX, strlen(PARS_NOEXTENSION_SUFFIX))) { s->suffix[0] = PARS_NOEXTENSION; s->suffix[1] = 0; } else { memcpy(s->suffix, tokenarray[0], MAX_SUFFIX_LENGTH); } s->casesensitive = (!strncasecmp(tokenarray[1], "y", 1) || !strncasecmp(tokenarray[1], "yes", 3)); char split[MAX_STRING_LENGTH]; char *maxcarvelength; strcpy(split, tokenarray[2]); maxcarvelength = strchr(split, ':'); if (!maxcarvelength) { s->minlength = 0; s->length = strtoull(split, 0, 10);
89
} else { *maxcarvelength = 0; maxcarvelength++; s->minlength = strtoull(split, 0, 10); s->length = strtoull(maxcarvelength, 0, 10); } s->searchtype = SEARCHTYPE_FORWARD; if (!strncasecmp(tokenarray[5], "REVERSE", strlen("REVERSE"))) { s->searchtype = SEARCHTYPE_REVERSE; } else if (!strncasecmp(tokenarray[5], "NEXT", strlen("NEXT"))) { s->searchtype = SEARCHTYPE_FORWARD_NEXT; } else if (!strncasecmp(tokenarray[5], "FORWARD", strlen("FORWARD"))) { s->searchtype = SEARCHTYPE_FORWARD; } if (isRegularExpression(tokenarray[3])) { #ifdef GPU_THREADING std::stringstream ss; ss << "HATA: GPU REGEX aramasını Desteklemiyor!\n"; std::string msg = ss.str(); fprintf(stderr, "%s", msg.c_str()); throw std::runtime_error(msg); #endif s->beginisRE = 1; strcpy(s->begin, tokenarray[3]); strcpy(s->begintext, tokenarray[3]); s->beginlength = strlen(tokenarray[3]); s->begin[s->beginlength] = 0; err = regncomp(&(s->beginstate.re), s->begin + 1, s->beginlength - 2, REG_EXTENDED | (REG_ICASE * (!s->casesensitive))); if (err) { return PARS_ERROR_BAD_HEADER_REGEX; } } else { s->beginisRE = 0; strcpy(s->begintext, tokenarray[3]); s->beginlength = translate(tokenarray[3]); memcpy(s->begin, tokenarray[3], s->beginlength); init_bm_table(s->begin, s->beginstate.bm_table, s->beginlength, s->casesensitive); }
90
EK E. Veri Kurtama Yazılımın C# Kodları
using System; namespace PDFPars { public static class BenzerlikOranBul { public static long Hesapla(this string kaynak, string hedef) { if (string.IsNullOrEmpty(kaynak)) return string.IsNullOrEmpty(hedef) ? 0 : hedef.Length; if (string.IsNullOrEmpty(hedef)) return string.IsNullOrEmpty(kaynak) ? 0 : kaynak.Length; long kaynak_uzunluk = kaynak.Length; long hedef_uzunluk = hedef.Length; long[,] uzunluk = new long[kaynak_uzunluk + 1, hedef_uzunluk + 1]; for (int i = 0; i <= kaynak_uzunluk; uzunluk[i, 0] = i++) ; for (int j = 0; j <= hedef_uzunluk; uzunluk[0, j] = j++) ; for (int i = 1; i <= kaynak_uzunluk; i++) { for (int j = 1; j <= hedef_uzunluk; j++) { int cost = (hedef[j - 1] == kaynak[i - 1]) ? 0 : 1; uzunluk[i, j] = Math.Min( Math.Min(uzunluk[i - 1, j] + 1, uzunluk[i, j - 1] + 1), uzunluk[i - 1, j - 1] + cost); } } return uzunluk[kaynak_uzunluk, hedef_uzunluk]; } public static double BenzerlikHesapla(this string kaynak, string hedef) { if (string.IsNullOrEmpty(kaynak)) return string.IsNullOrEmpty(hedef) ? 1: 0; if (string.IsNullOrEmpty(hedef)) return string.IsNullOrEmpty(kaynak) ? 1 : 0; double benzer_adim = Hesapla(kaynak, hedef); return (1.0 - (benzer_adim / (double)Math.Max(kaynak.Length, hedef.Length))); } } }
91
ÖZGEÇMİŞ
Adı Soyadı : Ahmet Ali SÜZEN Doğum Yeri ve Yılı : Isparta, 1986 Medeni Hali : Evli Yabancı Dili : İngilizce E-posta : [email protected] Eğitim Durumu Lise : Antalya Endüstri Meslek Lisesi, 2001 Lisans :SDÜ, Teknik Eğitim Fakültesi, Bilgisayar Kontrol Öğretmenliği, 2011 Yüksek Lisans : SDÜ, Fen Bilimleri Enstitüsü, Elektronik Bilgisayar Eğitimi, 2013 Mesleki Deneyim A2S Yazılım 2010-2013 SDÜ Uluborlu MYO 2013-…….. (halen) Yayınları Süzen, A.,A., Ceylan, O., Çetin, A., Ulusoy, A., "Drawing Robot with Ardunio
Controlled", The Journal of Graduate School of Natural and Applied Sciences of Mehmet Akif Ersoy University Special Issue 1, 79-87 (2017)
Süzen, A.,A., Deniz, Ö., Çetin, A., "Wheelchair Controlled by Head Movements",
The Journal of Graduate School of Natural and Applied Sciences of Mehmet Akif Ersoy University Special Issue1, 66-72 (2017)
Süzen,A.A., Taşdelen, K., 2016. Anlamsal Web Teknolojisi İle İçerik Arama. El-
Cezerî Fen ve Mühendislik Dergisi Cilt: 3, No: 1, 2016 (118-124) Süzen, A.A.,Taşdelen, K., 2013. Kinect Teknolojisi Kullanılarak Engelliler İçin Ev
Otomasyonu,SDÜ Uluslararası Teknolojik Bilimler Dergisi,Vol 5 No 2, ss.122-131, Aralık 2013.
92
Arabacı, E., Süzen, A., A., "Programmable Intelligent Irrigation Manager Design",
VI. International Vocational Symposium , 2017, Bosnia and Herzegovina.
Süzen, A.,A., Taşdelen, K., Küçüksille, E. U., " Volatile Data Analysis And Methods
In Computer Forensics ", International Conference on Research in Education and Science (ICRES), 2016, Turkey.
Süzen, A.,A., Taşdelen, K., Küçüksille, E. U., "Access To User Accounts Through
Ram Image For Computer Forensics ", International Conference on Research in Education and Science (ICRES),May 19 22, 2016, Turkey.