EnCase 7’de Condition ve Filter Kullanarak Sonuçları Süzme

EnCase 7’de Condition ve Filter Kullanarak Sonuçları Süzme
[EXHIBIT_A] Featured evidence

EnCase ile gerçekleştirdiğimiz adli bilişim incelemelerinde sıklıkla belirli kriterlere uyan dosyalara hızlıca ulaşma ihtiyacı duyarız. Örneğin belirli tarihler arasında System32 dizini altında oluşturulan dosyaların listesine ulaşarak olası zararlı kodları elde etmeye çalıştığımız senaryo gibi. Bu tür durumlarda EnCase'in bize sunduğu iki farklı seçenek vardır. Bunlar Condition ve Filter olarak adlandırılan yapılardır ve bu iki yapı da EnScript olarak adlandırılan ve EnCase'in içinde kullanılan yazılım diliyle geliştirilen yapılardır. Her ikisi de temelde aynı işi yaparlar fakat EnCase kullanıcılarının tamamının yazılım becerisinin olması beklenmediği için kolay bir şekilde dosyalar üzerinde süzme yapmak adına EnCase içinde bir arayüz sunulur ve Condition tanımları bu arayüz üzerinden yapılır. EnCase içinde kullanılacak Filter yapıları ise EnScript geliştirme ortamında geliştirilir. Bunun haricinde bu iki yapı arasındaki bir diğer fark ise EnCase kurulumu ile varsayılan olarak herhangi bir Condition gelmez fakat öntanımlı gelen Filter'lar vardır. Şimdi bu yapılara biraz daha detaylı bakalım.

Condition:

EnCase içinde varsayılan olarak bir Condition gelmediği için öncelikle bizim bir Condition oluşturmamız ve ardından bunu çalıştırarak dosyaları süzmemiz gerekiyor. Yeni bir Condition oluşturmak için EnCase arayüzündeki Evidence penceresinde yer alan ve aşağıdaki ekran görüntüsünde gösterilen Condition seçeneğine seçip "New Condition" seçeneğini seçmemiz gerekiyor.

exhibit_viewer.exe
EnCase_Condition_Filter_01
[EXHIBIT] EnCase_Condition_Filter_01

Karşımıza çıkan New Condition penceresi aşağıda gösterilmiştir. Bu pencere de görülebileceği üzere varsayılan olarak EnCase bizim oluşturduğumuz Condition'ları kurulum dizini içinde yer alan Condition dizinine, uzantısı EnCondition olacak şekilde kaydeder. Ve eğer biz bir isim belirtmezsek kendisi otomatik olarak Condition ile başlayan ve bir rakam ile devam eden bir isim verir. Oluşturacağımız bu Condition'ları daha sonradan kullanacağımız için size tavsiyem her biri için ne iş yapıyorlarsa onu çağrıştıracak şekilde bir isimlendirme seçmeniz. Aksi takdirde oluşturduğunuz Condition'ların ne iş yaptığını sonradan hatırlamanız oldukça zor olacaktır.

exhibit_viewer.exe
EnCase_Condition_Filter_02
[EXHIBIT] EnCase_Condition_Filter_02

Yukarıdaki pencerede görülebileceği üzere her bir Condition içinde Main isimli ana bir fonksiyon vardır ve bu fonksiyon varsayılan olarak yeni bir Condition tanımında boş gelir. Bizim belirleyeceğimiz kriterler bu ana fonksiyonun içinde yer alacak. Yeni bir kriter tanımlamak için New butonuna basıyoruz. Karşımıza çıkacak ekranın bir örneği aşağıda gösterilmiştir. Bu ekranda yer alan Properties kısmında dosya süzme işleminde kullanabileceğimiz özelliklerin bir listesi yer alır. Bu listede yer alan özelliklerden hemen sol tarafında bir takım harf ve simgeler görürsünüz. Bunlar ilgili özelliğin türünü gösterir. Örneğin özelliğin alabileceği değer bir karakter dizisi ise bu durumda s, bir rakam ise i, Evet yada Hayır şeklinde bir değer ise b gibi ifadeler görürsünüz. Bunun yanında bazı özelliklerin yanında takvim simgesi yer alır (örneğin Last Accessed) ve süzme işlemi sırasında bir tarih değerinin belirlenmesi gerektiğini belirtir. Bunun yanında Operator ve Value olmak üzere iki kısım daha yer alır. Bu kısımlardan Operator kısmındaki seçenekler ile bir önceki aşamada seçmiş olduğumuz ilgili özellik ile Value kısmında belirleyeceğimiz değer arasındaki ilişki düzenlenir. Örnek olarak yukarıda anlattığımız senaryodaki (belirli bir tarih aralığında System32 dizini altında oluşturulan dosyaları listelemek) dosyaları süzmek adına oluşturacağımız Condition'un ilk adımı olarak aşağıdaki şekilde gösterildiği gibi bir tanım yapıyoruz. Bu tanım ile case içindeki bütün dosyaların FullPath özelliği incelenecek ve içinde "windows\system32" bulunan dosyalar süzülecektir.

