Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Loki — 🧙♂️ Node.js للقيادة والتحكم باختطاف السكربتات في تطبيقات Electron الضعيفة | Kitploit
أدوات/GitHubGitHub/boku7/loki
آليات الاستمراريةالاستغلالالتهرب من IDS/IPSشيل كودما بعد الاستغلالالقيادة والسيطرةالفريق الأحمرتطوير الحمولات
GitHubboku7/loki

Loki

🧙♂️ Node.js للقيادة والتحكم باختطاف السكربتات في تطبيقات Electron الضعيفة

عرض المستودع
1.4k2204منذ 5 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

🧙‍♂️ لوكي للقيادة والتحكم

لوكي هو إطار عمل للقيادة والتحكم (C2) من المرحلة الأولى مكتوب بلغة Node.js، صُمم لاختطاف السكربتات في تطبيقات Electron الضعيفة MITRE ATT&CK T1218.015. طُوّر لعمليات الفريق الأحمر، يمكّن لوكي من مراوغة برامج الأمان وتجاوز ضوابط التطبيقات عبر استغلال تطبيقات Electron الموثوقة والموقّعة.

اختطاف السكربتات يختطف تدفق التنفيذ لتطبيق Electron عن طريق تعديل ملفات JavaScript المحمّلة في وقت التشغيل بأكواد Node.js عشوائية. يمكن استغلال هذه التقنية من أجل:

  • زرع باب خلفي في تطبيق Electron
  • تجويف تطبيق Electron
  • توجيه التنفيذ إلى عملية أخرى

في حين أن عدة أدوات تتناول بالفعل استغلال اختطاف السكربتات لتوجيه التنفيذ إلى عملية أخرى، فإن لوكي هو الأول الذي يتيح زرع أبواب خلفية وتجويف تطبيقات Electron الموقّعة دون إبطال توقيع الكود الخاص بها.

لمزيد من التفاصيل حول كيفية عمل لوكي، طالع منشور المدونة هذا:

  • تجاوز ضوابط تطبيقات Windows Defender باستخدام Loki C2

🚀 المساهمون

الاسمالمساهمات
Bobby Cookeالمُنشئ والمشرف
Dylan Tranمُنشئ
Ellis Springeمُختبِر ألفا
Shawn Jonesكود تنفيذ التجميع
Trusted Secكود COFFLoader
Simon Exleyصانع فيديو
Clinton Elvesصانع فيديو
John Hammondصانع فيديو

فيديوهات

شاهد هذا الفيديو من John Hammond حول زرع باب خلفي في Cursor AI باستخدام Loki C2! 🎩

  • في الفيديو يستعرض اكتشاف تطبيق Electron ضعيف جديد، وزرع باب خلفي فيه باستخدام Loki C2، وإعداد واجهة العميل الرسومية، بل وتوصلنا أيضًا إلى طريقتين لإبقاء التطبيق يعمل بشكل مستمر في الخلفية 🪄 -- يعمل Cursor بشكل طبيعي من منظور المستخدم النهائي! 🥷

لقد زرعت بابًا خلفيًا في Cursor AI

شاهد هذا الفيديو من Simon Exley & Clinton Elves حول البدء في استخدام Loki C2! 🧙‍♂️

تجاوز ضوابط تطبيقات Windows Defender باستخدام Loki C2

الميزات والتفاصيل

  • قناة C2 عبر Azure Storage Blob
    • رمز SAS لحماية حساب تخزين C2
  • رسائل C2 مشفّرة بـ AES
  • وكيل يتعامل مع البروكسي
    • يستخدم العمليات الفرعية لعرض Chromium للوكيل، وتنفيذ الشيل كود، وتنفيذ التجميع بأسلوب fork-n-run -- يرث قدرات Chromium المرتبطة بالبروكسي.
  • بدون خادم فريق (Teamserver)
    • على عكس أنظمة C2 التقليدية حيث ترسل الوكلاء رسائل إلى خادم فريق، لا يوجد خادم فريق
    • عميل الواجهة الرسومية والوكلاء يسجّلون الدخول إلى نفس مخزن البيانات
  • تنفيذ مخفي -- يعمل في الخلفية

الأوامر

جميع أوامر الوكيل مكتوبة بلغة Node.js الأصلية ولا تتطلب تبعيات إضافية أو عمليات تحميل مكتبات. باستثناء الأمرين scexec و assembly اللذين يقومان بتحميل مكتبة على keytar.node و assembly.node

  • جميع الأوامر تقبل المسارات باستخدام /، ولن تعمل المسارات التي تحتوي على \.

