استغلال نظام اختبار الموثوقية
الكاتب:
أشفق الأنصاري

تم التعليق بواسطة:
تصنيف:
5
في أبريل 1, 2015
آخر تعديل:فبراير 6, 2017

ملخص:

تم تطوير استغلال نظام اختبار الموثوقية لتحديد موثوقية البرمجيات استغلال عن طريق حساب عدد ضرب من السكان غير النشطين اقتصاديا = 0x41414141

مقدمة

 
One of my friend was playing with “MS13-009” ل استخدام بعد الحرة الضعف في إنترنت إكسبلورر الأمر الذي يؤدي إلى تنفيذ تعليمات برمجية عن بعد.

وطلب مني مساعدته في كتابة يمكن الاعتماد عليها استغلال لهذا الضعف.

مرة واحدة بدأت تبحث في الضعف, أدركت أن هذا الضعف لا يمكن الاعتماد عليها يرجع ذلك إلى حقيقة أن هناك جدا نافذة صغيرة بين مجانا واستخدام الكائن سراح. والأهم من ذلك, الحرة حدث فقط عندما تنفيذ جميع SCRIPT الحصول على الانتهاء كتل.

ونتيجة لهذا, كان علينا أن الاعتماد على ول JScript setTimeout() وظيفة لإعادة تخصيص الكائن سراح.

كما, كانت مهمتي لكتابة موثوقة استغلال لهذه الثغرة الأمنية, كان مؤلما لإطلاق إنترنت إكسبلورر تحت WinDbg وسجل السكان غير النشطين اقتصاديا تسجيل قيمة في كل مرة.

جعل هذا الوضع لي بالاحباط وبدأت أفكر لماذا لا تكتب السيناريو الصغيرة التي لا هذه المهمة.

استغلال نظام اختبار الموثوقية

 
هكذا, يتم تحديد موثوقية عن طريق عد عدد مرات استغلال غير قادرة على السيطرة السكان غير النشطين اقتصاديا تسجيل مع المطلوب عنوان / قيمة.
هذا سيناريو بسيط جدا ل نوافذ لتحديد مقدار استغلال غير موثوق. ولقد استخدمت CDB.EXE للكشف عن الحادث وتسجيل حالة السجلات.

شفرة المصدر

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# -*- الترميز: UTF-8 -*-
"""

 /$$$$$$$$ /$$$$$$$  /$$$$$$$$ /$$$$$$
| $$_____ /| $$__ $$|__ __ // $$ $$ __ $$
| $$      | $$  \ $$   | $$  | $$  \__ /
| $$$$$   | $$$$$$$/   | $$  |  $$$$$$
| $$__ / | $$__ $$ | $$   \____ $$
| $$      | $$  \ $$   | $$   /$$  \ $$
| $$$$$$$$| $$  | $$   | $$  |  $$$$$$/
|________ /|__ /|__ / |__ / \______ /


حق النشر (C) 2010-2015 HackSys الفريق

هذا الملف هو جزء من استغلال الموثوقية اختبار
نظام.

يستخدم استغلال نظام اختبار الموثوقية لاختبار
موثوقية ضرب السكان غير النشطين اقتصاديا = 0x41414141. هذا النظام
ويهدف إلى إيجاد كم على استغلال غير موثوق.

راجع ملف "الترخيص" للحصول على إذن النسخ.

الكاتب : أشفق الأنصاري
اتصال: ashfaq_ansari1989[في]hotmail.com
الموقع: HTTP://hacksys.vfreaks.com

"""


__author__ = "أشفق الأنصاري '
__version__ = '1.0'

استيراد ال
استيراد SYS
استيراد shutil
استيراد subprocess
استيراد خيوط


