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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
supply-chain-monitor — مراقب أمان سلسلة التوريد الآلي الذي يستطلع سجلات PyPI و npm، ويقارن الإصدارات الجديدة مع سابقاتها، ويستخدم تحليلات LLM لاكتشاف تغييرات الكود الضارة مع تنبيهات Slack. | Kitploit
أدوات/GitHubGitHub/elastic/supply-chain-monitor
تحليل الثغرات الأمنيةتحليل الكودتحليل البرمجيات الخبيثةاستخبارات التهديداتأمن سلسلة التوريدالاستجابة للحوادث
GitHubelastic/supply-chain-monitor

supply-chain-monitor

مراقب أمان سلسلة التوريد الآلي الذي يستطلع سجلات PyPI و npm، ويقارن الإصدارات الجديدة مع سابقاتها، ويستخدم تحليلات LLM لاكتشاف تغييرات الكود الضارة مع تنبيهات Slack.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

مراقب سلسلة التوريد

License: MIT

مراقبة آلية لأفضل حزم PyPI و npm للكشف عن اختراقات سلسلة التوريد. يقوم باستقصاء كلا السجلين للإصدارات الجديدة، ويقارن كل إصدار بسابقه، ويستخدم نموذج لغة كبير (عبر Cursor Agent CLI) لتصنيف الفروقات على أنها حميدة أو ضارة. تؤدي النتائج الضارة إلى إطلاق تنبيه عبر Slack.

يتم مراقبة كلا النظامين البيئيين افتراضيًا. استخدم --no-pypi أو --no-npm لتعطيل أحدهما.

كيف يعمل

كل نظام بيئي يشغل خيط استقصاء خاص به، لكنه يشارك في خط التحليل والتنبيه.

root@kitploit:~
         ┌─── PyPI ──────────────────────┐   ┌─── npm ───────────────────────┐
         │                               │   │                               │
         │ changelog_since_serial()      │   │ CouchDB _changes feed         │
         │       │                       │   │       │                       │
         │       ▼                       │   │       ▼                       │
         │  ┌────────────┐               │   │  ┌────────────┐               │
         │  │ All PyPI   │─┐             │   │  │ All npm    │─┐             │
         │  │ events     │ │             │   │  │ changes    │ │             │
         │  └────────────┘ ▼             │   │  └────────────┘ ▼             │
         │ hugovk ──► Watchlist          │   │ download-counts ─► Watchlist  │
         │       │                       │   │       │                       │
         │ "new release" events only     │   │ new versions since last epoch │
         └───────────────┬───────────────┘   └───────────────┬───────────────┘
                         │                                   │
                         ▼                                   ▼
               ┌───────────────────┐               ┌───────────────────┐
               │ Download old + new│               │ Download old + new│
               │ (sdist + wheel)   │               │ (tarball)         │
               └───────────────────┘               └───────────────────┘
                         │                                   │
                         └─────────────────┬─────────────────┘
                                           ▼
                                   ┌───────────────┐
                                   │ Unified diff  │
                                   │ report (.md)  │
                                   └───────┬───────┘
                                           ▼
                                   ┌───────────────┐  ◄── LLM analysis
                                   │ Cursor Agent  │      (read-only)
                                   │ CLI (ask mode)│
                                   └───────┬───────┘
                                           │
                                       verdict?
                                           │
                                 malicious │
                                           ▼
                                   ┌───────────────┐
                                   │ Slack alert   │
                                   └───────────────┘

أهداف الكشف

يتم توجيه تحليل LLM للبحث عن:

  • كود مبهم (base64، exec، eval، XOR، سلاسل مشفرة)
  • استدعاءات شبكة لمضيفين غير متوقعين
  • كتابات في نظام الملفات إلى مواقع بدء التشغيل/الاستمرار
  • إنشاء عمليات وأوامر شل
  • إخفاء المعلومات أو إخفاء البيانات في ملفات الوسائط
  • سرقة بيانات الاعتماد والرموز المميزة
  • مؤشرات انتحال اسم الحزمة

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

  • Python 3.9+ — قم بتثبيت تبعيات التشغيل باستخدام pip install -r requirements.txt (تغطي المكتبة القياسية معظم الأداة؛ requests تُستخدم لرفع الملفات إلى Slack)
  • Cursor Agent CLI — الملف الثنائي المستقل agent، وليس IDE

تثبيت Cursor Agent CLI

ويندوز (PowerShell):

root@kitploit:~
irm 'https://cursor.com/install?win32=true' | iex

macOS / Linux:

root@kitploit:~
curl https://cursor.com/install -fsS | bash

تحقق من التثبيت باستخدام:

root@kitploit:~
agent --version

يجب أن تكون مصادقًا لدى Cursor (agent login أو قم بتعيين CURSOR_API_KEY).

تكوين Slack

