Common API used in Malware
सामान्य
नेटवर्किंग
कच्चे सॉकेट | WinAPI सॉकेट |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
स्थिरता
रजिस्ट्री | फ़ाइल | सेवा |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
एन्क्रिप्शन
नाम |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
एंटी-विश्लेषण/वीएम
फ़ंक्शन नाम | असेंबली निर्देश |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [जांचें कि कोई प्रक्रिया चल रही है] | |
CreateFileW/A [जांचें कि कोई फ़ाइल मौजूद है] |
छिपाव
नाम | |
---|---|
VirtualAlloc | मेमोरी आवंटित करें (पैकर) |
VirtualProtect | मेमोरी अनुमति बदलें (पैकर एक अनुभाग को निष्पादन अनुमति दे रहा है) |
ReadProcessMemory | बाहरी प्रक्रियाओं में इंजेक्शन |
WriteProcessMemoryA/W | बाहरी प्रक्रियाओं में इंजेक्शन |
NtWriteVirtualMemory | |
CreateRemoteThread | DLL/प्रक्रिया इंजेक्शन... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
निष्पादन
फ़ंक्शन नाम |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
विविध
GetAsyncKeyState() -- की लॉगिंग
SetWindowsHookEx -- की लॉगिंग
GetForeGroundWindow -- चल रहे विंडो का नाम प्राप्त करें (या ब्राउज़र से वेबसाइट)
LoadLibrary() -- पुस्तकालय आयात करें
GetProcAddress() -- पुस्तकालय आयात करें
CreateToolhelp32Snapshot() -- चल रही प्रक्रियाओं की सूची
GetDC() -- स्क्रीनशॉट
BitBlt() -- स्क्रीनशॉट
InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- इंटरनेट तक पहुँचें
FindResource(), LoadResource(), LockResource() -- निष्पादन योग्य के संसाधनों तक पहुँचें
मैलवेयर तकनीकें
DLL इंजेक्शन
एक मनमाना DLL को दूसरी प्रक्रिया के अंदर निष्पादित करें
दुर्भावनापूर्ण DLL इंजेक्ट करने के लिए प्रक्रिया का पता लगाएँ: CreateToolhelp32Snapshot, Process32First, Process32Next
प्रक्रिया खोलें: GetModuleHandle, GetProcAddress, OpenProcess
प्रक्रिया के अंदर DLL का पथ लिखें: VirtualAllocEx, WriteProcessMemory
प्रक्रिया में एक थ्रेड बनाएं जो दुर्भावनापूर्ण DLL लोड करेगा: CreateRemoteThread, LoadLibrary
उपयोग करने के लिए अन्य फ़ंक्शन: NTCreateThreadEx, RtlCreateUserThread
रिफ्लेक्टिव DLL इंजेक्शन
सामान्य Windows API कॉल किए बिना एक दुर्भावनापूर्ण DLL लोड करें। DLL को एक प्रक्रिया के अंदर मैप किया गया है, यह आयात पते को हल करेगा, पुनर्स्थापनाओं को ठीक करेगा और DllMain फ़ंक्शन को कॉल करेगा।
थ्रेड हाईजैकिंग
एक प्रक्रिया से एक थ्रेड खोजें और इसे एक दुर्भावनापूर्ण DLL लोड करने के लिए बनाएं
एक लक्षित थ्रेड खोजें: CreateToolhelp32Snapshot, Thread32First, Thread32Next
थ्रेड खोलें: OpenThread
थ्रेड को निलंबित करें: SuspendThread
पीड़ित प्रक्रिया के अंदर दुर्भावनापूर्ण DLL का पथ लिखें: VirtualAllocEx, WriteProcessMemory
पुस्तकालय लोड करते समय थ्रेड को फिर से शुरू करें: ResumeThread
PE इंजेक्शन
पोर्टेबल निष्पादन इंजेक्शन: निष्पादन योग्य को पीड़ित प्रक्रिया की मेमोरी में लिखा जाएगा और वहीं से निष्पादित किया जाएगा।
प्रक्रिया खोखलीकरण
मैलवेयर प्रक्रिया की मेमोरी से वैध कोड को अनमैप करेगा और एक दुर्भावनापूर्ण बाइनरी लोड करेगा
एक नई प्रक्रिया बनाएं: CreateProcess
मेमोरी को अनमैप करें: ZwUnmapViewOfSection, NtUnmapViewOfSection
प्रक्रिया की मेमोरी में दुर्भावनापूर्ण बाइनरी लिखें: VirtualAllocEc, WriteProcessMemory
एंट्रीपॉइंट सेट करें और निष्पादित करें: SetThreadContext, ResumeThread
हुकिंग
SSDT (सिस्टम सेवा वर्णन तालिका) कर्नेल फ़ंक्शंस (ntoskrnl.exe) या GUI ड्राइवर (win32k.sys) की ओर इशारा करता है ताकि उपयोगकर्ता प्रक्रियाएँ इन फ़ंक्शंस को कॉल कर सकें।
एक रूटकिट इन प्वाइंटर्स को उन पते पर संशोधित कर सकता है जिन्हें वह नियंत्रित करता है
IRP (I/O अनुरोध पैकेट) एक घटक से दूसरे घटक में डेटा के टुकड़े भेजते हैं। कर्नेल में लगभग सब कुछ IRP का उपयोग करता है और प्रत्येक डिवाइस ऑब्जेक्ट की अपनी फ़ंक्शन तालिका होती है जिसे हुक किया जा सकता है: DKOM (डायरेक्ट कर्नेल ऑब्जेक्ट मैनिपुलेशन)
IAT (आयात पता तालिका) निर्भरताओं को हल करने के लिए उपयोगी है। इसे हुक करना संभव है ताकि उस कोड को हाईजैक किया जा सके जिसे कॉल किया जाएगा।
EAT (निर्यात पता तालिका) हुक। ये हुक यूजरलैंड से किए जा सकते हैं। लक्ष्य DLL द्वारा निर्यातित फ़ंक्शंस को हुक करना है।
इनलाइन हुक: इस प्रकार को प्राप्त करना कठिन है। इसमें फ़ंक्शंस के कोड को संशोधित करना शामिल है। शायद इसके शुरुआत में एक जंप डालकर।
Last updated