Zararlı yazılım analizi iki temel tekniğe ayrılır: dinamik analiz, Kötü amaçlı yazılımın sistem üzerinde gerçekten çalıştırılması ve gözlemlenmesi ve statik analiz. Statik analizi, bir örneği gerçekten çalıştırmadan ondan elde edilebilecek her şeyi kapsar. Programı çalıştırılabilir bellek alanına yerleştirmek ve davranışını gözlemlemek.
Tıpkı bir hediye kutusunu açtığımızda nelerle karşılaşabileceğimizi anlamak için sallamak gibi, statik analiz de daha sonra dinamik analizde gördüğümüz davranışlar için bize bağlam sağlayabilecek pek çok bilginin yanı sıra daha sonra kötü amaçlı yazılıma karşı kullanılabilecek statik bilgiler elde etmemize olanak tanır.
Bu amaca uygun birkaç aracı ve mümkün olan en iyi bilgiyi sağlayan kutuyu sallamak için birkaç temel tekniği inceleyeceğiz. Buna ek olarak, gerçek dünyadan zararlı yazılım örneklerine göz atacağız.
Henüz incelemediyseniz analiz ortamını oluşturduğumuz makaleyi okuduktan sonra devam etmenizi öneririm.
Hashing
Bir analistin elindeki en kullanışlı tekniklerden biri hashing'dir. Bir hashing algoritması, dosyanın parmak izi gibi her dosya için benzersiz bir sağlama toplamı oluşturan tek yönlü bir işlevdir.
Diğer bir deyişle, algoritmadan geçen her benzersiz dosya, iki dosya arasında yalnızca tek bir bit farklılık olsa bile benzersiz bir hash'e sahip olacaktır.
SHA256, bir analist olarak karşılaşmanız muhtemel tek hashing algoritması değildir, ancak şu için en güvenilir olanıdır.
Collision
Hashing açısından bakıldığında collision, iki farklı dosyanın aynı hash'lere sahip olduğu bir olaydır. Bir collision meydana geldiğinde, bir hashing algoritması bozuk olarak kabul edilir ve artık güvenilir değildir. Bu tür algoritmalara örnek olarak MD5 ve SHA1 verilebilir.
Dosya hash'lerini elde etme
FLARE VM içindeki dosyaların hash'lerini elde etmek için kullanılabilecek birçok farklı araç vardır, ancak en basit ve genellikle en kullanışlı olanı Windows PowerShell'de bulunur. Get-FileHash kullanabileceğimiz bir komuttur ve tam olarak söylediği şeyi yapar; kendisine verilen dosyanın hash'ini alır. Aşağıdaki ekran görüntüsünde gösterildiği gibi Get-Help Get-FileHash yazarak cmdlet'in kullanımını görüntüleyebiliriz:
Bu bölüm ve ilerleyen birçok bölüm, dosyaları ana bilgisayarınızdan aktarmanızı veya doğrudan analiz sanal makinenize (VM) indirmenizi gerektirecektir. İzolasyonu korumanın en basit yolu, ağ bağdaştırıcısını yalnızca ana bilgisayarda bırakmak ve VirtualBox aracılığıyla sürükle-bırak veya pano paylaşımını etkinleştirmektir. Bunu yalnızca temiz bir makinede yaptığınızdan emin olun ve VirtualBox'ın Aygıtlar menüsü aracılığıyla işiniz bittiğinde hemen devre dışı bırakın.
Ilk örneğimizde 2 dosya bulunmaktadır. Bu yüzden dizindeki dosyalar için Get-ChildItem kullanmak ve çıktıyı Get-FileHash aktarmak mümkün.
Get-ChildItem'ı kullanmak ve çıktıyı Get-FileHash'e yönlendirmek, dosyaların hashlerini toplu olarak almak için harika bir yoldur ve her dosya adını Get-FileHash'e manuel olarak sağlamak yerine triyajda büyük ölçüde zaman kazandırır.
Ancak, MD5'in bozuk olduğu bilindiğinden, farklı bir algoritma kullanmak en iyisi olabilir. Aşağıdaki ekran görüntüsünde gösterildiği gibi, bu kez SHA256 ile tekrar deneyelim:
SHA256 Hashleri farklıdır! Bu durum, aynı boyutta ve aynı MD5 hash'ine sahip olsalar da bu dosyaların aynı dosya olmadığını ve güçlü bir tek yönlü hash algoritması seçmenin önemini göstermektedir.
VirüsTotal'den Yararlanma
Analistler tarafından yaygın olarak kullanılan harika bir araç VirusTotal'dır. VirusTotal, olası kötü amaçlı yazılım örneklerini çeşitli antivirüs (AV) motorlarına karşı tarayan ve bulgularını raporlayan bir tarama motorudur.
Bu işlevselliğe ek olarak, hash ile arama yapmak için ücretsiz bir veritabanı tutar. https://virustotal.com/ adresine gidildiğinde bu ekran görüntülenecektir:
Bu örnekte 807126cbae47c03c99590d081b82d5761e0b9c57a92736fc8516cf41bc564a7d SHA256 Hash'ini kullanacağız. Bu hash VirüsTotal'e girildiğinde ve Scan düğmesine basıldığında aşağıdaki ekran görüntüsünde gösterildiği gibi sonuçlar karşınıza çıkacaktır, çünkü bu dosya daha önce binlerce analist tarafından taranmak için gönderilmiş.
VirüsTotal'de arama yapmak için ilk oarak bizim Hash'imizi kullanmanın, analiz süresini azaltmaya ve şüpheli llişkilendirmi kendi analizimizden çok daha hızlı bir şekilde doğrulamaya büyük ölçüde yardımcı olabileceği açıktır. Ancak bu her zaman ideal bir çözüm olmayabilir. Tamamen benzersiz bir hash'e sahip dosyanın analizinde ve ilişkilendirilmesinde hiçbir işe yaramayacaktır. Bu durum, saldırganların Hashbusting adı verilen ve her kötü amaçlı yazılım örneğinin farklı bir statik hash'e sahip olmasını sağlayan bir teknik uygulaması nedeniyle daha yaygın hale gelmektedir.
Parçaları Toplayalım
Dosyaların basit parmak izlerine ek olarak, ister bulanık olsun ister başka türlü olsun, bir dosya bize çalıştırılmadan hakkında birkaç temel bilgi daha verebilir. Saldırganların kötü amaçlı yazılımların analizini yavaşlatmak için sıklıkla kullandıkları birkaç basit hileleri var.
Malware Serotyping
Saldırganlar, niyetlerini gizlemek, EDR çözümlerini atlatmak veya kullanıcıyı komutları çalıştırmaya ikna etmek için sosyal mühendislik tekniklerinden yararlanmak amacıyla bazen tamamen hariç tutarak bazende malware.doc.exe gibi çift uzantılar oluşturarak dosyaların uzantılarını sık sık değiştirirler.
Neyse ki zararlı yazılım analistleri için, bir dosyanın uzantısını değiştirmek gerçek içeriğini gizkenez ve çoğu açıdan yalnız estetik bir değişiklik görevi görür. Bilgi işlemde tüm dosyalar, işletim sistemine dosyanın nasıl yorumlanacağını gösteren bir başlığa sahiptir. Bu başlık bir dosyayı yazmak için kullanılabilir, tıpkı bir labaratuvar teknisyeninin kan örneğini yazması gibi. Zararlı yazılımlarla iligili yagın dosya başlıklarının bir listesi aşağıdaki gibidir;
Linux/Unix sistemlerde dosya türlerinin test etmek için file adı verilen yerleşik bir yardımcı araç vardır. Malesef, Windows varsayılan olarak bu yeteneklerden yoksundur ve FLAREVM içinde ikinci bir araç kurulumu gerektirir. filetype.exe bunun için iyi bir seçimdir. Aracı indirerek kullabilirsiniz.
FIletype ile dosyamızı kontrol ettiğimiz zaman aşağıdaki gibi bir ekran ile karşılaşırız.
Dosya türünü otomatik olarak belirlemek için Linux sistemlerde FILE ve Windows sistemlerde FILETYPE gibi araçlar mevcut olsa da, dosyanın başlığını incelemek için bilinen örneklerle karşılaştırmak için 010 Editör gibi onaltılık bir düzenleyici kullanabilirsiniz.
String Toplama
Bir çalıştırılabilir dosya derlendiğinde, geliştirme sırasında kullanılan belirli ASCII veya Unicode kodlu dizeler binary dosyaya dahil edilebilir.
Bir çalıştırılabilir dosyadaki stringlerin sahip olduğu bilginin değeri küçümsenmemelidir. Bir dosyanın çalıştırıldığında neler yapabileceğine, hangi komut ve kontrol sunucularının kullanıldığı ve hatta kimin yazdığı hakkında değerli bilgiler sunabilirler.
Örneğimizden devam edersek, dosyada bulunan stringleri ayıklamak için Microsoft'un Windows Sysinternals'ından bir araç kullanılabilir. Öncelikle aşağıdakı ekran görüntüsünden gösterildiği gibi, Strings aracını mümkün olduğunca kullanışlı hale getirmeye yardımcı olabilecek bazı komutlara göz atalım:
Gösterildiği gibi ASCII ve Unicode stringlerinin her ikisi de varsayılan olarak aranır. Binary ile ilgili mümkün olan en fazla bilgiye sahip olduğumuzdan emin olmak için her ikisini de arama sonuçlarımıza dahil etmek istiyoruz. Ilgilendiğimiz birincil komut -n, döndürülecek minimum dize uzunluğunu verir. Bu komut için genellikle 5 değerinin kullanılması tavsiye edilir, aksi takdirde analizi boşa çıkarabilecek çöp çıktılarla karşılaşılabilir.
Metin dosyamıza baktığımızda, bu binary tarafından içe aktarılan bazı WIndows uygulama programlama arayüzü modülleri de dahil olmak üzere çeşitli stringlerin döndürüldüğünü görebiliriz. Bunlar zararlı yazılımın sunduğu bazı işlevler hakkında ipucu verebilir.
Çıktının sonuna doğru ilerlediğimizde, hangi çalıştırılabilir dosyanın arka kapı olarak kullanıldığına veya binary dosyanın ne gibi göründüğüne dair bazı bilgiler elde edebiliriz! Bu, hem saldırganın operasyonlarını izlemek hem de dahili saldırılar için tehlikeye girme göstergelerini (IOC'ler) takip etmek açısından faydalı olabilir.
Gördüğünüz gibi, bu metodoloji ile elde edilen bilgiler hem yürütülen çalışmaların takibinde hem de saldırıların izlenmesinde faydalı olabilir.