ضع رمز bot الخاص بـ Slack في etc/slack.json:

root@kitploit:~
{
    "url": "https://hooks.slack.com/services/...",
    "bot_token": "xoxb-...",
    "channel": "C01XXXXXXXX"
}

يحتاج bot إلى نطاق chat:write على القناة المستهدفة. حقل channel هو معرف قناة Slack حيث تُنشر التنبيهات.

بداية سريعة

root@kitploit:~
# تشغيل لمرة واحدة: تحليل الإصدارات من آخر 10 دقائق تقريبًا
python monitor.py --once

# تشغيل مستمر: مراقبة أفضل 1000 حزمة (كلا النظامين البيئيين)، استقصاء كل 5 دقائق
python monitor.py --top 1000 --interval 300

# إنتاجي: مراقبة أفضل 15000، تنبيه إلى Slack
python monitor.py --top 15000 --interval 300 --slack

# npm فقط، أفضل 5000
python monitor.py --no-pypi --npm-top 5000

# PyPI فقط
python monitor.py --no-npm

نظرة عامة على الملفات

تفاصيل الاستخدام

monitor.py — المنسق الرئيسي

root@kitploit:~
python monitor.py [OPTIONS]

الخيارات:
  --top N          عدد أفضل الحزم المراقبة لكل نظام بيئي (الافتراضي: 15000)
  --interval SECS  فترة الاستقصاء بالثواني (الافتراضي: 300)
  --once           تشغيل لمرة واحدة على الأحداث الأخيرة، ثم الخروج
  --slack          تفعيل تنبيهات Slack للنتائج الضارة
  --model MODEL    تجاوز نموذج LLM (الافتراضي: composer-2-fast)
  --debug          تفعيل تسجيل DEBUG (يشمل المخرجات الأولية للوكيل)

خيارات PyPI:
  --no-pypi        تعطيل مراقبة PyPI
  --serial N       تسلسل سجل PyPI للبدء منه

خيارات npm:
  --no-npm         تعطيل مراقبة npm
  --npm-top N      أفضل N من حزم npm للمراقبة (الافتراضي: نفس --top)
  --npm-seq N      تسلسل تكرار npm للبدء منه

يعمل كل من PyPI و npm في خيط استقصاء خاص به. يتم حفظ حالة الاستقصاء (تسلسل PyPI، تسلسل + عصر npm) في last_serial.yaml حتى يستأنف المراقب من حيث توقف بعد إعادة التشغيل.

خط أنابيب PyPI:

  1. يقوم بتحميل أفضل N من الحزم من مجموعة بيانات hugovk/top-pypi-packages كقائمة مراقبة
  2. يتصل بواجهة XML-RPC الخاصة بـ PyPI ويحصل على الرقم التسلسلي الحالي
  3. كل --interval ثانية، يستدعي changelog_since_serial() — استدعاء API واحد يعيد جميع الأحداث منذ آخر فحص
  4. يقوم بالتصفية لأحداث "new release" المطابقة لقائمة المراقبة
  5. لكل إصدار جديد: يقوم بتنزيل النسخ القديمة والجديدة (sdist و wheel عندما يكونان موجودين)، يقارن، يحلل عبر LLM، وينبه Slack إذا كان ضارًا

خط أنابيب npm:

  1. يقوم بتحميل أفضل N من الحزم من مجموعة بيانات download-counts (يتراجع إلى واجهة بحث npm)
  2. يقرأ تسلسل تكرار CouchDB الحالي من replicate.npmjs.com
  3. كل --interval ثانية، يجلب خلاصة _changes لجميع تغييرات السجل منذ آخر تسلسل
  4. يقوم بتصفية الحزم المتغيرة مقابل قائمة المراقبة ويتحقق من الإصدارات المنشورة بعد آخر عصر استقصاء
  5. لكل إصدار جديد: يقوم بتنزيل التاربول القديم والجديد من سجل npm، يقارن، يحلل عبر LLM، وينبه Slack إذا كان ضارًا

يتم تسجيل جميع المخرجات في كل من وحدة التحكم و logs/monitor_YYYYMMDD.log.

package_diff.py — مقارن الحزم

root@kitploit:~
# مقارنة نسختين من PyPI
python package_diff.py requests 2.31.0 2.32.0

# مقارنة نسختين من npm
python package_diff.py --npm express 4.18.2 4.19.0

# حفظ في ملف
python package_diff.py telnyx 2.0.0 2.1.0 -o telnyx_diff.md

# مقارنة أرشيفات محلية
python package_diff.py --local old.tar.gz new.tar.gz -n mypackage

