Common API used in Malware
Probeer Hard Security Groep
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
Funksienaam | 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
Funksienaam |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
Verskeidenheid
GetAsyncKeyState() -- Sleutel log
SetWindowsHookEx -- Sleutel log
GetForeGroundWindow -- Kry die 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
Vind die proses om die skadelike 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 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 in 'n proses afgebeeld, dit sal die invoeradresse oplos, die herlokalisasies regstel en die DllMain-funksie aanroep.
Draad Kaping
Vind 'n draad van 'n proses en maak dit laai 'n skadelike DLL
Vind 'n teikendraad: CreateToolhelp32Snapshot, Thread32First, Thread32Next
Maak die draad oop: OpenThread
Stel die draad op: SuspendThread
Skryf die pad na die skadelike DLL binne die slagofferproses: VirtualAllocEx, WriteProcessMemory
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
Skep 'n nuwe proses: CreateProcess
Ontkoppel die geheue: ZwUnmapViewOfSection, NtUnmapViewOfSection
Skryf die skadelike binêre lêer in die prosesgeheue: VirtualAllocEc, WriteProcessMemory
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 wysers 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 kap.
EAT (Uitvoeradrestabel) Haak. Hierdie hake kan vanuit gebruikersruimte gedoen word. Die doel is om uitgevoerde funksies deur DLL's te haak.
Inline Hake: 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
Last updated