Windows ortamında uygulama geliştiren yazılımcılara Microsoft tarafından sunulan ve yazılımcının ihtiyaç duyacağı temel fonksiyonları barındıran hazır kütüphanelere verilen isimdir Windows API ve zararlı kod geliştiricileri de Windows’un bu imkanlarından faydalanarak bir çok temel işi paylaşılan kütüphanelerdeki fonksiyonlara yaptırırlar. Bu fonksiyonlar hakkında bilgi sahibi olmanız durumunda analiz ettiğiniz zararlı kodun davranışını ve neyi amaçladığını çok daha hızlı öğrenebilirsiniz. ADEO bünyesindeki adli bilişim laboratuarında gerçekleştirdiğimiz malware analizlerinde de bu API’lerin çok sık kullanıldığını görüyoruz. Eğer sizler de zararlı kod analizi ile uğraşıyorsanız aşağıda sizler için hazırladığımız ve zararlı kodlar tarafından sıklıkla kullanıldığını tespit ettiğimiz Windows API’lar hakkındaki detaylı bilgiler bir hayli işinize yarayacaktır.
Dosya Sistemi Fonksiyonları
Bir zararlı kod genellikle disk üzerinde bir takım dosyaları okur veya dosyalara yazar. Bu zararlı kodun disk üzerindeki hangi dosyaları okuduğu ve yazdığı bilgisini öğrenmek hem o zararlı kodun ne yapmaya çalıştığını öğrenmek hem de o zararlı kodu diğer başka bilgisayarlarda tanımlamak adına kullanılacak göstergeleri ortaya çıkarmak adına oldukça önemlidir.
Bir zararlı kod tarafından kullanılması muhtemel dosya sistemi fonksiyonları olarak aşağıdaki fonksiyonları gösterebilir.
- CreateFile: Bu fonksiyon dosya sisteminde bir dosya oluşturmak veya var olan bir dosyayı açmak için kullanılır. Bu fonksiyon çağırılırken kullanılan dwCreationDisposition parametresi dosyanın oluşturulacağını mı yoksa var olan bir dosyanın açılacağını mı belirtir.
- ReadFile ve WriteFile: Bu fonksiyonlar açılan dosyaya yazmak ya da okumak için kullanılan fonksiyonlardır. Her iki fonksiyon da stream mantığıyla çalışır ve dosyanın ne kadarlık kısmının okunacağı veya dosyaya ne kadarlık bir veri yazılacağı parametre olarak bu fonksiyonlara verilir.
Aşağıdaki ekran görüntüsünde örnek bir CreateFileA API’sinin kullanımına ilişkin kod kısmını görebilirsiniz. İlgili kod analiz edildiğinde CreateFileA fonksiyonunun çağırılmadan önce bu fonksiyonun parametrelerinin push komutu ile stack’e gönderildiği görülecektir.

Bu fonksiyonlarla ilgili daha detaylı bilgiye ulaşmak için http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx adresini ziyaret edebilirsiniz.
Registry Fonksiyonları
Zararlı kodların bir Windows sistemindeki registry kayıtları üzerinde işlem yapmak adına temelde aşağıdaki fonksiyonları kullandıklarını biliyoruz.
- RegOpenKeyEx: Bu fonksiyon kayıt defterindeki değerlerden birisinin değerini değiştirmek yada sorgulamak için kullanılır.
- RegSetValueEx: Bu fonksiyon kayıt defterindeki değerlerden birisini set etmek için kullanılan fonksiyondur.
- RegGetValue: Bu fonksiyon kayıt defterindeki bir değeri sorgulamak için kullanılan fonksiyondur.
Örnek olarak aşağıdaki kod kısmına baktığımızda ilgili zararlı kodun iki farkı registry değerini sorguladığını görebiliyoruz.

Network Fonksiyonları
Zararlı kodların Windows ortamında kullandıkları network fonksiyonları genellikle Berkeley Uyumlu Socket yapısındadır ve bu fonksiyonlar Windows’daki ws2_32.dll kütüphanesinde yer alır.Aşağıda bu kütüphane içinde yer alan ve karşımıza an çok çıkan fonksiyonlar yer almaktadır. Aşağıdaki fonksiyonlar çağırılmadan önce mutlaka WSAStartup fonksiyonu çağırılır. Eğer analiz edilen uygulamanın network iletişimi monitör edilmek isteniyorsa bu durumda WSAStartup fonksiyonuna breakpoint konulabilir.

Bu fonksiyonların kullanımına ilişkin örnek kod parçası da aşağıda gösterilmiştir.

Yazı dizisinin bir sonraki kısmında zararlı kodlar tarafından kullanılan WinINet Fonksiyonları, Proses Fonksiyonları ve Servis Fonksiyonları ile devam edeceğiz.


