Common API used in Malware
Try Hard Security Group
Generičko
Mreža
Raw Sockets | WinAPI Sockets |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
Upornost
Registar | Fajl | Servis |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
Enkripcija
Ime |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
Anti-Analiza/VM
Ime Funkcije | Skup Instrukcija |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [Provera da li je proces pokrenut] | |
CreateFileW/A [Provera da li fajl postoji] |
Skrivanje
Ime | |
---|---|
VirtualAlloc | Alocira memoriju (paketi) |
VirtualProtect | Menja dozvole memorije (paket daje dozvolu za izvršenje sekciji) |
ReadProcessMemory | Ubrizgavanje u spoljne procese |
WriteProcessMemoryA/W | Ubrizgavanje u spoljne procese |
NtWriteVirtualMemory | |
CreateRemoteThread | Ubrizgavanje DLL/procesa... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
Izvršenje
Ime Funkcije |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
Razno
GetAsyncKeyState() -- Snimanje tastera
SetWindowsHookEx -- Snimanje tastera
GetForeGroundWindow -- Dobijanje imena pokrenutog prozora (ili sajta iz pretraživača)
LoadLibrary() -- Uvoz biblioteke
GetProcAddress() -- Uvoz biblioteke
CreateToolhelp32Snapshot() -- Lista pokrenutih procesa
GetDC() -- Snimak ekrana
BitBlt() -- Snimak ekrana
InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Pristup internetu
FindResource(), LoadResource(), LockResource() -- Pristup resursima iz izvršnog fajla
Tehnike Malvera
Ubrizgavanje DLL-a
Izvršava proizvoljni DLL unutar drugog procesa
Locirajte proces za ubrizgavanje zlonamernog DLL-a: CreateToolhelp32Snapshot, Process32First, Process32Next
Otvorite proces: GetModuleHandle, GetProcAddress, OpenProcess
Napišite putanju do DLL-a unutar procesa: VirtualAllocEx, WriteProcessMemory
Kreirajte nit u procesu koja će učitati zlonamerni DLL: CreateRemoteThread, LoadLibrary
Druge funkcije za korišćenje: NTCreateThreadEx, RtlCreateUserThread
Reflektivno Ubrizgavanje DLL-a
Učitava zlonamerni DLL bez pozivanja normalnih Windows API poziva. DLL je mapiran unutar procesa, rešavaće adrese uvoza, popravljaće premeštanja i pozvaće funkciju DllMain.
Preuzimanje Niti
Pronađite nit iz procesa i naterajte je da učita zlonamerni DLL
Pronađite ciljnu nit: CreateToolhelp32Snapshot, Thread32First, Thread32Next
Otvorite nit: OpenThread
Pauzirajte nit: SuspendThread
Napišite putanju do zlonamernog DLL-a unutar procesa žrtve: VirtualAllocEx, WriteProcessMemory
Nastavite nit koja učitava biblioteku: ResumeThread
PE Ubrizgavanje
Ubrizgavanje Pokretne Izvršne Datoteke: Izvršna datoteka će biti upisana u memoriju procesa žrtve i izvršena odande.
Procesno Ispraznjenje
Malver će ukloniti legitimni kod iz memorije procesa i učitati zlonamerni binarni fajl
Kreirajte novi proces: CreateProcess
Uklonite memoriju: ZwUnmapViewOfSection, NtUnmapViewOfSection
Napišite zlonamerni binarni fajl u memoriju procesa: VirtualAllocEc, WriteProcessMemory
Postavite tačku ulaska i izvršite: SetThreadContext, ResumeThread
Hakovanje
SSDT (Tabela Deskriptora Sistemskih Servisa) pokazuje na jezgro funkcija (ntoskrnl.exe) ili GUI drajver (win32k.sys) tako da korisnički procesi mogu pozvati ove funkcije.
Rootkit može modifikovati ove pokazivače na adrese koje kontroliše
IRP (I/O Zahtev Paketi) prenose delove podataka od jednog komponenta do drugog. Skoro sve u jezgru koristi IRP-ove i svaki objekat uređaja ima svoju funkcionalnu tabelu koja može biti hakovana: DKOM (Direktno Manipulisanje Objektima Jezgra)
IAT (Tabela Adresa Uvoza) je korisna za rešavanje zavisnosti. Moguće je hakovati ovu tabelu kako bi se preotela koda koja će biti pozvana.
EAT (Tabela Adresa Izvoza) Hakovi. Ovi hakovi mogu biti urađeni iz userland-a. Cilj je hakovati izvožene funkcije od strane DLL-ova.
Inline Hakovi: Ovaj tip je teško postići. Uključuje modifikovanje koda samih funkcija. Možda postavljanjem skoka na početku ovoga.
Try Hard Security Group
Last updated