Bug-Bounty.com أول موقع عربي لبرامج المكافئات الأمنية






تم اطلاق اول موقع عربي لبرامج المكافئات الأمنية أو الـBug Bounty , الموقع يهدف الى تقليص الفجوة بين مختبري الإختراق و اصحاب الموقع و السيرفرات  من خلال مساعدة كل منهم على الشكل التالي:
1. لأصحاب المواقع: يساعد على زيادة مستوى الحماية في مواقعهم الى اعلى درجة , و ذلك من خلال تمكينهم من اضافة مواقهم الى Bug Bounty ليتم اختبار اختراقه من قبل مختبري الاختراق بشكل مجاني. فقط سنطلب منك دفع الجائزة التي انت تحددها في حالة تمكن اي من مختبري الاختراق من اكتشاف ثغرة في موقعك.
2. مختبري الاختراق: يساعدهم على الربح من خلال اكتشاف الثغرات في المواقع المضافة في Bug Bounty , فهنالك جائزة مادية مقابل كل ثغرة يتم اكتشافها.
التسجيل و استخدام الموقع مجاني بامكنك التسجيل في الموقع كمختبر اختراق او كشركة اعتمادا على هدفك من استخدام الموقع.
رابط الموقع: http://www.bug-bounty.com


إقرأ المزيد
 

اختراق موقع شركة TalkTalk والاستيلاء على 4 مليون بطاقة دفع


TalkTalk، واحدة من أكبر الشركات الموجودة بالمملكة المتحدة التي تعمل في تزويد خدمة الانترنت، الاتصالات، خدمات شبكات الهواتف، وتحظى الشركة بأكثر من 4 مليون عميل.
صرحت الشركة مساء الخميس أنه تم اختراقها مرة أخرى، وعلى الفور قامت الشركة بإبلاغ 4 مليون عميل لها أن الشركة وقعت ضحية لعملية هجوم إلكتروني كبير، وأنه من الممكن أن يكون قد تم الاستيلاء على بيانات وتفاصيل بنكية حساسة خاصة بالعملاء.
في فبراير الماضي عانت الشركة من عملية اختراق كبيرة أيضاً أدت إلى تسريب بيانات مفصلة عن العملاء، هذه البيانات تم استخدامها بطريقة سيئة من قبل القراصنة ممكن أتاح لهم الحصول على مبالغ مالية كبيرة.

وبالنسبة للبيانات التي توقعت الشركة أن يكون القراصنة قد تمكنوا من الحصول عليها، قالت الشركة أن الـ 4 مليون عميل جميعهم داخل حيز التأثير، وأن البيانات التي كانت توجد بالسيرفر الذي تم اختراقه هي كالتالي:ـ
* تفاصيل بطاقات الدفع/ الحسابات البنكية
* الأسماء كاملة
* العناوين البريدية
* تواريخ الميلاد
* عناوين البريد الإلكترونية
* أرقام الهواتف
* معلومات حسابات TalkTalk
كما اعترفت الشركة أن البيانات لم تكن مشفرة بالكامل، مما يعني أن القراصنة يستطيعون الوصول بسهولة للبيانات الخاصة بالمستخدمين ـ والتي تحتوي على تفاصيل حساباتهم المصرفية وعناوين البريد الإلكتروني الخاصة بهم.
وفي بيان قالت شركة TalkTalk أنه وفي الوقت الحالي يجري التحقيق في واقعة الاختراق بواسطة Metropolitan Cyber Crime Unit.
ويُنصح عملاء TalkTalk بسرعة تغيير كلمات المرور الخاصة بهم في أقرب ممكن، وأن يقوموا بمراقبة حساباتهم البنكية عن كثب خلال الأشهر القادمة.
كما أنه ينبغي للعملاء أن يقوموا بإخطار البنك التابعين له حال مواجهة أي أنشطة احتيال، كما يجب الحرص والانتباه للمكالمات الهاتفية التي من خلالها يتم سؤالهم عن معلومات شخصية.
ويجب التنويه أيضاً إلى أهمية الانتباه لرسائل التصيد التي قد تصلك على بريدك الإلكتروني، وهي عادة تكون الخطوة الثانية التي يقوم بها القراصنة بعد اختراق أي شركة اتصالات. رسائل التصيد أو هجوم التصيد يهدف إلى خداع المستخدمين للإدلاء بتفاصيل شخصية قد تصل إلى كلمة المرور.


إقرأ المزيد
 

برمجية ضارة خطيرة تصيب متجر تطبيقات Apple





