
استطلاع واختراق الحواسيب الكبيرة
بقلم @singe (Dominic White @ SensePost)
BIRP هي أداة تساعد في التقييم الأمني لتطبيقات الحاسبات الرئيسية (Mainframe) التي تُقدَّم عبر TN3270. وكما يفعل BURP والوكلاء الآخرون لتطبيقات الويب في تقييم تطبيقات الويب، تهدف BIRP إلى فعل الشيء نفسه لتقييمات تطبيقات TN3270. وكذلك، كما هو الحال مع تطبيقات الويب، فإن القدرة على رؤية وتعديل الحقول التي افترض مطوّر التطبيق أنها غير مرئية ولا قابلة للتعديل تسمح بتجاوز الافتراضات الأمنية.
على وجه الخصوص، توفّر BIRP إمكانيتين لمخترق TN3270 الطموح. الأولى هي أنها تُظهر جميع البيانات التي يعيدها التطبيق على الشاشة. ويتضمن ذلك الحقول المخفية. الثانية هي أنها تسمح بتعديل الحقول المُعلَّمة بأنها "محمية" أي "غير قابلة للتعديل". واعتماداً على كيفية تطوير التطبيق، يمكن أن يسمح ذلك بتعديل وظائف التطبيق.
./birp.py -h سيعطيك تعليمات المساعدة للبدء إذا أردت الانطلاق.
كل ما تحتاجه هو تحديد هدف باستخدام -t. يمكن أن يتضمن تحديد الهدف منفذاً بعد IP مع نقطتين :، مثل 10.10.10.10:1023. إذا لم يتم تحديد منفذ فسيتم استخدام :23 افتراضياً وفقاً لسلوك x3270 الافتراضي.
يمكنك استخدام -l لتحميل ملف سجل محفوظ مسبقاً إلى السجل (history). يجب عليك دائماً تحديد هدف ولا يمكنك عرض السجل فقط حتى الآن للأسف.
تحقق من المتطلبات الأساسية أدناه للتثبيت. لسوء الحظ، سيعمل هذا فقط في بيئات Unix في الوقت الحالي، دون دعم لنظام Windows.
حالياً، تمتلك BIRP مجموعة محدودة إلى حد ما من الوظائف. وهي:
الوضع التفاعلي هو جوهر وظائف BIRP. فهو يمرّر ضغطات المفاتيح والأوامر الأخرى من BIRP إلى x3270 ويسمح للمحلّل بالتفاعل مع التطبيق كما لو كان يستخدم x3270 مباشرة. ومع ذلك، فإنه يعرض أيضاً "عرض الهاكر" المرمّز لكل شاشة يتم إرجاعها، بالإضافة إلى تسجيل "المعاملات" (transactions) وتخزينها في سجل الوكيل لتحليلها وفحصها لاحقاً.
في الوضع التفاعلي، سيؤدي الضغط على Ctrl-h إلى طباعة شاشة تعليمات، وCtrl-k إلى عرض مفتاح الألوان، وESC إلى الخروج والعودة إلى القائمة.
تحاول BIRP معرفة وقت حدوث "معاملة"، وتسجيل الشاشة قبل وبعد، بالإضافة إلى الحقول المعدّلة. بعض المفاتيح عادةً ما تكون مضمونة لبدء معاملة مثل Enter أو أي من مفاتيح PF/PA. ومع ذلك، إذا كانت الشاشة تتطلب مفاتيح مختلفة لتعمل لأي سبب من الأسباب، يمكنك "دفع" معاملة يدوياً باستخدام Ctrl-u مباشرة بعد تنفيذ الإجراء.
أخيراً، إذا أردت إعادة طباعة الشاشة فاضغط على Ctrl-r.
سيؤدي هذا إلى عرض سجل جميع المعاملات التي سجّلتها BIRP، والسماح بفحصها. وتحديداً، يتيح الوصول إلى الشاشة المُرسَلة، والحقول التي تم تعديلها في تلك الشاشة (أي البيانات المُرسَلة)، والاستجابة.
لكل شاشة، يتم عرض الصف الأول فقط كسياق، لكن يمكن طباعة الشاشة الكاملة إذا قمت بعرض المعاملة.
أيضاً، يمكنك الدخول إلى Python وفحص كائن الشاشة مباشرة.
هنا يمكنك إجراء بحث حساس لحالة الأحرف للعثور على معاملات تحتوي شاشاتها على نص معيّن.
يمكنك حفظ السجل الخاص بك إلى ملف، وتحميله لاحقاً باستخدام المفتاح -l في سطر الأوامر. تحتاج إلى حفظه باسم ملف فريد.
الأداة لم تكتمل بعد، وفي الوقت الحالي هناك الكثير من الأسباب الجيدة لتتمكن من اللعب بالكائنات مباشرة. يمكنك الدخول إلى صدفة IPython مدمجة في أماكن مختلفة. تمتلك BIRP مجموعة مفيدة إلى حد ما من كائنات Python التي يمكنك استجوابها، وقد حرصت على أن يكون لها مخرجات Pythonic مفيدة (str/repr). الكائن الأعلى هو "السجل" (history) الذي يحتوي على قائمة من "المعاملات". يمكنك استجواب آخر معاملة تمت إضافتها بالإشارة إلى history.last(). لكل معاملة كائن شاشة للطلب والاستجابة. لذلك، على سبيل المثال، للحصول على قائمة بجميع الحقول المخفية في آخر استجابة من الخادم يمكنك استخدام: history.last().response.hidden_fields
لمزيد من التفاصيل، سيكون من الأفضل الاطلاع على وحدة tn3270.py.
مكتبات Python: py3270 (v0.3.4)، colorama، IPython يمكن تثبيتها باستخدام pip أو easy_install. إلى أن يقبل py3270 طلب السحب هذا (https://github.com/py3270/py3270/pull/13) استخدم مكتبة py3270 الخاصة بي (https://github.com/singe/py3270).
عميل x3270 معدّل (v3.6)
التصحيحات (patches) مرفقة. يمكنك تنزيل المصدر من http://x3270.bgp.nu/download.html ثم انتقل إلى دليل suite3270 بعد فك الضغط، ونفّذ patch -p1 < suite3270-full.patch
يمكنك استخدام عميل غير معدّل، لكنك لن تكون قادراً حينها على تعديل الحقول المحمية.
يجري التصحيح تغييرين، الأول هو السماح بتحرير الحقول المحمية، والآخر هو جعل الحقول المخفية مرئية (تظهر بتمييز نص معكوس). هذه الوظيفة مقسّمة إلى تصحيحين منفصلين آخرين إذا أردت واحداً فقط أو الآخر لسبب ما.
وظيفة معالجة المفاتيح التي أستخدمها هي تنفيذي المخصص لـ getch. إنه بشع جداً، لكنه يعمل. أحب أن أستخدم تنفيذاً أكثر نضجاً لمعالجة المفاتيح مثل curses أو pygame أو urwid وغيرها، لكنها جميعها تريد السيطرة على شاشتك أيضاً. شخصياً، أجد أن مخزن التمرير الخلفي (scroll back buffer) لا يقدر بثمن في تسجيل أنشطتي أو مجرد القدرة على التمرير لأعلى وتذكر ما فعلته، لذلك لم أرغب في خسارة ذلك، ومن هنا جاء هذا النهج.
وجدت py3270 خشناً إلى حد ما وانتهى بي الأمر بتغليف جزء منه. لقد وفّرت هذا كغلاف منفصل يمكنك استخدامه في برامجك الخاصة.
بواسطة dominic () sensepost.com (@singe)
Big Iron Recon & Pwnage من SensePost مرخّصة بموجب رخصة المشاع الإبداعي نَسب المُصنَّف - المشاركة بالمثل 4.0 الدولية (http://creativecommons.org/licenses/by-sa/4.0/) الأذونات التي تتجاوز نطاق هذه الرخصة قد تكون متاحة على http://sensepost.com/contact us/.