2012-06-26 17 views
18

मैं ईएसटी एंटीवायरस का उपयोग कर रहा हूं, और हाल ही में इसके जीयूआई फ्रंट एंड egui.exe लटका हुआ है और 50% सीपीयू (यानी 100% कोर) ले रहा था। आश्चर्यजनक रूप से, मैंने पाया कि मैं इसे मार नहीं सकता, यहां तक ​​कि डिबग विशेषाधिकार सक्षम भी है।संरक्षित एंटीवायरस प्रक्रिया को समाप्त करना

अब मैं उत्सुक हूं: वे इस तरह के रक्षा को कैसे लागू करते हैं, और क्या कर्नेल ड्राइवर लिखने से इसे कम करने का कोई तरीका है?

egui.exe प्रक्रिया नियमित उपयोगकर्ता (गैर-व्यवस्थापक) के अंतर्गत चलती है, और मैं इसे व्यवस्थापकीय खाते का उपयोग करके विभिन्न तरीकों से मारने का प्रयास करता हूं। मैंने जो कोशिश की है वह यहां है।

  • आप
  • आप pskill का उपयोग कर
  • आप इस प्रक्रिया एक्सप्लोरर का उपयोग कर इसे मार नहीं कर सकते हैं, न ही उसे

को एक डिबगर संलग्न कर सकते हैं तो मैं शुरू कर दिया यह नहीं मार सकता है कार्य प्रबंधक से यह नहीं मार सकता है कुछ प्रोग्रामिंग और पाया कि:

  • विशेषाधिकार रहित उपयोगकर्ता के तहत

    आप इसे PROSESS_TERMINA साथ खोल सकते हैं TE का उपयोग, लेकिन TerminateProcess करने के लिए वास्तविक कॉल() त्रुटि 5.

  • प्राधिकारी खाता आपको अपनी इच्छानुसार किसी भी उपयोग के अधिकार के साथ खोल सकते हैं के तहत

    के साथ विफल (बेशक डिबग विशेषाधिकार सक्षम करने के बाद), लेकिन फिर() TerminateProcess करने के लिए कॉल, GetKernelObjectSecurity(), SetKernelObjectSecurity() सभी त्रुटि के साथ विफल 5.

यह निश्चित रूप से सिर्फ प्रक्रिया DACL की स्थापना, के बाद से यदि बर्खास्त DACL में नहीं थे परे नगण्य किसी तरह की ओर इशारा करता है, तो आप करने के लिए सक्षम नहीं होगा प्रक्रिया को पहले स्थान पर PROCESS_TERMINATE के साथ खोलें। क्या वे वास्तव में Win32 एपीआई कॉल को रोक रहे हैं? यदि हां, तो कैसे? यह थोड़ी देर के बाद से मैंने निम्न स्तर की प्रणाली प्रोग्रामिंग की है, इसलिए मेरी अज्ञानता को क्षमा करें।

+2

आप उसे क्यों जानना चाहेंगे? :) –

+0

एवी आमतौर पर कर्नेल-मोड घटक होते हैं। यदि आप अपने आप को सर्वोच्च विशेषाधिकार देकर इसे मार सकते हैं, तो यह बेहद कमजोर सुरक्षा होगी। –

+0

क्या आप इसे सामान्य रूप से चलाते समय मार सकते हैं, या यह तब हुआ जब यह लटका हुआ कि आप इसे मार नहीं सकते? – nos

उत्तर

6

यदि आप जोना रुतकोव्स्का से "सिस्टम वर्जिनिटी वेरिफायर" को पकड़ सकते हैं, तो आपको पर एक बहुत अच्छा विचार देना चाहिए जहां वे अपने हुक लागू करते हैं। इसी तरह के औजार (GMER सहित) का उपयोग सिस्टम के आंतों में क्या हो रहा है, इसकी जांच के लिए किया जा सकता है। यह अजीब लग सकता है, लेकिन कभी-कभी एवीएस तकनीकों का उपयोग आमतौर पर दुर्भावनापूर्ण सॉफ़्टवेयर, यानी रूटकिट तकनीकों में पाया जाता है, ताकि वे अपने सॉफ़्टवेयर को बेवकूफ़ बना सकें।

ऐसा लगता है कि एसएसडीटी-हुकिंग और इसी तरह की तकनीकों का उपयोग प्रक्रिया को "संरक्षित" करने के लिए किया गया है। इस पर मेरा पहला शॉट प्रक्रिया के सभी धागे को निलंबित करना होगा। ऐसी अधिकांश सुरक्षा तंत्र (मैलवेयर और एंटी-मैलवेयर के समान) केवल समाप्ति प्रयासों पर ट्रिगर होती हैं। लेकिन एक बार जब आप सभी धागे निलंबित कर देते हैं (प्रक्रिया एक्सप्लोरर ऐसा कर सकता है) उनमें से कोई भी शेड्यूलर द्वारा निर्धारित नहीं किया जाएगा (कोई CPU उपयोग नहीं होता है)।

एसएसडीटी (कभी-कभी एसडीटी) सिस्टम सेवा वर्णनकर्ता तालिका के लिए खड़ा है। यह सिस्टम सेवाओं के फ़ंक्शन पते के साथ तालिका है (सिस्टम सेवा सूचकांक की संख्या)। जब आप अपने Win32 एप्लिकेशन से CreateFile जैसे कुछ कॉल करते हैं तो यह एनटीडीएलएल में NtCreateFile (== ZwCreateFile यूएम में) कॉलिंग में समाप्त हो जाएगा। वहां से तंत्र (जो कि विंडोज 2000/एक्सपी के बाद से बदल गया है) में यह अलग होगा कि यह कैसे कर्नेल मोड (केएम), उर्फ ​​"रिंग 0" में संक्रमण करता है। वैसे भी, एनटीडीएलएल में NtCreateFile का कार्यान्वयन लगभग निम्न कार्य करता है: यह सिस्टम सेवा की अनुक्रमणिका को एक रजिस्टर में ले जाता है और फिर उस विधि को आमंत्रित करता है जिसका उपयोग केएम (sysenter नए कार्यान्वयन में ओपोड) में संक्रमण के लिए किया जाता है। केएम में पहुंचने पर, हैंडलर इंडेक्स की जांच करेगा, एसएसडीटी से फ़ंक्शन पता निकाल देगा और फिर उस फ़ंक्शन को कॉल करेगा। यहां यूएम स्टैक की कुछ और जांच हो रही है (जब आप यूएम से आते हैं), लेकिन यह सरल शर्तों में प्रक्रिया है। तो जब आप इस स्तर पर कार्यक्षमता को हुक करते हैं, तो आप Win32 सबसिस्टम सहित चीजों को करने से किसी उपप्रणाली को रोक सकते हैं। हालांकि, इसमें कई समस्याएं जुड़ी हैं (आपका उनमें से कम से कम है)। अधिकांश कार्यान्वयनकर्ता एक बुरी नौकरी करते हैं, जिसे अक्सर मैलवेयर में देखा जा सकता है, जैसे कि रूटकिट सोनी ने 2005 में कुछ ऑडियो सीडी डालने का फैसला किया था। इसलिए बिना किसी बग जांच को खतरे में डालकर असहज असंभव है और कोड के कई स्वतंत्र टुकड़े समान हैं एसएसडीटी इंडेक्स आमतौर पर कार्यान्वयनकर्ताओं के हिस्से पर लापरवाही के कारण समस्याओं का कारण बन जाएगा।

तो धागे को निलंबित करना एक संभावना प्रतीत होता है, हालांकि पाठ्यक्रम का यह प्रश्न ओपन-एंडेड (ईएसईटी चालक के विवरण जानने के बिना) है। यदि, हालांकि, वे इसे भी रोकते हैं, साथ ही आपको वास्तव में उत्पादों को स्विच करने पर विचार करना चाहिए। मैं डरता हूं कि इस तरह के उत्पादों की सिस्टम स्थिरता के नुकसान अतिरिक्त "सुरक्षा" से अधिक हैं हालांकि वे (ईएसईटी) आपको अन्यथा बताने जा रहे हैं।

कोड को इंजेक्ट करने के लिए एक और संभावित विधि हो सकती है (उदा। डीएलएल के माध्यम से) और प्रक्रिया को स्वयं ExitProcess पर कॉल करें। यह इस बात पर भी निर्भर करता है कि उनके हुक इस छिद्र के लिए अनुमति देते हैं या नहीं।

+0

धन्यवाद! मैंने प्रोसेस एक्सप्लोरर में धागे (और प्रक्रिया पूरी तरह से) को निलंबित करने की कोशिश की, जो भी अक्षम है। हालांकि, मैं इसे एक निष्क्रिय प्राथमिकता दे सकता हूं। मैं आपके द्वारा उल्लेखित टूल की जांच करूंगा: मुझे एसएसडीटी-हुकिंग के बारे में पता नहीं था, मुझे लगता है कि यह वही है जो मैं ढूंढ रहा था। –