صرحت شركة Apple أنها كانت قد بدأت باتخاذ خطوات فعالة من أجل إزالة برمجية ضارة تم اكتشافها في العديد من التطبيقات الشائعة الاستخدام على هواتفها وأجهزتها اللوحية في الصين.
جدير بالذكر أن هذا الهجوم يعد الهجوم الأكبر على متجر تطبيقات أبل في تاريخها، حيث استعمل القراصنة في هذا الهجوم طريقة متطورة في تلغيم نسخة مطابقة لبرنامج أبل الذي يتم استخدامه لتصميم تطبيقات بنظام “ios”، بالإضافة إلى إقناع المطورين بتنزيله واستخدامه.
وكنتيجة لذلك تم سرقة العديد من البيانات الحساسة الخاصة بالمستخدمين عن طريق التطبيقات التي تمت برمجتها باستخدام هذا البرنامج، ومن ثم إرسالها إلى سيرفرات تخضع لسيطرة القراصنة.
وتشمل التطبيقات التي استهدفها هذا الهجوم تطبيق “وي تشات” الذي يتمتع بشعبية كبيرة في الصين وتصممه شركة “تنسنت” وتطبيق لتحميل المقاطع الموسيقية وتطبيق آخر لطلب خدمات سيارات الأجرة عن طريق الهاتف.
وأصيبت أيضا تطبيقات أخرى بهذا الهجوم خارج الصين، من بينها تطبيق المسح الضوئي لبطاقات العمل “كام كارد”.
وصرحت كريستين موناغان المتحدثة باسم شركة آبل بأن التطبيقات التي صممت باستخدام البرنامج المزيف “اكس كود غوست” أزيلت من متجر التطبيقات.
وقالت: “إننا نعمل مع المطورين للتأكد من استخدامهم للنسخة السليمة لبرنامج اكس كود لإعادة تصميم تطبيقاتهم”.
وذكرت شركة “تنسنت” على المدونة الرسمية لبرنامج “وي تشات” أن هذه المشكلة الأمنية تؤثر على نسخة قديمة من التطبيق وهي “وي تشات 6.2.5” وأن النسخ الأحدث للتطبيق لم يصبها سوء.
وأضافت بأن تحقيقا أوليا أظهر عدم سرقة أو تسريب للبيانات أو معلومات المستخدمين.
وقالت شركة “باولو التو نتوركس” المتخصصة في الأمن الإلكتروني يوم الجمعة إنه من المحتمل أن يكون مئات الملايين من المستخدمين قد تضرروا جراء الهجوم.
وقالت الشركة على موقعها الإلكتروني: “إننا نعتقد أن اكس كود غوست برنامج خبيث ضار جدا وخطير تمكنت من تجاوز مراجعة الشفرات (التي تساعد في تحسين شفرات البرامج وحمايتها) وشن هجمات غير مسبوقة على بيئة نظام أي أو إس”.
لكن وي تيك لو رئيس قسم الإلكترونيات الاستهلاكية في شركة “يورو مونيتور” لأبحاث السوق قال إنه لا يتوقع حدوث تأثير كبير على مبيعات منتجات آبل.
وأضاف: “من المؤكد أنه أمر محرج لشركة آبل، لكن الحقيقة هي أن البرامج الخبيثة تمثل مشكلة دائمة منذ عهد أجهزة الكمبيوتر الشخصية، وهذه المشكلة ستتفاقم مع زيادة الأجهزة المحمولة من 1.4 مليار وحدة في عام 2015 إلى 1.8 مليار في 2020”.
واكتشفت شركة “باولو التو نتوركس” هذا الهجوم خلال تحقيقها في أنشطة مريبة على العديد من أجهزة آبل، ووجدت برنامج خبيث يستهدف هواتف آي فون التي أزيلت عنها قيود الحماية التي تفرضها شركة آبل والمعروفة باسم “جيلبريك”.
وجدير بالذكر أن الغالبية العظمة من المستخدمين الذين تم استهدافهم من الصين
source



إقرأ المزيد
 

إليكم كيفية إيقاف تطبيق WhatsApp الخاص بأصدقائكم أثناء المحادثة





الآن يمكنك إيقاف تطبيق WhatsApp الخاص بأصدقائك أثناء المحادثة،النسخة الخاصة بالهواتف المحمولة والنسخة التي تعمل من خلال الويب، وذلك فقط بإرسال رموز Smileys.
الباحث الأمني المستقل Indrajeet Bhuyan، قام بالإبلاغ عن خطأ برمجي بتطبيق WhatsApp يسمح لأي شخص أن يقوم بإيقاف التطبيق عن بعد وذلك بإرسالة 4000 emojis للمستخدم المستهدف.

whatsapp-attack

جدير بالذكر أن Bhuyan هو نفس الباحث الأمني الذي قام بالإبلاغ عن الخطأ البرمجي الذي كان يتسبب بإيقاف التطبيق عن العمل عند القيام بإرسال رسالة تحتوي على 2000 كلمة (بحجم 2kb)، وذلك في العام الماضي.
وبعد هذا الاكتشاف قامت الشركة بمعالجة هذا الخطأ وذلك بتحديد حجم أقصى من الحروف في الرسائل، لكن للأسف فشلت الشركة هذه المرة في تحديد حد أقصى “للتعبيرات الرمزية”.
هذا الخطأ البرمجي الأخير تم اختبار الاستغلال الخاص به على العديد من الأنظمة:ـ
* نسخة WhatsApp الخاصة بالأندرويد والتي تشمل Marmallow, Lollipop, Kitkat.
* نسخة WhatsApp الخاصة بالويب، وتم اختبارها على متصفحات Chrome, Opera, Firefox.

أيضاً الإصدار الأخير من WhatsApp مصاب بهذا الخطأ البرمجي.

الباحث الأمني قام بإبلاغ Facebook، ولكن حتى تقوم الشركة بإصدار تحديث لمعالجة هذا الخطأ، إليكم طريقة تفادي الوقوع ضحية هذه الرسائل:ـ

إذا وقعت ضحية لأحد هذه الرسائل كل ما عليك فعله، هو أن تقوم بفتح الـ Messenger والقيام بحذف المحادثة بالكامل.
أيضاً في بداية العام الحالي، كان الباحث الأمني Bhuyan قد قام باكتشاف والإبلاغ عن ثغرة تخص WhatsApp Photo Privacy وثغرة أخرى تخص WhatsApp Web Photo Sync.

