Hüseyin Altunkaynak Kişisel Blog

Malware Analizi - 04

Malware Analizi

Malware Analizi serisinin ilk bölümüne ulaşmak için: Malware Analizi - 01

Windows API

NOT: Bazı fonksiyonların sonunda Ex, A ve W karakterleri yer alıyor. Ex, sonuna geldiği fonksiyonun bir önceki sürümüne göre genişletildiğini daha fazla içerik eklendiğini ifade eder. Ex ifadesinden sonra A ve W karakterleri de gelebilir. A, fonksiyonun girdi olarak ANSI standardında string almasını sağlarken W ise UNICODE string girdisini ifade eder.

Dosya İşlemleri İle İlgili API’ler

Yeni bir dosya oluşturmayı, dosyaları okumayı, yazmayı ve bir kaynağın konumunu belirtilen modül içinde bulmayı sağlar.

  • CreateFile
  • ReadFile
  • WriteFile
  • FindResource
  • LoadResource

Kayıt Defteri İle Alakalı API’ler

Kayıt defteri üzerindeki kayıtların veya değerlerin değiştirilmesi, görüntülenmesi ve güncellenmesini sağlayan modüllerdir.

  • RegOpenKeyEx
  • RegSetValueEx
  • RegGetValue

Ağ Erişimi -> WinSock API

Sistem üzerinde oluşturulan soketler ve bunların yönetimi ile alakalı API’leri kapsar. Soketlerin başlatılması, durumu ve soketler üzerinden veri aktarımı gibi işlevleri vardır.

  • WSAStartup
  • WSAGetLastError
  • connect
  • accept
  • socket
  • send
  • recv
  • listen
  • getaddrinfo

Internet Erişimi -> WinINet API

İnternet erişimi olması durumunda internet üzerinden dosya okuma, FTP sunucusuna bağlanma, GET isteği gönderip gelen isteklere cevap vermeye kadar bütün esnekliği sağlayan API’ler sayesinde bir zararlının sadece bu API’lere sahip olması bile yeterlidir.

  • InternetOpen
  • InternetOpenURL
  • InternetConnect
  • InternetReadFile
  • InternetWriteFile
  • HTTPOpenRequest
  • HTTPSendRequest
  • HTTPQueryInfo

Internet Erişimi -> Urlmon

İnternetten indirdiği veriyi dosyaya yazar.

  • URLDownloadToFile

Keylogger Fonksiyonalitesi Sağlayan API’ler

Sistemde kullanılan klavyenin tuş konumlarından tutun hangi tuşa ne kadar basıldığının bilgisini dahi sunan bu API’ler bir keylogger’ın olmazsa olmazıdır.

  • SetWindowsHookEx
  • CallNextHookEx
  • MapVirtualKey
  • GetKeyState
  • GetAsyncKeyState
  • GetForegroundWindow
  • AttachThreadInput

Process İşlemleri

  • VirtualAlloc
  • VirtualProtectEx
  • OpenProcess
  • EnumProcesses
  • EnumProcessModules
  • CreateRemoteThread
  • Process32First/Process32Next
  • Module32First/Modeule32Next
  • WriteProcessMemory -> Verileri belirli bir bellek alanına yazmak için
  • AdjustTokenPrivileges
  • IsWow64Process
  • QueueUserAPC -> Asenkron Process Çağırma

DLL Yükleme ve Fonksiyon Adresi Bulma

  • LoadLibrary
  • GetProcAddress
  • LdrLoadDll

Debugger Tespit Amacıyla Kullanılan API’ler

  • IsDebuggerPresent
  • CheckRemoteDebuggerPresent
  • FindWindow -> Açık uygulamaları tespit için
  • GetTickCount -> Sistem açıldıktan sonraki geçen süre
  • NtQueryInformationProcess
  • OutputDebugString

Sistemde Kalıcılık Sağlamak İçin Kullanılabilecek API’ler

  • CreateService
  • ControlService

Diğer Dosyalara Atlama

Sistemde dosya arama, dosyanın yapısını görüntüleme ve çağrılan bir processin adres alanındaki dosya yapısına erişmeyi sağlar.

  • FindFirstFile
  • FindNextFile
  • NtQueryDirectoryFile
  • CreateFileMapping
  • MapViewOfFile

COM Nesnesi -> http://www.csharpnedir.com/articles/read/?id=73

COM, bir komponent geliştirme standartıdır. Öyleki COM standartlarına uygun geliştirilen bütün komponentler COM nesnelerinin kullanılabildiği bütün diller tarafından kullanılabilir. API’ler sayesinde de COM nesneleri üzerinde işlemler gerçekleştirebiliriz. .NET geliştirirken kullanılan bir standarttır.

  • OleInitialize
  • CoInitializeEx

Veri Sızdırmak İçin Kullanılabilecek API’ler

Amaç -> Sistem üzerindeki hassas bilgilere erişim sağlamak ve bunlar üzerindeki değişiklik yapmak.

  • LsaEnumerateLogonSessions
  • SamIConnect
  • SamIGetPrivateData
  • SamQueryInformationUse
  • NetShareEnum -> SAM veritabanındaki parola hashlerini dump etmek için
  • ReadProcessMemory
  • Toolhelp32ReadProcessMemory

Diğer API’ler

  • CreateMutex -> Aynı anda tek bir instance çalıştırmak için
  • CreateProcess
  • ShellExecute
  • WinExec -> Belirtilen bir uygulamayı çalıştırmak için kullanılabilir.
  • System -> Sistem üzerindeki herhangi bir uygulamayı çalıştırmak için kullanılabilir.
  • CryptAcquireContext
  • EnableExecuteProtectionSupport
  • NtSetInformationProcess
  • GetSystemDefaultLangId
  • GetTempPath
  • SetFileTime
  • StartServiceCtrlDispatcher
  • IsNTAdmin
  • IsUserAnAdmin

all tags