exhibit_viewer.exe
EnCase_Condition_Filter_03
[EXHIBIT] EnCase_Condition_Filter_03


Eğer ilgili özellik için bir sabit değer belirlemeyip kullanıcı Condition'un çalıştırdığı sırada kendisinin değeri belirlemesini diyorsak bu durumda "Prompt for value" seçeneğini seçmemiz yeterli olacaktır. Bunun yanında bazı özellikler için belirlenecek değerlerde büyük küçük harf duyarlılığını da ayarlamak mümkün. Eğer büyük küçük harf duyarlılığı olan bir özellik tanım içinde kullanılacaksa ve duyarlılığın aktif olması isteniyorsa bu durumda "Case Sensitive" seçeneğini seçmemiz gerekiyor. Örnek senaryomuzdaki süzme işlemini sağlamak adına 12 Aralık 2013 tarihinden sonra oluşturulan dosyaları listeleyecek ikinci bir kriter daha oluşturuyoruz. Bu kriterin tanımı ise aşağıdaki ekran görüntüsünde yer almaktadır.

exhibit_viewer.exe
EnCase_Condition_Filter_04
[EXHIBIT] EnCase_Condition_Filter_04

Bu iki kriteri tanımladıktan sonra Condition penceresinde son durum aşağıdaki şekilde gösterildiği gibi olur. Bu durum incelendiğinde dikkatimizi bir şey çeker. İki farklı kriter mantıksal olarak OR işlemine tabi tutulmuş. Yani bu Condition'un çalıştırılması durumunda System32 dizini altında yer alan dosyalar ayrı,12 Aralık 2013 tarihinden sonra oluşturulan dosyalar da ayrı değerlendirilecek ve iki kriterden birisine uyan bütün dosyalar listelenecektir. Bu durum bizim yukarıda anlattığımız senaryoyu tam olarak karşılamamaktadır.

exhibit_viewer.exe
EnCase_Condition_Filter_05
[EXHIBIT] EnCase_Condition_Filter_05

Hem System32 altında yer alan hem de 12 Aralık 2013 tarihinden sonra oluşturulan dosyaları süzmek için buradaki mantıksal ifadeyi AND ile değiştirmemiz gerekiyor. Bunun için aşağıdaki ekran görüntüsünde de yer aldığı gibi Main fonksiyonu üzerine tıklayarak açılan menüden "Change Logic" seçeneğini seçmemiz gerekiyor.

exhibit_viewer.exe
EnCase_Condition_Filter_06
[EXHIBIT] EnCase_Condition_Filter_06

Mantıksal ifadeyi değiştirdikten sonra Condition'umuz aşağıdaki ekran görüntüsünde yer aldığı hale dönüşüyor ve bu haliyle bizim istediğimiz mantıksal süzmeyi gerçekleştirebiliyor. Yukarıdaki ekran görüntüsünde yer alan Not ifadesine de dikkatinizi çekmek istiyorum. Eğer tanımlanan bir ifadenin tam tersi geçerli olsun istiyorsak bu durumda ilgili kriterin üzerine tıklayıp Not değerini seçmemiz yeterli olacaktır. Görülebileceği üzere çok esnek bir mantıksal süzme işlemi yapmak mümkün.

exhibit_viewer.exe
EnCase_Condition_Filter_07
[EXHIBIT] EnCase_Condition_Filter_07