إقرأ المزيد
 

مقال : استغلال وتأمين مكونات تطبيقات الأندرويد





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

ما هي مكونات تطبيقات الاندرويد ؟


تعد مكونات التطبيقات لبنة أساسية لبناء تطبيقات الاندرويد . اذ يتم بناء كل تطبيق من خلال مزج بعض أو كل تلك المكونات ، وحيث يمكن أيضاً الاستناد إليها بشكل فردي . هناك أربعة مكونات رئيسية للاندرويد ، موضحة أدناه..
النشاط (Activity ) :
للقيام بنشاط ما يجب توفر شاشة تمكن المستخدمين من التفاعل والقيام بذلك النشاط. يمكن للمستخدمين إجراء عمليات مثل إجراء مكالمة و إرسال الرسائل القصيرة، وما إلى ذلك فعلى سبيل المثال: شاشة تسجيل الدخول الخاصة بتطبيق الفيسبوك
الخدمة (service ) :
تتمثل بالعمليات التي يتم تشغيلها باستمرار في خلفية الهاتف دون الحاجة لواجهة المستخدم. على سبيل المثال: مشغل الموسيقى
مكونات المحتوى (content components ) :
تقوم بتقدم البيانات إلى التطبيقات الخارجية على شكل جدول واحد او اكثر. وبعبارة أخرى، يمكن اعتبار مزودات المحتوى كواجهات المستخدم التي تربط البيانات في عملية واحدة مع رمز تشغيل في عملية أخرى. على سبيل المثال: يمكن قراءة الرسائل القصيرة من اي تطبيق على الجهاز يوفر خاصية الرسائل القصيرة.
* يجب إعطاء الإذن بقراءة الرسائل القصيرة من خلال AndroidManifest.xml files من أجل الوصول إلى بيانات تطبيقات الSMS
مستقبل البث (Broadcast receivers ) :
يعد جهاز استقبال البث المكون الذي يستجيب لإشعارات النظام مثل البطارية منخفضة، إكتمال التشغيل، قابس السماعة الخ على الرغم من أن معظم مستقبلات البث نشأت من قبل النظام، الا انه يمكن للتطبيقات أيضا ان تقوم بعمليات البث.
يمكنك تنزيل نموذج التطبيق المستخدم في هذه المقالة واتبع الخطوات تباعاً ( يمكن التنزيل من المقالة الأصلية )
كما هو مبين في الشكل أدناه، فإن التطبيق لديه نشاطين. النشاط الاول يتطلب إدخال كلمة المرور. إذا قام المستخدم بإدخال كلمة المرور الصحيحة فإنه سينتقل مباشرة الى صفحة تعرض ” Private Area”، خلاف ذلك انه سوف يحصل على إشعار ان “كلمة المرور خاطئة “. ولغرض التأكد فإن كلمة السر للدخول يتم تعينها باسم “كلمة المرور”.
يجب على الشاشة الأولى استدعاء وطلب الشاشة الثانية وذلك إذا كانت كلمة المرور صالحة . نحن بحاجة إلى أداء اختبار (black box ) على التطبيق لمشاهدة إذا كان بإمكاننا تجاوز المصادقة من خلال استدعاء شاشة الترحيب بشكل مباشر.


المتطلبات الأساسية لمتابعة خطوات :


الكمبيوتر مع Android SDK
*جهاز محمول (non Rooted ) وذلك لتثبيت التطبيق
الموضوعات التي تم شملها :
*جمع المعلومات
*مهاجمة مكونات الأنشطة الضعيفة
*تأمين التطبيقات

جمع المعلومات:


  • فك تشفير التطبيق باستخدام أداة APKtool
  • تحليل ملف AndroidManifest.xml لمكونات الانشطة التي تم تصديرها.
كل تطبيق على جهاز الأندرويد يحتوي على اسم حزمة وكل نشاط يمتلك اسم الفئة الخاصة به داخل الحزمة
.الخطوة الأولى هي معرفة اسم الحزمة وأسماء الانشطة الحساسة المتاحة. رغم أن هناك طرق أخرى للحصول على هذه المعلومات، والبحث في AndroidManifest.xml يعد من احد الطرق .
يمكننا الحصول على ملف AndroidManifest.xml بفك تشفيرالتطبيق باستخدام APKTOOL
1.قم بتثبيت ملف APKTOOL من الرابط أدناه:
https://code.google.com/p/android-apktool/downloads/list
2.  ضع تطبيق الاختبار في نفس المجلد كما هو الحال في APKTOOL
3. الان قم بفك تشفير ملف (APK ) بإتباع الأوامر المبينة بالشكل أدناه
apktool d testapp.apk

image3

كما هو مبين في الشكل أدناه، يجب الآن أن تكون قادرا على رؤية مجلد جديد اسمه “testapp” وملف AndroidManifest.xml بداخله.
image4
الان ، نحن بحاجة للبحث عن اسم الحزمة وأنشطتها.
وسيتم تسجيل جميع الأنشطة في ملف AndroidManifest.xml عن طريق استخدام tags
<Activity > </ Activity >
لذلك، فإن أي شيء داخل ملف (tags) يكون هو النشاط. وعند النظر إلى ملف AndroidManifest.xml ، سنتمكن من رؤية اثنين من مكونات النشاط واسم الحزمة كما هو مبين في الشكل أدناه.
image5
عن طريق فحص الشكل السابق، حصلنا على ما يلي من المعلومات حول التطبيق
com.isi.testapp  هو إسم الحزمة.
com.isi.testapp.Welcome  قد يكون النشاط الذي حصلنا عليه بعد ادخال كلمة السر الصحيحة.