يتم التنزيل مباشرة عبر واجهات API للسجل (PyPI JSON API / npm registry)، وليس عبر pip أو npm. هذا يعني:

  • لا تبعية pip/npm للتنزيل
  • مستقل عن النظام الأساسي — يمكن تنزيل ومقارنة حزم مخصصة للينكس من ويندوز
  • PyPI: يفضل wheel (Python نقي عند توفره)، يتراجع إلى sdist
  • npm: ينزل التاربول مباشرة من السجل

analyze_diff.py — حكم LLM

root@kitploit:~
# تحليل ملف الفرق
python analyze_diff.py telnyx_diff.md

# إخراج JSON
python analyze_diff.py telnyx_diff.md --json

# استخدام نموذج محدد
python analyze_diff.py telnyx_diff.md --model claude-4-opus

يشغل Cursor Agent CLI في وضع --mode ask (للقراءة فقط) مع --trust. يقرأ الوكيل ملف الفرق ويعيد حكمًا منظمًا.

رموز الخروج: 0 = حميد، 1 = ضار، 2 = غير معروف/خطأ.

pypi_monitor.py — مستقصي مستقل

root@kitploit:~
# رؤية ما يُنشر الآن (آخر 10 دقائق تقريبًا)
python pypi_monitor.py --once --top 15000

# مراقبة مستمرة (مخرجات وحدة التحكم فقط، بدون تحليل)
python pypi_monitor.py --top 1000 --interval 120

مفيد لاستكشاف سرعة إصدار PyPI أو تصحيح واجهة سجل التغييرات دون تشغيل خط التحليل الكامل.

top_pypi_packages.py — ترتيب الحزم

root@kitploit:~
# طباعة أفضل 1000 حزمة
python top_pypi_packages.py
root@kitploit:~
# استخدام كمكتبة
from top_pypi_packages import fetch_top_packages
packages = fetch_top_packages(top_n=500)
# [{"project": "boto3", "download_count": 1577565199}, ...]

مصادر البيانات

يقوم المراقب بـ استدعاء API واحد لكل فترة استقصاء ولكل نظام بيئي (سجل PyPI / npm _changes)، بالإضافة إلى 2-3 استدعاءات لكل إصدار جديد (تاريخ الإصدار + التحميلات). هذا خفيف جدًا.

أمثلة التنبيهات

عندما يكتشف المراقب إصدارًا ضارًا، ينشر في Slack:

PyPI:

root@kitploit:~
🚨 تنبيه سلسلة التوريد: telnyx 4.87.2

الرتبة: #5,481 من أفضل حزم PyPI
الحكم: ضار
PyPI: https://pypi.org/project/telnyx/4.87.2/

ملخص التحليل (مبتور):
التغييرات في src/telnyx/_client.py تنفذ سلوك تنزيل-فك-تشغيل
مبهم وآثار جانبية لاستيراد الوحدات. دالة _d() تفك ترميز
سلاسل base64، كتلة _p ضخمة تحتوي على سكريبت سرقة
يقوم بتنزيل ملف .wav من
http://83.142.209.203:8080/ringtone.wav ويستخرج حمولة
مخفية عبر إخفاء المعلومات...

npm:

root@kitploit:~
🚨 تنبيه سلسلة التوريد: axios 0.30.4

الرتبة: #42 من أفضل حزم npm
الحكم: ضار
npm: https://www.npmjs.com/package/axios/v/0.30.4

ملخص التحليل (مبتور):
1. **تبعية غير قياسية** — كتلة `dependencies` تتضمن `plain-crypto-js`. إصدارات axios المنشورة تعتمد فقط على `follow-redirects` و`form-data` و`proxy-from-env`. حزمة رابعة اسمها يبدو كأنه **انتحال أسلوب crypto-js** هو علامة كلاسيكية على حزمة معدلة أو مزيفة، وليس إصدار axios عادي.

القيود

  • يتم تحليل الإصدارات بشكل تسلسلي داخل كل خيط نظام بيئي. خلال فترات كثافة الإصدارات العالية، سيكون هناك تراكم في المعالجة.
  • Cursor Agent CLI مطلوب — يعتمد التحليل على اشتراك Cursor نشط ومصادقة الـ agent CLI.
  • وضع الحماية (عزل نظام الملفات) متوفر فقط على macOS/Linux. على ويندوز، يعمل الوكيل في وضع ask للقراءة فقط ولكن بدون عزل على مستوى نظام التشغيل.
  • قوائم المراقبة ثابتة — تُحمل مرة واحدة عند بدء التشغيل من مجموعتي hugovk (PyPI) و download-counts (npm). أعد التشغيل لتحديثها.
  • حماية فجوة _changes في npm — إذا انخفض تسلسل npm المحفوظ بأكثر من 10,000 تغيير عن رأس السجل، يقوم المراقب بإعادة تعيينه إلى الرأس لتجنب وقت استدراك طويل. سيتم فقدان الإصدارات خلال الفجوة.

التسجيل

