Algemene API's wat in Malware gebruik word

Reading time: 4 minutes

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Generies

Netwerk

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

Volharding

RegistrasieLêerDiens
RegCreateKeyEx()GetTempPath()OpenSCManager
RegOpenKeyEx()CopyFile()CreateService()
RegSetValueEx()CreateFile()StartServiceCtrlDispatcher()
RegDeleteKeyEx()WriteFile()
RegGetValue()ReadFile()

Enkripsie

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

Anti-Analise/VM

FunksienaamAssemblie Instruksies
IsDebuggerPresent()CPUID()
GetSystemInfo()IN()
GlobalMemoryStatusEx()
GetVersion()
CreateToolhelp32Snapshot [Kontroleer of 'n proses loop]
CreateFileW/A [Kontroleer of 'n lêer bestaan]

Stealth

Naam
VirtualAllocToewys geheue (packers)
VirtualProtectVerander geheue toestemming (packer gee uitvoerings toestemming aan 'n afdeling)
ReadProcessMemoryInspuiting in eksterne prosesse
WriteProcessMemoryA/WInspuiting in eksterne prosesse
NtWriteVirtualMemory
CreateRemoteThreadDLL/Proses inspuiting...
NtUnmapViewOfSection
QueueUserAPC
CreateProcessInternalA/W

Uitvoering

Funksienaam
CreateProcessA/W
ShellExecute
WinExec
ResumeThread
NtResumeThread

Divers

  • GetAsyncKeyState() -- Sleutel logging
  • SetWindowsHookEx -- Sleutel logging
  • GetForeGroundWindow -- Kry die naam van die lopende venster (of die webwerf van 'n blaaier)
  • LoadLibrary() -- Importeer biblioteek
  • GetProcAddress() -- Importeer biblioteek
  • CreateToolhelp32Snapshot() -- Lys lopende prosesse
  • GetDC() -- Skermskoot
  • BitBlt() -- Skermskoot
  • InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Toegang tot die Internet
  • FindResource(), LoadResource(), LockResource() -- Toegang tot hulpbronne van die uitvoerbare

Malware Tegnieke

DLL Inspuiting

Voer 'n arbitrêre DLL binne 'n ander proses uit

  1. Vind die proses om die kwaadwillige DLL in te spuit: CreateToolhelp32Snapshot, Process32First, Process32Next
  2. Maak die proses oop: GetModuleHandle, GetProcAddress, OpenProcess
  3. Skryf die pad na die DLL binne die proses: VirtualAllocEx, WriteProcessMemory
  4. Skep 'n draad in die proses wat die kwaadwillige DLL sal laai: CreateRemoteThread, LoadLibrary

Ander funksies om te gebruik: NTCreateThreadEx, RtlCreateUserThread

Reflektiewe DLL Inspuiting

Laai 'n kwaadwillige DLL sonder om normale Windows API-oproepe te doen.
Die DLL word binne 'n proses gemap, dit sal die invoeradresse oplos, die herlokasies regmaak en die DllMain-funksie aanroep.

Draad Kaap

Vind 'n draad van 'n proses en laat dit 'n kwaadwillige DLL laai

  1. Vind 'n teiken draad: CreateToolhelp32Snapshot, Thread32First, Thread32Next
  2. Maak die draad oop: OpenThread
  3. Suspend die draad: SuspendThread
  4. Skryf die pad na die kwaadwillige DLL binne die slagoffer proses: VirtualAllocEx, WriteProcessMemory
  5. Herresume die draad wat die biblioteek laai: ResumeThread

PE Inspuiting

Portabele Uitvoering Inspuiting: Die uitvoerbare sal in die geheue van die slagoffer proses geskryf word en dit sal van daar af uitgevoer word.

Proses Holing

Die malware sal die wettige kode uit die geheue van die proses onttrek en 'n kwaadwillige binêre laai

  1. Skep 'n nuwe proses: CreateProcess
  2. Onttrek die geheue: ZwUnmapViewOfSection, NtUnmapViewOfSection
  3. Skryf die kwaadwillige binêre in die proses geheue: VirtualAllocEc, WriteProcessMemory
  4. Stel die ingangspunt in en voer uit: SetThreadContext, ResumeThread

Hooking

  • Die SSDT (System Service Descriptor Table) wys na kernfunksies (ntoskrnl.exe) of GUI bestuurder (win32k.sys) sodat gebruikersprosesse hierdie funksies kan aanroep.
  • 'n Rootkit mag hierdie wysers na adresse wat hy beheer, verander
  • IRP (I/O Request Packets) stuur stukke data van een komponent na 'n ander. Byna alles in die kern gebruik IRP's en elke toestel objek het sy eie funksietabel wat gehook kan word: DKOM (Direkte Kern Objekt Manipulasie)
  • Die IAT (Import Address Table) is nuttig om afhanklikhede op te los. Dit is moontlik om hierdie tabel te hook om die kode wat aangeroep sal word, te kaap.
  • EAT (Export Address Table) Hooks. Hierdie hooks kan vanaf userland gedoen word. Die doel is om geexporteerde funksies deur DLL's te hook.
  • Inline Hooks: Hierdie tipe is moeilik om te bereik. Dit behels die verandering van die kode van die funksies self. Miskien deur 'n sprongetjie aan die begin hiervan te plaas.

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks