2011-04-03 23 views
6

मैं समझता हूँ कि एक ठेठ ढेर आधारित बफर अतिप्रवाह हमले पेलोड इस तरह दिखता है:एक स्टैक आधारित बफर ओवरफ्लो हमले में संशोधित वापसी पता कैसे अनुमानित है?

(वापसी पता) (वापसी पता) ... (वापसी पता) (वापसी पता) (वापसी पता) (वापसी पता) (एनओपी) (एनओपी) (एनओपी) (एनओपी) ... (एनओपी) (एनओपी) (एनओपी) (एनओपी) (shellcode)

मैं भी कि shellcode के सफल निष्पादन को समझने कुछ चीजों पर निर्भर करता है:

  1. दोहराई जाने वाली वापसी पता पेलोड के भाग है कि ढेर फ्रेम के वापसी सूचक अधिलेखित करने के लिए
  2. लौट यही पता एनओपी स्लाइड के कुछ हिस्से की पता (या की शुरुआत हो गया है शेलकोड)

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

क्या ये दोनों आमतौर पर सुंदर निर्धारक हैं? उदाहरण के लिए, यदि हमलावर परीक्षण और त्रुटि के कुछ सत्र करता है जब तक कि वह अपनी मशीन पर काम नहीं करता है, वही पेलोड उसी अन्य बाइनरी के साथ अन्य सभी मशीनों पर काम करेगा?

उत्तर

6

स्मृति के लेआउट को निर्धारित करने की सटीकता फ़ंक्शन के स्टैक फ्रेम पर पूरी तरह से निर्भर है जिसे आप दूषित कर रहे हैं। कभी-कभी ऑफ़सेट बहुत सटीक हो सकता है और यहां तक ​​कि एक नॉप स्लेज की आवश्यकता नहीं होती है, लेकिन वैसे भी यह एक अच्छा विचार है। यदि आप इस मुद्दे को डीबगर में दो बार ट्रिगर करते हैं तो आप एक विचार प्राप्त कर सकते हैं कि स्टैक कितना अराजक है। अन्य कारक ऑफसेट के आकार को बहुत प्रभावित कर सकते हैं। उदाहरण के लिए यदि ऑफसेट प्रोग्राम के विभिन्न संस्करणों के लिए बदल सकता है, जैसे कि windows 2000 and windows xp के लिए लिखे गए शोषण। आवेदन के अलग-अलग भाषा वितरण ऑफसेट के आकार को भी प्रभावित कर सकते हैं।

हालांकि, ASLR इस शोषण विधि के लिए गंभीर समस्याएं पैदा करता है। Heap Spraying आमतौर पर ब्राउज़र आधारित शोषण द्वारा एएसएलआर को बाईपास करने के लिए उपयोग किया जाता है।

6

एक काम करने वाले पेलोड को तैयार करने के लिए, हमलावर को लक्ष्य बफर का अनुमानित पता और वापसी पते से इसकी अनुमानित दूरी जाननी है।

आप सही हैं। सही शोषण लिखने के लिए वास्तव में आपको डीबगर के साथ थोड़ा सा खेलना होगा। एक बार जब आप इसे लिख चुके हैं और परीक्षण करते हैं, यदि बाइनरी विभिन्न मशीनों पर समान है, तो शोषण ठीक काम करना चाहिए।

(काम ठीक थोड़ा आशावादी है। मान लीजिए कि shellcode का शुभारंभ किया जाना चाहिए करते हैं। हमला हो सकता है के effectivity अन्य कारकों पर निर्भर ..)

0
cource के

पता हमेशा समान आधार पर नहीं किया जाएगा सिस्टम और बाइनरी पर, एक हैक मालवेयर अपने मौके को बेहतर बनाने के लिए उपयोग करते हैं, विभिन्न रिटर्न पतों (जैसे +10 वृद्धि होने पर +10 वृद्धि) का उपयोग करके एकाधिक पेलोड उत्पन्न करना है और इसे तब तक पूरा करने की कोशिश करें जब तक यह काम नहीं करता।

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

  • कोई संबंधित समस्या नहीं^_^