Uobičajeni API korišćeni u malveru

Reading time: 4 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Generički

Mrežno

Raw SocketsWinAPI Sockets
socket()WSAStratup()
bind()bind()
listen()listen()
accept()accept()
connect()connect()
read()/recv()recv()
write()send()
shutdown()WSACleanup()

Postojanost

RegistryFileService
RegCreateKeyEx()GetTempPath()OpenSCManager
RegOpenKeyEx()CopyFile()CreateService()
RegSetValueEx()CreateFile()StartServiceCtrlDispatcher()
RegDeleteKeyEx()WriteFile()
RegGetValue()ReadFile()

Enkripcija

Name
WinCrypt
CryptAcquireContext()
CryptGenKey()
CryptDeriveKey()
CryptDecrypt()
CryptReleaseContext()

Anti-analiza/VM

Function NameAssembly Instructions
IsDebuggerPresent()CPUID()
GetSystemInfo()IN()
GlobalMemoryStatusEx()
GetVersion()
CreateToolhelp32Snapshot [Check if a process is running]
CreateFileW/A [Check if a file exist]

Nevidljivost

Name
VirtualAllocAlokacija memorije (paketari)
VirtualProtectPromena dozvole memorije (paketari daju dozvolu za izvršavanje sekciji)
ReadProcessMemoryInjekcija u spoljne procese
WriteProcessMemoryA/WInjekcija u spoljne procese
NtWriteVirtualMemory
CreateRemoteThreadDLL/injekcija procesa...
NtUnmapViewOfSection
QueueUserAPC
CreateProcessInternalA/W

Izvršenje

Function Name
CreateProcessA/W
ShellExecute
WinExec
ResumeThread
NtResumeThread

Razno

  • 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

Tehnike malvera

DLL Injekcija

Izvršavanje proizvoljnog DLL-a unutar drugog procesa

  1. Pronađite proces u koji ćete injektovati zloćudni DLL: CreateToolhelp32Snapshot, Process32First, Process32Next
  2. Otvorite proces: GetModuleHandle, GetProcAddress, OpenProcess
  3. Napišite putanju do DLL-a unutar procesa: VirtualAllocEx, WriteProcessMemory
  4. Kreirajte nit u procesu koja će učitati zloćudni DLL: CreateRemoteThread, LoadLibrary

Druge funkcije za korišćenje: NTCreateThreadEx, RtlCreateUserThread

Reflektivna DLL Injekcija

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.

Otimanje niti

Pronađite nit iz procesa i naterajte je da učita zloćudni DLL

  1. Pronađite ciljnu nit: CreateToolhelp32Snapshot, Thread32First, Thread32Next
  2. Otvorite nit: OpenThread
  3. Suspendujte nit: SuspendThread
  4. Napišite putanju do zloćudnog DLL-a unutar procesa žrtve: VirtualAllocEx, WriteProcessMemory
  5. Nastavite nit koja učitava biblioteku: ResumeThread

PE Injekcija

Injekcija prenosivog izvršenja: Izvršni fajl će biti napisan u memoriju procesa žrtve i biće izvršen odatle.

Hollowing procesa

Malver će ukloniti legitimni kod iz memorije procesa i učitati zloćudni binarni fajl

  1. Kreirajte novi proces: CreateProcess
  2. Uklonite mapiranje memorije: ZwUnmapViewOfSection, NtUnmapViewOfSection
  3. Napišite zloćudni binarni fajl u memoriju procesa: VirtualAllocEc, WriteProcessMemory
  4. Postavite ulaznu tačku i izvršite: SetThreadContext, ResumeThread

Hooking

  • SSDT (Tabela deskriptora sistemskih usluga) upućuje na kernel funkcije (ntoskrnl.exe) ili GUI drajver (win32k.sys) kako bi korisnički procesi mogli pozivati ove 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 otela 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 Hook-ovi: Ova vrsta je teška za postizanje. Ovo uključuje modifikaciju koda samih funkcija. Možda stavljanjem skoka na početak ovih.

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks