hacktricks/reversing/common-api-used-in-malware.md

7.3 KiB

Često korišćene API u Malveru

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Generičko

Mreža

Sirovi 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 Injekcija u spoljne procese
WriteProcessMemoryA/W Injekcija u spoljne procese
NtWriteVirtualMemory
CreateRemoteThread DLL/Injekcija 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

DLL Injekcija

Izvršava proizvoljnu DLL unutar drugog procesa

  1. Locirajte proces za injektovanje zlonamerne DLL: CreateToolhelp32Snapshot, Process32First, Process32Next
  2. Otvorite proces: GetModuleHandle, GetProcAddress, OpenProcess
  3. Napišite putanju do DLL unutar procesa: VirtualAllocEx, WriteProcessMemory
  4. Kreirajte nit u procesu koja će učitati zlonamernu DLL: CreateRemoteThread, LoadLibrary

Druge funkcije za korišćenje: NTCreateThreadEx, RtlCreateUserThread

Reflektivna DLL Injekcija

Učitava zlonamernu 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 zlonamernu DLL

  1. Pronađite ciljnu nit: CreateToolhelp32Snapshot, Thread32First, Thread32Next
  2. Otvorite nit: OpenThread
  3. Pauzirajte nit: SuspendThread
  4. Napišite putanju do zlonamerne DLL unutar žrtvenog procesa: VirtualAllocEx, WriteProcessMemory
  5. Nastavite nit koja učitava biblioteku: ResumeThread

PE Injekcija

Injekcija Pokretne Izvršne Datoteke: Izvršna datoteka će biti napisana u memoriji žrtvenog procesa i izvršena odande.

Procesno Ispraznjenje

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

  1. Kreirajte novi proces: CreateProcess
  2. Ispraznite memoriju: ZwUnmapViewOfSection, NtUnmapViewOfSection
  3. Napišite zlonamerni binarni fajl u memoriju procesa: VirtualAllocEc, WriteProcessMemory
  4. Postavite tačku ulaska i izvršite: SetThreadContext, ResumeThread

Hakovanje

  • SSDT (Tabela Deskriptora Sistemskih Servisa) pokazuje na funkcije jezgra (ntoskrnl.exe) ili GUI drajvera (win32k.sys) tako da korisnički procesi mogu pozvati ove funkcije.
  • Rootkit može modifikovati ove pokazivače na adrese koje kontroliše
  • IRP (Paket zahteva za I/O) prenose delove podataka iz jedne komponente u drugu. 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 preusmerio kod koji će biti pozvan.
  • 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.