Anti.Hack
06-01-2007, 02:09 AM
بسم الله الرحمن الرحيم
الحمد لله الذي هدانا الطريق القويم، وبرأ القرآن من التحريف وحفظه سرمديا سليم، والصلاة والسلام على النبي الأمين، محمد بن عبد الله وعلى صحابته أجمعين، وبعد
لا أريد الإطالة في المقدمات وما يشوبها أحيانا من تزيين، باختصار كنت قد كتبت عدداً من المواضيع على الانترنت في عدة منتديات، وربما فارق الوقت بين موضوع والموضوع الآخر أدى إلى طمس الموضوع الأول وعدم الاستفادة منه أو حتى تنقيحه بشكل ملائم، وبدت لي فكرة تجميع المواضيع والزيادة عليها مفيدة جدامع الأخذ بعين الاعتبار أن الكثير من المعلومات في هذه الدروس هي اجتهاد شخصي ، فالمعلومات التي بها قابلة للخطأ والتصويب، ومثلما نعلم أصبح اليوم النقد البناء أحد الأمور التي يشار لها بالبنان في شتى المجالات، لذلك أنا أتقبل أي نقد بكل رحابة صدر:kiss: ،،
بادئ ذي بدء، البحث متمركز حول 3 مواضيع أساسية هي/
آلية عمل برامج الأنتي فيرس
تقنية الروت كيت
ماهية القيم الست عشرية
M
كثير منهم من صب جل لومه على برنامج مقاومة الفيروسات Norton AV بعد اكتشاف الثغرة الأمنية التي تمنعه من القيام بفحص مجلد معين في النظام، ماذا حدث بعدها؟ الكل صار يقول أن النورتن برنامج ضعيف، النورتن صار عجوز، النورتن لا يصلح! في الحقيقة أن هذا تماما ما حصل لبرنامج نظام التشغيل ويندوز بعد انتشار فيروسا بلاستر وساسر، صارت الناس تقيِّم ويندوز على أنه نظام تشغيل غير آمن، ولو تمعنا النظر في هذه الأمور ونظرنا إليها من جهة واقعية، لوجدناها مبنية على أساس غير دقيق، في الحقيقة أن النظام الذي يُتداول عنه بأنه من أأمن أنظمة التشغيل وهو لينكس، لم يتعرض كما تعرض له ويندوز من تحليل ودراسة من قبل المختصين والهواة والقراصنة وشركات الأنظمة المنافسة، وأعتقد لو أن نظاما مثل لينكس تعرض لما يتعرض له ويندوز لصار اكتشاف الثغرات به أمر سخيف لأبعد الحدود! على العموم مجال أمن المعلومات وحماية البيانات مجال واسع جداً ولا يقتصر فقط على برنامج مقاومة فيروسات أو برنامج جدار ناري، و لا يختلف اثنان على أن إتقان وفهم أساليب القراصنة هو من أنجح الطرق وأضمنها في الحماية -وهذا هو مبدأنا في ذا الكتيب- ، لا يظن ظان أن الإلمام بطرق القرصنة هو فهم طريقة استخدام برنامج معين للدخول على جهاز آخر أو استغلال ثغرة أمنية مكتشفة للدخول على لوحة تحكم موقع معين، فالأمر ربما يكون أعقد من ذلك بكثير! ومثلما نرى أن هنالك منافسة بين قوى الخير وقوى الشر في جميع المجالات، فمع تطور أنظمة التشغيل تتطور وسائل وأساليب الهاكرز (القراصنة)، الحقيقة أن القاعدة الشهيرة لهؤلاء القراصنة التي تنص على أنه لا يوجد نظام أو برنامج كامل وآمن 100%، هي قاعدة تتجذر وتثبت نفسها يوما بعد يوم، هذه القاعدة لا تعني بالضرورة أنه لا يوجد نظام أو برنامج كامل في عمله، عكس هذا تماما, أصبحت اليوم البرامج تعطي النتائج المرجوة ويعني هذا الشيء أنه لا يوجد خطأ برمجي في ذاك البرنامج، لكن من قال أن البرنامج الذي لا يحتوى على خطأ برمجي هو برنامج كامل وآمن 100%؟ الهاكرز دائما لهم وجهة نظر أخرى! كيف يمكن فك هذا التناقض يا ترى ؟! لاستيعاب هذا الأمر يجب التفريق بين الخطأ البرمجي والخطأ الأمني، ففي كثير من الأوقات يتداخل النوعان معاً، فقد يسبب الخطأ البرمجي ثغرة أمنية وقد لا يسبب، سنأخذ مثال بسيط على ذلك وهو تطبيق الويب الشهير مجلة ASP NUKE 0.80 من المعلوم أن هذه الإصدارة بها ثغرة من نوع cross site scripting أو XSS، حيث يوجد في المسار module/support/language صفحة باسم select.asp و وظيفة هذه الصفحة تحديد لغة من خلال كود معين، بحيث إذا توفرت اللغة المطلوبة يتم تحويل التطبيق لهذه اللغة وإذا لم تتوفر يقوم التطبيق بعرض رسالة خطأ تخبر بعدم توفر اللغة المطلوبة (مثل أي لغة يسمى هذا بالبديل المزدوج ) بهذه الطريقة نرى أن الكود البرمجي صحيح ويقوم بعمله على أتم وجه، أي أنه لا توجد أخطاء من ناحية برمجية، لكن دعونا نرى وجهة الهكر في هذا الموضع، قام الهكر باستغلال رسالة الخطأ التي تظهر عند اختيار لغة غير متوفرة، فكرةُ أن اللغة الغير متوفرة تظهر في رسالة الخطأ على اسمها لكن بشكل يقبل تنفيذ الأكواد، فكرةٌ توفر إمكانية طباعة كود HTML بدل اسم اللغة غير المتوفرة، ماذا يعني هذا؟ لو وضعنا كود HTML لرابط صورة معينة، بكل بساطة ستظهر الصورة في رسالة الخطأ! ماذا لو تقدم الهاكر خطوة وقام بوضع سكربت (Script) جافا متطور؟ بالتأكيد عندها يستطيع مثلا إظهار الكوكيز لمدير الموقع!، بهذه الثغرة وجدنا الفرق بين الخطأ البرمجي والثغرة الأمنية، دعنا الآن نرى الموضوع من جهة أخرى، من قام بإيجاد مثل هذه الثغرة؟ - تذكر أن مبرمجي المجلة محترفون! لا شيء مستحيل أبداً، ولا تعتقد أبداً أن المبرمجين كانوا على دراية بهذه الثغرات في أعمالهم البرمجية قبل نشرها، فهم يصعقون دوماً عند اختراق أعمالهم، لهذا لا أعتقد أن شركات أنظمة التشغيل تتحدث بمصداقية تامة عندما تقوم بالترويج عن نظامها الذي ستطرحه قريبا، فهناك أعين تترصد أي فجوة في هذه الأنظمة وقد تستغلها في أي لحظة.
تبسيط فكرة عمل برامج الانتي فيرس
مثل (Nortonتعمل برامج الأنتي فيرس كدرع واقي من هذه الفيروسات، إذ إن لهذه البرامج القدرةعلى تمييز الملف الحميد من غيره.! في الحقيقة أن كل ملف مهما كان امتداده ونوعه يمكن أن تترجم تركيبته إلى قيم أو رموز تسمى القيم الست عشرية وتكتب اختصارا (Hex)، وبرامج مقاومة الفيروسات تتعرف على الملفات الخبيثة بطرق ووسائل متعددة تكون مرتبطة ارتباطا مباشرا بالقيم
الست عشرية. ويمكنك استخدام أحد محررات القيم الست عشرية لرؤية قيم ملف معين، من أشهر هذه المحررات وأكثرها احترافا برنامج Hex Workshop، يمكنك زيارة موقعه التفاعلي على العنوان www.bpsoft.com (http://www.bpsoft.com/).
وسنتطرق أكثر في القيم الست عشرية في جزء آخر، مثل أي ملف آخر فإن للفيروسات تواقيع رقمية،و حيث أن برامج مقاومة الفيروسات تقوم بتحليل الفيروسات الجديدة ومن ثم اختيار تواقيع معينة بآلية معينة ومختلفة من برنامج لآخر، و من ثم إضافة هذه التواقيع إلى قاعدة بيانات برنامج مقاومة الفيروسات، عند قيام البرنامج بفحص ملف معين، يقوم بمقارنة تواقيع هذا الملف مع التواقيع الموجودة في قاعدة البيانات، فإن تطابق توقيع الملف مع أي توقيع في قاعدة البيانات يتم تعريف الملف ملفا خبيثا أو فيروسا، وإلا فلا.
ماذا نفهم من هذه الآلية؟ نفهم أننا بتغيير توقيع الفيروس يمكن أن نجعله ملفا حميدا في أعين برامج الحماية، وقد أستغل القراصنة هذه الفكرة كثيرا.
برامج الحماية لا تقوم باختيار هذه التواقيع عشوائيا، وإنما بأسس معينة مراعية في ذلك حجم الفيروس وطبيعته وغير ذلك، و للاستفاضة في كيفية اختيار التواقيع يمكنك زيارة الرابط http://www.jaascois.com/research/36601021
وكقاعدة عامة استخدام بــرامج مقاومــة الفيروسات لا يعنــي أن جهــازك محمـي مـن كــل الهجمــات والاختراقات لأن برامــج الحمـايــة فــي الأصـل لا تتعرف على هذه الفيروسات إلا بعد ظهورها وانتشارها فـــي العـالــم وبعد ذلك يتم تحليل هذه الفيروسات وإضافة تواقيعها إلى برامج الحماية.
يعتمد أي برنامج (Anti Virus) على أربعة أسس لاكتشاف وإزالة الفيروسات وملفات التجسس من أنظمة التشغيل بشتى أنواعها..هي
» تحليل الملف.
» تعريف أكواد خبيثة فيه.
» إصدار توقيع له.
» ومن ثم اصطياده.
مراقبة و تحليل الملفات يعتبر من أرهق الخطوات لدى مبرمجي مقاومات الفيروسات، لأن هذهالعملية تحتاج ترصد دائم ومستمر لشتى أنواع الملفات ومصادرها وطبيعة العملوالتدفقالبرمجي الخاص بها، لندخل أكثر في التفاصيل..
exe و DLL و OCX ..الخ، تعرف بالملفات التنفيذية، هذه الملفات مقسمة أساسا إلى مقدمة و محتوى، والمقدمة بحد ذاتها لها 3 أقسام:
1. مقدمة DOS.
2. مقدمة Portable Executable (PE).
3. الأقسام.
http://raqee.jeeran.com/droos/Exefiles.gif
الفيروسات الحديثة أهملت مقدمة DOS لأنها لن تحتاجها في ذا الجيل من الأنظمة،و لكل مقدمة من هذه المقدمات قيم مصنفة بالرموز الست عشرية (Hexadecimal) ولها وظائف معينة، ولا يفقه هذه الوظائف إلا من له شأن في لغة التجميع (الأسمبلي)، وأبسط برامج المقاومة في العمل هي التي تقوم بحفظ كل قيم المقدمات (كتوقيع) للتعرف على الملف كونه خبيث أو حميد.
كل هذا لا يعني أن برامج المقاومة جميعها تستخدم نفس الفكرة بالطبع لا!
الطرق متعددة جدا، مثلا بعض المقاومات، تقوم بتشفير بعض من أكواد الفيروسات عن طريق MD5 ومن ثم تقوم بالمقارنة لتميز الملفات، فالمهم هو إيجاد بصمة في الملف لا يُتوقع وجودها في غيره.
قد يسأل سائل: كيف تستطيع شركات مقاومات الفيروسات اكتشافالفيروسات الجديدة؟
ظهور أي خبر عن وجود ثغرة جديدة في نظام ويندوز مثلا ينبأ عن ظهور فيروس سيستغل تلك الثغرة، بالتالي يقوم خبراء شركات المقاومة بتقصي ومراقبة تلك الثغرات، ليتصيدوا أي بريمج خبيث يحاول الاستغلال، وتوفر مواقع الأمن (السيكيورتي) المعلومات اللازمة، عن مثل هذه الثغرات، هنالك أيضا مجموعات الهكرز التي تتزايد يوما بعد يوم مثل http://vx.netlux.org (http://vx.netlux.org/)
أيضا المواقع مثل: http://virusscan.jotti.org (http://virusscan.jotti.org/) و http://www.virustotal.com (http://www.virustotal.com/)
هذه المواقع توفر خدمة لفحص الملفات ببرامج مقاومة متعددة، مثل هذه المواقع توفربيانات, عن الفيروسات وأحصنة طروادة وحتى المعدلة منها تكشف عن طريق مثل هذه المواقع.
تقنية:
RootKit
نبذة بسيطة:
هل صادف وأن سمعت بشيء يسمى تقنية الـ (Root Kit)؟ حاليا تعتبر هذه التقنية إلى حد بعيد من أذكى التقنيات, بل أن برامج الحماية أصبحت تعاني بسبب الروت كيت.
ما هو الروت كيت؟
الروت كيت تقنية في الأكواد والبريمجات تصرح لها وجوداً دائماً في النظام وغير قابل للكشف من برامج المراقبة، وبشكل احترافي الروت كيت هو الغير قابلية للكشف "undetectable" , وقد استفاد قراصنة الحاسوب من هذه التقنية كي يتواجدوا تواجدا دائما في نظام معين، أما إذا خططوا لسرقة معلومات ومن ثم ترك النظام فلا أعتقد أنهم يحتاجون لوضع أثر لهم في ذلك النظام بعد أن قضوا وطرا منه.
هنا نلاحظ هذه الخاصية في أحد البرامج الخبيثة
http://raqee.jeeran.com/ivykit.gif
كيف يعمل الروت كيت؟ (How Do Root kits Work) :
فكرة وطريقة عمل الروت كيت ليست معقدة كثيرا، فهو يعمل بمبدأ يسمىالتعديل (modification), فلنتابع معاً السطور القادمة لفهم هذه السمفونية
- الترقيع Patching:
الكود القابل للتنفيذ (Executable code ) يحتوي على متسلسلة من التعابير المشفرة كبايتات بياناتية.
وهذه البايتات تكون منظمة بدقة، وكل بايت منها يعني شيء ما للكمبيوتر،و البرامج يمكن أن تُعدَّل إذا تم تعديل هذه البايتات، هذا التعديل أو التغيير يسمى (ترقيع).
وفي الحقيقة أن البرمجيات (Software) ليست ذكية، فهي تقوم بما تُخبر به فقط، ولا تعمل شيء غير ذلك. لهذا السبب التعديل فيها له أثر في عملها، فالترقيع أحد الوسائل التي يستخدمها الكراكرز (Crackers) للتنصل من برامج الحماية والمراقبة، ومن الطريف في الأمر أن الترقيع أيضا يستخدم لخداع ألعاب الفيديو (Video Games) مثلا لإعطائك زمن أطول للحياة أو جمع عدد أكبر من الذهب والنقاط أو فضح فريق كرة قدم كبير مثل البرازيل بتسجيل عدد خيالي من الأهداف في شباكه J.
تعديل الشفرة البرمجية المصدرية (Source-Code Modification):
يمكن تغيير الأكواد المصدرية للملفات، حيث أن المبرمج البارع يمكن أن يدخل (insert) ما يسمى بالـسطور الخبيثة (malicious lines) إلى سطور الأكواد الأصلية للبرنامج، وما يسمى بالبرامج المفتوحة المصدر (open-source programs) فهذه تسمح لأي شخص في التعديل على البرنامج، بحيث يمكن للمبرمج الخبيث أن يعرض برنامج معين لما يسمى بفيض الذاكرة (overflow buffer) لهدف محدد، ومن ثم استغلال هذا الهدف لوضع Backdoor.
http://raqee.jeeran.com/clvrkit.gif
هنا نلاحظ (خريطة التدفق البرمجي) لملف محقون بروت كيت
وللتوضيح أكثر عن خريطة التدفق البرمجي فهي بشكل مبسط عبارة عن المتسلسلات والخوارزميات التي يقوم بها برنامج ما، ويساعد رسم مثل هذه الخرائط على التخطيط السليم للمبرمج قبل قيامه بتخليق برنامجه.
أنواع الروت كيت:
تنقسم أنواع الروت كيت إلى ثلاثة أنواع حسب موقع ومكان الملفات والأنظمة التي تصيبها:
1- جوهر النظام (نواة النظام) (kernel).
2- ملفات مكتبة الربط الديناميكي (DLL-Dynamic Link Library).
3- ملفات التطبيقات ( applications).
http://raqee.jeeran.com/kos.gif
نلاحظ في الصورة السابقة أن برامج المستخدم تقع في الحلقة رقم (3) بمعنى أن المستخدم ليس له امتيازات في الوصول للحلقة التي سبقته إلا في حالات خاصة، كل ما نراه تقريبا من برامج الأوفيس والوسائط المتعددة والفوتوشوب والماسنجر وغيره تقع في الحلقة رقم (3).
نلاحظ كذلك أن نواة نظام التشغيل تقع في الحلقة (0) ولها كل الامتيازات للوصول لأي مكان ولأي حلقة أخرى، بعكس حلقة التطبيقات التي لا تستطيع الوصول لأي مكان إلا عن طريق لواحق نظام التشغيل (OS).
الروت كيت الخاص بنواة النظام له إحدى اثنتين، إما أن يضيف أكواده في ملف معين في النواة، أو أن يستبدل أكواد معينه بأكواده الغير حميدة، وسواقات الأجهزة (device drivers) أحد أمثلة ملفات النواة التي يمكن أن تصاب بالروت كيت، ويعتبر هذا النوع من أخطر الأنواع لأنه إن لم يتوفر البرنامج المناسب فمن الصعب اكتشافه وإزالته.
OS loader هو أول برنامج تحكم يستلم التحكم من BIOS ويبدأ هذا البرنامج بمعالجة عمليات الإقلاع في النظام عن طريق بدء تحميل سواقات الأجهزة.. وفيروسات الروت كيت المحقونة على مستوى النواة يتم تحميلها على أنها سواقة جهاز!! ياه بالفعل أمر عجيب!!
الآن اتجه نحو المسار التالي في نظام XP لترى ما هو أعجب
C:\WINDOWS\system32\winlogon.exe
http://raqee.jeeran.com/wlog.gif
أنه ملف winlogon.exe أتعرف من يكون هذا الملف؟
أنه البرنامج المسئول عن الشاشة الزرقاء لنظام إكس بي التي تقوم بالترحيب بالمستخدم بعبارة (مرحبا) أو (welcome).
حقن هذا الملف بفيروس من نوع روت كيت سيصعب من عملية إزالته..
بحيث إذا حاولت إزالة الكود الخبيث منه سيعاود البرنامج المحقون كتابة الكود أثناء الخروج من النظام بظهور الشاشة الزرقاء التي تخبر بأن النظام يقوم بحفظ الإعدادات!! وهكذا سنجد أنفسنا أمام حلقة غير منتهية.
لاحظ أن هذا الملف من أوائل الملفات التي تعمل عند بداية دخول النظام، من جهة أخرى هو من أواخرها أيضا!
ما لا يمثله الروت كيت:
· الروت كيت لا يعبر عن ثغرة:
ربما استخدام تقنية الروت كيت يقترن بالثغرات، في الحقيقة اقترانه بشيء معين يعتمد على استخداماته، فالتقنية هذه تستخدم أيضا من قبل البرامج المفيدة.
يمكن أن يُدمج الروت كيت في ثغرات البرامج، لكنه بحد ذاته ليس بثغرة- كما أسلفنا-، فالذي يقوم بوضع هذه التقنية يحتاج لمدخل للوصول إلى نواة النظام (Kernel) هذا المدخل يتطلب برنامج أو أكثر من برنامج تتم عملية إقلاعه مع إقلاع نظام التشغيل، والطرق التي تسمح بإدخال روت كيت على مستوى نواة النظام محدودة جداً (مثل سواقات الأجهزة)، وكثيرٌ من هذه الطرق تكون مكشوفة ومعروفة مسبقاً، ولهذا فإن إحدى الطرق المبتكرة لحقن الروت كيت تكمن في استغلال ثغرات البرامج المناسبة، فالكثير من ثغرات البرامج تسمح في إمكانية حقن
أكواد خبيثة، فهناك ثغرات الفيض (Buffer Overflow) التي تسمح في كثير من الأحيان بتنفيذ أكواد خبيثة من خلالها، تخيل وجود مثل هذه الثغرات على مستوى نواة النظام.
ثغرات الفيض على مستوى النواة (Kernel-buffer overflows) يمكن أن توجد في سواقات الأجهزة وخير مثال عليها سواقات أجهزة الطبع (Printers). والشخص المخول في اكتشاف مثل هذه الثغرات واستغلالها يكون على دراية تامة ومهارة في التعامل مع ما يسمى بالهندسة العكسية.
· الروت كيت لا يعبر عن فيروس:
الفيروس هو برنامج قادر على التكاثر ونسخ نفسه في الأنظمة تلقائيا، على النقيض من هذا لا تعبر تقنية روت كيت عن هذا مطلقا، ولا تحمل عقلية مبرمجها أصلا، فهذه التقنية متخصصة في المكوث الدائم في النظام ليس إلا.
في معظم الحالات من الخطر لدى القراصنة استخدام فيروس للتسلل و التخريب في الأنظمة أو جزء من ملفاتها، لأن معظم الفيروسات تكون مزعجة وخارج السيطرة، أدوات الروت كيت تمكن القراصنة والمهاجمين من البقاء على سيطرة تامة لهجماتهم.
القيم الست عشرية
ماهية القيم الست عشرية:
ذو قاعدة الـ16 (النظام الست عشري) أو (hexadecimal) وبشكل أبسط (Hex) هو نظام عددي مبني على 16رمزا، وهذا النظام العددي يستخدم الأرقام من صفر(0) إلى (9) والحروف من (A) إلى (F)، في بدايته استخدم هذه النظام في عام 1963م من قبل شركة آي بي إم (IBM).
http://raqee.jeeran.com/16hex.gif
والحقيقة أن شركة أخرى استخدمت هذا النظام في 1956م غير أنه كان يعتمد على الحروف من (U) إلى (Z) بالإضافة إلى الأرقام.
على سبيل المثال العدد العشري (93) هو نفسه العدد (01011101) في نظام العد الثنائي وهذا العدد يمكن أن يكتب (5d) بالنظام الست عشري.
التمثيل الست عشري (Representing hexadecimal):
بعض أرقام النظام الست عشري (Hex) لا تختلف عن أرقام نظام العد العشري، لذلك
عند كتابة مثل هذه الأرقام يوضع إشارة أو دليل يدل على نظام الكتابة، مثال:
5A316, 5A3SIXTEEN, or 5A3HEX.
وتستطيع لغات البرمجة تمييز القيم الست عشرية من خلال علامات و بادئات استهلالية مختلفة، فمثلا في لغة الـ C واللغات الشبيهة بها ( C++ و C# و JAVA) يشار إلى القيم الست عشرية برمز استهلالي وهو (0x) ومثال ذلك (0x5A3)، كذلك تستطيع لغة الـ HTMLتمييز هذا النظام العددي باستخدام البادئة (x) وكمثال يكتب الكود (֣) في النظام الست عشري هكذا (֣), وكذلك الألوان في هذه اللغة تستهل بـ (#) فمثلا (FFFFFF#) هو ما نسميه بكود اللون الأبيض.
وهكذا فكل لغة برمجية لها رموز ودلائل تستطيع من خلالها تمييز قيم النظام الست عشري، ولم يتفق على توحيد هذه الدلائل.
استخدامات القيم الست عشرية:
توجد مجالات كثيرة يكون للقيم الست عشرية دور فيها، فغالبا ما يستخدم هذا النظام العددي في لغات البرمجة-كما أسلفنا الذكر- وخاصة لغتي HTML و CSS.
فهذه اللغات تستخدم ترميزا ستا عشريا لتحديد الألوان على صفحات الانترنت، 24 بيتً من هذه الألوان يصاغ على هيئة #RRGGBB، حيث يحدد RR قيمة للون الأحمر، و GG قيمة اللون الأخضر، وBB قيمة اللون الأزرق، فمثلا درجة اللون الأحمر تعطى بـ (238,9,63) في النظام العشري، بينما تصاغ كـ #EE093F في النظام الست عشري Hex .
أيضا وكما هو معروف في عناوين مواقع الانترنت URLs تستخدم رموز هيكس حيث تميز ببادئة استهلالية وهي العلامة المئوية %، واستغل مستخدمو برامج الاختراق هذه الخاصية، حيث قاموا بإخفاء مسار وعناوين خوادمهم (الفيروسات) وصفحاتهم المزورة من أعين الضحايا وذلك عن طريق طمر عناوين مواقعهم وجعلها مكتوبة بلغة غير مفهومة(رموز ست عشرية) لدى الضحية العادي .
والجدير بالذكر أنه يمكن ترجمة لغة الآلة وأوامرها –المبنية على الرقمين صفر وواحد- لأي برنامج كان إلى رموز ست عشرية (رموز هيكس) حيث يمكن التحويل بتمثيل كل موقع في الكود المصدري وهذا تماما ما تظهره محررات الهيكس أمثال Hex workshop.
بالعودة لدرس آلية عمل برامج مقاومة الفيروسات، فهمنا أن هذه البرامج تتعرف على ملفات التجسس والفيروسات من خلال أخذ تواقيع ست عشرية معينة للفيروس، دعنا نفترض الآن أن لدينا ملف جديد اكتشفنا أنه فيروس و لنسمه Virus.exe، قمنا بتحليل الفيروس واستخرجنا توقيع له ليُعرّف من خلاله على أنه فيروس عن طريق برنامج مقاومة فيروسات معين، ولنفترض أن هذا التوقيع هو:
BBDFB72F873799E7BDDC43B5DBB7FC1738DAFC206E0A17A17CE934F8983
ماذا لو أتينا بسطر التوقيع السابق وقمنا ببعض التغييرات عليه ليصبح كالآتي:
ABDFB72F873799E7BDDC43B5DBB8FC1738DAFC205E0A17A17C0934F8983
نلاحظ أننا غيرنا قيم معينة في التوقيع إلى قيم أخرى كالتالي
B -> A
7 -> 8
6 -> 5
E -> 0
هكذا نجد أن برنامج مقاومة الفيروسات يتعرف على الفيروس كأي ملف حميد آخر، وهذه النقطة استغلها القراصنة ومستخدمو البرامج الخبيثة كثيراً، لكن كثيراً ما كانت تواجههم بعض المشاكل مثل تعطل ملف الفيروس عن العمل عند تغيير بعض تواقيعه وقيمه الست عشرية، لكن ما هو تفسير تعطل الفيروس عند تغيير قيم معينة، وعدم تضرره عند تغيير قيم أخرى له؟
نستطيع تقسيم القيم الست عشرية للملفات إلى قسمين كالتالي:
الأولى: قيم ست عشرية بياناتية Hex data
الثانية: قيم ست عشرية برمجية Hex codes
القيم الست عشرية البياناتية تكون عبارة عن قيم مترجمة من نصوص وتسميات تعريفية للمستخدم ،لذلك لا يؤثر تغيير هذه القيم على عمل الفيروس، أما القيم الست عشرية البرمجية فهي مترجمة من أكواد برمجية وتعليمات مهمة في عمل الفيروس، لذلك أي تغيير في هذه القيم قد يؤدي إلى تعطيل عمل الفيروس، ففي مترجم الفيجوال بيسك مثلا، عندما نقوم بعمل Form جديد ونضع عليه زر Button ومن ثم ندرج Form2, بعدها نحاول ربط الزر الذي أدرجناه على Form1 بـالـ Form2ليظهره، سنقوم بكتابة الكود التالي في حالة عمل Click على الزر:
http://raqee.jeeran.com/Vbcd1.gif
التعليمة “Form2.show” ستتحول إلى قيم ست عشرية بطريقة معينة، ولأننا إنْ غيرنا هذه التعليمة مثلا إلى “FormQ.show” سيؤدي هذا إلى حدوث خلل ما في عمل هذا البريمج، تماما سيؤدي التغيير في القيم الست عشرية المترجمة من هذه التعليمة إلى خلل أيضاً.
تتباين لغات البرمحة في العديد من مزاياها، لكن إذا احترفت إحداها، تستطيع القيام بأي شيء يمكن القيام به في أية لغة برمجية أخرى، وكلما كانت اللغة البرمجية أقرب إلى لغة الآلة، كانت أدق وأصعب في التعلم، وبالتالي ستكون البرامج الناتجة عنها أصغر في حجمها من أية برنامج ناتج من لغة أخرى، تعد لغة الأسمبلي (Assembly) من اللغات التي تحتاج إلى فترة ليست وجيزة لتعلمها، ذلك لأنها من أقرب اللغات إلى لغة الآلة، تُستخدم مثل هذه اللغة كثيرا من قبل كاسري شفرات البرامج، والذين يسمون بـ "الكراكرز"، الهدف الأساسي لهؤلاء الكراكرز هو جعل البرامج التجارية برامج ذات طابع مجاني "غير مصرَّح".
هذا والله الموفق.
:smirk:
الحمد لله الذي هدانا الطريق القويم، وبرأ القرآن من التحريف وحفظه سرمديا سليم، والصلاة والسلام على النبي الأمين، محمد بن عبد الله وعلى صحابته أجمعين، وبعد
لا أريد الإطالة في المقدمات وما يشوبها أحيانا من تزيين، باختصار كنت قد كتبت عدداً من المواضيع على الانترنت في عدة منتديات، وربما فارق الوقت بين موضوع والموضوع الآخر أدى إلى طمس الموضوع الأول وعدم الاستفادة منه أو حتى تنقيحه بشكل ملائم، وبدت لي فكرة تجميع المواضيع والزيادة عليها مفيدة جدامع الأخذ بعين الاعتبار أن الكثير من المعلومات في هذه الدروس هي اجتهاد شخصي ، فالمعلومات التي بها قابلة للخطأ والتصويب، ومثلما نعلم أصبح اليوم النقد البناء أحد الأمور التي يشار لها بالبنان في شتى المجالات، لذلك أنا أتقبل أي نقد بكل رحابة صدر:kiss: ،،
بادئ ذي بدء، البحث متمركز حول 3 مواضيع أساسية هي/
آلية عمل برامج الأنتي فيرس
تقنية الروت كيت
ماهية القيم الست عشرية
M
كثير منهم من صب جل لومه على برنامج مقاومة الفيروسات Norton AV بعد اكتشاف الثغرة الأمنية التي تمنعه من القيام بفحص مجلد معين في النظام، ماذا حدث بعدها؟ الكل صار يقول أن النورتن برنامج ضعيف، النورتن صار عجوز، النورتن لا يصلح! في الحقيقة أن هذا تماما ما حصل لبرنامج نظام التشغيل ويندوز بعد انتشار فيروسا بلاستر وساسر، صارت الناس تقيِّم ويندوز على أنه نظام تشغيل غير آمن، ولو تمعنا النظر في هذه الأمور ونظرنا إليها من جهة واقعية، لوجدناها مبنية على أساس غير دقيق، في الحقيقة أن النظام الذي يُتداول عنه بأنه من أأمن أنظمة التشغيل وهو لينكس، لم يتعرض كما تعرض له ويندوز من تحليل ودراسة من قبل المختصين والهواة والقراصنة وشركات الأنظمة المنافسة، وأعتقد لو أن نظاما مثل لينكس تعرض لما يتعرض له ويندوز لصار اكتشاف الثغرات به أمر سخيف لأبعد الحدود! على العموم مجال أمن المعلومات وحماية البيانات مجال واسع جداً ولا يقتصر فقط على برنامج مقاومة فيروسات أو برنامج جدار ناري، و لا يختلف اثنان على أن إتقان وفهم أساليب القراصنة هو من أنجح الطرق وأضمنها في الحماية -وهذا هو مبدأنا في ذا الكتيب- ، لا يظن ظان أن الإلمام بطرق القرصنة هو فهم طريقة استخدام برنامج معين للدخول على جهاز آخر أو استغلال ثغرة أمنية مكتشفة للدخول على لوحة تحكم موقع معين، فالأمر ربما يكون أعقد من ذلك بكثير! ومثلما نرى أن هنالك منافسة بين قوى الخير وقوى الشر في جميع المجالات، فمع تطور أنظمة التشغيل تتطور وسائل وأساليب الهاكرز (القراصنة)، الحقيقة أن القاعدة الشهيرة لهؤلاء القراصنة التي تنص على أنه لا يوجد نظام أو برنامج كامل وآمن 100%، هي قاعدة تتجذر وتثبت نفسها يوما بعد يوم، هذه القاعدة لا تعني بالضرورة أنه لا يوجد نظام أو برنامج كامل في عمله، عكس هذا تماما, أصبحت اليوم البرامج تعطي النتائج المرجوة ويعني هذا الشيء أنه لا يوجد خطأ برمجي في ذاك البرنامج، لكن من قال أن البرنامج الذي لا يحتوى على خطأ برمجي هو برنامج كامل وآمن 100%؟ الهاكرز دائما لهم وجهة نظر أخرى! كيف يمكن فك هذا التناقض يا ترى ؟! لاستيعاب هذا الأمر يجب التفريق بين الخطأ البرمجي والخطأ الأمني، ففي كثير من الأوقات يتداخل النوعان معاً، فقد يسبب الخطأ البرمجي ثغرة أمنية وقد لا يسبب، سنأخذ مثال بسيط على ذلك وهو تطبيق الويب الشهير مجلة ASP NUKE 0.80 من المعلوم أن هذه الإصدارة بها ثغرة من نوع cross site scripting أو XSS، حيث يوجد في المسار module/support/language صفحة باسم select.asp و وظيفة هذه الصفحة تحديد لغة من خلال كود معين، بحيث إذا توفرت اللغة المطلوبة يتم تحويل التطبيق لهذه اللغة وإذا لم تتوفر يقوم التطبيق بعرض رسالة خطأ تخبر بعدم توفر اللغة المطلوبة (مثل أي لغة يسمى هذا بالبديل المزدوج ) بهذه الطريقة نرى أن الكود البرمجي صحيح ويقوم بعمله على أتم وجه، أي أنه لا توجد أخطاء من ناحية برمجية، لكن دعونا نرى وجهة الهكر في هذا الموضع، قام الهكر باستغلال رسالة الخطأ التي تظهر عند اختيار لغة غير متوفرة، فكرةُ أن اللغة الغير متوفرة تظهر في رسالة الخطأ على اسمها لكن بشكل يقبل تنفيذ الأكواد، فكرةٌ توفر إمكانية طباعة كود HTML بدل اسم اللغة غير المتوفرة، ماذا يعني هذا؟ لو وضعنا كود HTML لرابط صورة معينة، بكل بساطة ستظهر الصورة في رسالة الخطأ! ماذا لو تقدم الهاكر خطوة وقام بوضع سكربت (Script) جافا متطور؟ بالتأكيد عندها يستطيع مثلا إظهار الكوكيز لمدير الموقع!، بهذه الثغرة وجدنا الفرق بين الخطأ البرمجي والثغرة الأمنية، دعنا الآن نرى الموضوع من جهة أخرى، من قام بإيجاد مثل هذه الثغرة؟ - تذكر أن مبرمجي المجلة محترفون! لا شيء مستحيل أبداً، ولا تعتقد أبداً أن المبرمجين كانوا على دراية بهذه الثغرات في أعمالهم البرمجية قبل نشرها، فهم يصعقون دوماً عند اختراق أعمالهم، لهذا لا أعتقد أن شركات أنظمة التشغيل تتحدث بمصداقية تامة عندما تقوم بالترويج عن نظامها الذي ستطرحه قريبا، فهناك أعين تترصد أي فجوة في هذه الأنظمة وقد تستغلها في أي لحظة.
تبسيط فكرة عمل برامج الانتي فيرس
مثل (Nortonتعمل برامج الأنتي فيرس كدرع واقي من هذه الفيروسات، إذ إن لهذه البرامج القدرةعلى تمييز الملف الحميد من غيره.! في الحقيقة أن كل ملف مهما كان امتداده ونوعه يمكن أن تترجم تركيبته إلى قيم أو رموز تسمى القيم الست عشرية وتكتب اختصارا (Hex)، وبرامج مقاومة الفيروسات تتعرف على الملفات الخبيثة بطرق ووسائل متعددة تكون مرتبطة ارتباطا مباشرا بالقيم
الست عشرية. ويمكنك استخدام أحد محررات القيم الست عشرية لرؤية قيم ملف معين، من أشهر هذه المحررات وأكثرها احترافا برنامج Hex Workshop، يمكنك زيارة موقعه التفاعلي على العنوان www.bpsoft.com (http://www.bpsoft.com/).
وسنتطرق أكثر في القيم الست عشرية في جزء آخر، مثل أي ملف آخر فإن للفيروسات تواقيع رقمية،و حيث أن برامج مقاومة الفيروسات تقوم بتحليل الفيروسات الجديدة ومن ثم اختيار تواقيع معينة بآلية معينة ومختلفة من برنامج لآخر، و من ثم إضافة هذه التواقيع إلى قاعدة بيانات برنامج مقاومة الفيروسات، عند قيام البرنامج بفحص ملف معين، يقوم بمقارنة تواقيع هذا الملف مع التواقيع الموجودة في قاعدة البيانات، فإن تطابق توقيع الملف مع أي توقيع في قاعدة البيانات يتم تعريف الملف ملفا خبيثا أو فيروسا، وإلا فلا.
ماذا نفهم من هذه الآلية؟ نفهم أننا بتغيير توقيع الفيروس يمكن أن نجعله ملفا حميدا في أعين برامج الحماية، وقد أستغل القراصنة هذه الفكرة كثيرا.
برامج الحماية لا تقوم باختيار هذه التواقيع عشوائيا، وإنما بأسس معينة مراعية في ذلك حجم الفيروس وطبيعته وغير ذلك، و للاستفاضة في كيفية اختيار التواقيع يمكنك زيارة الرابط http://www.jaascois.com/research/36601021
وكقاعدة عامة استخدام بــرامج مقاومــة الفيروسات لا يعنــي أن جهــازك محمـي مـن كــل الهجمــات والاختراقات لأن برامــج الحمـايــة فــي الأصـل لا تتعرف على هذه الفيروسات إلا بعد ظهورها وانتشارها فـــي العـالــم وبعد ذلك يتم تحليل هذه الفيروسات وإضافة تواقيعها إلى برامج الحماية.
يعتمد أي برنامج (Anti Virus) على أربعة أسس لاكتشاف وإزالة الفيروسات وملفات التجسس من أنظمة التشغيل بشتى أنواعها..هي
» تحليل الملف.
» تعريف أكواد خبيثة فيه.
» إصدار توقيع له.
» ومن ثم اصطياده.
مراقبة و تحليل الملفات يعتبر من أرهق الخطوات لدى مبرمجي مقاومات الفيروسات، لأن هذهالعملية تحتاج ترصد دائم ومستمر لشتى أنواع الملفات ومصادرها وطبيعة العملوالتدفقالبرمجي الخاص بها، لندخل أكثر في التفاصيل..
exe و DLL و OCX ..الخ، تعرف بالملفات التنفيذية، هذه الملفات مقسمة أساسا إلى مقدمة و محتوى، والمقدمة بحد ذاتها لها 3 أقسام:
1. مقدمة DOS.
2. مقدمة Portable Executable (PE).
3. الأقسام.
http://raqee.jeeran.com/droos/Exefiles.gif
الفيروسات الحديثة أهملت مقدمة DOS لأنها لن تحتاجها في ذا الجيل من الأنظمة،و لكل مقدمة من هذه المقدمات قيم مصنفة بالرموز الست عشرية (Hexadecimal) ولها وظائف معينة، ولا يفقه هذه الوظائف إلا من له شأن في لغة التجميع (الأسمبلي)، وأبسط برامج المقاومة في العمل هي التي تقوم بحفظ كل قيم المقدمات (كتوقيع) للتعرف على الملف كونه خبيث أو حميد.
كل هذا لا يعني أن برامج المقاومة جميعها تستخدم نفس الفكرة بالطبع لا!
الطرق متعددة جدا، مثلا بعض المقاومات، تقوم بتشفير بعض من أكواد الفيروسات عن طريق MD5 ومن ثم تقوم بالمقارنة لتميز الملفات، فالمهم هو إيجاد بصمة في الملف لا يُتوقع وجودها في غيره.
قد يسأل سائل: كيف تستطيع شركات مقاومات الفيروسات اكتشافالفيروسات الجديدة؟
ظهور أي خبر عن وجود ثغرة جديدة في نظام ويندوز مثلا ينبأ عن ظهور فيروس سيستغل تلك الثغرة، بالتالي يقوم خبراء شركات المقاومة بتقصي ومراقبة تلك الثغرات، ليتصيدوا أي بريمج خبيث يحاول الاستغلال، وتوفر مواقع الأمن (السيكيورتي) المعلومات اللازمة، عن مثل هذه الثغرات، هنالك أيضا مجموعات الهكرز التي تتزايد يوما بعد يوم مثل http://vx.netlux.org (http://vx.netlux.org/)
أيضا المواقع مثل: http://virusscan.jotti.org (http://virusscan.jotti.org/) و http://www.virustotal.com (http://www.virustotal.com/)
هذه المواقع توفر خدمة لفحص الملفات ببرامج مقاومة متعددة، مثل هذه المواقع توفربيانات, عن الفيروسات وأحصنة طروادة وحتى المعدلة منها تكشف عن طريق مثل هذه المواقع.
تقنية:
RootKit
نبذة بسيطة:
هل صادف وأن سمعت بشيء يسمى تقنية الـ (Root Kit)؟ حاليا تعتبر هذه التقنية إلى حد بعيد من أذكى التقنيات, بل أن برامج الحماية أصبحت تعاني بسبب الروت كيت.
ما هو الروت كيت؟
الروت كيت تقنية في الأكواد والبريمجات تصرح لها وجوداً دائماً في النظام وغير قابل للكشف من برامج المراقبة، وبشكل احترافي الروت كيت هو الغير قابلية للكشف "undetectable" , وقد استفاد قراصنة الحاسوب من هذه التقنية كي يتواجدوا تواجدا دائما في نظام معين، أما إذا خططوا لسرقة معلومات ومن ثم ترك النظام فلا أعتقد أنهم يحتاجون لوضع أثر لهم في ذلك النظام بعد أن قضوا وطرا منه.
هنا نلاحظ هذه الخاصية في أحد البرامج الخبيثة
http://raqee.jeeran.com/ivykit.gif
كيف يعمل الروت كيت؟ (How Do Root kits Work) :
فكرة وطريقة عمل الروت كيت ليست معقدة كثيرا، فهو يعمل بمبدأ يسمىالتعديل (modification), فلنتابع معاً السطور القادمة لفهم هذه السمفونية
- الترقيع Patching:
الكود القابل للتنفيذ (Executable code ) يحتوي على متسلسلة من التعابير المشفرة كبايتات بياناتية.
وهذه البايتات تكون منظمة بدقة، وكل بايت منها يعني شيء ما للكمبيوتر،و البرامج يمكن أن تُعدَّل إذا تم تعديل هذه البايتات، هذا التعديل أو التغيير يسمى (ترقيع).
وفي الحقيقة أن البرمجيات (Software) ليست ذكية، فهي تقوم بما تُخبر به فقط، ولا تعمل شيء غير ذلك. لهذا السبب التعديل فيها له أثر في عملها، فالترقيع أحد الوسائل التي يستخدمها الكراكرز (Crackers) للتنصل من برامج الحماية والمراقبة، ومن الطريف في الأمر أن الترقيع أيضا يستخدم لخداع ألعاب الفيديو (Video Games) مثلا لإعطائك زمن أطول للحياة أو جمع عدد أكبر من الذهب والنقاط أو فضح فريق كرة قدم كبير مثل البرازيل بتسجيل عدد خيالي من الأهداف في شباكه J.
تعديل الشفرة البرمجية المصدرية (Source-Code Modification):
يمكن تغيير الأكواد المصدرية للملفات، حيث أن المبرمج البارع يمكن أن يدخل (insert) ما يسمى بالـسطور الخبيثة (malicious lines) إلى سطور الأكواد الأصلية للبرنامج، وما يسمى بالبرامج المفتوحة المصدر (open-source programs) فهذه تسمح لأي شخص في التعديل على البرنامج، بحيث يمكن للمبرمج الخبيث أن يعرض برنامج معين لما يسمى بفيض الذاكرة (overflow buffer) لهدف محدد، ومن ثم استغلال هذا الهدف لوضع Backdoor.
http://raqee.jeeran.com/clvrkit.gif
هنا نلاحظ (خريطة التدفق البرمجي) لملف محقون بروت كيت
وللتوضيح أكثر عن خريطة التدفق البرمجي فهي بشكل مبسط عبارة عن المتسلسلات والخوارزميات التي يقوم بها برنامج ما، ويساعد رسم مثل هذه الخرائط على التخطيط السليم للمبرمج قبل قيامه بتخليق برنامجه.
أنواع الروت كيت:
تنقسم أنواع الروت كيت إلى ثلاثة أنواع حسب موقع ومكان الملفات والأنظمة التي تصيبها:
1- جوهر النظام (نواة النظام) (kernel).
2- ملفات مكتبة الربط الديناميكي (DLL-Dynamic Link Library).
3- ملفات التطبيقات ( applications).
http://raqee.jeeran.com/kos.gif
نلاحظ في الصورة السابقة أن برامج المستخدم تقع في الحلقة رقم (3) بمعنى أن المستخدم ليس له امتيازات في الوصول للحلقة التي سبقته إلا في حالات خاصة، كل ما نراه تقريبا من برامج الأوفيس والوسائط المتعددة والفوتوشوب والماسنجر وغيره تقع في الحلقة رقم (3).
نلاحظ كذلك أن نواة نظام التشغيل تقع في الحلقة (0) ولها كل الامتيازات للوصول لأي مكان ولأي حلقة أخرى، بعكس حلقة التطبيقات التي لا تستطيع الوصول لأي مكان إلا عن طريق لواحق نظام التشغيل (OS).
الروت كيت الخاص بنواة النظام له إحدى اثنتين، إما أن يضيف أكواده في ملف معين في النواة، أو أن يستبدل أكواد معينه بأكواده الغير حميدة، وسواقات الأجهزة (device drivers) أحد أمثلة ملفات النواة التي يمكن أن تصاب بالروت كيت، ويعتبر هذا النوع من أخطر الأنواع لأنه إن لم يتوفر البرنامج المناسب فمن الصعب اكتشافه وإزالته.
OS loader هو أول برنامج تحكم يستلم التحكم من BIOS ويبدأ هذا البرنامج بمعالجة عمليات الإقلاع في النظام عن طريق بدء تحميل سواقات الأجهزة.. وفيروسات الروت كيت المحقونة على مستوى النواة يتم تحميلها على أنها سواقة جهاز!! ياه بالفعل أمر عجيب!!
الآن اتجه نحو المسار التالي في نظام XP لترى ما هو أعجب
C:\WINDOWS\system32\winlogon.exe
http://raqee.jeeran.com/wlog.gif
أنه ملف winlogon.exe أتعرف من يكون هذا الملف؟
أنه البرنامج المسئول عن الشاشة الزرقاء لنظام إكس بي التي تقوم بالترحيب بالمستخدم بعبارة (مرحبا) أو (welcome).
حقن هذا الملف بفيروس من نوع روت كيت سيصعب من عملية إزالته..
بحيث إذا حاولت إزالة الكود الخبيث منه سيعاود البرنامج المحقون كتابة الكود أثناء الخروج من النظام بظهور الشاشة الزرقاء التي تخبر بأن النظام يقوم بحفظ الإعدادات!! وهكذا سنجد أنفسنا أمام حلقة غير منتهية.
لاحظ أن هذا الملف من أوائل الملفات التي تعمل عند بداية دخول النظام، من جهة أخرى هو من أواخرها أيضا!
ما لا يمثله الروت كيت:
· الروت كيت لا يعبر عن ثغرة:
ربما استخدام تقنية الروت كيت يقترن بالثغرات، في الحقيقة اقترانه بشيء معين يعتمد على استخداماته، فالتقنية هذه تستخدم أيضا من قبل البرامج المفيدة.
يمكن أن يُدمج الروت كيت في ثغرات البرامج، لكنه بحد ذاته ليس بثغرة- كما أسلفنا-، فالذي يقوم بوضع هذه التقنية يحتاج لمدخل للوصول إلى نواة النظام (Kernel) هذا المدخل يتطلب برنامج أو أكثر من برنامج تتم عملية إقلاعه مع إقلاع نظام التشغيل، والطرق التي تسمح بإدخال روت كيت على مستوى نواة النظام محدودة جداً (مثل سواقات الأجهزة)، وكثيرٌ من هذه الطرق تكون مكشوفة ومعروفة مسبقاً، ولهذا فإن إحدى الطرق المبتكرة لحقن الروت كيت تكمن في استغلال ثغرات البرامج المناسبة، فالكثير من ثغرات البرامج تسمح في إمكانية حقن
أكواد خبيثة، فهناك ثغرات الفيض (Buffer Overflow) التي تسمح في كثير من الأحيان بتنفيذ أكواد خبيثة من خلالها، تخيل وجود مثل هذه الثغرات على مستوى نواة النظام.
ثغرات الفيض على مستوى النواة (Kernel-buffer overflows) يمكن أن توجد في سواقات الأجهزة وخير مثال عليها سواقات أجهزة الطبع (Printers). والشخص المخول في اكتشاف مثل هذه الثغرات واستغلالها يكون على دراية تامة ومهارة في التعامل مع ما يسمى بالهندسة العكسية.
· الروت كيت لا يعبر عن فيروس:
الفيروس هو برنامج قادر على التكاثر ونسخ نفسه في الأنظمة تلقائيا، على النقيض من هذا لا تعبر تقنية روت كيت عن هذا مطلقا، ولا تحمل عقلية مبرمجها أصلا، فهذه التقنية متخصصة في المكوث الدائم في النظام ليس إلا.
في معظم الحالات من الخطر لدى القراصنة استخدام فيروس للتسلل و التخريب في الأنظمة أو جزء من ملفاتها، لأن معظم الفيروسات تكون مزعجة وخارج السيطرة، أدوات الروت كيت تمكن القراصنة والمهاجمين من البقاء على سيطرة تامة لهجماتهم.
القيم الست عشرية
ماهية القيم الست عشرية:
ذو قاعدة الـ16 (النظام الست عشري) أو (hexadecimal) وبشكل أبسط (Hex) هو نظام عددي مبني على 16رمزا، وهذا النظام العددي يستخدم الأرقام من صفر(0) إلى (9) والحروف من (A) إلى (F)، في بدايته استخدم هذه النظام في عام 1963م من قبل شركة آي بي إم (IBM).
http://raqee.jeeran.com/16hex.gif
والحقيقة أن شركة أخرى استخدمت هذا النظام في 1956م غير أنه كان يعتمد على الحروف من (U) إلى (Z) بالإضافة إلى الأرقام.
على سبيل المثال العدد العشري (93) هو نفسه العدد (01011101) في نظام العد الثنائي وهذا العدد يمكن أن يكتب (5d) بالنظام الست عشري.
التمثيل الست عشري (Representing hexadecimal):
بعض أرقام النظام الست عشري (Hex) لا تختلف عن أرقام نظام العد العشري، لذلك
عند كتابة مثل هذه الأرقام يوضع إشارة أو دليل يدل على نظام الكتابة، مثال:
5A316, 5A3SIXTEEN, or 5A3HEX.
وتستطيع لغات البرمجة تمييز القيم الست عشرية من خلال علامات و بادئات استهلالية مختلفة، فمثلا في لغة الـ C واللغات الشبيهة بها ( C++ و C# و JAVA) يشار إلى القيم الست عشرية برمز استهلالي وهو (0x) ومثال ذلك (0x5A3)، كذلك تستطيع لغة الـ HTMLتمييز هذا النظام العددي باستخدام البادئة (x) وكمثال يكتب الكود (֣) في النظام الست عشري هكذا (֣), وكذلك الألوان في هذه اللغة تستهل بـ (#) فمثلا (FFFFFF#) هو ما نسميه بكود اللون الأبيض.
وهكذا فكل لغة برمجية لها رموز ودلائل تستطيع من خلالها تمييز قيم النظام الست عشري، ولم يتفق على توحيد هذه الدلائل.
استخدامات القيم الست عشرية:
توجد مجالات كثيرة يكون للقيم الست عشرية دور فيها، فغالبا ما يستخدم هذا النظام العددي في لغات البرمجة-كما أسلفنا الذكر- وخاصة لغتي HTML و CSS.
فهذه اللغات تستخدم ترميزا ستا عشريا لتحديد الألوان على صفحات الانترنت، 24 بيتً من هذه الألوان يصاغ على هيئة #RRGGBB، حيث يحدد RR قيمة للون الأحمر، و GG قيمة اللون الأخضر، وBB قيمة اللون الأزرق، فمثلا درجة اللون الأحمر تعطى بـ (238,9,63) في النظام العشري، بينما تصاغ كـ #EE093F في النظام الست عشري Hex .
أيضا وكما هو معروف في عناوين مواقع الانترنت URLs تستخدم رموز هيكس حيث تميز ببادئة استهلالية وهي العلامة المئوية %، واستغل مستخدمو برامج الاختراق هذه الخاصية، حيث قاموا بإخفاء مسار وعناوين خوادمهم (الفيروسات) وصفحاتهم المزورة من أعين الضحايا وذلك عن طريق طمر عناوين مواقعهم وجعلها مكتوبة بلغة غير مفهومة(رموز ست عشرية) لدى الضحية العادي .
والجدير بالذكر أنه يمكن ترجمة لغة الآلة وأوامرها –المبنية على الرقمين صفر وواحد- لأي برنامج كان إلى رموز ست عشرية (رموز هيكس) حيث يمكن التحويل بتمثيل كل موقع في الكود المصدري وهذا تماما ما تظهره محررات الهيكس أمثال Hex workshop.
بالعودة لدرس آلية عمل برامج مقاومة الفيروسات، فهمنا أن هذه البرامج تتعرف على ملفات التجسس والفيروسات من خلال أخذ تواقيع ست عشرية معينة للفيروس، دعنا نفترض الآن أن لدينا ملف جديد اكتشفنا أنه فيروس و لنسمه Virus.exe، قمنا بتحليل الفيروس واستخرجنا توقيع له ليُعرّف من خلاله على أنه فيروس عن طريق برنامج مقاومة فيروسات معين، ولنفترض أن هذا التوقيع هو:
BBDFB72F873799E7BDDC43B5DBB7FC1738DAFC206E0A17A17CE934F8983
ماذا لو أتينا بسطر التوقيع السابق وقمنا ببعض التغييرات عليه ليصبح كالآتي:
ABDFB72F873799E7BDDC43B5DBB8FC1738DAFC205E0A17A17C0934F8983
نلاحظ أننا غيرنا قيم معينة في التوقيع إلى قيم أخرى كالتالي
B -> A
7 -> 8
6 -> 5
E -> 0
هكذا نجد أن برنامج مقاومة الفيروسات يتعرف على الفيروس كأي ملف حميد آخر، وهذه النقطة استغلها القراصنة ومستخدمو البرامج الخبيثة كثيراً، لكن كثيراً ما كانت تواجههم بعض المشاكل مثل تعطل ملف الفيروس عن العمل عند تغيير بعض تواقيعه وقيمه الست عشرية، لكن ما هو تفسير تعطل الفيروس عند تغيير قيم معينة، وعدم تضرره عند تغيير قيم أخرى له؟
نستطيع تقسيم القيم الست عشرية للملفات إلى قسمين كالتالي:
الأولى: قيم ست عشرية بياناتية Hex data
الثانية: قيم ست عشرية برمجية Hex codes
القيم الست عشرية البياناتية تكون عبارة عن قيم مترجمة من نصوص وتسميات تعريفية للمستخدم ،لذلك لا يؤثر تغيير هذه القيم على عمل الفيروس، أما القيم الست عشرية البرمجية فهي مترجمة من أكواد برمجية وتعليمات مهمة في عمل الفيروس، لذلك أي تغيير في هذه القيم قد يؤدي إلى تعطيل عمل الفيروس، ففي مترجم الفيجوال بيسك مثلا، عندما نقوم بعمل Form جديد ونضع عليه زر Button ومن ثم ندرج Form2, بعدها نحاول ربط الزر الذي أدرجناه على Form1 بـالـ Form2ليظهره، سنقوم بكتابة الكود التالي في حالة عمل Click على الزر:
http://raqee.jeeran.com/Vbcd1.gif
التعليمة “Form2.show” ستتحول إلى قيم ست عشرية بطريقة معينة، ولأننا إنْ غيرنا هذه التعليمة مثلا إلى “FormQ.show” سيؤدي هذا إلى حدوث خلل ما في عمل هذا البريمج، تماما سيؤدي التغيير في القيم الست عشرية المترجمة من هذه التعليمة إلى خلل أيضاً.
تتباين لغات البرمحة في العديد من مزاياها، لكن إذا احترفت إحداها، تستطيع القيام بأي شيء يمكن القيام به في أية لغة برمجية أخرى، وكلما كانت اللغة البرمجية أقرب إلى لغة الآلة، كانت أدق وأصعب في التعلم، وبالتالي ستكون البرامج الناتجة عنها أصغر في حجمها من أية برنامج ناتج من لغة أخرى، تعد لغة الأسمبلي (Assembly) من اللغات التي تحتاج إلى فترة ليست وجيزة لتعلمها، ذلك لأنها من أقرب اللغات إلى لغة الآلة، تُستخدم مثل هذه اللغة كثيرا من قبل كاسري شفرات البرامج، والذين يسمون بـ "الكراكرز"، الهدف الأساسي لهؤلاء الكراكرز هو جعل البرامج التجارية برامج ذات طابع مجاني "غير مصرَّح".
هذا والله الموفق.
:smirk: