Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
TamperingSyscalls — C++ लाइब्रेरी जो हार्डवेयर ब्रेकपॉइंट्स और एक्सेप्शन हैंडलर्स का उपयोग करके Windows syscall तर्कों को पुनः प्राप्त करती है और स्पूफ करती है, ताकि EDR टेलीमेट्री को विफल किया जा सके। | Kitploit
उपकरण/GitHubGitHub/rad9800/tamperingsyscalls
आईडीएस/आईपीएस से बचनापोस्ट-शोषणरेड टीमिंगपेलोड डेवलपमेंट
GitHubrad9800/tamperingsyscalls

TamperingSyscalls

C++ लाइब्रेरी जो हार्डवेयर ब्रेकपॉइंट्स और एक्सेप्शन हैंडलर्स का उपयोग करके Windows syscall तर्कों को पुनः प्राप्त करती है और स्पूफ करती है, ताकि EDR टेलीमेट्री को विफल किया जा सके।

रिपॉजिटरी देखें
508764 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

TamperingSyscalls

TamperingSyscalls एक 2-भाग वाला नया प्रोजेक्ट है जिसमें argument spoofing और syscall retrieval शामिल हैं, जो दोनों EDRs को विफल करने के लिए EH का दुरुपयोग करते हैं। यह प्रोजेक्ट इन दोनों परियोजनाओं को शामिल करता है ताकि direct syscalls का एक वैकल्पिक समाधान प्रदान किया जा सके।

Syscalls के साथ छेड़छाड़।

  1. एक ग्लोबल EH सेट करें जिसका उपयोग बाद में किया जाएगा।
root@kitploit:~
SetUnhandledExceptionFilter( OneShotHardwareBreakpointHandler );
  1. Dr0 रजिस्टर पर 0f05 बाइट्स वाले syscall निर्देश के पते पर एक हार्डवेयर ब्रेकपॉइंट सेट करें। हम इस त्वरित मेमोरी बाइट खोज के साथ syscall stub का पता लगा सकते हैं।
root@kitploit:~
BYTE stub[] = { 0x0F, 0x05 };
for( unsigned int i = 0; i < (unsigned int)25; i++ )
{
	if( memcmp( (LPVOID)((DWORD_PTR)function + i), stub, 2 ) == 0 ) {
		return (LPVOID)((DWORD_PTR)function + i);
	}
}
  1. फिर हम इस फ़ंक्शन को NULL पास करते हुए <=4 तर्कों के लिए कॉल कर सकते हैं (जो अधिक महत्वपूर्ण तर्क होते हैं जिनमें प्रोसेस हैंडल आदि जैसी जानकारी होती है)। हम EnumState को इस फ़ंक्शन के लिए संबंधित Enum पर भी सेट करते हैं (ताकि हम बाद में तर्कों को ठीक कर सकें)।
  2. जबकि EDR को हमारे तर्कों का पूर्ण आंतरिक निरीक्षण है, वह आत्मविश्वास से यह निर्णय नहीं ले सकता कि हम एक दुर्भावनापूर्ण कार्य कर रहे हैं, क्योंकि हमने पहले <=4 तर्कों के रूप में NULL पास किया है।
  3. EDR फिर syscall नंबर (SSN) लौटाएगा और इसे RAX में संग्रहीत करेगा। यदि आप केवल syscalls प्राप्त करने में रुचि रखते हैं, इस रिपॉजिटरी की stripped शाखा देखें।
  4. प्रोग्राम फिर syscall निर्देश { 0x0F, 0x05 } में प्रवाहित होता है, जो पहले से सेट किए गए ब्रेकपॉइंट को हिट करता है। यह फिर एक SINGLE_STEP अपवाद फेंकेगा, जिसे हमने चरण 1 में सेटअप किए गए अपवाद हैंडलर द्वारा संभाला जाएगा।
root@kitploit:~
if( ExceptionInfo->ExceptionRecord->ExceptionCode == STATUS_SINGLE_STEP )
  1. यह अपवाद हैंडलर Dr0 के लिए हार्डवेयर ब्रेकपॉइंट को केवल तभी अक्षम करेगा जब Dr0 और RIP मेल खाते हैं, Dr0 रजिस्टर के मान को 0 पर सेट करके (जो वर्तमान RIP होना चाहिए)।
root@kitploit:~
if( ExceptionInfo->ExceptionRecord->ExceptionCode == STATUS_SINGLE_STEP )
{
	if( ExceptionInfo->ContextRecord->Dr7 & 1 ) {
		if( ExceptionInfo->ContextRecord->Rip == ExceptionInfo->ContextRecord->Dr0 ) {
			ExceptionInfo->ContextRecord->Dr0 = 0;
  1. फिर हम उन शेष रजिस्टरों को ठीक करेंगे जिन्हें हमने पहले NULL पर सेट किया था। इसका कारण 4 है क्योंकि x64 कॉलिंग कन्वेंशन निर्धारित करता है कि हम पहले 4 तर्कों के लिए RCX, RDX, R8, R9 का उपयोग करते हैं, और बाकी स्टैक पर सेट किए जाते हैं। >4 मापदंडों को स्टैक पर मैन्युअल रूप से सेट करना संभव है, लेकिन यह इस प्रोजेक्ट के दायरे से परे है क्योंकि इसके लिए इनलाइन असेंबली की आवश्यकता होगी। यही कारण है कि यह RCX नहीं बल्कि R10 है, क्योंकि हर syscall stub की शुरुआत में mov r10, rcx होता है, क्योंकि RCX रजिस्टर अगले निर्देशों में नष्ट हो जाता है।
root@kitploit:~
case NTMAPVIEWOFSECTION_ENUM:
	ExceptionInfo->ContextRecord->R10 =
		(DWORD_PTR)((NtMapViewOfSectionArgs*)(StateArray[EnumState].arguments))->SectionHandle;

	ExceptionInfo->ContextRecord->Rdx =
		(DWORD_PTR)((NtMapViewOfSectionArgs*)(StateArray[EnumState].arguments))->ProcessHandle;

	ExceptionInfo->ContextRecord->R8 =
		(DWORD_PTR)((NtMapViewOfSectionArgs*)(StateArray[EnumState].arguments))->BaseAddress;

	ExceptionInfo->ContextRecord->R9 =
		(DWORD_PTR)((NtMapViewOfSectionArgs*)(StateArray[EnumState].arguments))->ZeroBits;

हम इस उदाहरण में देख सकते हैं कि हम NtMapViewOfSection के तर्कों को ठीक कर रहे हैं।

कैसे करें

यदि आप EDR टेलीमेट्री को नकली बनाना शुरू करना चाहते हैं, तो p[FunctionName] परिभाषाओं को संशोधित करना संभव है, जहां वे वर्तमान में NULL पर सेट हैं।

निर्माण

आवश्यक फ़ंक्शन उत्पन्न करने के लिए, gen.py का उपयोग करें। यह निम्न में से किसी एक का समर्थन करता है:

  • अल्पविराम से अलग किए गए फ़ंक्शन
root@kitploit:~
python gen.py NtOpenSection,NtMapViewOfSection,NtUnmapViewOfSection

यह 3 फ़ाइलें उत्पन्न करेगा: TamperingSyscalls.cpp, TamperingSyscalls.h, और main.cpp। आप अपने प्रोजेक्ट में #include "TamperingSyscalls.h" शामिल कर सकते हैं। हम फ़ंक्शन के नाम को p के साथ जोड़कर फ़ंक्शन को कॉल कर सकते हैं, उदाहरण के लिए pNtOpenSection(...);

सीमाएँ

हम NtSetThreadContext या इसके वेरिएंट पर ब्रेकपॉइंट नहीं सेट कर सकते क्योंकि इसका उपयोग डीबग रजिस्टरों को सेट करने के लिए किया जाता है। एक संक्षिप्त अवधि होती है जहां डीबग रजिस्टर सेट होते हैं, लेकिन यह बहुत छोटी होती है और मुझे नहीं लगता कि खुले Dr0 को रखने के लिए हमारा पता लगाया जाएगा।

मैंने इन तकनीकों पर आधारित एक छोटा ब्लॉग पोस्ट प्रकाशित किया है।

TamperingSyscall का अवलोकन ब्लॉग पोस्ट

TamperingSyscall का नकली इंट्रोस्पेक्शन ब्लॉग पोस्ट

टूल डाउनलोड करें