
برنامج هجوم الوصول المباشر للذاكرة (DMA)
يستخدم PCILeech أجهزة PCIe لقراءة وكتابة ذاكرة النظام المستهدف. يتم ذلك باستخدام DMA عبر PCIe. لا حاجة لأي برامج تشغيل على النظام المستهدف.
يعمل PCILeech أيضًا بدون عتاد مع مجموعة واسعة من طرق الحصول على البرامج المدعومة من مكتبة LeechCore - بما في ذلك التقاط الذاكرة الحية عن بُعد باستخدام DumpIt أو WinPmem. كما يدعم PCILeech التقاط الذاكرة محليًا وعددًا من تنسيقات ملفات تفريغ الذاكرة.
يدعم PCILeech أجهزة متعددة للحصول على الذاكرة، سواء كانت قائمة على العتاد أو البرامج. العتاد القائم على USB3380 قادر على قراءة 4 جيجابايت فقط من الذاكرة بشكل أصلي، ولكنه قادر على قراءة كل الذاكرة إذا تم إدخال وحدة kernel (KMD) أولاً في نواة النظام المستهدف. العتاد القائم على FPGA، والطرق القائمة على البرامج، قادران على قراءة كل الذاكرة.
PCILeech قادر على إدخال مجموعة واسعة من الغرسات النووية (kernel implants) في الأنوية المستهدفة - مما يسمح بسهولة الوصول إلى الذاكرة الحية ونظام الملفات عبر "قرص مثبت". من الممكن أيضًا إزالة شرط كلمة مرور تسجيل الدخول، تحميل برامج تشغيل غير موقعة، تنفيذ الأكواد وإنشاء قذائف النظام. يعمل PCIleech على Windows و Linux. أنظمة التشغيل المستهدفة المدعومة حاليًا هي إصدارات x64 من: UEFI و Linux و FreeBSD و Windows. يتطلب ذلك إمكانية الكتابة إلى الذاكرة (عتاد USB3380، عتاد FPGA، LiveCloudKd أو CVE-2018-1038 "Total Meltdown").
لبدء العمل، استنسخ المصادر في المستودع أو حمل أحدث الملفات التنفيذية والوحدات وملفات الإعدادات.
واجهة المستخدم الرسومية PushPin لـ PCILeech تجعل مهام RedTeam الشائعة سهلة للغاية. لاحظ أن PushPin ليس جزءًا من التوزيع الرسمي لـ PCILeech.







