Common API used in Malware
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Ham Soketler | WinAPI Soketleri |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
Kayıt | Dosya | Servis |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
İsim |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
Fonksiyon Adı | Assembly Talimatları |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [Bir sürecin çalışıp çalışmadığını kontrol et] | |
CreateFileW/A [Bir dosyanın var olup olmadığını kontrol et] |
İsim | |
---|---|
VirtualAlloc | Bellek ayırma (paketleyiciler) |
VirtualProtect | Bellek izni değiştirme (paketleyici bir bölüme yürütme izni verme) |
ReadProcessMemory | Dış süreçlere enjekte etme |
WriteProcessMemoryA/W | Dış süreçlere enjekte etme |
NtWriteVirtualMemory | |
CreateRemoteThread | DLL/Süreç enjekte etme... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
Fonksiyon Adı |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
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 aktarma
GetProcAddress() -- Kütüphane içe aktarma
CreateToolhelp32Snapshot() -- Çalışan süreçleri 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
Başka bir süreç içinde rastgele bir DLL yürütün
Kötü amaçlı DLL'yi enjekte etmek için süreci bulun: CreateToolhelp32Snapshot, Process32First, Process32Next
Süreci açın: GetModuleHandle, GetProcAddress, OpenProcess
Süreç içinde DLL'nin yolunu yazın: VirtualAllocEx, WriteProcessMemory
Kötü amaçlı DLL'yi yükleyecek bir iş parçacığı oluşturun: CreateRemoteThread, LoadLibrary
Kullanılacak diğer fonksiyonlar: NTCreateThreadEx, RtlCreateUserThread
Normal Windows API çağrılarını yapmadan kötü amaçlı bir DLL yükleyin. DLL, bir süreç içinde haritalanır, ithalat adreslerini çözer, yeniden konumlandırmaları düzeltir ve DllMain fonksiyonunu çağırır.
Bir süreçten bir iş parçacığı bulun ve onu kötü amaçlı bir DLL yüklemesi yapın
Hedef iş parçacığını bulun: CreateToolhelp32Snapshot, Thread32First, Thread32Next
İş parçacığını açın: OpenThread
İş parçacığını askıya alın: SuspendThread
Kurban sürecinin içine kötü amaçlı DLL'nin yolunu yazın: VirtualAllocEx, WriteProcessMemory
Kütüphaneyi yükleyen iş parçacığını devam ettirin: ResumeThread
Taşınabilir Yürütme Enjeksiyonu: Yürütülebilir dosya, kurban sürecinin belleğine yazılacak ve oradan yürütülecektir.
Kötü amaçlı yazılım, sürecin belleğinden meşru kodu kaldıracak ve kötü amaçlı bir ikili dosya yükleyecektir.
Yeni bir süreç oluşturun: CreateProcess
Belleği boşaltın: ZwUnmapViewOfSection, NtUnmapViewOfSection
Süreç belleğine kötü amaçlı ikili dosyayı yazın: VirtualAllocEc, WriteProcessMemory
Giriş noktasını ayarlayın ve yürütün: SetThreadContext, ResumeThread
SSDT (Sistem Servis Tanımlayıcı Tablosu), kullanıcı süreçlerinin bu fonksiyonları çağırabilmesi için çekirdek fonksiyonlarına (ntoskrnl.exe) veya GUI sürücüsüne (win32k.sys) işaret eder.
Bir rootkit, bu işaretçileri kontrol ettiği adreslere değiştirebilir.
IRP (G/Ç İstek Paketleri), bir bileşenden diğerine veri parçaları iletir. Çekirdek içinde hemen hemen her şey IRP'leri kullanır ve her cihaz nesnesinin kendi işlev tablosu vardır ve bu tabloya hook yapılabilir: DKOM (Doğrudan Çekirdek Nesne Manipülasyonu)
IAT (İthalat Adres Tablosu), bağımlılıkları çözmek için yararlıdır. Bu tabloyu hooklamak, çağrılacak kodu ele geçirmek için mümkündür.
EAT (İhracat Adres Tablosu) Hook'ları. Bu hook'lar kullanıcı alanından yapılabilir. Amaç, DLL'ler tarafından ihraç edilen fonksiyonları hooklamaktır.
Inline Hook'lar: Bu türler elde edilmesi zor. Bu, fonksiyonların kendisinin kodunu değiştirmeyi içerir. Belki de bunun başına bir atlama koyarak.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)