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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
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
- Vind die proses om die kwaadwillige DLL in te spuit: CreateToolhelp32Snapshot, Process32First, Process32Next
- Maak die proses oop: GetModuleHandle, GetProcAddress, OpenProcess
- Skryf die pad na die DLL binne die proses: VirtualAllocEx, WriteProcessMemory
- 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
- Vind 'n teiken draad: CreateToolhelp32Snapshot, Thread32First, Thread32Next
- Maak die draad oop: OpenThread
- Suspend die draad: SuspendThread
- Skryf die pad na die kwaadwillige DLL binne die slagoffer proses: VirtualAllocEx, WriteProcessMemory
- 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
- Skep 'n nuwe proses: CreateProcess
- Ontkoppel die geheue: ZwUnmapViewOfSection, NtUnmapViewOfSection
- Skryf die kwaadwillige binêre in die proses geheue: VirtualAllocEc, WriteProcessMemory
- 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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.