Common API used in Malware
Kikundi cha Usalama cha Kujitahidi Kwa Bidii
Kawaida
Uunganishaji
Sockets za Moja kwa Moja | Sockets za WinAPI |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
Uthabiti
Usajili | Faili | Huduma |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
Ufichaji
Jina |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
Kupinga Uchambuzi/VM
Jina la Kazi | Maagizo ya Mkusanyiko |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [Angalia ikiwa mchakato unakimbia] | |
CreateFileW/A [Angalia ikiwa faili ipo] |
Kujificha
Jina | |
---|---|
VirtualAlloc | Alloc kumbukumbu (pakiti) |
VirtualProtect | Badilisha ruhusa ya kumbukumbu (pakiti inayotoa ruhusa ya utekelezaji kwa sehemu) |
ReadProcessMemory | Uingizaji kwenye michakato ya nje |
WriteProcessMemoryA/W | Uingizaji kwenye michakato ya nje |
NtWriteVirtualMemory | |
CreateRemoteThread | Uingizaji wa DLL/Mchakato... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
Utekelezaji
Jina la Kazi |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
Mbalimbali
GetAsyncKeyState() -- Udukuzi wa funguo
SetWindowsHookEx -- Udukuzi wa funguo
GetForeGroundWindow -- Pata jina la dirisha linaloendesha (au tovuti kutoka kwa kivinjari)
LoadLibrary() -- Ingiza maktaba
GetProcAddress() -- Ingiza maktaba
CreateToolhelp32Snapshot() -- Orodhesha michakato inayoendesha
GetDC() -- Piga skrini
BitBlt() -- Piga skrini
InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Fikia Mtandao
FindResource(), LoadResource(), LockResource() -- Fikia rasilimali za kutekelezeka
Mbinu za Programu Hasidi
Uingizaji wa DLL
Tekeleza DLL isiyojulikana ndani ya mchakato mwingine
Tafuta mchakato wa kuingiza DLL hasidi: CreateToolhelp32Snapshot, Process32First, Process32Next
Fungua mchakato: GetModuleHandle, GetProcAddress, OpenProcess
Andika njia ya DLL ndani ya mchakato: VirtualAllocEx, WriteProcessMemory
Unda mnyororo katika mchakato ambao utapakia DLL hasidi: CreateRemoteThread, LoadLibrary
Vipengele vingine vya kutumia: NTCreateThreadEx, RtlCreateUserThread
Uingizaji wa DLL wa Kielekezi
Pakia DLL hasidi bila kuita simu za kawaida za API za Windows. DLL inaorodheshwa ndani ya mchakato, itatatua anwani za uingizaji, kurekebisha mahali na kuita kazi ya DllMain.
Utekapishaji wa Mnyororo
Pata mnyororo kutoka kwa mchakato na ufanye upakie DLL hasidi
Pata mnyororo wa lengo: CreateToolhelp32Snapshot, Thread32First, Thread32Next
Fungua mnyororo: OpenThread
Sitishe mnyororo: SuspendThread
Andika njia ya DLL hasidi ndani ya mchakato wa mwathiriwa: VirtualAllocEx, WriteProcessMemory
Rudisha mnyororo wa kuanzisha maktaba: ResumeThread
Uingizaji wa PE
Uingizaji wa Utekelezaji wa Portable: Programu itaandikwa kwenye kumbukumbu ya mchakato wa mwathiriwa na itatekelezwa kutoka hapo.
Ufyonzaji wa Mchakato
Programu hasidi itafuta msimbo halali kutoka kumbukumbu ya mchakato na kupakia faili hasidi
Unda mchakato mpya: CreateProcess
Futa kumbukumbu: ZwUnmapViewOfSection, NtUnmapViewOfSection
Andika faili hasidi kwenye kumbukumbu ya mchakato: VirtualAllocEc, WriteProcessMemory
Weka kuingia na tekeleza: SetThreadContext, ResumeThread
Kufunga
SSDT (System Service Descriptor Table) inaelekeza kwa kazi za msingi za kernel (ntoskrnl.exe) au dereva wa GUI (win32k.sys) ili michakato ya mtumiaji iweze kuita kazi hizi.
Rootkit inaweza kurekebisha alama hizi kwa anwani anazodhibiti
IRP (I/O Request Packets) hupitisha vipande vya data kutoka kwa sehemu moja hadi nyingine. Karibu kila kitu katika kernel hutumia IRPs na kila kifaa kina kichupo chake cha kazi ambacho kinaweza kufungwa: DKOM (Udukuzi wa Moja kwa Moja wa Vitu vya Kernel)
IAT (Import Address Table) ni muhimu kwa kutatua mahitaji. Inawezekana kufunga kichupo hiki ili kuteka kificho kitakachoitwa.
EAT (Export Address Table) Kufunga. Kufunga hii inaweza kufanywa kutoka kwa userland. Lengo ni kufunga kazi zilizoagizwa na DLLs.
Kufunga ya Ndani: Aina hii ni ngumu kufikia. Hii inahusisha kurekebisha msimbo wa kazi yenyewe. Labda kwa kuweka kuruka mwanzoni mwa hii.
Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Last updated