
قشرة تفاعلية عبر الأنظمة الأساسية لـ Microsoft Defender for Endpoint Live Response
قشرة تفاعلية متعددة المنصات لـ Microsoft Defender for Endpoint Live Response.
| الميزة | التفاصيل |
|---|---|
| المنصة | PowerShell Core 7.0+ (Windows, Linux, macOS) |
| أوضاع API | داخلي (بوابة، قريب من الوقت الحقيقي) ورسمي (عام، بدون حالة) |
| التنفيذ | أوامر عشوائية + 25 أمر LR أصلي |
| المصادقة | 7 طرق مصادقة، قائمة موحدة، تحديث تلقائي |
| الترخيص | MIT |
تتصل قشرة LaraC2 بـ MDE Live Response من خلال مسارين مستقلين لواجهة API – واجهة API الداخلية للبوابة (جلسات مستمرة، زمن استجابة 2-5 ثوانٍ تقريبًا) وواجهة API الرسمية العامة (لكل أمر، زمن استجابة 20-60 ثانية تقريبًا). تقوم برفع الدعائم المنفذة تلقائيًا، وتتعامل مع تحديد المعدل بشفافية، وتوفر بيئة REPL كاملة مع إدارة الآلات، وإدارة المكتبات، ونظام مساعدة مدمج.
connect يعيد المصادقة عند انتهاء الجلسةmulti مع تصفية نمط الاسم وتحديد العدد الأعلىMachine.LiveResponse + Library.Manage (الوضع الرسمي)git clone https://github.com/akefallonitis/larac2shell.git cd larac2shell pwsh -File shell/Invoke-MDEShell.ps1
هذا كل شيء. تعرض الواجهة قائمة مصادقة موحدة من 7 طرق عند التشغيل الأول — اختر إحداها، قم بالمصادقة، حدد جهازًا، وستكون في REPL. لا ملف تكوين، لا وسائط، لا شيء للإعداد.```
Select API mode:
Internal API (security.microsoft.com — near real-time, ~2-5s/cmd)
1 Credentials + MFA username + password, TOTP/push/SMS [auto-refresh]
2 Software passkey FIDO2/WebAuthn JSON key file [auto-refresh]
3 ESTS cookie ESTSAUTHPERSISTENT from browser (~24hr)
4 Temporary Access Pass one-time admin-issued code
5 Direct sccauth + XSRF cookies from browser DevTools (~1hr)
Official API (api.securitycenter.microsoft.com — CI/CD ready, ~20-60s/cmd)
6 Device code browser login (interactive)
7 Client credentials app registration with client secret
Auth method (1-7):
الخيارات 1-5 تضبط الوضع الداخلي، 6-7 تضبط الرسمي. يمكنك تبديل الأوضاع لاحقًا دون إعادة التشغيل — انظر تبديل الأوضاع ضمنيًا أدناه.
[INT myhost C:]> mode Current mode: Internal API Switch with: 'mode internal' or 'mode official'.
[INT myhost C:]> mode official [Mode] Switching from Internal API to official... (auth menu for official mode opens) [Mode] Now in official mode. Run 'machines' to list targets or 'connect <name|id>' to select one.
`mode <target>` يقوم بفصل أي جلسة LR حالية، ومسح حالة المصادقة القديمة، وإعادة تشغيل تدفق المصادقة للوضع الهدف. عند العودة، تصبح مُصادقًا في الوضع الجديد دون تحديد أي جهاز — قم بتشغيل `machines` لعرض القائمة، أو `connect <name|id>` للانتقال مباشرة إلى الهدف. لا حاجة لإعادة التشغيل.
### اختصارات واجهة الأوامر (اختياري)
لأغراض البرمجة النصية أو عندما تريد تخطي القائمة الموحدة:```powershell
# Pre-select the mode (narrows the auth menu to 1-5 or 6-7)
pwsh -File shell/Invoke-MDEShell.ps1 -Mode internal
pwsh -File shell/Invoke-MDEShell.ps1 -Mode official
# Pre-select a machine (skips the picker)
pwsh -File shell/Invoke-MDEShell.ps1 -Machine myhost
# Software passkey path (internal mode)
pwsh -File shell/Invoke-MDEShell.ps1 -PasskeyPath ./keys/passkey.json
# Non-interactive single command (exits with remote command's exit code)
pwsh -File shell/Invoke-MDEShell.ps1 -Machine myhost -Command 'whoami'
يُستخدم فقط في واحدة من الحالات: الوضع الرسمي مع secret العميل، بشكل غير تفاعلي. كل طريقة مصادقة أخرى تطلب منك تفاعليًا ولا تخزن أي شيء على القرص. إذا كنت لا تحتاج إلى مصادقة client-credentials غير المراقبة، يمكنك تخطي هذا القسم بالكامل.```powershell Copy-Item shell/config/shell-config.example.json shell/config/shell-config.json
pwsh -File shell/Invoke-MDEShell.ps1 -Config shell/config/shell-config.json
مخطط التكوين (جميع الحقول اختيارية باستثناء `official.tenantId` + `official.clientId` عند استخدام بيانات اعتماد العميل):
| القسم | الحقل | الوصف |
|---------|-------|-------------|
| `official` | `tenantId` | معرف مستأجر Azure AD |
| `official` | `clientId` | معرف عميل تسجيل التطبيق |
| `official` | `clientSecret` | سر العميل (احذفه واضبط `useDeviceCode: true` لاستخدام رمز الجهاز) |
| `official` | `useDeviceCode` | `true` لاستخدام تدفق رمز الجهاز بدلاً من بيانات اعتماد العميل |
| `defaults` | `defaultMachine` | تحديد جهاز مسبقاً عند بدء التشغيل (جزء من الاسم أو بادئة المعرف) |
| `defaults` | `commandTimeoutSeconds` | سقف المهلة من جانب العميل. `0` يعني أن الخادم يقرر (حتى 1800 ثانية). |
| `defaults` | `pollIntervalOfficial` | فترة استقصاء واجهة برمجة التطبيقات الرسمية بالثواني (الافتراضي 2) |
| `defaults` | `pollIntervalInternal` | فترة استقصاء واجهة برمجة التطبيقات الداخلية بالثواني (الافتراضي 1) |
**الأمان**: قيّد أذونات نظام الملفات على أي ملف تكوين يحتوي على `clientSecret`. لا يُقبل `clientSecret` مطلقاً عبر سطر الأوامر — فقط عبر ملف التكوين. جميع بيانات اعتماد الوضع الداخلي (اسم المستخدم، كلمة المرور، سر TOTP، ملفات تعريف الارتباط) تُطلب بشكل تفاعلي ولا تُحفظ أبداً على القرص.
---
## طرق المصادقة
تعرض القائمة الموحدة المكونة من 7 طرق للمصادقة عند بدء التشغيل. يُشتق الوضع (داخلي/رسمي) من الاختيار.
| # | الوضع | الطريقة | كيف | التحديث التلقائي |
|---|------|--------|-----|--------------|
| 1 | داخلي | بيانات اعتماد + TOTP | طلب تفاعلي | نعم (صامت) - فقط عندما يتم توفير سر TOTP. مع مصادقة الدفع/الرسائل النصية القصيرة لا يمكن تحديث الجلسة تلقائياً. |
| 2 | داخلي | مفتاح مرور برمجي | معامل `-PasskeyPath` أو طلب | نعم (صامت) |
| 3 | داخلي | ملف تعريف ارتباط ESTS | طلب تفاعلي | لا (~24 ساعة) |
| 4 | داخلي | رمز وصول مؤقت | طلب تفاعلي | لا (مرة واحدة) |
| 5 | داخلي | sccauth مباشر + XSRF | طلب تفاعلي | لا (~1 ساعة) - لا ينطبق التحديث التلقائي لـ XSRF؛ لا يقوم الغلاف بتحديث ملفات تعريف الارتباط المقدمة مباشرة تلقائياً. |
| 6 | رسمي | رمز الجهاز | تسجيل الدخول عبر المتصفح | لا (~1 ساعة) |
| 7 | رسمي | بيانات اعتماد العميل | ملف التكوين | نعم (صامت) |
يقوم أمر `connect` بإعادة المصادقة عندما تنتهي الجلسة، مستخدماً نفس الطريقة التي تم اختيارها في البداية. الطرق التي لا تحتوي على تحديث تلقائي تطلب تفاعلياً مرة أخرى.
**التعامل مع بيانات الاعتماد في الذاكرة**: بالنسبة للطريقة 1، يتم الاحتفاظ بكلمة المرور المقدمة وسر TOTP في الذاكرة (كنصوص عادية، داخل `$script:Int_ReauthParams`) طوال عمر عملية الغلاف حتى يمكن إعادة المصادقة الصامتة دون مراقبة. تعيش كائنات النص في مساحة تشغيل PowerShell؛ لا يتم تسلسلها على القرص أو تمريرها عبر سطر الأوامر. إذا كان هذا التعريض غير مقبول لنموذج التهديد الخاص بك، استخدم الطريقة 2 (مفتاح المرور/HSM) أو الطريقة 7 (بيانات اعتماد العميل) بدلاً من ذلك.
---
## أوامر الغلاف
### التحكم في الغلاف
| الأمر | الوصف |
|---------|-------------|
| `help [command]` | عرض المساعدة (اختيارياً لأمر معين) |
| `help commands` | سرد جميع أوامر LR الأصلية مع الأوصاف |
| `status` | عرض حالة الاتصال، حالة المصادقة، معلومات الجهاز |
| `config` | عرض تكوين Live Response |
| `connect [name\|id]` | إعادة المصادقة (إذا منتهية) وتحديد جهاز |
| `disconnect` | فصل جلسة LR الحالية ومسح الجهاز |
| `multi [options] <cmd>` | تشغيل الأمر على أجهزة متعددة (`-top N`، `-filter pattern`) |
| `session [list]` | عرض معلومات الجلسة الحالية أو جميع الجلسات المخبأة |
| `mode` | عرض وضع واجهة برمجة التطبيقات الحالي |
| `mode internal\|official` | التبديل بين أوضاع واجهة برمجة التطبيقات مباشرة - يفصل الجلسة الحالية، يهدم حالة المصادقة القديمة، ويعيد تشغيل قائمة المصادقة للوضع المستهدف. استخدم `machines` أو `connect` بعد ذلك |
| `exit` / `quit` / `q` | الخروج من الغلاف |
### إدارة الأجهزة
| الأمر | الوصف |
|---------|-------------|
| `machines [refresh]` | سرد الأجهزة وتحديد واحد (refresh = فرض إعادة التحميل) |
| `connect [name\|id]` | الاتصال بجهاز عن طريق جزء من الاسم أو بادئة المعرف |
### أوامر Live Response الأصلية (25 أمراً)
| الأمر | الوصف |
|---------|-------------|
| `run <script> [args]` | تشغيل سكريبت من مكتبة MDE |
| `getfile <path>` | تنزيل ملف من الجهاز البعيد |
| `putfile <name>` | تحميل ملف من المكتبة إلى دليل العمل البعيد |
| `processes` | سرد العمليات الجارية |
| `connections` | سرد اتصالات الشبكة النشطة |
| `cd <path>` | تغيير دليل العمل (الوضع الداخلي) |
| `dir [path]` | سرد محتويات الدليل |
| `findfile <name>` | البحث عن ملف بالاسم عبر جميع محركات الأقراص |
| `trace` | عرض معلومات التتبع التشخيصي |
| `analyze <path>` | إرسال ملف للتحليل العميق |
| `remediate <path>` | عزل/معالجة ملف |
| `undo <actionId>` | التراجع عن إجراء معالجة سابق |
| `registry <key>` | الاستعلام عن مفاتيح/قيم التسجيل (Windows فقط) |
| `scheduledtasks` | سرد المهام المجدولة |
| `persistence` | التحقق من مواقع الاستمرارية الشائعة |
| `drivers` | سرد برامج التشغيل المحملة (Windows فقط) |
| `services` | سرد الخدمات |
| `startupfolders` | سرد محتويات مجلدات بدء التشغيل (Windows فقط) |
| `fileinfo <path>` | الحصول على معلومات مفصلة عن ملف |
| `prefetch` | سرد بيانات الجلب المسبق (Windows فقط) |
| `log` | عرض سجلات التشخيص |
| `jobs` | سرد الوظائف الخلفية (الوضع الداخلي) |
| `fg <jobId>` | جلب وظيفة خلفية إلى المقدمة (الوضع الداخلي) |
| `library` | إدارة ملفات المكتبة (سرد، تحميل، تنزيل، حذف) |
| `status` | عرض حالة الجلسة والتشخيصات |
### الاختصارات
| الاختصار | يحول إلى |
|-------|-------------|
| `ls` | `dir` |
| `ps` | `processes` |
| `download` | `getfile` |
| `process` | `processes` |
| `netstat` | `connections` |
### الأوامر التعسفية
أي إدخال لا يتطابق مع أمر مدمج يُعتبر أمراً تعسفياً ويتم تنفيذه على الجهاز البعيد عبر كعب B64. أمثلة: `whoami`، `ipconfig`، `cat /etc/hostname`.
- أهداف Windows: يتم ترميز الأمر بـ UTF-16-LE Base64 وتنفيذه عبر `executor_b64.ps1` (كتلة سكريبت PowerShell)
- أهداف Linux/macOS: يتم ترميز الأمر بـ UTF-8 Base64 وتنفيذه عبر `executor_b64.sh` (bash)
**كشف الأنابيب**: الأوامر التي تحتوي على أنابيب (`|`)، فواصل منقوطة (`;`)، إعادة توجيه (`>>`)، أو تعبيرات فرعية (`$(`) تُلف دائماً بـ B64، حتى لو كانت الكلمة الأولى فعلاً أصلياً من LR. على سبيل المثال، `dir C:\ | Select-Object` يمر عبر B64، وليس عبر `dir` الأصلي.
### إدارة المكتبة
| الأمر | الوصف |
|---------|-------------|
| `library` | سرد جميع الملفات في مكتبة MDE |
| `library refresh` | فرض تحديث قائمة المكتبة من واجهة برمجة التطبيقات |
| `library upload <path>` | تحميل ملف محلي إلى المكتبة |
| `library delete <name>` | حذف ملف من المكتبة بالاسم |
| `library download <name>` | تنزيل محتوى ملف من المكتبة (واجهة برمجة تطبيقات داخلية: مباشر؛ واجهة برمجة تطبيقات رسمية: عبر `getfile` من ذاكرة التخزين المؤقت للمكتبة لنقطة النهاية بمجرد تحديد جهاز - قد يستغرق المزامنة حتى 10 دقائق) |
### إدارة الإجراءات
| الأمر | الوصف |
|---------|-------------|
| `actions` | سرد الإجراءات المعلقة/الجارية للجهاز الحالي |
| `actions all` | سرد جميع الإجراءات الحديثة عبر جميع الأجهزة |
| `actions cancel <id>` | إلغاء إجراء بواسطة المعرف (مطابقة جزئية مدعومة) |
---
## الهندسة المعمارية
### واجهة برمجة التطبيقات الداخلية مقابل الرسمية
يعرض LaraC2 Shell مسارين مستقلين لواجهة برمجة التطبيقات إلى نفس خلفية Live Response لـ MDE. تعكس واجهة برمجة التطبيقات الداخلية نموذج الجلسة الشبيه بـ WebSocket في البوابة وتقدم استجابات شبه فورية. تستخدم واجهة برمجة التطبيقات الرسمية نقاط نهاية REST الموثقة من Microsoft وهي مناسبة للأتمتة.
| | واجهة برمجة التطبيقات الداخلية | واجهة برمجة التطبيقات الرسمية |
|---|---|---|
| عنوان URL الأساسي | `security.microsoft.com/apiproxy/mtp/liveResponseApi/` | `api.securitycenter.microsoft.com/api/` |
| الجلسة | مستمرة (إبقاء على قيد الحياة لمدة 30 دقيقة، إعادة اتصال تلقائي) | لكل أمر (عديمة الحالة) |
| فترة الاستقصاء | ~1 ثانية (شبه فوري) | 2 ثانية |
| الأوامر المتعددة | تسلسلي ضمن جلسة مشتركة | مجمعة (حتى 5 لكل استدعاء واجهة برمجة تطبيقات) |
| المصادقة | ذاتية الاستيعاب (ESTS/مفتاح المرور/TOTP -> sccauth) | بيانات اعتماد عميل OAuth2 أو رمز الجهاز |
| المهلة الافتراضية | 1800 ثانية (الخادم يقرر، وليس العميل) | 1800 ثانية (الخادم يقرر، وليس العميل) |
#### ما يضيفه LaraC2 إلى جانب واجهة برمجة التطبيقات الخام
| الخطوة | واجهة برمجة التطبيقات الرسمية الخام | LaraC2 Shell |
|------|-----------------|-------------|
| تحميل الكعب | يدوي: بناء متعدد الأجزاء، POST، معالجة التعارضات | تلقائي عند الاتصال، تجاوز 409 |
| ترميز B64 | يدوي: اختيار UTF-16LE/UTF-8 لكل نظام تشغيل | كشف نظام التشغيل تلقائياً، ترميز تلقائي |
| بناء RunScript | يدوي: JSON مع معلمات ScriptName + Args | اكتب الأمر مباشرة |
| الاستقصاء والجلب | يدوي: حلقة + رابط التنزيل + تحليل JSON | شفاف: يعيد ناتجاً نظيفاً |
| معالجة الأخطاء | يدوي: التحقق من 400/401/403/409/429/503 | تلقائي: إعادة محاولة، تراجع، إرشاد |
| الأوامر المتعددة | يدوي: بناء مصفوفة Commands[] | تجميع تلقائي يصل إلى 5 |
### قيد أساسي
تتشارك واجهة برمجة التطبيقات الرسمية والداخلية قائمة انتظار إجراءات لكل جهاز. لا يمكن تشغيلهما في وقت واحد على نفس الجهاز.
### الحد من المعدل (شفاف)
| الحد | القيمة | المعالجة |
|-------|-------|----------|
| أوامر LR في الدقيقة | 10 | استجابة 429 مع رأس Retry-After |
| تحميلات المكتبة في الدقيقة | 100 | قائمة انتظار منزلقة |
| تحميلات المكتبة في الساعة | 1500 | عداد ساعي |
| HTTP 429 Too Many Requests | -- | النوم لمدة رأس Retry-After (افتراضي 35 ثانية) |
| ActiveRequestAlreadyExists | -- | إلغاء الإجراء المتعارض + تراجع ثابت (10 ثوانٍ، ثم 15 ثانية حتى 12 إعادة محاولة) |
| انتهاء صلاحية رمز الحامل (رسمي) | ~1 ساعة | تحديث تلقائي قبل الانتهاء |
| انتهاء صلاحية sccauth (داخلي) | ~1 ساعة | إعادة مصادقة صامتة إذا تم تخزين بيانات الاعتماد |
| خمول جلسة LR | 30 دقيقة | إعادة اتصال تلقائي |
| تدوير XSRF | 4 دقائق | تحديث شفاف |
---
## جدوى الغلاف شبه الفوري
فترات زمنية مقاسة على مستأجر MDE إنتاجي، عبر أهداف Windows وLinux وmacOS:
| العملية | واجهة برمجة التطبيقات الداخلية | واجهة برمجة التطبيقات الرسمية |
|-----------|-------------|-------------|
| `whoami` (B64) | 4-9 ثوانٍ | 20-46 ثانية |
| `dir` (أصلي) | 2-4 ثوانٍ | 14-25 ثانية |
| `processes` (أصلي) | 3-15 ثانية | 20-175 ثانية |
| `connections` (أصلي) | 2-4 ثوانٍ | ~15 ثانية |
| `services` (أصلي) | 2-5 ثوانٍ | ~15 ثانية |
| `hostname` (B64) | 4-7 ثوانٍ | 11-16 ثانية |
| اتصال الجلسة (الأمر الأول) | 9-15 ثانية | غير متاح (عديم الحالة) |
| التبديل بين الأجهزة | 7-10 ثوانٍ | 15-30 ثانية |
**واجهة برمجة التطبيقات الداخلية: قادرة على الأداء شبه الفوري.** مع إعادة استخدام الجلسة، تستجيب الأوامر الأصلية في 2-5 ثوانٍ. هذا أقرب ما يمكن إلى الوقت الفعلي الذي تسمح به MDE. عنق الزجاجة هو وكيل SenseIR على الهدف، وليس الإطار.
**واجهة برمجة التطبيقات الرسمية: درجة الأتمتة.** الحد الأدنى ~15 ثانية لكل أمر بسبب البنية عديمة الحالة (إرسال، استقصاء، جلب). مناسبة تماماً للأتمتة المبرمجة وCI/CD، وليس للاستخدام التفاعلي.
---
## دعم أنظمة التشغيل المختلفة
نقاط نهاية Linux وmacOS مدعومة بالكامل عبر وضعي واجهة برمجة التطبيقات.
| نظام التشغيل الهدف | متوسط واجهة برمجة التطبيقات الداخلية | متوسط واجهة برمجة التطبيقات الرسمية |
|-----------|-----------------|-----------------|
| Windows | ~7 ثوانٍ | ~30 ثانية |
| Linux | ~6 ثوانٍ | ~26-33 ثانية |
| macOS | ~6 ثوانٍ | ~26-33 ثانية |
**ما يجب مراقبته**:
1. الكعوب `.sh` **يجب** أن تحتوي على نهايات أسطر Unix (LF، وليس CRLF) وإلا يفشل bash مع "ambiguous redirect".
2. تحميل المكتبة عبر واجهة برمجة التطبيقات الرسمية **لا** يقوم بمزامنة ملفات `.sh` مع نقاط نهاية Linux/macOS. قم بالتحميل عبر واجهة برمجة التطبيقات الداخلية (البوابة) أو واجهة بوابة Defender أولاً. بمجرد التحميل، يعمل RunScript عبر واجهة برمجة التطبيقات الرسمية بشكل جيد.
3. يعمل `executor_b64.sh` على Linux وmacOS بمجرد تحميله بشكل صحيح.
---
## الاختبار
تتضمن مجموعة الاختبارات 712 اختبار وحدة غير متصل، 301 اختبار تكامل لواجهة برمجة التطبيقات الرسمية، 251 اختبار تكامل لواجهة برمجة التطبيقات الداخلية، بالإضافة إلى مشغل اختبار إجهاد قابل للتكوين.
### المتطلبات الأساسية```powershell
Install-Module -Name Pester -MinimumVersion 5.0.0 -Force -Scope CurrentUser
اختبارات الوحدة التي تغطي تحميل الوحدة، ترميز B64، بناء الأوامر، تحليل الأسماء المستعارة، المحلل اللغوي، محدد المعدل، التشفير المصادق، إدارة الجلسات، مسارات الأخطاء، وجميع تدفقات المصادقة عبر Pester Mock.```powershell Invoke-Pester ./tests/shell/LaraC2Shell.Offline.Tests.ps1 -Output Detailed
### اختبارات واجهة برمجة التطبيقات الداخلية (يتطلب ملفات تعريف الارتباط الخاصة بالبوابة)
اختبارات تكاملية تغطي sccauth auth، دورة حياة الجلسة، جميع الأوامر الأصلية، تنفيذ B64، استهداف عبر أنظمة التشغيل.```powershell
$env:LARAC2_SCCAUTH = 'your-sccauth-cookie'
$env:LARAC2_XSRF = 'your-xsrf-token'
Invoke-Pester ./tests/shell/LaraC2Shell.Internal.Tests.ps1 -Output Detailed
pwsh -File tests/shell/LaraC2Shell.Stress.Tests.ps1 -Config config.json -Mode official -Rounds 5
pwsh -File tests/shell/LaraC2Shell.Stress.Tests.ps1 -Config config.json -Mode both -Scenario crossos
### CI/CD (GitHub Actions)
| المهمة | المحفز | المنصات | المتطلبات |
|-------|---------|-----------|--------------|
| PSScriptAnalyzer Lint | كل دفعة/طلب سحب | أوبونتو | لا شيء |
| اختبارات غير متصلة | كل دفعة/طلب سحب | أوبونتو + ويندوز + ماك أو إس | لا شيء |
| اختبارات عبر الإنترنت (رسمي) | مشروط | أوبونتو | متغير `LARAC2_ONLINE_TESTS` + سر `LARAC2_CONFIG` |
| اختبارات الإجهاد | تشغيل يدوي | أوبونتو | سر `LARAC2_CONFIG` |
---
## استكشاف الأخطاء وإصلاحها
| الخطأ | السبب | الحل |
|-------|-------|------------|
| `ActiveRequestAlreadyExists` | أمر LR آخر قيد التشغيل على الهدف | معالج تلقائيًا (الوضع الرسمي): إلغاء الإجراء المتعارض + تأخير ثابت 10/15 ثانية يصل إلى 12 محاولة. الوضع الداخلي: انتظار فقط. لا حاجة لإجراء من المستخدم. |
| HTTP 429 | تجاوز حد المعدل (10 أوامر/الدقيقة) | معالج تلقائيًا: الانتظار لمدة Retry-After وإعادة المحاولة. |
| "script not found" على لينكس/ماك أو إس | ملف .sh الأولي لم تتم مزامنته مع نقطة النهاية | الرفع عبر API الداخلي أو واجهة Defender. رفع API الرسمي لا يقوم بمزامنة ملفات .sh. |
| "ambiguous redirect" على لينكس/ماك أو إس | ملف .sh الأولي يحتوي على نهايات أسطر CRLF | أعد الحفظ بنهايات أسطر LF وأعد الرفع. |
| HTTP 400 على أمر كبير | حمولة B64 تتجاوز ~30 كيلوبايت | استخدم `library upload` + `run <script>` بدلاً من ذلك. |
| HTTP 401 | انتهت صلاحية الرمز/الجلسة | يقوم الشل بتحديث نفسه تلقائيًا لبيانات اعتماد العميل، TOTP، ومفتاح المرور. للطرق الأخرى، اكتب `connect`. |
| HTTP 403 | أذونات غير كافية | رسمي: تحقق من نطاقات `Machine.LiveResponse` + `Library.Manage`. داخلي: تحقق من دور مشغل الأمان. |
| HTTP 404 | الجهاز غير موجود | قم بتشغيل `machines refresh` لإعادة التحميل. |
---
## المتطلبات
| المتطلب | التفاصيل |
|-------------|--------|
| باورشيل كور | 7.0 أو أحدث (`pwsh`) |
| تسجيل تطبيق MDE | مطلوب للوضع الرسمي (أذونات `Machine.LiveResponse` + `Library.Manage`) |
| نظام التشغيل | ويندوز، لينكس، أو ماك أو إس (يعمل الشل على أي منها؛ يمكن أن تكون الأهداف أي نظام تشغيل مسجل في MDE) |
جميع عمليات المصادقة ذاتية الاكتفاء -- لا حاجة لوحدات خارجية. تدفقات المصادقة في الوضع الداخلي مبنية على [XDRInternals](https://github.com/MSCloudInternals/XDRInternals) بواسطة Fabian Bader & Nathan McNulty.
---
## تخطيط الملفات```
shell/
Invoke-MDEShell.ps1 Main shell entry point (REPL, dispatch, help)
modules/
Auth-Official.ps1 OAuth2 client credentials + device code
Auth-Internal.ps1 Self-contained ESTS/passkey/TOTP/TAP authentication
Auth-Crypto.ps1 Crypto helpers: TOTP, WebAuthn, passkey signing, Key Vault
Rate-Limiter.ps1 429/backoff/ActiveRequest handling
Invoke-LRCommand.ps1 Command execution (both modes, B64 stubs, multi-machine)
Get-Machines.ps1 Machine list + picker
Manage-Library.ps1 Library file management + auto-init stubs
Manage-Actions.ps1 Action list/cancel
config/
shell-config.example.json Config template (copy and fill in)
stubs/
executor_b64.ps1 Windows PS B64 executor (auto-uploaded)
executor_b64.sh Linux/macOS bash B64 executor (auto-uploaded)
tests/
shell/
LaraC2Shell.Offline.Tests.ps1 Unit tests (no tenant needed)
LaraC2Shell.Online.Tests.ps1 Integration tests (Official API)
LaraC2Shell.Internal.Tests.ps1 Integration tests (Internal API)
LaraC2Shell.Stress.Tests.ps1 Stress/throughput driver (configurable scenarios)
docs/
USER_GUIDE.md Step-by-step usage guide
COMMAND_REFERENCE.md All commands, routing, batching
ERROR_REFERENCE.md Error messages and fixes
PERFORMANCE_COMPARISON.md Stress test data and API comparison
انظر LICENSE للشروط.
| الوثيقة | الغرض |
|---|
| دليل المستخدم | الإعداد خطوة بخطوة، والمصادقة، والتشغيل |
| مرجع الأوامر | جميع الأوامر، والتوجيه، والتجميع، والإكمال التلقائي |
| مرجع الأخطاء | رموز HTTP، أخطاء القشرة، أخطاء المصادقة، الإصلاحات |
| الأداء | مقارنة زمن الاستجابة والإنتاجية والحدود بين الداخلي والرسمي |
| الهندسة | البنية الداخلية، سلاسل المصادقة، نقاط النهاية، هيكل الملفات |
| المساهمة | كيفية المساهمة، الاختبار، تقديم طلبات السحب |
| سياسة الأمان | كيفية الإبلاغ عن ثغرة بشكل خاص |
| المراجع | الأعمال السابقة، الأبحاث ذات الصلة، الإسنادات |
| إخلاء المسؤولية | الترخيص، الإسنادات |
| المورد | المؤلف | الوصف |
|---|
| XDRInternals | فابيان بادر، ناثان ماكنولتي | تدفقات المصادقة للبوابة الداخلية (ESTS, passkey, TOTP, TAP) |
| Running Arbitrary Commands | جون جلاس | تقنيات تنفيذ أوامر Live Response |
| Troubleshoot Live Response | جيفري أبيل | بنية LR، WpnService، تشخيص الجلسات |
| MDE Internals 0x05 | أولاف هارتونغ (FalconForce) | تليمترية MDE للإجراءات الحساسة، هندسة الكشف |
| DefenderHarvester | أولاف هارتونغ | مفاهيم تصدير تليمترية MDE |
| Run Live Response API | Microsoft | وثائق API الرسمية |
| Library Methods API | Microsoft | وثائق API إدارة المكتبة |