set - تحميل العقد من مسارات استثناء ضوابط التطبيقات

  • إذا كانت هناك قواعد ضوابط تطبيقات تمنع تحميل المكتبات لملفات العقد، يمكنك استخدام الأمر set لتغيير مسارات التحميل لكل من assembly.node و scexec.node.
  • باستخدام ls و cat و cp و mv قد تتمكن من تعداد قواعد ضوابط التطبيقات لاكتشاف دليل قابل للكتابة يعد استثناءً.
  • باستخدام هذا يمكنك وضع ملفات العقد في دليل الاستثناء واستخدام الأمر set لتغيير مسار التحميل إلى دليل الاستثناء لتجاوز ضوابط التطبيق.
  • لمزيد من التفاصيل حول هذا المتجه الهجومي، راجع دورة CRTO2 من Daniel Duggan (@_RastaMouse)
root@kitploit:~
[04-04-2025 8:50AM MST] advsim$ help set
Set the Node load paths for assembly node and scexec nodes
	set scexec_path C:/Users/user/AppData/ExcludedApp/scexec.node
	set assembly_path C:/Users/user/AppData/ExcludedApp/assembly.node
[04-04-2025 8:51AM MST] advsim$ set scexec_path C:/Users/user/AppData/ExcludedApp/scexec.node
SCEXEC Node Load Path Set to : C:/Users/user/AppData/ExcludedApp/scexec.node

ميزات الوكيل

لمزيد من المعلومات حول ميزات الوكيل اضغط هنا

ميزات العميل

لمزيد من المعلومات حول ميزات العميل اضغط هنا

🧙‍♂️ نشر الأوهام

أولاً، تحتاج إلى تحديد تطبيق Electron ضعيف لا يجري فحوصات تكامل أمان ASAR مثل Microsoft Teams. قد تحتوي التطبيقات الأحدث على فحوصات تكامل تمنع زرع الأبواب الخلفية. الإصدارات الأقدم من التطبيق المستهدف من المرجح أن تكون ضعيفة.

  • دليل اكتشاف تطبيقات Electron الضعيفة

تعليمات بسيطة

لا تحتاج إلى تجميع الوكيل عند زرع أبواب خلفية في تطبيقات Electron. فقط استبدل محتويات {ELECTRONAPP}/resources/app/ بملفات وكيل لوكي.

تعليمات مفصلة

الخطوة 1 : إنشاء حساب Azure Storage Blob والحصول على رمز SAS

  • إنشاء حساب تخزين Azure عبر بوابة Azure
  • إنشاء حساب تخزين Azure عبر Azure CLI

الخطوة 2 : إنشاء حمولة لوكي مشوّهة (Obfuscated)

  • استنسخ هذا المستودع و cd إليه
  • ثبّت Node.JS
  • ثبّت وحدة javascript-obfuscator
root@kitploit:~
npm install --save-dev javascript-obfuscator
  • شغّل السكربت create_agent_payload.js لإنشاء حمولة لوكي بمعلومات حساب التخزين الخاص بك
root@kitploit:~
bobby$ node create_agent_payload.js 
[+] Provide Azure storage account information:
        - Enter Storage Account  : 7f7584ty218ba5dba778.blob.core.windows.net
        - Enter SAS Token        : se=2025-05-28T23%3A14%3A48Z&sp=rwdlac&spr=https&sv=2022-11-02&ss=b&srt=sco&sig=5MXQzJ6FDZK8yYiBSgJ6FDZKgQzJMXBSgg6qE4ydrJ6FDZKSgg%3D

[+] Configuration:
        - Storage Account : 7f7584ty218ba5dba778.blob.core.windows.net
        - SAS Token       : se=2025-05-28T23%3A14%3A48Z&sp=rwdlac&spr=https&sv=2022-11-02&ss=b&srt=sco&sig=5MXQzJ6FDZK8yYiBSgJ6FDZKgQzJMXBSgg6qE4ydrJ6FDZKSgg%3D
        - Meta Container  : mllyi2zjmafjm

[+] Updated /Users/bobby/apr2/LokiC2/config.js with storage configuration. 
 - Enter into the Loki Client UI
        Loki Client > Configuration

[+] Modifying PE binaries to have new hashes...
        - Payload assembly.node hash : e9d126407264821d3c2d324da0e2d1bc13cbc53e7c56340fe12b07f69b707f02
        - Payload keytar.node   hash : 292c14ffebd6cae3df99d9fbee525e29a5a704f076b82207eb3e650de45b075d

[+] Payload ready!
         - Obfuscated payload in the ./app directory

الخطوة 3 : زرع باب خلفي في تطبيق Electron

  • يتم إخراج حمولة لوكي المشوّهة إلى ./app/
  • غيّر الدليل إلى {ELECTRONAPP}/resources/
  • احذف كل شيء
  • انسخ مجلد ./app/ الخاص بلوكي إلى {ELECTRONAPP}/resources/app/
  • انقر على ملف Electron PE وتأكد من أن لوكي يعمل

