Common API used in Malware

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

Funksie NaamAssembly 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.

Ondersteun HackTricks

Last updated