*) macOS High Sierra وما فوق غير مدعومة.
يدعم PCILeech طرق الحصول على الذاكرة القائمة على العتاد والبرامج. يتم التعامل مع كل الحصول على الذاكرة بواسطة مكتبة LeechCore.
فيما يلي ملخص لطرق الحصول على الذاكرة القائمة على العتاد المدعومة المدرجة أدناه. جميع طرق الحصول على الذاكرة القائمة على العتاد مدعومة على كل من Windows و Linux. ومع ذلك، فإن الطرق القائمة على FPGA تعاني من انخفاض طفيف في الأداء على Linux وستصل إلى حد أقصى تقريبًا: 90 ميجابايت/ثانية مقارنة بـ 150 ميجابايت/ثانية على Windows.
فيما يلي ملخص لطرق الحصول على الذاكرة القائمة على البرامج المدعومة المدرجة أدناه. يرجى ملاحظة أن LeechService يوفر فقط اتصالاً شبكيًا بمكتبة LeechCore عن بُعد. من الممكن استخدام طرق الحصول على الذاكرة القائمة على العتاد والبرامج بمجرد الاتصال.
يرجى التأكد من أن لديك أحدث إصدار من PCILeech بزيارة مستودع PCILeech على github على: https://github.com/ufrisk/pcileech
احصل على أحدث الملفات التنفيذية والوحدات وملفات الإعدادات من أحدث إصدار. بدلاً من ذلك، استنسخ المستودع وابنِ من المصدر.
يرجى الاطلاع على دليل PCILeech على Windows للحصول على معلومات حول تشغيل PCILeech على Windows.
يجب تثبيت برنامج تشغيل USB الخاص بـ Google Android إذا تم استخدام عتاد USB3380. حمل برنامج تشغيل USB الخاص بـ Google Android من: http://developer.android.com/sdk/win-usb.html#download قم بفك ضغط برنامج التشغيل.
يجب تثبيت برامج تشغيل FTDI إذا تم استخدام FPGA مع بطاقة إضافة FT601 USB3 أو PCIeScreamer. حمل FTD3XX.dll 64 بت من FTDI وضعه بجانب pcileech.exe.
لتركيب الذاكرة الحية ونظام الملفات المستهدف كقرص في Windows، يجب تثبيت مكتبة نظام الملفات Dokany2. يرجى تحميل وتثبيت أحدث إصدار ثابت من Dokany2 على: https://github.com/dokan-dev/dokany/releases/latest
يرجى الاطلاع على دليل PCILeech على Linux للحصول على معلومات حول تشغيل PCILeech على Linux.
يرجى الاطلاع على صفحات ويكي المشروع لمزيد من الأمثلة. الويكي في مرحلة بناء وقد لا تزال المعلومات مفقودة.
تركيب الذاكرة الحية للنظام المستهدف ونظام الملفات، يتطلب تحميل KMD. في هذا المثال، يتم استخدام 0x11abc000.
pcileech.exe mount -kmd 0x11abc000عرض المساعدة لغرسة نواة محددة، في هذا المثال غرسة النواة lx64_filepull.
pcileech.exe lx64_filepull -helpعرض المساعدة لأمر التفريغ.
pcileech.exe dump -helpتفريغ كل الذاكرة من النظام المستهدف بافتراض تحميل وحدة نواة في العنوان: 0x7fffe000.
pcileech.exe dump -kmd 0x7fffe000تفريغ القسري للذاكرة أقل من 4 جيجابايت بما في ذلك الأجهزة المعينة للذاكرة القابلة للوصول باستخدام نهج USB2 الأكثر استقرارًا على USB3380.
pcileech.exe dump -force -device usb3380://usb=2استقبال TLPs PCIe (حزم طبقة المعاملات) وطباعتها على الشاشة (يتطلب لوحة تطوير FPGA مهيأة بشكل صحيح).
pcileech.exe tlp -vv -wait 1000اختبار / تعداد ذاكرة النظام المستهدف بحثًا عن صفحات ذاكرة قابلة للقراءة والحد الأقصى للذاكرة. (عتاد FPGA فقط).
pcileech.exe probeتفريغ كل الذاكرة بين العناوين min و max، لا تتوقف عند الصفحات الفاشلة. الوصول الأصلي للذاكرة 64 بت مدعوم فقط على عتاد FPGA.
pcileech.exe dump -min 0x0 -max 0x21e5fffff -forceتفريغ كل الذاكرة، حاول تحديد خريطة الذاكرة من سجل النظام المستهدف لتجنب تفريغ الذاكرة غير الصالحة المحتملة التي قد تجمد الهدف.
pcileech.exe dump -memmap autoفرض استخدام جهاز معين (بدلاً من الكشف التلقائي الافتراضي عنه). جهاز pmem لا يتم اكتشافه تلقائيًا.
pcileech.exe pagedisplay -min 0x1000 -device pmemتفريغ الذاكرة عن بُعد من LeechAgent بعيد باستخدام اتصال مشفر ومصادق عليه بشكل متبادل بواسطة kerberos.
pcileech.exe dump -device pmem -remote rpc://[email protected]تنفيذ نص تحليل Python find-rwx.py على كمبيوتر بعيد باستخدام بيئة Python المدمجة في LeechAgent.
pcileech.exe agent-execpy -in find-rwx.py -device pmem -remote rpc://[email protected]تصحيح ذاكرة العملية الافتراضية لـ pid 432 (مثال lsass.exe في هذا المثال).
pcileech.exe patch -pid 432 -sig unlock_win10x64.sigتجد كل هذا مربكًا بعض الشيء؟ أو تريد فقط طرح سؤال سريع؟ انضم إلى خادم مجتمع DMA لـ PCILeech و MemProcFS على Discord!
الملفات التنفيذية موجودة في قسم الإصدارات من هذا المستودع. إذا رغب شخص في بناء نسخته الخاصة، فمن الممكن القيام بذلك. يرجى الاطلاع على PCILeech على Windows أو PCILeech على Linux لمزيد من المعلومات حول بناء PCILeech. PCILeech يعتمد أيضًا على LeechCore واختياريًا (لبعض الوظائف الإضافية) على نظام ملفات عملية الذاكرة الذي يجب بناؤهما بشكل منفصل.
PCILeech و MemProcFS و LeechCore هي مفتوحة المصدر ولكنها ليست مفتوحة المساهمة. تقدم PCILeech و MemProcFS و LeechCore بنية إضافات مرنة للغاية تسمح بالمساهمات في شكل إضافات. إذا كنت ترغب في تقديم مساهمة، بخلاف إضافة، للمشاريع الأساسية، فيرجى الاتصال بي قبل البدء في التطوير.
v1.0-v3.6
v4.0
leechcore.dll/leechcore.so بدلاً من ذلك. الأجهزة الجديدة تشمل:
v4.1
agent-forensic.
./pcileech mount /home/user/fusemnt/leechfs -kmd <your_kmd_address>none.-bar-ro و -bar-rw.-psname.الأحدث:
-no-kmd-mem لتعطيل الوصول إلى ذاكرة KMD اختياريًا عند تحميل KMD (قد يكون مفيدًا لأسباب تتعلق بالاستقرار في بعض الحالات).-kmd WIN11_X64 - توقيع KMD لويندوز 11 (اسم مستعار لـ WIN10_X64_3).| الجهاز | النوع | الواجهة | السرعة | الوصول للذاكرة 64 بت | الوصول لـ PCIe TLP | راعي المشروع |
|---|
| ZDMA | FPGA | Thunderbolt3 | 1000MB/s | نعم | نعم | 💖 |
| GBOX | FPGA | OCuLink | 400MB/s | نعم | نعم | 💖 |
| LeetDMA | FPGA | USB-C | 190MB/s | نعم | نعم | 💖 |
| CaptainDMA M2 | FPGA | USB-C | 190MB/s | نعم | نعم | 💖 |
| CaptainDMA M2 100T | FPGA | USB-C | 220MB/s | نعم | نعم | 💖 |
| CaptainDMA 4.1th | FPGA | USB-C | 190MB/s | نعم | نعم | 💖 |
| CaptainDMA 75T | FPGA | USB-C | 200MB/s | نعم | نعم | 💖 |
| CaptainDMA 100T | FPGA | USB-C | 220MB/s | نعم | نعم | 💖 |
| AC701/FT601 | FPGA | USB3 | 190MB/s | نعم | نعم | |
| USB3380-EVB | USB3380 | USB3 | 150MB/s | لا | لا | |
| DMA patched HP iLO | BMC | TCP | 1MB/s | نعم | لا |
| الجهاز | النوع | متطاير | كتابة | دعم Linux | إضافة |
|---|
| تفريغ الذاكرة الفعلية الخام | ملف | لا | لا | نعم | لا |
| تفريغ تعطل Microsoft الكامل | ملف | لا | لا | نعم | لا |
| تفريغ ELF الأساسي الكامل | ملف | لا | لا | نعم | لا |
| VMware | ذاكرة حية | نعم | نعم | لا | لا |
| ملف حفظ ذاكرة VMware | ملف | لا | لا | نعم | لا |
| TotalMeltdown | CVE-2018-1038 | نعم | نعم | لا | لا |
| DumpIt /LIVEKD | ذاكرة حية | نعم | لا | لا | لا |
| WinPMEM | ذاكرة حية | نعم | لا | لا | لا |
| LiveKd | ذاكرة حية | نعم | لا | لا | لا |
| LiveCloudKd | ذاكرة حية | نعم | نعم | لا | نعم |
| حالة حفظ Hyper-V | ملف | لا | لا | لا | نعم |
| LeechAgent* | عن بُعد | لا | لا |