Bir Condition içinde tanımlanan kriterlerin sıralaması da oldukça önemlidir ve süzme işleminin hızlı şekilde sonuç bulması adına doğru şekilde sıralanması önemlidir. Tanımlanan kriterler yukarıdan aşağıya doğru işleme sokulur. Yani örneğimizden yola çıkarsak öncelikle System32 dizini içindeki dosyalar filtrelenecek sonrasında ise bu dosyaların oluşturulma tarihleri göz önünde bulundurularak 12 Aralık 2013 tarihinden sonra oluşturulan dosyalar süzülecektir. Sıralamayı değiştirmek içinse yapmanız gereken tek şey ilgili kriteri mouse ile sürükleyerek taşımak istediğiniz sıraya koymak. Kriter sıralamasının değiştirilmesine örnek olarak aşağıdaki ekran görüntüsüne bakabilirsiniz.

exhibit_viewer.exe
EnCase_Condition_Filter_08
[EXHIBIT] EnCase_Condition_Filter_08

Oluşturulan Condition'ın çalıştırmak için ilgili Condition menüsünden az önce oluşturduğumuz Condition'u seçiyoruz. Karşımıza aşağıdaki gibi bir ekran çıkacaktır. Bu ekranda yer alan Result Name kısmında süzme işleminin sonuçlarının hangi sonuç seti ismi altında gösterileceğini belirleriz. Filter Target kısmında Entries, Records ve Results olmak üzere üç seçenek yer alır ve bu seçenekler Condition'u çalıştırdığınız arayüzün hangisi olduğunu bağlı olarak otomatik olarak doldurulur. Biz örneğimizde Entries penceresi açıkken çalıştırmak istediğimiz için Filter Target kısmında Entries seçeneği seçili halde geldi. Filter kısmında ise Current View, Current device ve All Evidence Files olmak üzere üç seçenek yer alır ve bu seçenekler süzme işleminin mevcut Tree/Table panelinde yer alan deliller için mi, seçili olan cihaz için mi yoksa bütün delil dosyaları için mi çalıştırılacağını belirler. Buradaki seçeneklerden Current device ve All Evidence Files seçilirse bu durumda Condition'un çalıştırılması sonucunda elde edilen çıktılar ayrı bir Result tabında gösterilir.

exhibit_viewer.exe
EnCase_Condition_Filter_09
[EXHIBIT] EnCase_Condition_Filter_09

Condition'un çalıştırılmasından sonra karşımıza çıkan ekranın bir örneği aşağıda gösterilmiştir. Bu ekrandan da görülebileceği üzere hem System32 dizini altında yer alan hem de oluşturulma tarihi 12 Aralık 2013 00:00 olan dosyalar süzülmüş ve karşımıza getirilmiştir.

exhibit_viewer.exe
EnCase_Condition_Filter_10
[EXHIBIT] EnCase_Condition_Filter_10

Filter:

Yukarıda da değindiğimiz gibi temelde Condition ve Filter tanımları aynı işi yapar fakat bunların geliştirilme ortamları birbirinden farklıdır. Filtreler EnScript geliştirme ortamı kullanılarak geliştirilir ve Condition'lara göre nispeten daha esnek süzme işlemleri yapılmasına imkan tanır. EnCase'in varsayılan kurulumunda hızlıca belirli süzme işlemlerini yapmak adına hazır Filtre'lar mevcuttur. Oluşturduğumuz Case içerisinde bulunduğumuz pencereye göre Filter seçeneğini seçip açılan menüden çalıştırmak istediğimiz filtreyi seçmemiz yeterli olacaktır.

Aşağıda EnCase ile birlikte gelen ve kullanıcının seçeceği kategorilerdeki dosyaların süzülmesine imkan tanıyan Find Files based on Category isimli Filter'ın EnScript kodlarını görebilirsiniz. Bu aşamada ilgili kod bloklarının detaylarına girmeyip bu konuyu EnScript'i ayrıntılı şekilde ele alacağım makaleye bırakıyorum.

exhibit_viewer.exe
EnCase_Condition_Filter_11
[EXHIBIT] EnCase_Condition_Filter_11

AUTHOR
Halil Öztürkci

Halil Öztürkci

Cybersecurity expert with 25 years of hands-on experience across the full attack-defense spectrum.

I've spent my career on both sides of the battlefield—investigating breaches through digital forensics, hunting APT groups through threat intelligence, building and leading security operations, dissecting malware, and executing red team engagements. Now I'm focused on the next frontier: LLM security, AI red teaming, and building secure AI/ML pipelines.

From incident response to adversary simulation, from SOC architecture to AI-powered threat detection—I decode complex security challenges and translate them into actionable defense.

enjoyed this? get more like it.