Post by Pesimistyle on Oct 18, 2017 17:36:17 GMT
Bir önceki makalemizde temel manada Windows API’lerinin kullanım amacından bahsetmiş ve zararlı kod (malware) geliştiricileri tarafından da bu API’lerin sıklıkla kullanıldığına değinmiştik. Bu makale dizisinin ilk yazısına halilozturkci.com/malware-analizinde-sikca-karsilasilan-windows-apileri-1/ adresinden ulaşabilirsiniz. Biz zararlı kod analistleri (malware analyst) de Windows’un API’leri hakkında yeterli bilgiye sahip olduğumuz durumda gerçekleştireceğimiz zararlı kod analizlerinde ilgili kodun temel yeteneklerinin neler olabileceği sonucuna daha hızlı varabiliriz. Bu bağlamda her bir API’nın ne amaçla kullanıldığını ve parametre olarak neleri kabul ettiğini bilmek analiz sürecimizi oldukça hızlandıracaktır. Serinin ilk makalesinde Dosya Sistemi, Registry ve Network seviyesinde kullanılan API’lerden sıkça kullanılanlarına değinmiştik. Şimdi diğer işlemleri için kullanılan API’lerin detayları ile devam edelim.
WinINet Fonksiyonları
Winsock haricinde daha üst düzey protokollere ilişkin örneğin HTTP, FTP vb gibi protokollere ilişkin oturum açma, dosya transfer etme vb gibi fonksiyonlara ihtiyaç duyulduğuna WinINet içindeki fonksiyonlar çağırılır.Bu fonksiyonların yer aldığı kütüphane dosyası Wininet.dll’dir. Bu kütüphane içinde en çok karşımıza çıkan fonksiyonlar ise şunlardır;
Fonksiyon Adı Açıklama
InternetOpen Bir İnternet bağlantısı gerçekleştirilmek istendiğinde ilk olarak çağrılan fonksiyondur.
InternetOpenUrl HTTP üzerinden bir URI çağrılmak istendiğinde ya da bir FTP kaynağına erişim gerçekleştirilmek istendiğinde kullanılan fonksiyondur.
InternetReadFile Internet üzerinden indirilen dosyayı okumak için kullanılan fonksiyondur.
InternetWriteFile Bir önceki istekte açılan URL’e veri yazmak için kullanılan fonksiyondur.
Bu API’lerden InternetOpenUrl API’sinin kullanımına ilişkin bir örnek aşağıda yer almaktadır. Görülebileceği üzere öncelikle stack yapısı hazırlanmış ve API’nin parametreleri stack’e gönderilmiş ve sonrasında InternetOpenUrl çağrılarak lpszUrl değişkenine atanmış URL’e istekten bulunulacak çağrı (call) gerçekleştirilmiştir. InternetOpenUrl API’si ile ilgili detaylı bilgiye msdn.microsoft.com/en-us/library/windows/desktop/aa385098(v=vs.85).aspx adresinden ulaşabilirsiniz.
Proses Komutları
Zararlı kod bulaştığı sistem üzerinde eğer bir uygulama çalıştıracaksa bu durumda genellikle CreateProcessA fonksiyonu kullanılır. Bu fonksiyon kullanılarak zararlı kod tarafından yeni bir uygulama başlatılabilir veya Internet Explorer gibi bir prosesin instance’ı oluşturulabilir. Thread ise, bir uygulama içinde CPU tarafından birbirinden bağımsız şekilde çalıştırılan kod parçacıklarına verilen isimdir. Bir uygulama içindeki threadler aynı hafıza alanını kullanırlar. CreateThread fonksiyonu kullanılarak yeni bir thread oluşturulur. İnceleyeceğiniz zararlı kodlarda bu iki yöntemi de görmeniz mümkündür.
Aşağıdaki örnek kodda CreateProcessA fonksiyonunun nasıl kullanıldığını görebilirsiniz. İlgili fonksiyon çağırılmadan önce yine stack yapısı hazırlanmış (Function prologue – en.wikipedia.org/wiki/Function_prologue) ve ardından CreateProcessA fonksiyonu çağırılmıştır. Bu API hakkındaki detaylı bilgiye ise msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx adresinden ulaşabilirsiniz.
CreateThread fonksiyonun örnek kullanımına ilişkin kod kısmı ise aşağıda gösterilmiştir. Yine görülebileceği üzere öncelikle fonksiyonun prolog kısmı ve ardından CreateThread çağrısı yer almaktadır. Bu fonksiyondaki dwCreationFlags’e atanacak değerler ile threadin hemen mi başlayacağı yoksa askıya alınmış şekilde (CREATE_SUSPENDED) mi başlayacağaı gibi tanımlar yapılmaktadır. Bu API’nin detaylarına da msdn.microsoft.com/en-us/library/windows/desktop/ms682453(v=vs.85).aspx adresinden ulaşabilirsiniz.
Servis Komutları
Zararlı kodlar bulaştıkları sisteme kendilerini servis olarak ekleyip, bilgisayar her açıldığında otomatik olarak çalışmayı garanti altına almak isterler. Bu durumda genellikle kullandıkları fonksiyonlar şunlardır;
Bu API’lerin kullanımına ilişkin örnek bir kod kısmı aşağıda gösterilmiştir. Görülebileceği üzere ilgili kod parçacığı sistemdeMalservice isimli bir servis oluşturmaya yarıyor. Windows’daki servis API’lerihakkında detaylı bilgiye msdn.microsoft.com/en-us/library/windows/desktop/ms685942(v=vs.85).aspx adresinden ulaşabilirsiniz.
Bir sonraki yazımızda ise zararlı kodlar tarafından kullanılan diğer Windows API’lerine göz atıp ardından örnek zararlı kodlar üzerinde yapacağımız analizler ile yazı dizimize devam edeceğiz.