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

8.5 KiB

Algemene API gebruik in Malware

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}

Generies

Netwerk

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

Volharding

Registrasie Lêer Diens
RegCreateKeyEx() GetTempPath() OpenSCManager
RegOpenKeyEx() CopyFile() CreateService()
RegSetValueEx() CreateFile() StartServiceCtrlDispatcher()
RegDeleteKeyEx() WriteFile()
RegGetValue() ReadFile()

Enkripsie

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

Anti-Analise/VM

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

Stealth

Naam
VirtualAlloc Allokeer geheue (packers)
VirtualProtect Verander geheue toestemming (packer gee uitvoerings toestemming aan 'n afdeling)
ReadProcessMemory Inspuiting in eksterne prosesse
WriteProcessMemoryA/W Inspuiting in eksterne prosesse
NtWriteVirtualMemory
CreateRemoteThread DLL/Proses inspuiting...
NtUnmapViewOfSection
QueueUserAPC
CreateProcessInternalA/W

Uitvoering

Funksie Naam
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 Hijacking

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. Herbegin 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 daarvandaan uitgevoer word.

Proses Hollowing

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. Ontkoppel 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 kan hierdie punte 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 (Direct Kernel Object Manipulation)
  • 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 kap.
  • 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.

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}