الخطوة 4 : إعداد عميل لوكي

  • شغّل عميل لوكي بواجهة رسومية

  • من شريط القوائم انقر Loki Client > Configuration لفتح نافذة الإعدادات

  • أدخل تفاصيل حساب التخزين الخاص بك وانقر Save

  • يجب أن يظهر الوكيل الآن في لوحة المعلومات

  • انقر على الوكيل من جدول لوحة المعلومات لفتح نافذة الوكيل

  • اختبر للتأكد من أن لوكي يعمل بشكل صحيح

زرع أبواب خلفية في تطبيقات Electron مع إبقاء التطبيق الحقيقي يعمل بشكل طبيعي

إن الطريقة الأكثر مباشرة لاستخدام لوكي هي استبدال الملفات الموجودة في {ELECTRONAPP}/resources/app/ بملفات لوكي. يؤدي هذا إلى تجويف التطبيق، مما يعني أن التطبيق لن يعمل بشكل طبيعي -- لقد استبدل لوكي وظيفته.

إذا كنت تريد حقًا إبقاء تطبيق Electron يعمل مع نشر لوكي في الخلفية أيضًا، فكل الأمل ليس مفقودًا! لقد توصلت أنا و John Hammond إلى طريقة لإبقاء تطبيق Electron الحقيقي يعمل. أضفنا الملف الذي ستحتاجه إلى /loki/backdoor/init.js في هذا المستودع.

وهو حاليًا معدّ للعمل مع Cursor، الذي اكتشف John Hammond أنه ضعيف.

لتنفيذ ذلك، ستحتاج إلى:

  • تنزيل تطبيق Cursor
  • لصق جميع ملفات لوكي باستثناء package.json في cursor/resources/app/
    • لا تستبدل ملف package.json الحقيقي
  • نسخ /loki/backdoor/init.js إلى cursor/resources/app/
  • تعديل محتويات cursor/resources/app/package.json إلى:
    • تعيين "main":"init.js",
    • حذف "type":"module",
    • حذف "private":true,

كيف يعمل هذا

  • مع هذه التغييرات، سيُحمّل Cursor.exe ملف init.js عند النقر / التنفيذ
  • يقرأ init.js ملف package.json
  • يغيّر init.js "main":"init.js", -> "main":"main.js",
    • main.js هو لوكي
  • يولّد init.js عملية Cursor.exe جديدة ويتخلى عنها، وتشير إلى لوكي
  • يتم تشغيل لوكي في الخلفية
  • يقرأ init.js ملف package.json مرة أخرى
  • يغيّر init.js "main":"main.js", ->

بهذه الطريقة يبقى التطبيق مخترقًا بشكل دائم ويعمل بشكل طبيعي. إذا تم إغلاق تطبيق Cursor، سيستمر لوكي في العمل في الخلفية.

المستقبل

سأصنع سكربتًا لأتمتة هذا في المستقبل.

توصيات Opsec

  • توصيات Opsec

أدلة التجميع

هذه هي تعليمات التجميع لبناء الوكلاء والعملاء. تغطي التعليمات منصات متعددة، بما في ذلك Windows و Linux و macOS. يُنصح بتجميع العميل على المنصة والبنية المستهدفة.

العميل

  • Windows
  • macOS
  • Linux

الوكلاء

إذا كنت تزرع بابًا خلفيًا في تطبيق Electron، فلست بحاجة إلى تجميع الوكلاء.

لا أنصح بتجميع الوكيل واستخدامه في العمليات. تعليمات تجميع الوكلاء مخصصة للتطوير.

  • Windows
  • Linux
  • macOS

إرشادات الكشف

  • راجع المعلومات المقدمة من MITRE لمزيد من التفاصيل والأمثلة والمعلومات حول هذا TTP :
    • MITRE ATT&CK T1218.015: تطبيقات Electron
  • تنفيذ تطبيق Electron من دليل غير طبيعي مثل ~/Downloads/Teams/Teams.exe
  • تطبيقات Electron ترسل إشارات (beaconing) إلى Azure Storage Blob *.blob.core.windows.net
  • استخدام رمز SAS في حركة مرور الشبكة
  • تطبيقات Electron تُنشئ عمليات فرعية مثل netstat.exe أو whoami.exe
  • سيتم إنشاء دليل بالاسم الموجود في package.json الخاص بلوكي في ~/AppData/Roaming/{NAME} عند تنفيذ JavaScript الخاص بلوكي داخل عملية Electron.
  • يغطي إدخال LOLBAS Teams هذا اكتشافات زرع الأبواب الخلفية في تطبيقات Electron. تم نسخ معلومات الكشف أدناه.
  • IOC: إنشاء دليل %LOCALAPPDATA%\Microsoft\Teams\current\app
  • IOC: إنشاء/تعديل ملف %LOCALAPPDATA%\Microsoft\Teams\current\app.asar بواسطة غير مثبّت/محدّث Teams
  • قاعدة SIGMA لاكتشاف قناة C2 الخاصة بلوكي المنشأة من تطبيق Electron
  • لاكتشاف اختطاف مجلد تطبيق Electron (Teams و VS Code و RingCentral و Postman) لتحميل إطار عمل C2

