Common API used in Malware

HackTricks का समर्थन करें

सामान्य

नेटवर्किंग

कच्चे सॉकेट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 को दूसरी प्रक्रिया के अंदर निष्पादित करें

  1. दुर्भावनापूर्ण DLL इंजेक्ट करने के लिए प्रक्रिया का पता लगाएँ: CreateToolhelp32Snapshot, Process32First, Process32Next

  2. प्रक्रिया खोलें: GetModuleHandle, GetProcAddress, OpenProcess

  3. प्रक्रिया के अंदर DLL का पथ लिखें: VirtualAllocEx, WriteProcessMemory

  4. प्रक्रिया में एक थ्रेड बनाएं जो दुर्भावनापूर्ण DLL लोड करेगा: CreateRemoteThread, LoadLibrary

उपयोग करने के लिए अन्य फ़ंक्शन: NTCreateThreadEx, RtlCreateUserThread

रिफ्लेक्टिव DLL इंजेक्शन

सामान्य Windows API कॉल किए बिना एक दुर्भावनापूर्ण DLL लोड करें। DLL को एक प्रक्रिया के अंदर मैप किया गया है, यह आयात पते को हल करेगा, पुनर्स्थापनाओं को ठीक करेगा और DllMain फ़ंक्शन को कॉल करेगा।

थ्रेड हाईजैकिंग

एक प्रक्रिया से एक थ्रेड खोजें और इसे एक दुर्भावनापूर्ण DLL लोड करने के लिए बनाएं

  1. एक लक्षित थ्रेड खोजें: CreateToolhelp32Snapshot, Thread32First, Thread32Next

  2. थ्रेड खोलें: OpenThread

  3. थ्रेड को निलंबित करें: SuspendThread

  4. पीड़ित प्रक्रिया के अंदर दुर्भावनापूर्ण DLL का पथ लिखें: VirtualAllocEx, WriteProcessMemory

  5. पुस्तकालय लोड करते समय थ्रेड को फिर से शुरू करें: ResumeThread

PE इंजेक्शन

पोर्टेबल निष्पादन इंजेक्शन: निष्पादन योग्य को पीड़ित प्रक्रिया की मेमोरी में लिखा जाएगा और वहीं से निष्पादित किया जाएगा।

प्रक्रिया खोखलीकरण

मैलवेयर प्रक्रिया की मेमोरी से वैध कोड को अनमैप करेगा और एक दुर्भावनापूर्ण बाइनरी लोड करेगा

  1. एक नई प्रक्रिया बनाएं: CreateProcess

  2. मेमोरी को अनमैप करें: ZwUnmapViewOfSection, NtUnmapViewOfSection

  3. प्रक्रिया की मेमोरी में दुर्भावनापूर्ण बाइनरी लिखें: VirtualAllocEc, WriteProcessMemory

  4. एंट्रीपॉइंट सेट करें और निष्पादित करें: SetThreadContext, ResumeThread

हुकिंग

  • SSDT (सिस्टम सेवा वर्णन तालिका) कर्नेल फ़ंक्शंस (ntoskrnl.exe) या GUI ड्राइवर (win32k.sys) की ओर इशारा करता है ताकि उपयोगकर्ता प्रक्रियाएँ इन फ़ंक्शंस को कॉल कर सकें।

  • एक रूटकिट इन प्वाइंटर्स को उन पते पर संशोधित कर सकता है जिन्हें वह नियंत्रित करता है

  • IRP (I/O अनुरोध पैकेट) एक घटक से दूसरे घटक में डेटा के टुकड़े भेजते हैं। कर्नेल में लगभग सब कुछ IRP का उपयोग करता है और प्रत्येक डिवाइस ऑब्जेक्ट की अपनी फ़ंक्शन तालिका होती है जिसे हुक किया जा सकता है: DKOM (डायरेक्ट कर्नेल ऑब्जेक्ट मैनिपुलेशन)

  • IAT (आयात पता तालिका) निर्भरताओं को हल करने के लिए उपयोगी है। इसे हुक करना संभव है ताकि उस कोड को हाईजैक किया जा सके जिसे कॉल किया जाएगा।

  • EAT (निर्यात पता तालिका) हुक। ये हुक यूजरलैंड से किए जा सकते हैं। लक्ष्य DLL द्वारा निर्यातित फ़ंक्शंस को हुक करना है।

  • इनलाइन हुक: इस प्रकार को प्राप्त करना कठिन है। इसमें फ़ंक्शंस के कोड को संशोधित करना शामिल है। शायद इसके शुरुआत में एक जंप डालकर।

HackTricks का समर्थन करें

Last updated