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 अलर्टिंग शामिल है।

रिपॉजिटरी देखें
52961475 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

सप्लाई चेन मॉनिटर

License: MIT

शीर्ष PyPI और npm पैकेजों की स्वचालित निगरानी आपूर्ति श्रृंखला से समझौता के लिए। दोनों रजिस्ट्रियों को नए रिलीज़ के लिए पोल करता है, प्रत्येक रिलीज़ की उसके पूर्ववर्ती से तुलना करता है, और डिफ को सौम्य या दुर्भावनापूर्ण के रूप में वर्गीकृत करने के लिए LLM (Cursor Agent CLI के माध्यम से) का उपयोग करता है। दुर्भावनापूर्ण निष्कर्ष स्लैक अलर्ट को ट्रिगर करते हैं।

दोनों इकोसिस्टम डिफ़ॉल्ट रूप से मॉनिटर किए जाते हैं। एक को अक्षम करने के लिए --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 के साथ रनटाइम निर्भरताएँ स्थापित करें (stdlib अधिकांश टूल को कवर करता है; Slack अपलोड के लिए requests का उपयोग किया जाता है)
  • Cursor Agent CLI — स्टैंडअलोन agent बाइनरी, IDE नहीं

Cursor Agent CLI स्थापित करना

Windows (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 सेट करें)।

स्लैक कॉन्फ़िगरेशन

अपना स्लैक बॉट टोकन etc/slack.json में रखें:

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

बॉट को लक्ष्य चैनल पर chat:write स्कोप की आवश्यकता है। channel फ़ील्ड स्लैक चैनल आईडी है जहाँ अलर्ट पोस्ट किए जाते हैं।

त्वरित आरंभ

root@kitploit:~
# One-shot: analyze releases from the last ~10 minutes
python monitor.py --once

# Continuous: monitor top 1000 packages (both ecosystems), poll every 5 min
python monitor.py --top 1000 --interval 300

# Production: monitor top 15000, alert to Slack
python monitor.py --top 15000 --interval 300 --slack

# npm only, top 5000
python monitor.py --no-pypi --npm-top 5000

# PyPI only
python monitor.py --no-npm

फ़ाइल अवलोकन

फ़ाइलउद्देश्य
monitor.pyमुख्य आयोजक — PyPI + npm को पोल करें, डिफ़ करें, विश्लेषण करें, अलर्ट करें (समानांतर थ्रेड्स)
pypi_monitor.pyस्टैंडअलोन PyPI चेंजलॉग पोलर (अन्वेषण के लिए उपयोगी)
package_diff.pyकिसी भी PyPI या npm पैकेज के दो संस्करण डाउनलोड और डिफ़ करें
analyze_diff.pyCursor Agent CLI को एक डिफ़ भेजें, निर्णय पार्स करें
top_pypi_packages.pyशीर्ष N PyPI पैकेजों को डाउनलोड गणना द्वारा प्राप्त करें और सूचीबद्ध करें
slack.pyस्लैक API क्लाइंट (SendMessage, PostFile)
etc/slack.jsonस्लैक बॉट क्रेडेंशियल
last_serial.yamlस्थिर पोलिंग स्थिति (PyPI सीरियल + npm सीक्वेंस/इपॉक)
logs/दैनिक लॉग फ़ाइलें (monitor_YYYYMMDD.log)

उपयोग विवरण

monitor.py — मुख्य आयोजक

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

Options:
  --top N          प्रति इकोसिस्टम देखने के लिए शीर्ष पैकेजों की संख्या (डिफ़ॉल्ट: 15000)
  --interval SECS  पोल अंतराल सेकंड में (डिफ़ॉल्ट: 300)
  --once           हाल की घटनाओं पर एक बार पास करें, फिर बाहर निकलें
  --slack          दुर्भावनापूर्ण निष्कर्षों के लिए स्लैक अलर्ट सक्षम करें
  --model MODEL    LLM मॉडल ओवरराइड करें (डिफ़ॉल्ट: composer-2-fast)
  --debug          DEBUG लॉगिंग सक्षम करें (एजेंट रॉ आउटपुट शामिल है)

PyPI options:
  --no-pypi        PyPI मॉनिटरिंग अक्षम करें
  --serial N       PyPI चेंजलॉग सीरियल जिससे शुरू करना है