المراجع || الشكر والتقدير || أبحاث Electron الهجومية

  • Dylan Tran (@d_tranman)
    • مشارك في إنشاء وكيل لوكي. صمم وحدات Node لتنفيذ الشيل كود والتجميع.
  • Valentina Palmiotti (@chompie1337) و Ellis Springe (@knavesec) و Ruben Boonen لأعمالهم الداخلية السابقة حول زرع الأبواب الخلفية في تطبيقات Electron لتحقيق الثبات (persistence)
  • Ruben Boonen
    • Wild West Hackin’ Fest talk Statikk Shiv: Leveraging Electron Applications for Post-Exploitation
  • Andrew Kisliakov
    • Microsoft Teams وتطبيقات Electron الأخرى كـ LOLbins
  • Shawn Jones
    • من أجل تنفيذ التجميع في لوكي، قام Dylan بترحيل كود InlineExecute-Assembly العام الخاص بـ Shawn
  • mr.d0x (@mrd0x) لأعمالهم السابقة حول استغلال تطبيق Teams Electron لتنفيذ أكواد Node.JS عشوائية ونشر نتائجهم في مشروع LOLBAS.
  • Michael Taggart
    • مشروع quASAR، أداة مصممة لتعديل تطبيقات Electron لتمكين تنفيذ الأوامر
    • Quasar: اختراق تطبيقات Electron
  • Raphael Mudge لإلهامي للتعمق في الفريق الأحمر ودعم إصدار هذه الأداة
    • The Security Conversation
  • Fletcher Davis
    • BSides : إساءة استخدام تطبيقات Electron
  • Pavel Tsakalidis
    • BEEMKA - مجموعة أدوات استغلال Electron

الترخيص

هذا المشروع مرخّص بموجب Business Source License 1.1. يُسمح بالاستخدام غير التجاري بموجب شروط الترخيص. يتطلب الاستخدام التجاري إذنًا صريحًا من المؤلف. في 3 أبريل 2030، سيتحول هذا الترخيص إلى Apache 2.0. راجع LICENSE للتفاصيل الكاملة.

تنزيل الأداة
الأمرالوصف
helpعرض المساعدة. الاستخدام: help أو help scan
pwdطباعة دليل العمل الحالي
lsسرد الملفات والأدلة
catعرض محتويات ملف
envعرض متغيرات بيئة العملية
spawnإنشاء عملية فرعية
drivesسرد محركات الأقراص
mvنقل ملف إلى وجهة جديدة
sleepالنوم لثوانٍ مع تذبذب (jitter)
cpنسخ ملف مصدر إلى وجهة
exit-allإنهاء الوكيل، لن يعاود الوكيل الاتصال بعد الآن
loadتحميل ملف PE عقدي من القرص إلى العملية
scexecتنفيذ شيل كود
assemblyتنفيذ تجميعة .NET والحصول على مخرجات الأوامر
uploadرفع ملف من جهاز المشغّل المحلي إلى جهاز الوكيل البعيد
downloadتنزيل ملف من جهاز الوكيل البعيد إلى جهاز المشغّل المحلي
scanإجراء فحص شبكة TCP عبر نطاق CIDR مع منافذ محددة
dnsاستعلام DNS. يستخدم إعدادات DNS الخاصة بالنظام
setضبط مسارات تحميل Node لعقدتي assembly و scexec
bofتنفيذ ملف COFF وإرجاع المخرجات
"main":"./out/main.js",
  • ./out/main.js" هو تطبيق Cursor الحقيقي
  • يولّد init.js عملية Cursor.exe جديدة ويتخلى عنها، وتشير إلى Cursor الحقيقي
  • يتم تشغيل تطبيق Cursor الحقيقي، ويكون مرئيًا ويعمل بشكل طبيعي
  • عند إغلاق Cursor بواسطة المستخدم:
    • يلتقط init.js حدث الإغلاق
    • يقرأ init.js ملف package.json للمرة الثالثة
    • يغيّر init.js "main":"./out/main.js", -> "main":"init.js",
  • قاعدة SIGMA