+0

मैं गलत हो सकता हूं लेकिन मुझे लगता है कि मुझे कहीं पढ़ना याद है कि आप Vista/W7 में एसएसडीटी को संशोधित नहीं कर सकते हैं: आपको ब्लूस्क्रीन मिलती है। –

+1

@Cicada: पूरी तरह से सच नहीं है, लेकिन हाँ पैचगार्ड नामक एक तंत्र है, विशेष रूप से x64 संस्करणों में। इस के आसपास जाने के तरीके हैं, और इससे भी ज्यादा तो आईएसवी के लिए ऐसी चीजें करने का एक तरीका है जो आप आम तौर पर "केवल प्राणघातक" के रूप में नहीं कर सकते हैं। विस्टा के समय में प्रमाणीयम पैचगार्ड के आसपास एक रास्ता मिला, जिसने एमएस को आईएसवी के अन्य तरीकों को बनाने के लिए प्रेरित किया। – 0xC0000022L

1

अलग मामलों नहीं हो सकता है, का कहना है:

  1. तो प्रक्रिया आप को मारने के लिए कुछ गिरी वस्तु पर इंतज़ार कर रहा है कोशिश कर रहे हैं का एक बच्चा धागा, यह इंतजार पूरा कर लिया है जब तक समाप्त नहीं किया जाएगा। यह एप्लिकेशन को प्रत्युत्तर देना बंद कर सकता है। प्रक्रिया में किसी भी धागे को समाप्ति के लिए चिह्नित किया जाता है - यह प्रक्रिया समाप्ति चरणों में से एक है;
  2. फ़ायरवॉल, एवी और अन्य सुरक्षा-संबंधित सामान जैसे बुद्धिमान सॉफ़्टवेयर हमेशा कर्नेल हुक (उर्फ हुकिंग - इंटरसेप्टिंग एपीआई कॉल, संदेश या कर्नेल ऑब्जेक्ट्स या सॉफ़्टवेयर घटक के बीच पारित घटनाओं) को स्थापित करते हैं। बाहरी सेनाओं की रक्षा करने के लिए उनके पास हमेशा ढाल होती है।

आपको ERROR_ACCESS_DENIED प्राप्त हो रहा है। मुझे नहीं पता कि आप किस कदम से गुजरते हैं, लेकिन क्या मैं यह सुझाव दे सकता हूं:

  1. ओपन टास्क मैनेजर और प्रोसेस टैब पर जाएं;
  2. egui.exe पर राइट क्लिक करें और गुणों पर क्लिक करें;
  3. सुरक्षा टैब पर क्लिक करें और फिर संपादित करें पर क्लिक करें।
  4. अनुमति विंडो पर अपने प्रमाण-पत्र जांचें;
  5. उपयोगकर्ता जोड़ें और/या पूर्ण अनुमतियां सेट करें।

आप इसके आसपास खेल सकते हैं, क्योंकि जब भी आप अपना ऐप स्ट्रेट करते हैं (यही वह है जो आपने करने की कोशिश की, मुझे लगता है) यह आपके खाते के प्रमाण-पत्रों का उपयोग करेगा।

+0

वे कर्नेल हुक कैसे स्थापित करते हैं? क्या खोजशब्दों की तलाश है? आपके बाकी सुझावों के लिए: यह विंडोज एक्सपी है, टास्क मैनेजर में कोई "सुरक्षा" नहीं है। प्रक्रिया एक्सप्लोरर प्रत्येक के बगल में "मंडर" ध्वज वाले समूहों की एक सूची दिखाता है, लेकिन यह केवल पढ़ने के लिए है और मुझे यकीन नहीं है कि इसका क्या अर्थ है। प्रक्रिया के लिए डीएसीएल पढ़ने में मेरे प्रयास विफल हो गए, इसलिए मुझे नहीं पता कि उनका और अधिक सफल क्यों होगा :) मेरे पास मशीन पर कई खाते हैं, "टर्मिनेटर" ऐप मैंने व्यवस्थापक खाते के तहत चलाया है, अन्यथा, उदाहरण के लिए , मैं SeDebugPrivilege सेट करने में सक्षम नहीं होगा। –

+0

आप इसे आजमा सकते हैं: [लिंक] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms644959 (v = vs.85) .aspx) – Oleg

+0

ये उपयोगकर्ता मोड हुक –

संबंधित मुद्दे