npm options:
  --no-npm         npm मॉनिटरिंग अक्षम करें
  --npm-top N      देखने के लिए शीर्ष N npm पैकेज (डिफ़ॉल्ट: --top के समान)
  --npm-seq N      npm प्रतिकृति अनुक्रम जिससे शुरू करना है

PyPI और npm प्रत्येक अपने स्वयं के पोलिंग थ्रेड में चलते हैं। पोलिंग स्थिति (PyPI सीरियल, npm अनुक्रम + इपॉक) last_serial.yaml में स्थिर की जाती है ताकि मॉनिटर पुनरारंभ के बाद वहीं से जारी रहे जहाँ छोड़ा था।

PyPI पाइपलाइन:

  1. hugovk/top-pypi-packages डेटासेट से शीर्ष N पैकेजों को एक वॉचलिस्ट के रूप में लोड करता है
  2. PyPI के XML-RPC API से कनेक्ट होता है और वर्तमान सीरियल नंबर प्राप्त करता है
  3. प्रत्येक --interval सेकंड पर, changelog_since_serial() कॉल करता है - एक एकल API कॉल जो अंतिम जांच के बाद से सभी घटनाओं को लौटाता है
  4. वॉचलिस्ट से मेल खाने वाली "new release" घटनाओं को फ़िल्टर करता है
  5. प्रत्येक नई रिलीज़ के लिए: पुराने + नए संस्करण डाउनलोड करता है (sdist और wheel जब दोनों मौजूद हों), डिफ़ करता है, LLM के माध्यम से विश्लेषण करता है, और यदि दुर्भावनापूर्ण हो तो स्लैक को अलर्ट करता है

npm पाइपलाइन:

  1. download-counts डेटासेट से शीर्ष N पैकेज लोड करता है (npm सर्च API पर फ़ॉलबैक)
  2. replicate.npmjs.com से वर्तमान CouchDB प्रतिकृति अनुक्रम पढ़ता है
  3. प्रत्येक --interval सेकंड पर, अंतिम अनुक्रम के बाद से सभी रजिस्ट्री परिवर्तनों के लिए _changes फ़ीड प्राप्त करता है
  4. वॉचलिस्ट के विरुद्ध बदले गए पैकेजों को फ़िल्टर करता है और अंतिम पोल इपॉक के बाद प्रकाशित संस्करणों की जाँच करता है
  5. प्रत्येक नई रिलीज़ के लिए: npm रजिस्ट्री से पुराने + नए टारबॉल डाउनलोड करता है, डिफ़ करता है, LLM के माध्यम से विश्लेषण करता है, और यदि दुर्भावनापूर्ण हो तो स्लैक को अलर्ट करता है

सभी आउटपुट कंसोल और 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

डाउनलोड सीधे रजिस्ट्री APIs (PyPI JSON API / npm रजिस्ट्री) के माध्यम से किए जाते हैं, pip या npm से नहीं। इसका अर्थ है:

  • डाउनलोड के लिए कोई pip/npm निर्भरता नहीं
  • प्लेटफ़ॉर्म-अज्ञेय — Windows से Linux-केवल पैकेज डाउनलोड और डिफ़ कर सकता है
  • 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 रिलीज़ वेग की खोज या चेंजलॉग API को डीबग करने के लिए उपयोगी।

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}, ...]

डेटा स्रोत

स्रोतक्यादर सीमाएँ
hugovk/top-pypi-packages30-दिवसीय डाउनलोड द्वारा शीर्ष 15,000 PyPI पैकेज (मासिक JSON)कोई नहीं (स्थिर फ़ाइल)
PyPI XML-RPC changelog_since_serial()रीयल-टाइम PyPI इवेंट फायरहोजअप्रचलित लेकिन कार्यात्मक; प्रति पोल 1 कॉल ठीक है
PyPI JSON APIपैकेज मेटाडेटा, संस्करण इतिहास, डाउनलोड URLउदार; कम उपयोग (प्रति रिलीज़ 1 कॉल)
download-counts (nice-registry)प्रत्येक npm पैकेज के लिए मासिक डाउनलोड गणना (counts.json)कोई नहीं (npm टारबॉल)
npm CouchDB प्रतिकृति _changes फ़ीडरीयल-टाइम npm रजिस्ट्री परिवर्तन स्ट्रीमसार्वजनिक; पृष्ठांकित पठन
npm रजिस्ट्री APIपैकेज पैकुमेंट्स, टारबॉल डाउनलोडउदार; कम उपयोग

