Common API used in Malware
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Raw Sockets | WinAPI Sockets |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
Registry | File | Service |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
Name |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
Function Name | Assembly Instructions |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [Check if a process is running] | |
CreateFileW/A [Check if a file exist] |
Name | |
---|---|
VirtualAlloc | Alokacija memorije (paketari) |
VirtualProtect | Promena dozvola memorije (paketari daju dozvolu za izvršavanje sekciji) |
ReadProcessMemory | Injekcija u spoljne procese |
WriteProcessMemoryA/W | Injekcija u spoljne procese |
NtWriteVirtualMemory | |
CreateRemoteThread | Injekcija DLL/procesa... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
Function Name |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
GetAsyncKeyState() -- Snimanje tastera
SetWindowsHookEx -- Snimanje tastera
GetForeGroundWindow -- Dobijanje imena aktivnog prozora (ili veb stranice iz pretraživača)
LoadLibrary() -- Uvoz biblioteke
GetProcAddress() -- Uvoz biblioteke
CreateToolhelp32Snapshot() -- Lista aktivnih procesa
GetDC() -- Slikanje ekrana
BitBlt() -- Slikanje ekrana
InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Pristup internetu
FindResource(), LoadResource(), LockResource() -- Pristup resursima izvršnog fajla
Izvršavanje proizvoljnog DLL-a unutar drugog procesa
Pronađite proces u koji ćete injektovati zloćudni DLL: 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 zloćudni DLL: CreateRemoteThread, LoadLibrary
Ostale funkcije za korišćenje: NTCreateThreadEx, RtlCreateUserThread
Učitajte zloćudni DLL bez pozivanja normalnih Windows API poziva. DLL se mapira unutar procesa, rešava adrese uvoza, ispravlja relokacije i poziva DllMain funkciju.
Pronađite nit iz procesa i naterajte je da učita zloćudni DLL
Pronađite ciljnu nit: CreateToolhelp32Snapshot, Thread32First, Thread32Next
Otvorite nit: OpenThread
Suspendujte nit: SuspendThread
Napišite putanju do zloćudnog DLL-a unutar procesa žrtve: VirtualAllocEx, WriteProcessMemory
Nastavite nit koja učitava biblioteku: ResumeThread
Injekcija prenosivog izvršenja: Izvršni fajl će biti napisan u memoriju procesa žrtve i biće izvršen odatle.
Zloćudni softver će ukloniti legitimni kod iz memorije procesa i učitati zloćudni binarni fajl
Kreirajte novi proces: CreateProcess
Uklonite mapiranje memorije: ZwUnmapViewOfSection, NtUnmapViewOfSection
Napišite zloćudni binarni fajl u memoriju procesa: VirtualAllocEc, WriteProcessMemory
Postavite ulaznu tačku i izvršite: SetThreadContext, ResumeThread
SSDT (Tabela deskriptora sistemskih usluga) pokazuje na kernel funkcije (ntoskrnl.exe) ili GUI drajver (win32k.sys) kako bi korisnički procesi mogli da pozivaju te funkcije.
Rootkit može modifikovati ove pokazivače na adrese koje kontroliše
IRP (Paketi zahteva za ulaz/izlaz) prenose delove podataka od jednog komponente do druge. Gotovo sve u kernelu koristi IRP-ove i svaki objekat uređaja ima svoju funkcijsku tabelu koja može biti "hook-ovana": DKOM (Direktna manipulacija kernel objektima)
IAT (Tabela adresa uvoza) je korisna za rešavanje zavisnosti. Moguće je "hook-ovati" ovu tabelu kako bi se preuzela kontrola nad kodom koji će biti pozvan.
EAT (Tabela adresa izvoza) Hook-ovi. Ovi hook-ovi mogu biti napravljeni iz userland. Cilj je "hook-ovati" izvođene funkcije od strane DLL-ova.
Inline Hooks: Ova vrsta je teška za postizanje. Ovo uključuje modifikaciju koda samih funkcija. Možda stavljanjem skoka na početak ovih.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)