فئة ExploitReliabilityTestingSystem(موضوع):
    """
    هذه الفئة هي قلب استغلال الموثوقية
    نظام الاختبارات.
    """


    مواطنه __init__(النفس, CDB, سجل, برنامج, وسائط=''):
        """
        هذا هو منشئ لERTS

        :وقف CDB: مسار cdb.exe
        :سجل المعلمة: مسار تسجيل
        :برنامج المعلمة: برنامج لإطلاق
        :وسائط المعلمة: الحجج برنامج
        """

        # التحقق من صحة إذا CDB, تسجيل وجود برنامج
        إذا ليس ال.مسار.موجود(CDB):
            رفع AttributeError('الرجاء التحقق من صحة مسار CDB ")
        أليف ليس ال.مسار.موجود(سجل):
            محاولة:
                ال.MKDIR(ال.مسار.dirname(سجل))
            إلا OSERROR:
                رفع AttributeError('الرجاء التحقق من صحة مسار LOG ")
        أليف ليس ال.مسار.موجود(برنامج):
            رفع AttributeError('الرجاء التحقق من صحة مسار البرنامج ")

        النفس.CDB = CDB
        النفس.سجل = سجل
        النفس.برنامج = برنامج
        النفس.وسائط = وسائط
        النفس.عملية = لا شيء

    مواطنه شغل(النفس, FILE_PATH, مهلة=60):
        """
        ويستخدم هذا لتشغيل عملية مع المهلة
        باستخدام خيوط

        :المعلمة FILE_PATH: ملف مسار لفتح
        :المعلمة مهلة: مهلة في ثوان
        """

        # التحقق من صحة وسائط والمعلمة مهلة
        إذا FILE_PATH هو لا شيء:
            رفع AttributeError('الرجاء التحقق من صحة أسم دليل البرنامج ")
        أليف مهلة هو لا شيء و نوع(مهلة) == الحادي و:
            رفع AttributeError('الرجاء التحقق من صحة مهلة ")

        مواطنه __launch_process():
            # إعداد حجة عملية
            process_args = النفس.CDB + '' + "-g -G -o -c ومثل، .logopen" + النفس.سجل + \
                           ';R;.logclose;ف" ومثل. " + النفس.برنامج + '" ' + النفس.وسائط + \
                           '' + FILE_PATH

            النفس.عملية = subprocess.البابا(process_args,
                                            ستدين=subprocess.الأنابيب,
                                            المعياري=subprocess.الأنابيب,
                                            ستدير=subprocess.الأنابيب)
            # انتظر عملية للخروج
            النفس.عملية.نقل()

        # إعداد موضوع لتشغيل عملية
        process_thread = خيوط.خيط(الهدف=__launch_process)

        # بدء موضوع
        process_thread.بداية()

        # الانضمام الآن موضوع
        process_thread.انضم(مهلة=مهلة)

        # معرفة ما اذا كان موضوع لا يزال حيا
        إذا process_thread.is_alive():
            # يبدو أن العملية لم تحطم
            # دعونا قتل عملية
            النفس.عملية.إنهاء()

            # دعونا إنهاء موضوع الأطفال
            process_thread.انضم()

    مواطنه is_crash_reliable(النفس, EIP):
        """
        وتستخدم هذه للتحقق مما إذا كان الحادث موثوق
        عن طريق التحقق من السكان غير النشطين اقتصاديا من سجل تحطم

        :EIP المعلمة: EIP تسجيل قيمة للمقارنة
        :عودة: صواب / خطأ
        """

        # التحقق من صحة السكان غير النشطين اقتصاديا كسلسلة
        إذا نوع(EIP) != الحادي و:
            رفع AttributeError('الرجاء التحقق من صحة السكان غير النشطين اقتصاديا ")

        سجل = فتح(النفس.سجل).قرأ()

        إذا "EIP ={0}'.شكل(EIP) في سجل:
            عودة صحيح
        آخر:
            عودة زائف


إذا __name__ == "__main__":
    # الثوابت
    HEADER = '' '

      /$$$$$$$$ /$$$$$$$  /$$$$$$$$ /$$$$$$
     | $$_____ /| $$__ $$|__ __ // $$ $$ __ $$
     | $$      | $$  \ $$   | $$  | $$  \__ /
     | $$$$$   | $$$$$$$/   | $$  |  $$$$$$
     | $$__ / | $$__ $$ | $$   \____ $$
     | $$      | $$  \ $$   | $$   /$$  \ $$
     | $$$$$$$$| $$  | $$   | $$  |  $$$$$$/
     |________ /|__ /|__ / |__ / \______ /

           استغلال النظام الموثوقية
                 الإصدار: {0}

    '' '
.شكل(__version__)

    # تهذيب هذه القيم
    MAX_RUN = 10
    نفذ الوقت = 60
    السكان غير النشطين اقتصاديا = "41414141"
    FILE_PATH = 'المتشعب://المضيف المحلي:8000/exploit.html "
    CDB_PATH = "C:\\ملفات البرنامج\\أدوات التصحيح ل Windows (الإصدار x86)\\cdb.exe "
    PROGRAM_PATH = "C:\\ملفات البرنامج\\إنترنت إكسبلورر\\IEXPLORE.EXE '
    PROGRAM_ARGS = ''
    LOG_PATH = "C:\\سجلات\' + os.path.basename(PROGRAM_PATH) + '.سجل'

    reliable_crash_count = 0
    الموثوقية = 0

    # تفاصيل الهدف الطباعة
    طباعة header
    طباعة '
الهدف EIP: {0}".format(السكان غير النشطين اقتصاديا)
    طباعة '
تطبيق الهدف: {0}".format(os.path.basename(PROGRAM_PATH))

    # خلق مثيل استغلال الموثوقية
    # الطبقة TestingSystem
    رتس = ExploitReliabilityTestingSystem(CDB = CDB_PATH,
                                           تسجيل = LOG_PATH,
                                           برنامج = PROGRAM_PATH,
                                           وسائط = PROGRAM_ARGS)

    # تشغيل التطبيق وحساب عدد حوادث
    لأنني في مجموعة(0, MAX_RUN):
        # تشغيل التطبيق الهدف
        erts.run(FILE_PATH = FILE_PATH, مهلة = مهلة)

        # الآن معرفة ما اذا كان الحادث هو موثوق بها
        إذا erts.is_crash_reliable(EIP EIP =):
            reliable_crash_count = 1

        # الآن تحديد استغلال الموثوقية
        الموثوقية = (reliable_crash_count * 100) / MAX_RUN

        # طباعة حالة على الشاشة
        sys.stdout.write("\R[{0}] يعيش الموثوقية التقييم: {1}%ومثل؛ .format(أنا + 1, دقة))
        sys.stdout.flush()

    # حذف دليل السجل
    shutil.rmtree(مسار = os.path.dirname(LOG_PATH))

    طباعة '
'
    طباعة '
استغلال الموثوقية التقييم: {0}%".format(دقة)

 

تنصل: يرجى عدم استخدام شفرة المصدر المقدمة هنا. يمكن دائما أحدث نسخة يمكن العثور عليها في مستودع جيثب الواردة أدناه.

 

في العمل

 

استغلال نظام اختبار الموثوقية المكتملة
استغلال تشغيل نظام اختبار الموثوقية

 

استغلال نظام اختبار الموثوقية على جيثب

 


آمل أن يكون هذا قد يكون من المفيد استغلال للمطورين الذين يرغبون في اختبار موثوقية مآثرهم. يرجى رفع قضية إذا وجدت أي خلل أو إذا كان لديك أي اقتراح تحسين.

12,423 مجموع المشاهدات, 18 مشاهدات اليوم

اللسانين التالية تغيير المحتوى أدناه.

أشفق الأنصاري

باحث الأمن
أشفق الأنصاري هو مؤسس HackSys الفريق اطلق عليها اسم "النمر". فهو باحث الأمن ذوي الخبرة في مختلف جوانب أمن المعلومات. قام بتأليف انه "HackSys المتطرفة سائق الضعفاء" و "Shellcode من الموت". وقد كتب أيضا ونشرت صفحات بيضاء مختلفة على استغلال البرمجيات على مستوى منخفض. اهتمامه الأساسية تكمن في "انخفاض مستوى الاستغلال", "الهندسة العكسية", "تحليل البرنامج" و "الهجين التضبيب". وهو بوي الذكاء الاصطناعي وآلة التعلم. وهو يؤدي الفصل ل اغية بيون.

أحدث المشاركات التي كتبها أشفق الأنصاري (انظر جميع)

ترك الرد

لن يتم نشر عنوان بريدك الإلكتروني. يتم وضع علامة الحقول المطلوبة *