मॉनिटर प्रति पोल अंतराल प्रति इकोसिस्टम 1 API कॉल (PyPI चेंजलॉग / npm _changes), साथ ही प्रति नई रिलीज़ 2-3 कॉल (संस्करण इतिहास + डाउनलोड) करता है। यह बहुत हल्का है।

उदाहरण अलर्ट

जब मॉनिटर एक दुर्भावनापूर्ण रिलीज़ का पता लगाता है, तो यह स्लैक पर पोस्ट करता है:

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 ब्लॉब में एक एक्सफ़िल्ट्रेशन स्क्रिप्ट है जो
http://83.142.209.203:8080/ringtone.wav से एक .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 पर उपलब्ध है। Windows पर, एजेंट रीड-ओनली ask मोड में चलता है लेकिन OS-स्तरीय सैंडबॉक्सिंग के बिना।
  • वॉचलिस्ट स्थिर हैं — स्टार्टअप पर hugovk (PyPI) और download-counts (npm) डेटासेट से एक बार लोड की जाती हैं। ताज़ा करने के लिए पुनरारंभ करें।
  • npm _changes गैप सुरक्षा — यदि सहेजा गया npm अनुक्रम रजिस्ट्री हेड से 10,000 से अधिक परिवर्तनों से पीछे हो जाता है, तो मॉनिटर लंबी कैच-अप से बचने के लिए हेड पर रीसेट हो जाता है। गैप के दौरान रिलीज़ छूट जाती हैं।

लॉगिंग

लॉग stdout और logs/monitor_YYYYMMDD.log दोनों पर लिखे जाते हैं। प्रत्येक दिन एक नई फ़ाइल बनाई जाती है। दोनों इकोसिस्टम एक ही फ़ाइल में लॉग करते हैं, npm लाइनें [npm] उपसर्ग के साथ। उदाहरण:

root@kitploit:~
2026-03-27 12:01:15 [INFO] Fetching top 15,000 packages from hugovk dataset...
2026-03-27 12:01:16 [INFO] Watchlist loaded: 15,000 packages (dataset updated 2026-03-01 07:34:08)
2026-03-27 12:01:16 [INFO] Fetching top 15,000 npm packages from download-counts dataset...
2026-03-27 12:01:18 [INFO] npm watchlist loaded: 15,000 packages (download-counts 1.0.52)
2026-03-27 12:01:19 [INFO] [pypi] Starting serial: 35,542,068 (from last_serial.yaml) — polling every 300s
2026-03-27 12:01:19 [INFO] [npm] Starting seq: 42,817,503 (from last_serial.yaml) — polling every 300s
2026-03-27 12:06:18 [INFO] [pypi] 2 new watchlist releases detected (serial 35,542,068 -> 35,542,190)
2026-03-27 12:06:18 [INFO] [pypi] Processing fast-array-utils 1.4 (rank #8,231)...
2026-03-27 12:06:18 [INFO] [pypi] Diffing fast-array-utils 1.3 -> 1.4
2026-03-27 12:06:50 [INFO] [pypi] Analyzing diff for fast-array-utils...
2026-03-27 12:07:35 [INFO] [pypi] Verdict for fast-array-utils 1.4: BENIGN
2026-03-27 12:06:20 [INFO] [npm] 1 new watchlist releases detected (seq -> 42,817,612)
2026-03-27 12:06:20 [INFO] [npm] Processing axios 0.30.4 (rank #42)...
2026-03-27 12:06:21 [INFO] [npm] Diffing axios 0.30.3 -> 0.30.4
2026-03-27 12:07:01 [INFO] [npm] Analyzing diff for axios...
2026-03-27 12:07:45 [INFO] [npm] Verdict for axios 0.30.4: MALICIOUS

योगदान, समुदाय और लाइसेंस

यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है। तृतीय-पक्ष डेटा स्रोत और सूचनाएँ NOTICE.txt में संक्षेपित हैं।

योगदान आमंत्रित हैं — CONTRIBUTING.md देखें। यह रिपॉजिटरी Contributor Covenant का पालन करती है। सुरक्षा मुद्दों की रिपोर्ट सार्वजनिक मुद्दों के माध्यम से नहीं, बल्कि SECURITY.md के माध्यम से करें।

प्रश्न और चर्चा: Elastic समुदाय स्लैक।

टूल डाउनलोड करें