Attacking Vulnerable Activity Components


مهمتنا الان إطلاق نشاط الترحيب دون إعطاء أي كلمة مرور في الشاشة الأولى
يمكننا أن تؤدي الهجمات على مكونات الأنشطة الضعيفة باستخدام العديد من الطرق، كما هو مذكور أدناه:
  • إطلاق الأنشطة الحساسة مع أداة مدير الأنشطة .
  • استخدام التطبيقات الخبيثة لاستدعاء أنشطة تطبيقات اخرى.
  • يمكننا أيضا استخدام Mercury framework من أجل تنفيذ هذه الهجمات.

إطلاق الأنشطة الحساسة مع أداة مدير الانشطة:


مدير الأنشطة هو أداة تكون مثبتة مسبقا مع Android SDK و يمكن استخدامها مع “adb shell” ويمكن أيضاً استخدامها لإطلاق انشطة وخدمات التطبيقات يمكننا حتى تمرير ما نريد استخدامه
1. قم بتوصيل الجهاز على الكمبيوتر واحصل على (shell) على الجهاز بإستخدام الامر التالي “adb shell”
2.قم بكتابة الامر التالي لإطلاق نشاط الشاشة الترحيبية
am start –n com.isi.testapp/.Welcome
يجب الان ان تظهر الشاشة الترحيبية دون الحاجة لكلمة سر.

استخدام التطبيقات الخبيثة لإستدعاء أنشطة تطبيقات أخرى:


طريقة أخرى لاستدعاء الأنشطة تطبيقات اخرى هي كتابة التطبيقات الخبيثة وتزويدها بإسم الحزمة والنشاط المراد إطلاقه . الشكل التالي هو الشفرة المختصرة لإطلاق النشاط حيث أن incom.isi.testapp.Welcome هو النشاط المراد إطلاقه. في حالتنا هذه، التطبيقات الخبيثة لا تتطلب أي إذن لإطلاق نشاط “welcome ” من التطبيق الضعيف.
image6

إستخدام Mercury framework:


يمكن انتاج نفس الهجوم بإستخدام Mercury framework . سنناقش Mercury framework في وقت لاحق في هذه السلسلة.

تأمين مكونات التطبيقات:


  • Setting android:exported attribute’s value to false
في ملف androidmanifest.xml في التطبيق، يجب علينا إضافة الخصائص التالية الى مكونات التطبيق لتصبح آمنة. وهنا casecom.isi.testapp.welcome هو النشاط الواجب تأمينه .
image7
الرمز المذكور أعلاه يمنع التطبيقات الأخرى أو أي عنصر في النظام غير التطبيق الحالي من الوصول إلى هذا النشاط. فقط التطبيقات التي تحمل نفس اسم المستخدم كما في التطبيق الحالي ستكون قادرة على الوصول إلى هذا النشاط
تقيد الوصول بإستخدام اذونات التعريف
تصدير الخصائص ليس السبيل الوحيد إلى الحد من نشاط التعرض للتطبيقات الأخرى. يمكننا أيضا فرض إذنونات مستندة إلى قيود عن طريق تحديد مخصص أذونات للنشاط . هذه العملية مفيدة في حال كان المطور يريد أن يحد عملية الوصول إلى مكونات تطبيقه لتلك التطبيقات التي تمتلك الأذونات.
يمكنك استخدام تطبيق DIVA أيضا لتنفيذ ما تم شرحه في هذه المقالة .
ترجمة لمقال : Android Hacking and Security, Part 1: Exploiting and Securing Application Components لصاحبها Srinivas .

إقرأ المزيد
 

مقال : تطبيق على الهندسة العكسية كتابة برنامج Keygen


بسم الله الرحمن الرحيم,



في المقال السابق, تعرفنا على كيفية كتابة برنامج Patch يقوم بترقيع بعض التعليمات الموجودة في ملف تنفيذي ما, و قبل ذلك تعرفنا أيضا أن في الهندسة العكسية نقوم اما بالتعديل على الملف التنفيذي المراد دراسته, أو نقوم بكسر حمايته من خلال فهم طريقة عمل الحماية بداخله, و من ثم كتابة برنامج يحاكي تلك العملية, لنستطيع بذلك كسر حماية البرنامج بدون المساس بالملف التنفيذي.
في هذا المقال سنبدأ بأذن الله تعالى العمل على برامج الـ Crackmes, كما سنتطرق لكتابة أول برنامج Keygen و من هذا المقال فصاعدا, سأقوم بأذن الله بتنزيل حلول بعض برامج الـ Crackmes, وذلك لأن تلك الطريقة تعتبر الأفضل للتدرب على الهندسة العكسية, كما أن كتابة برامج الـ Keygen -و كما سنرى في هذا المقال- يعتبر أصعب بكثير مقارنة بكتابة برامج الـ Patch و ذلك لأننا لابد أن نفهم خوارزمية البرنامج المراد كسر حمايته بشكل دقيق جدا و أي سوء فهم لأي عدد من التعليمات -حتى و لو كانت تعليمة واحدة- من تعليمات البرنامج, لن نتمكن من كسر حمايته.

سأضع رابط تنزيل برنامج الـ Crackme الذي سنقوم بالعمل عليه في جزء المراجع بالأسفل, كما يستحسن التسجيل في موقع الـ Crackmes الذي قمت بوضعه في مقال سابق (سأعيد نشره في جزء المراجع في هذا المقال) لأن الموقع لا يسمح بتنزيل البرامج بدون تسجيل.
نبدأ أولا بفتح البرنامج لنرى تلك النافذة البسيطة.
my1
لماذا نقوم بفتح البرنامج؟ كما قلنا في مقالات سابقة, من المهم جدا أن نقوم بدراسة مدخلات و مخرجات البرنامج, هذا يعطينا لمحة عن آلية عمل الواجهة الرسومية (هذا قد يساعدنا في أحيان كثيرة بتخمين كيفية عمل البرنامج و أي المكتبات البرمجية قام باستخدامها), كما يساعدنا هذا في تخمين بعض المعالجات التي تحدث على المدخلات بداخل البرنامج.
كما نرى البرنامج في منتهى البساطة, كل ما يطلبه هو اسم المستخدم و رقم تسلسلي, و تلك هي غالبية برامج الـ Crackmes فكل ما تقوم به هو انتظار مدخلات من المستخدم, و معالجتها ثم اخراج رسالة معينة تخبرنا اذا ما كانت المدخلات صحيحة أم لا.
هنا سأقوم بادخال أي اسم مستخدم و أي رقم تسلسلي لأعرف كيف يعمل البرنامج و ماذا سيحدث حينها. بعد عدد من المحاولات و من خلال الرسائل التي تظهر لنا بعد كل محاولة, نجد أن اسم المستخدم يجب أن يكون أكثر من اربع حروف أو أرقام, كما أن من الواجهة استطيع أن أخمن أن تلك الرسائل تظهر من خلال النداء على الدالة MessageBox و هي دالة تابعة للمكتبة البرمجية Win32 API, كما يأخذ البرنامج المدخلات من خلال الدالة GetDlgItemtext. كل هذا تخمينات فقط, قد تصيب و قد تخطئ, فلنبدأ بتطبيق الهندسة العكسية على البرنامج للتأكد من ظنوننا.
لنقم بفتح البرنامج من خلال Immunity Debugger, و لنبدأ بالتأكد من التخمينات التي قمنا بها في الخطوة السابقة من خلال معرفة الدالات التي يقوم البرنامج بالنداء عليها.
my2
كما توقعنا, البرنامج يستخدم المكتبات البرمجية Win32 API و يستخدم فعليا الدالات التي تم ذكرها, كما يمكن أن نلاحظ أنه تم استخدام الدالة GetDlgItemtext مرتين و هو أمر منطقي لأن الواجهة الرسومية تحوي مستطيلين فقط يستقبلان مدخلات المستخدم.
my3
الآن نضغط مرتين على أي من الدالتين, لنذهب للمكان الذي نوديا منه.

my4

