هذه عينة حصان طروادة قادرة على تجاوز الغالبية العظمى من برامج مكافحة الفيروسات وصناديق الرمل
فيما يلي سأشرح التقنيات التي يعتمد عليها هذا الحصان، وسأتناول الشرح من جانبين: الـ shellcode والمُحمِّل.
قسم المُحمِّل
1. مكافحة صندوق الرمل (Anti-Sandbox)
من المعروف أن الكشف التقليدي لمكافحة صناديق الرمل يعتمد على فحص مكونات المضيف مثل وحدة المعالجة المركزية (CPU) والذاكرة والقرص الصلب. إلا أنني شخصيًا أرى أن هذا الأسلوب غير مناسب، إذ إن بعض برامج مكافحة الفيروسات أو صناديق الرمل السحابية ترصد وظائف مكافحة صناديق الرمل وتراقب بعض واجهات الـ API الحساسة، مما قد يؤدي إلى كشف الحصان. لذلك اعتمدت فكرة كشف اختصارات سطح المكتب لبرامج الاستخدام اليومي مثل QQ وWeChat وDingTalk، بهدف التهرب من صناديق الرمل السحابية.
2. إعادة تحميل ntdll والاستدعاء الديناميكي للـ API
تعتمد آلية كشف برامج مكافحة الفيروسات عادةً على تعليق خطافات (hooks) على بعض واجهات الـ API الحساسة. لذا يمكننا تجاوز هذه الخطافات وتحقيق الوظائف المطلوبة عبر تقنيتي إعادة تحميل ntdll والاستدعاء الديناميكي للـ API. تتلخص إعادة تحميل ntdll في تحميل ntdll.dll الأصلية من دليل النظام، ثم استبدال مقطع الكود (.text) الخاص بـ ntdll المعلَّق عليه في العملية الحالية بالكود الأصلي. أما الاستدعاء الديناميكي للـ API فيتم عبر اجتياز جدول التصدير في الـ DLL المستهدفة ومطابقة أسماء الدوال باستخدام الـ hash للوصول إلى عنوان الدالة المطلوبة وتنفيذها عبر مؤشر (pointer).
3. فصل الـ shellcode عن المُحمِّل
بالإضافة إلى الترميز لتجاوز برامج مكافحة الفيروسات، يمكن أيضًا فصل الـ shellcode عن المُحمِّل؛ أي ألا يكون الـ shellcode موجودًا داخل ملف الـ exe، مما يجعل من الصعب على برامج مكافحة الفيروسات رصد أي مشكلة.
قسم الـ shellcode
يعتمد قسم الـ shellcode بشكل أساسي على معالجة تشويش متعددة الطبقات باستخدام XOR + RC4 + base64 + mac، ويُخزَّن الناتج النهائي بصيغة عنوان mac، نظرًا لأن نظام Windows يتسامح إلى حدٍّ ما مع سلاسل صيغة mac.
طريقة الاستخدام
أولاً، استخدم encode.cpp لتشفير الـ shellcode. إذا كنت تريد كتابة الـ shellcode داخل ملف الـ exe، فضعه في مصفوفة mac_shellcode الموجودة في Unseparation_shellcode.cpp. أما إذا أردت تحقيق فصل المعاملات، فيمكنك تشغيل ملف الـ exe المُجمَّع مع الـ shellcode مباشرة.
شكرًا على قراءتكم
النسخة الإنجليزية
هذه عينة حصان طروادة يمكنها تجاوز الغالبية العظمى من برامج مكافحة الفيروسات وصناديق الرمل. فيما يلي سأشرح التقنيات المستخدمة في الحصان، مع التركيز على كلٍّ من الـ shellcode والمُحمِّل.
قسم المُحمِّل
1. مكافحة صندوق الرمل (Anti-Sandbox)
من المعروف أن الكشف التقليدي لوظائف مكافحة صندوق الرمل يعتمد على عمليات فحص وحدة المعالجة المركزية والذاكرة والقرص الصلب للمضيف وغيرها. ولكنني شخصيًا أعتقد أن هذا الأسلوب ليس مثاليًا، لأن بعض برامج مكافحة الفيروسات أو صناديق الرمل السحابية تراقب وظائف مكافحة صندوق الرمل وتُبقي أعينها على واجهات الـ API الحساسة، مما قد يؤدي إلى اكتشافها. لذلك تتمثل فكرتي في كشف اختصارات سطح المكتب، مثل تلك الخاصة بالبرامج شائعة الاستخدام كـ QQ وWeChat وDingTalk، للتهرب من صناديق الرمل السحابية. 
2. إعادة تحميل ntdll والاستدعاء الديناميكي لواجهات الـ API
تعتمد آلية الكشف في برامج مكافحة الفيروسات العامة على تعليق خطافات على بعض واجهات الـ API الحساسة. لذلك يمكننا تجاوز الخطافات وتحقيق الوظيفة باستخدام تقنيتي إعادة تحميل ntdll والاستدعاء الديناميكي للـ API. يتضمن جزء إعادة تحميل ntdll تحميل ntdll.dll الأصلية من دليل النظام واستبدال مقطع الكود (.text segment) الخاص بـ ntdll المعلَّق عليه في العملية الحالية بالكود الأصلي. أما الاستدعاء الديناميكي للـ API فيتمثل في اجتياز جدول التصدير للـ DLL المستهدفة ومطابقة اسم الدالة باستخدام الـ hash، ثم الحصول على عنوان الدالة المستهدفة وتنفيذها باستخدام مؤشر (pointer).
3. فصل الـ shellcode عن المُحمِّل
بالإضافة إلى الترميز لتجاوز برامج مكافحة الفيروسات، يمكن أيضًا فصل الـ shellcode عن المُحمِّل. فإذا لم يكن الـ shellcode مضمنًا في ملف الـ exe، يصبح من الصعب جدًا على برامج مكافحة الفيروسات اكتشاف أي مشاكل.
يخضع قسم الـ shellcode بشكل أساسي لمعالجة تشويش متعددة الطبقات تشمل XOR وRC4 وbase64 وMAC. ويكون الناتج النهائي بصيغة عنوان MAC، مستفيدًا من تسامح نظام Windows مع سلاسل صيغة MAC.
طريقة الاستخدام
أولاً، استخدم encode.cpp لتشفير الـ shellcode. إذا كنت ستكتب الـ shellcode داخل ملف exe، فيرجى وضعه في مصفوفة mac_shellcode داخل Unseparation_shellcode.cpp. إذا أردت تحقيق فصل المعاملات، يمكنك تشغيل ملف exe المُجمَّع + الـ shellcode مباشرة.
شكرًا لقراءتكم.