تُكتب السجلات إلى كل من stdout و logs/monitor_YYYYMMDD.log. يتم إنشاء ملف جديد كل يوم. يسجل كلا النظامين البيئيين في نفس الملف، مع بادئة [npm] لسطور npm. مثال:

root@kitploit:~
2026-03-27 12:01:15 [INFO] جلب أفضل 15,000 حزمة من مجموعة hugovk...
2026-03-27 12:01:16 [INFO] تم تحميل قائمة المراقبة: 15,000 حزمة (آخر تحديث للمجموعة 2026-03-01 07:34:08)
2026-03-27 12:01:16 [INFO] جلب أفضل 15,000 حزمة npm من مجموعة download-counts...
2026-03-27 12:01:18 [INFO] تم تحميل قائمة مراقبة npm: 15,000 حزمة (download-counts 1.0.52)
2026-03-27 12:01:19 [INFO] [pypi] بدء التسلسل: 35,542,068 (من last_serial.yaml) — استقصاء كل 300 ثانية
2026-03-27 12:01:19 [INFO] [npm] بدء التسلسل: 42,817,503 (من last_serial.yaml) — استقصاء كل 300 ثانية
2026-03-27 12:06:18 [INFO] [pypi] تم الكشف عن إصدارين جديدين في قائمة المراقبة (تسلسل 35,542,068 -> 35,542,190)
2026-03-27 12:06:18 [INFO] [pypi] معالجة fast-array-utils 1.4 (الرتبة #8,231)...
2026-03-27 12:06:18 [INFO] [pypi] مقارنة fast-array-utils 1.3 -> 1.4
2026-03-27 12:06:50 [INFO] [pypi] تحليل الفرق لـ fast-array-utils...
2026-03-27 12:07:35 [INFO] [pypi] الحكم لـ fast-array-utils 1.4: حميد
2026-03-27 12:06:20 [INFO] [npm] تم الكشف عن إصدار جديد واحد في قائمة المراقبة (تسلسل -> 42,817,612)
2026-03-27 12:06:20 [INFO] [npm] معالجة axios 0.30.4 (الرتبة #42)...
2026-03-27 12:06:21 [INFO] [npm] مقارنة axios 0.30.3 -> 0.30.4
2026-03-27 12:07:01 [INFO] [npm] تحليل الفرق لـ axios...
2026-03-27 12:07:45 [INFO] [npm] الحكم لـ axios 0.30.4: ضار

المساهمة والمجتمع والترخيص

هذا المشروع مرخص بموجب رخصة MIT. مصادر البيانات والإشعارات من طرف ثالث ملخصة في NOTICE.txt.

المساهمات مرحب بها — راجع CONTRIBUTING.md. يتبع هذا المستودع ميثاق المساهم. أبلغ عن المشكلات الأمنية عبر SECURITY.md، وليس عبر المشكلات العامة.

الأسئلة والنقاش: مجتمع Elastic Slack.

تنزيل الأداة
الملفالغرض
monitor.pyالمنسق الرئيسي — استقصاء PyPI + npm، مقارنة، تحليل، تنبيه (خيوط متوازية)
pypi_monitor.pyمستقصي سجل تغييرات PyPI المستقل (يُستخدم للاستكشاف)
package_diff.pyتنزيل ومقارنة نسختين من أي حزمة PyPI أو npm
analyze_diff.pyإرسال الفرق إلى Cursor Agent CLI، تحليل الحكم
top_pypi_packages.pyجلب وعرض أفضل N من حزم PyPI حسب عدد التحميلات
slack.pyعميل API Slack (إرسال رسالة، رفع ملف)
etc/slack.jsonبيانات اعتماد Bot Slack
last_serial.yamlحالة الاستقصاء المحفوظة (تسلسل PyPI + تسلسل/عصر npm)
logs/ملفات سجل يومية (monitor_YYYYMMDD.log)
المصدرماذاحدود المعدل
hugovk/top-pypi-packagesأفضل 15,000 حزمة PyPI حسب التحميلات في 30 يومًا (JSON شهري)لا توجد (ملف ثابت)
PyPI XML-RPC changelog_since_serial()تيار أحداث PyPI في الوقت الفعليمتهالك ولكنه يعمل؛ استدعاء واحد لكل استقصاء كافٍ
PyPI JSON APIبيانات الحزمة، تاريخ الإصدار، روابط التحميلسخي؛ يُستخدم بشكل محدود (استدعاء واحد لكل إصدار)
download-counts (nice-registry)إحصائيات التحميل الشهرية لكل حزمة npm (counts.json)لا توجد (tarball npm)
npm CouchDB replication _changes feedتيار تغييرات سجل npm في الوقت الفعليعام؛ قراءات مقسمة إلى صفحات
npm registry APIمستندات الحزمة، تحميلات tarballسخي؛ يُستخدم بشكل محدود