الآن لنبدأ بتحليل تلك التعليمات, أولا من معرفتنا بالدالة GetDlgItemtext, أحد مدخلاتها Parameters هي العنوان الذي ستحفظ فيه مدخلات المستخدم في الذاكرة و يسمى هذا Buffer. نستطيع أن نرى هنا أن تلك الدالة تأخذ ما يدخله المستخدم في المستطيل الأول الخاص باسم المستخدم, و تقوم بحفظه بالعنوان 0x00406349, و من معرفتنا أيضا أن دالات Win32 API بعد انتهاء أي دالة, تحفظ القيمة الراجعة Return Value في المسجل AX Register, اذا نظرنا لتعريف الدالة GetDlgItemtext في المرجع المكتبي لشركة مايكروسفت MSDN نعرف أن تلك الدالة تقوم بارجاع عدد الحروف التي تم ادخالها. نجد بعد استدعاء و الرجوع من تلك الدالة أن البرنامج يقوم بمقارنة عدد الحروف المدخلة من المستخدم بالقيمة 0x3, اذا كان عدد الحروف أكبر, يذهب الى العنوان 0x401163 ليكمل بشكل طبيعي, و ان كان عدد الحروف أقل من أو يساوي 0x3, استدعى الدالة MessageBox لتقوم باظهار رسالة محتواها نستطيع رؤيته من خلال مدخلات الدالة Function Paramters ثم يخرج من الدالة الحالية التي هو فيها و ينتظر مدخلات المستخدم من جديد. لنفترض أننا أدخلنا اسم المستخدم الآتي:
hello
هذا الاسم مكون من أكثر من ثلاث حروف, اذا سنذهب للعنوان 0x401163 لنكمل تنفيذ التعليمات هناك. يقوم البرنامج بعد ذلك بتحميل اسم المستخدم بدون أول حرف بداخل المسجل EDX و تحميل القيمة 0x5 بداخل المسجل ECX ثم يقوم بتصفير المسجلات EAX و ESI, هنا يجب أن نسأل سؤال منطقي, لماذا استخدم التعليمة XOR بدلا من أن يضع صفر داخل المسجلات من خلال التعليمة MOV ؟ هذه خصيصة من خصائص المترجمات Compiler Optimization, فقد قام المترجم أثناء ترجمة البرنامج بمقارنة التعليمتين Xor و Mov و رأى أنه باستخدام التعليمة Mov ستشغل تلك التعليمة مساحة 5 bytes في حين أن استخدام التعليمة Xor لنفس الهدف سيشغل فقط 2 bytes و هذا طبعا أفضل من حيث تخفيف مساحة الملف التنفيذي. بعد ذلك يبدأ البرنامج بالقيام بخوارزمية معينة على اسم المستخدم داخل دوراة loop.
my5
ماذا تفعل تلك الخوارزمية؟ لنبدأ بتحليلها.
أول تعليمة تقوم بنسخ حرف ‘e’ و هو ثاني حرف في اسم المستخدم الذي أدخلناه (hello) داخل البايت الأول للمسجل ECX, كيف هذا؟ لأننا قمنا بتصفير مسجل ESI ثم جمعنا قيمته على المسجل EDX الذي يحوي عنوان اسم المستخدم بدئا من ثاني حرف. ثم يقوم بعمل XOR هذا الحرف مع byte موجود بالعنوان 0x406328, لنرى ماذا بداخل هذا العنوان في الذاكرة.
my6
هذا العنوان يحوي قيم لا نعرفها, فنتركها جانبا و لنكمل لنعرف ماذا تفعل الـ loop في اسم المستخدم. تقوم الـ loop  بعد ذلك باستبدال الحرف الناتج من عملية الـ XOR و وضعه مكان ثاني حرف في اسم المستخدم ثم تقوم بوضع ثاني حرف الأصلي ‘e’ مكان أول byte في العنوان 0x406328, تلك عملية swap, تقوم بتغيير قيمة حرف في اسم المستخدم من خلال XOR ثم تحفظ الناتج مكان الحرف و تضع الحرف المستبدل مكان العنوان الذي أشرنا اليه.
تستمر تلك الـ loop حتى نهاية اسم المستخدم زائد واحد بمعنى أنها تكمل تطبيق الخوارزمية حتى على الـ Null Byte 0x00, معدلة بذلك و مستبدلة كل حرف بناتج عملية الـ XOR. أيضا نلاحظ أنها تقوم باستخدام أول 5 bytes فقط من العنوان 0x406328 مهما كان طول اسم المستخدم, فاذا كان اسم المستخدم أطول من 5 bytes و بعد الانتهاء من أول 5 bytes فيه, تكمل الخوارزمية على باقي الحروف و لكن ترجع لتعمل و تستبدل فقط قيم أول 5 bytes في العنوان المجهول.
بعد تلك الـ loop, نجد loop ثانية.
my7
هذه المرة, تقوم تلك الـ loop بعمل نفس الشئ, تدور على اسم المستخدم و لكن هذه المرة من آخر حرف زائد واحد لثاني حرف, و تستخدم و تستبدل ثاني 5 bytes في العنوان, لتبدأ من 0x40632D. فتبدأ و تأخذ آخر حرف زائد واحد (الذي كان في البداية Null byte) و تقوم بعمل XOR مع أول byte لثاني 5 bytes في العنوان المجهول و هكذا.
بعد تلك الـ loop, نجد loop ثالثة.
my8
تعمل هذه الدوارة بنفس منطقية أول دوارة, فتقوم باستبدال و استخدام اسم المستخدم من ثاني حرف لآخر حرف زائد واحد, و تقوم بعمليات XOR مع ثالث 5 bytes في العنوان المجهول, لتبدأ من 0x406332.
بعد تلك الـ loop, نجد loop رابعة.
my9
تعمل تلك الدوارة بنفس منطقية ثاني دوارة, فتقوم باستبدال و استخدام اسم المستخدم من آخر حرف زائد واحد حتى ثاني حرف, و تقوم بعمليات XOR مع رابع 5 bytes في العنوان المجهول, لتبدأ من 0x406337.
بعد تلك الـ loop, نجد loop خامسة.
my10
تلك الدوارة تقوم بخوارزمية مختلفة عن سابقاتها, فتلك تقوم بجمع كل حرف بداية من الحرف السادس على أول خمس حروف بالترتيب, فتقوم بجمع سادس حرف على ثاني حرف (نعم مازلنا نبدأ من ثاني حرف و ليس الأول كما رأينا في الخوارزميات السابقة) و حفظ الناتج في العنوان 0x406345 و هو عنوان يحتوي 4 bytes فارغين (قيمتهم 0x00), ثم تقوم بجمع الحرف السابع على الحرف الثالث و تحفظ الناتج في نفس العنوان زائد واحد, ثم تقوم بجمع الحرف الثامن على الحرف الرابع و تحفظ الناتج في نفس العنوان زائد اثنان و هكذا, و اذا وصلنا  في الجمع لخامس حرف تبدأ لتجمع على ثاني حرف من جديد ثم ثالث حرف و هكذا.
بعد تلك الـ loop, نجد loop سادسة.
my11
بعد أن أنهينا آخر دوارة, نجد أننا معنا الآن ناتج مكون من 4 bytes يبدأ من العنوان 0x406345, نقوم بعملية قسمة لتلك القيمة على القيمة 0x0A, بعد ذلك نأخذ باقي القسمة (و ليس الناتج) و نجمع عليه القيمة 0x30 و نحفظ الرقم الناتج من عملية الجمع في العنوان 0x406549, ثم نأخد ناتج عملية القسمة, ونكرر القسمة على القيمة 0x0A و هكذا حتى نحصل على ناتج قسمة يساوي صفر.
بعد تلك الـ loop, نجد loop أخيرة.
my12
كل ما تقوم به تلك الدوارة هي عكس الـ string الذي نتج عن آخر دوارة loop, فمثلا لو كان ناتج الدوارة السابقة “1234”, تقوم تلك الدوارة بجعله “4321”.
أخيرا يقوم البرنامج بمقارنة الـ string الناتج بالرقم التسلسلي الذي أدخله المستخدم, فأن كان نفسه, قام باستدعاء الدالة MessageBox تخبر المستخدم أنه تمكن من كسر حماية البرنامج.
الآن, بعد فهم خوارزمية الحماية بشكل دقيق, نستطيع أن نقول أن العنوان المجهول  0x406328 الذي رأيناه في أول دوارة loop يحوي قيم ثابتة يقوم البرنامج باستخدامها في عمليات الـ XOR, و تلك القيم في علم التشفير تسمى Keys و هي القيم التي تستخدم لتغيير قيمة حرف أو رقم ما.
كل ما علينا فعله الآن هو كتابة برنامج Keygen, من خلال ترجمة ما فهمناه الى كود بلغتنا البرمجية المفضلة. لقد قمت بكتابة برنامج بسيط بلغة الـ C, و وضعته في جزء المراجع.
لنقوم بتجربة برنامج الـ Keygen الذي كتبناه مع برنامج Crackme, يجب أن نأخذ رقم تسلسلي من برنامج الـ Keygen و نضعها في برنامج الـ Crackme, اذا كان كل ما قمنا به صحيح, يجب أن نرى رسالة تفيد بقبول الرقم التسلسلي و أنه رقم صحيح, لنبدأ بأختيار اسم مستخدم “hello” و نأخذ الرقم التسلسلي الناتج منه.
my13
ثم نقوم بوضع الرقم في برنامج الـ Crackme و نرى تلك النتيجة المبهجة بفضل الله تعالى.
my14

