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

9 KiB

Algemene API wat in Malware gebruik word

Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Probeer Hard Security Groep

{% embed url="https://discord.gg/tryhardsecurity" %}


Generies

Netwerke

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

Volharding

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

Versleuteling

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

Anti-Analise/VM

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

Steelsheid

Naam
VirtualAlloc Allokasie van geheue (pakkers)
VirtualProtect Verander geheue toestemming (pakker gee uitvoeringsreg aan 'n afdeling)
ReadProcessMemory Inspruiting in eksterne prosesse
WriteProcessMemoryA/W Inspruiting in eksterne prosesse
NtWriteVirtualMemory
CreateRemoteThread DLL/Proses inspuiting...
NtUnmapViewOfSection
QueueUserAPC
CreateProcessInternalA/W

Uitvoering

Funksie Naam
CreateProcessA/W
ShellExecute
WinExec
ResumeThread
NtResumeThread

Verskeidenheid

  • GetAsyncKeyState() -- Sleutel log
  • SetWindowsHookEx -- Sleutel log
  • GetForeGroundWindow -- Kry lopende vensternaam (of die webwerf van 'n blaaier)
  • LoadLibrary() -- Importeer biblioteek
  • GetProcAddress() -- Importeer biblioteek
  • CreateToolhelp32Snapshot() -- Lys lopende prosesse
  • GetDC() -- Skermkiekie
  • BitBlt() -- Skermkiekie
  • InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Toegang tot die internet
  • FindResource(), LoadResource(), LockResource() -- Toegang tot hulpbronne van die uitvoerbare lêer

Malware Tegnieke

DLL Inspruiting

Voer 'n willekeurige DLL binne 'n ander proses uit

  1. Vind die proses om die skadelike 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 skadelike DLL sal laai: CreateRemoteThread, LoadLibrary

Ander funksies om te gebruik: NTCreateThreadEx, RtlCreateUserThread

Reflektiewe DLL Inspruiting

Laai 'n skadelike DLL sonder om normale Windows API-oproepe te maak.
Die DLL word binne 'n proses afgebeeld, dit sal die invoeradresse oplos, die herlokalisasies regstel en die DllMain-funksie aanroep.

Draad Ontvoering

Vind 'n draad van 'n proses en maak dit 'n skadelike DLL laai

  1. Vind 'n teikendraad: CreateToolhelp32Snapshot, Thread32First, Thread32Next
  2. Maak die draad oop: OpenThread
  3. Stel die draad op: SuspendThread
  4. Skryf die pad na die skadelike DLL binne die slagofferproses: VirtualAllocEx, WriteProcessMemory
  5. Hervat die draad wat die biblioteek laai: ResumeThread

PE Inspruiting

Portable Uitvoering Inspruiting: Die uitvoerbare lêer sal in die geheue van die slagofferproses geskryf word en van daar af uitgevoer word.

Proses Uitholling

Die malware sal die wettige kode van die geheue van die proses afkoppel en 'n skadelike binêre lêer laai

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

Haak

  • Die SSDT (System Service Descriptor Table) wys na kernelfunksies (ntoskrnl.exe) of GUI-bestuurder (win32k.sys) sodat gebruikersprosesse hierdie funksies kan aanroep.
  • 'n Rootkit kan hierdie wysigers na adresse wat hy beheer, wysig
  • IRP (I/O Aanvraagpakkette) stuur stukke data van die een komponent na die ander. Amper alles in die kernel gebruik IRPs en elke toestelobjek het sy eie funksietabel wat gehaak kan word: DKOM (Direkte Kernelobjekmanipulasie)
  • Die IAT (Invoeradrestabel) is nuttig om afhanklikhede op te los. Dit is moontlik om hierdie tabel te haak om die kode wat geroep sal word, te ontvoer.
  • EAT (Uitvoeradrestabel) Haak. Hierdie haak kan vanuit gebruikersruimte gedoen word. Die doel is om uitgevoerde funksies deur DLLs te haak.
  • Inline Haaksele: Hierdie tipe is moeilik om te bereik. Dit behels die wysiging van die kode van die funksies self. Dalk deur 'n sprong aan die begin van hierdie te plaas.

Probeer Hard Security Groep

{% embed url="https://discord.gg/tryhardsecurity" %}

Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: