Common API used in Malware
Try Hard Güvenlik Grubu
Genel
Ağ
Ham Soketler | WinAPI Soketleri |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
Kalıcılık
Kayıt Defteri | Dosya | Servis |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
Şifreleme
Adı |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
Anti-Analiz/VM
Fonksiyon Adı | Montaj Talimatları |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [Bir işlemin çalışıp çalışmadığını kontrol et] | |
CreateFileW/A [Bir dosyanın var olup olmadığını kontrol et] |
Gizlilik
Adı | |
---|---|
VirtualAlloc | Bellek tahsisi (sıkıştırıcılar) |
VirtualProtect | Bellek izni değiştirme (bir bölüme yürütme izni veren sıkıştırıcı) |
ReadProcessMemory | Harici işlemlere enjeksiyon |
WriteProcessMemoryA/W | Harici işlemlere enjeksiyon |
NtWriteVirtualMemory | |
CreateRemoteThread | DLL/İşlem enjeksiyonu... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
Yürütme
Fonksiyon Adı |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
Çeşitli
GetAsyncKeyState() -- Tuş kaydı
SetWindowsHookEx -- Tuş kaydı
GetForeGroundWindow -- Çalışan pencere adını al (veya bir tarayıcıdan web sitesini)
LoadLibrary() -- Kütüphane içe aktar
GetProcAddress() -- Kütüphane içe aktar
CreateToolhelp32Snapshot() -- Çalışan işlemleri listele
GetDC() -- Ekran görüntüsü
BitBlt() -- Ekran görüntüsü
InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- İnternete erişim
FindResource(), LoadResource(), LockResource() -- Yürütülebilir dosyanın kaynaklarına erişim
Kötü Amaçlı Yazılım Teknikleri
DLL Enjeksiyonu
Başka bir işlem içinde keyfi bir DLL'yi yürüt
Kötü niyetli DLL'yi enjekte etmek için işlemi bul: CreateToolhelp32Snapshot, Process32First, Process32Next
İşlemi aç: GetModuleHandle, GetProcAddress, OpenProcess
DLL'nin yolunu işlemin içine yaz: VirtualAllocEx, WriteProcessMemory
Kötü niyetli DLL'yi yükleyecek işlemde bir iş parçacığı oluştur: CreateRemoteThread, LoadLibrary
Kullanılacak diğer fonksiyonlar: NTCreateThreadEx, RtlCreateUserThread
Yansımalı DLL Enjeksiyonu
Normal Windows API çağrılarını yapmadan kötü niyetli bir DLL yükle. DLL, bir işlem içine eşlenir, içe aktarma adreslerini çözer, yer değiştirmeleri düzeltir ve DllMain işlevini çağırır.
İş Parçacığı Kaçırma
Bir işlemde bir iş parçacığını bul ve kötü niyetli bir DLL yüklemesini sağla
Hedef iş parçacığını bul: CreateToolhelp32Snapshot, Thread32First, Thread32Next
İş parçacığını aç: OpenThread
İş parçacığını askıya al: SuspendThread
Kötü niyetli DLL'nin yolunu kurban işlem içine yaz: VirtualAllocEx, WriteProcessMemory
Kütüphaneyi yükleyen iş parçacığını devam ettir: ResumeThread
PE Enjeksiyonu
Taşınabilir Yürütme Enjeksiyonu: Yürütülebilir dosya, kurban işlemin belleğine yazılacak ve oradan yürütülecek.
İşlem Boşaltma
Kötü amaçlı yazılım, işlemin belleğinden meşru kodu kaldırır ve kötü niyetli bir ikili yükler
Yeni bir işlem oluştur: CreateProcess
Belleği kaldır: ZwUnmapViewOfSection, NtUnmapViewOfSection
Kötü niyetli ikiliyi işlem belleğine yaz: VirtualAllocEc, WriteProcessMemory
Giriş noktasını ayarla ve yürüt: SetThreadContext, ResumeThread
Hooking
SSDT (Sistem Hizmeti Tanım Tablosu), kullanıcı işlemlerinin bu işlevleri (ntoskrnl.exe) veya GUI sürücüsü (win32k.sys) çağırmasını sağlayan çekirdek işlevlerine işaret eder.
Bir rootkit, bu işaretçileri kendi kontrol ettiği adreslere değiştirebilir
IRP (Giriş/Çıkış İsteği Paketleri), bir bileşenden diğerine veri parçaları iletir. Çekirdekte neredeyse her şey IRP'leri kullanır ve her aygıt nesnesinin kendi işlev tablosu vardır ve bu tablo kancalanabilir: DKOM (Doğrudan Çekirdek Nesne Manipülasyonu)
IAT (İçe Aktarma Adres Tablosu), bağımlılıkları çözmek için kullanışlıdır. Bu tabloyu kancalamak, çağrılacak kodu ele geçirmeyi sağlar.
EAT (Dışa Aktarma Adres Tablosu) Kancalar. Bu kancalar kullanıcı alanından yapılabilir. Amaç, DLL'ler tarafından ihraç edilen işlevleri kancalamaktır.
İç Kancalar: Bu tür, zor bir hedeftir. Bu, işlevlerin kodunu değiştirerek yapılır. Belki de bunu başlangıcına bir sıçrama koyarak yapabilirsiniz.
Try Hard Güvenlik Grubu
Last updated