المراجع:
– برنامج LaFarge Crackme.
– موقع Crackmes.
– برنامج Keygen.
إقرأ المزيد
 

مقال : تطبيق على الهندسة العكسية الكراك, برامج Patch و Keygen


بسم الله الرحمن الرحيم,


في بعض المقالات السابقة في سلسلة الهندسة العكسية, استطعنا تطبيق ما تعلمناه من مفاهيم و استخدام أدوات على برنامج من برمجتنا, كما استطعنا أيضا التعديل على أحد البرامج التجارية, و لكن نحن جدد في علم الهندسة العكسية, و من أهم الصفات التي تكون خبراتنا و قدراتنا في الهندسة العكسية هي كثرة التطبيق و التدرب على هذا العلم, هل سنظل في كل مرة نريد أن نطبق الهندسة العكسية نقوم ببرمجة برنامج جديد؟ أم سنظل بالساعات نبحث عن برنامج تجاري و يمكن عن طريق الخطأ أن نقع في مشكلة قانونية و ننتهك بعض القوانين الخاصة بشركة ما.

لتلك الأسباب قام بعض من الناس (أحيانا شركات) بكتابة برامج هدفها الأول و الأخير هو السماح لأي شخص بتطبيق الهندسة العكسية بمنتهى الحرية على تلك البرامج, و سميت تلك البرامج Crackme أي (حاول كسري).
برامج الـCrackme يمكن أن نعتبرها برامج برمجت خصيصا لتحاكي سبل الحماية الرقمية المستخدمة في البرامج التجارية فقط لا غير, فتلك البرامج لا نفع منها ولا ضرر غير أنها تحديات برمجية صغير تتحداك أن تكسر حمايتها و تستطيع الوصول الى شئ ما بداخلها.
هنالك الكثير من الجهات تدعم مثل تلك البرامج, مثلا شركة ESET, نعم تلك الشركة صاحبة واحد من أشهر برامج مكافحة الملفات الضارة في الاسواق NOD 32 protection kit, تقوم كل فترة بطرح برنامج Crackme و تقوم بوضع جائزة للشخص الذي يستطيع كسر حماية تلك البرامج, كما تقوم شركات أخرى بتعيين موظفين من خلال طرح بعض برامج Crackme و أوائل الناس القادرة على كسر حمايات تلك البرامج يكسبون وظيفة في الشركة, مثل شركة FireEye و مسابقتها FLARE, سأقوم بوضع رابط لتلك المسابقة في جزء المراجع في آخر المقال.
و لكن كل تلك المسابقات هي مراحل متقدمة في الحماية الرقمية و الهندسة العكسية, ماذا عن المبتدئين الجدد الذين يريدون التدرب على بعض الأمثلة البسيطة و السهلة ليتمكنوا من تعلم و تطبيق ما تعلموه على تلك البرامج؟
لهذا الغرض قامت مجموعة من مهووسي الهندسة العكسية بعمل موقع كل ما يقوم به هو استضافة برامج Crackme و تقييمها, أي شخص أو شركة ترغب بمشاركة برنامج Crackme من برمجتها مع الآخرين, يمكنها وضع برامجها على هذا الموقع و يستطيع الناس تنزيل تلك البرامج و العمل على كسر حمايتها و مشاركة الآخرين في حلولها, هذا الموقع هو Crackmes.de سأضع رابط لهذا الموقع في جزء المراجع.
هنا نأتي لسؤال مهم جدا, كيف يستطيع شخص أثبات أنه تمكن من كسر حماية برنامج Crackme, ماذا تعني جملة “استطعت أن أحل هذا البرنامج” في الهندسة العكسية؟
هنا نتطرق لثلاث مصطلحات مهمة جدا, و أعتقد أننا جميعا سمعنا على الأقل بواحد من تلك المصطلحات ان لم نكن سمعنا بها كلها, تلك المصطلحات هي Keygen, Crack, Patch فما الذي يعنيه كل منهم و ما الفرق بينهم؟
برامج الـ Keygen: اختصار لـ Key Generator أو مولدات مفاتيح, و هي برامج يقوم الشخص الذي يطبق الهندسة العكسية بكتابتها بعد تمكنه من كسر و فهم و دراسة الحماية المراد كسرها, تلك البرامج يمكن أن تأخذ مدخلات من المستخدم مثلا أسمه و تقوم بمعالجة تلك المدخلات ثم تخرج رقم تسلسلي Serial Number اذا أدخلناها على البرنامج المراد كسره, سيقبلها البرنامج. مثال بسيط على ذلك البرامج التجارية المدفوعة, اذا قمت في يوم ما بتحميل نسخة تجريبية من برنامج مدفوع سيطلب منك البرنامج بعد فتحه اسمك و رقم تسلسلي  Serial Number  ليتم تفعيل البرنامج, و طبعا لن تحصل على رقم تسلسلي الا بعد دفع ثمن البرنامج و شرائه من الشركة المبرمجة له, مهمتك أن تقوم باستخدام الهندسة العكسية على البرنامج و فهم خوارزمية Algorithm التأكد من صحة الرقم التسلسلي, كيف يعرف البرنامج اذا كان هذا الرقم التسلسلي صحيح أم مزيف؟ كيف يقوم بمعالجته؟ تلك الاسئلة هى التي نبحث لها عن حلول من خلال الهندسة العكسية. فاذا تمكنا من فهم تلك الخوارزمية و تمكنا من كتابة برنامج يقوم بنفس المعالجات و المعادلات التي يقوم بها البرنامج المراد كسره, نستطيع عمل برنامج Keygen اذا ادخلنا له اسم يستطيع توليد رقم تسلسلي صحيح لهذا الاسم, اذا ادخلنا تلك البيانات على البرنامج المراد كسره قبلهم البرنامج بشكل طبيعي.
برامج الـ Patch: تلك البرامج كسابقتها نقوم نحن بكتابتها, وكما يشير اسمها فهي تقوم بعمل ترقيع Patch على برنامج ما. هل تتذكرون مقال برنامج Winrar نحن لم نتطرق لفهم أي من خوارزميات البرنامج لنستطيع كسر حمايته, فقط قمنا بتغيير تعليمة من تعليمات البرنامج و كان ذلك كفيلا بكسر الحماية التي أردنا كسرها. من خلال معرفة عنوان تلك التعليمة و معرفة عنوان تحميل الملف التنفيذي في الذاكرة (من خلال معرفتنا بالبنية الداخلية للبرامج التنفيذية PE file format يمكننا ايجاد عنوان تحميل البرنامج في الذاكرة و يسمى هذا العنوان Executable Base Address) نستطيع كتابة برنامج يقوم بحساب العنوان الخاص بالتعليمة المراد تغييرها بدقة و يقوم بتغييرها, بهذا الشكل استطيع اعطاء هذا البرنامج الذي كتبته Patch الى أي شخص يملك برنامج Winrar و كل ما سيقوم به هو فتح البرنامج ليقوم بترقيع برنامج Winrar تلقائيا و بذلك يقوم بالغاء النافذة المزعجة التي تظهر في البداية.
Crack: على عكس سابقيه فالكراك لا يكتب و لا يبرمج, ولكن نستطيع القول أن الكراك هو ملف معدل جاهز. في مقال Winrar بعد قيامنا بالتعديل على البرنامج و ترقيعه, نستطيع أخذ الملف التنفيذي الجديد لبرنامج Winrar الذي عدلنا عليه و نعطيه لأي شخص يملك نفس النسخة من برنامج Winrar على نفس نظام التشغيل الخاص بنا, بذلك نكون قد أعطيناه Crack لبرنامج Winrar أي نسخة معدلة مسبقا للبرنامج. لاحظ أننا نقوم بأعطاء الشخص نسخة من الملف التنفيذي فقط و ليس البرنامج كله, فهذا هو الملف الذي عدلنا عليه, في بعض الحمايات الأخرى نقوم بالتعديل على الملف التنفيذي و ملف DLL Module فبالتالي الـ Crack في تلك الحالة سيكون هو الملف التنفيذي و ملف الـ DLL المعدلان. لا حظ أيضا أنه يجب على الشخص الذي يتسلم الـ Crack حذف النسخة القديمة من الملف التنفيذي و وضع النسخة المعدلة Crack في نفس مسار البرنامج.

في أغلب المسابقات و برامج الـ Crackme التي بأذن الله سنقوم بتحليلها, سيكون المطلوب واحد أو كلا الأمرين التاليين:
– كتابة برنامج Keygen.
– كتابة برنامج Patch لازالة شاشة مزعجة تظهر في البرنامج أو حذف موسيقى تعمل مع تنفيذ البرنامج.

بفضل الله تعالى تعلمنا في هذا المقال مصطلحات مهمة في الهندسة العكسية, في المقالين القادمين بأذن الله سنبدأ أول تجربة لنا بكتابة برامج Keygen و Patches لبرامج Crackme.


المراجع:
– FLARE Challenge.
– Crackmes Website.

إقرأ المزيد