Malware Analizinde Sıkça Karşılaşılan Windows API’leri – 2

Malware Analizinde Sıkça Karşılaşılan Windows API’leri – 2
[EXHIBIT_A] Featured evidence

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 http://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;

DATA_TABLE
Fonksiyon AdıAçıklama
InternetOpenBir İnternet bağlantısı gerçekleştirilmek istendiğinde ilk olarak çağrılan fonksiyondur.
InternetOpenUrlHTTP üzerinden bir URI çağrılmak istendiğinde ya da bir FTP kaynağına erişim gerçekleştirilmek istendiğinde kullanılan fonksiyondur.
InternetReadFileInternet üzerinden indirilen dosyayı okumak için kullanılan fonksiyondur.
InternetWriteFileBir ö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 https://msdn.microsoft.com/en-us/library/windows/desktop/aa385098(v=vs.85).aspx adresinden ulaşabilirsiniz.

exhibit_viewer.exe
WinINet01
[EXHIBIT] WinINet01

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 – https://en.wikipedia.org/wiki/Function_prologue) ve ardından CreateProcessA fonksiyonu çağırılmıştır. Bu API hakkındaki detaylı bilgiye ise https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx adresinden ulaşabilirsiniz.

exhibit_viewer.exe
CreateProcessA
[EXHIBIT] CreateProcessA

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 https://msdn.microsoft.com/en-us/library/windows/desktop/ms682453(v=vs.85).aspx adresinden ulaşabilirsiniz.

exhibit_viewer.exe
CreateThread
[EXHIBIT] CreateThread

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;

  • OpenSCManager: Bu fonksiyon servislerle ilgili daha sonradan yapılacak işlemler için kullanılacak servis kontrol yöneticisi (service control manager)’ın handle’ını döner.
  • CreateService: Servis kontrol yöneticisine yeni servis eklemek için kullanılan fonksiyondur. Bunun yanında oluşturulan yeni servisin sistem başlangıcında otomatik olarak mı yoksa manuel olarak mı başlatılacağını belirler.
  • StartService: Manuel şekilde başlatılacak modda ayarlanmış servisleri başlatmak için kullanılan fonksiyondur.

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ığı sistemde Malservice isimli bir servis oluşturmaya yarıyor. Windows’daki servis API’leri hakkında detaylı bilgiye https://msdn.microsoft.com/en-us/library/windows/desktop/ms685942(v=vs.85).aspx adresinden ulaşabilirsiniz.

exhibit_viewer.exe
CreateServiceA
[EXHIBIT] CreateServiceA

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.

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.