Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
fleet-cve-scanner — Ein quelloffener, einzelskriptbasierter CVE-Scanner für RMM-verwaltete Flotten. Reines PowerShell 7 – kombiniert Ihre RMM-Softwareinventur mit NVD, CISA KEV, EPSS und SSVC, um die Frage zu beantworten: Ist diese Version anfällig und wie dringend ist das Problem? | Kitploit
Tools/GitHubGitHub/boostedchaos/fleet-cve-scanner
SchwachstellenscannerSchwachstellenanalyseKonfigurationsprüfungBedrohungsanalyseIncident ResponseLog-Analyse
GitHubboostedchaos/fleet-cve-scanner

fleet-cve-scanner

Ein quelloffener, einzelskriptbasierter CVE-Scanner für RMM-verwaltete Flotten. Reines PowerShell 7 – kombiniert Ihre RMM-Softwareinventur mit NVD, CISA KEV, EPSS und SSVC, um die Frage zu beantworten: Ist diese Version anfällig und wie dringend ist das Problem?

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
121vor 1 MonatNoch nicht geprüft

fleet-cve-scanner

Ein Open-Source, Ein-Skript-CVE-Scanner für RMM-verwaltete Flotten. Reines PowerShell 7, keine Agents, keine Appliances, keine Lizenzgebühren.

Es beantwortet eine Frage für jede Software auf jedem von Ihnen verwalteten Endpunkt: ist die installierte Version bekanntermaßen verwundbar und wie dringend ist es? — indem es das Software-Inventar Ihres RMM mit kostenlosen, autoritativen Sicherheitsfeeds abgleicht:

  • NIST NVD — bekannte CVEs + betroffene Versionsbereiche
  • CISA KEV — aktiv in freier Wildbahn ausgenutzt (umgeht den Score-Schwellenwert)
  • EPSS — Wahrscheinlichkeit der Ausnutzung in den nächsten 30 Tagen
  • CISA SSVC — Act / Attend / Track-Priorisierungsentscheidungen
  • MSRC — Nachweis, dass ein Microsoft-Patch den Fund bereits abdeckt
  • endoflife.date — Software, die nie wieder gepatcht wird

Ausgaben: ein CSV-Bericht pro Gerät, eine SQLite-Historie mit SLA-Uhren und Woche-über-Woche-Änderungsereignissen, ein in sich geschlossenes HTML-Dashboard und ein optionaler Markdown-Expositionsbericht.

Status

v1.0.0. Die Engine wurde sauber aus einem Scanner portiert, der wöchentlich in Produktion gegen eine Windows-Flotte lief (siehe docs/HISTORY.md). Vor dieser Veröffentlichung wurden beide gegen dieselbe Live-Flotte ausgeführt und zeilenweise verglichen: über Zehntausende von Funden, bei denen beide eine identische (device, software, version) sahen, stimmte jedes berechnete Feld — Status, CVSS, Schweregrad, KEV-Flag, SSVC-Entscheidung, Fix-Version — exakt überein.

Dieser Vergleich deckt die Urteilslogik ab. Er hat die Historie/SLA-Ebene nicht getestet und ersetzt nicht die Validierung des Tools in Ihrer eigenen Umgebung. Lesen Sie docs/known-limitations.md, bevor Sie ihm vertrauen — es ist ehrlich geschrieben, nicht schmeichelhaft.

Schnellstart

Sie benötigen PowerShell 7 (pwsh). Zwei Möglichkeiten zur Ausführung:

A. Live-NinjaOne-Scan

root@kitploit:~
cp config.example.json config.json
# edit config.json: fill ninjaone.client_id / client_secret / base_url,
# set output.report_dir, and (recommended) nvd.api_key
pwsh -File fleet-cve-scan.ps1

B. Offline — beliebiges RMM, SCCM oder Intune (kein API-Zugriff)

Exportieren Sie Ihr Inventar in eine CSV-Datei mit den Spalten hostname, software, version (optional device_id, os), dann:

root@kitploit:~
cp config.example.json config.json   # only output.report_dir is needed here
pwsh -File fleet-cve-scan.ps1 -InputCsv inventory.csv

-InputCsv führt null NinjaOne-Aufrufe durch — kein OAuth, keine API. Es fragt weiterhin NVD und die anderen öffentlichen Feeds ab, daher benötigen Sie weiterhin einen nvd.api_key in config.json und ein gültiges output.report_dir. Siehe docs/rmm-adapters.md für den Eingabevertrag und RMM-spezifische Exportrezepte.

Voraussetzungen installieren

  • PowerShell 7 — macOS: brew install powershell; Windows: winget install Microsoft.PowerShell; Debian/Ubuntu: aus dem Microsoft-Paket-Repo installieren (packages.microsoft.com).
  • sqlite3 (optional, ermöglicht Historie/Trends) — macOS: vorinstalliert oder brew install sqlite; Debian/Ubuntu: apt-get install sqlite3; Windows: das SQLite „Tools“-Bundle von sqlite.org herunterladen und sqlite3.exe in den PATH oder neben das Skript legen. Ohne es läuft der Scan trotzdem; first_seen fällt auf das Ausführungsdatum zurück.

Anforderungen

  • PowerShell 7 (7.4+ empfohlen). Der parallele Scan erfordert 7.0+.
  • sqlite3 — optional; ermöglicht die Historie-Datenbank, Trends und SLA first_seen-Verfolgung. Fehlt es = diese Funktionen werden übersprungen, der Scan wird trotzdem abgeschlossen.
  • Netzwerk-Ausgang zu NVD, CISA (KEV), epss.empiricalsecurity.com (dem EPSS-Bulk-Score-Host — FIRST hat das EPSS-Daten-Hosting dorthin verlegt), MSRC, endoflife.date und GitHub raw (CVE-Programm cvelistV5) — plus die NinjaOne API im Live-Modus.
  • Anmeldeinformationen — Live-Modus benötigt NinjaOne OAuth2-Client-ID/Secret; Offline-Modus benötigt nur ein Inventar-CSV. Ein NVD-API-Schlüssel ist technisch optional, aber im Flottenmaßstab praktisch erforderlich: NVD erlaubt 50 Anfragen/30s mit einem Schlüssel und nur 5/30s ohne. Der Scanner erkennt, welchen Sie haben, und drosselt entsprechend, sodass eine schlüssellose Ausführung korrekt, aber etwa 10x langsamer ist — in Ordnung für eine Handvoll Produkte, unpraktisch für eine echte Flotte. Schlüssel sind kostenlos.

Konfigurationsreferenz

Die Konfiguration ist eine JSON-Datei (standardmäßig config.json neben dem Skript; Überschreibung mit -ConfigPath). Beginnen Sie mit config.example.json. Jeder Schlüssel, den der Scanner liest, sein Standardwert, wenn er weggelassen wird, und was er tut:

ninjaone (Live-Modus)

nvd

KeyStandardZweck
nvd.api_key""NVD-API-Schlüssel, als apiKey-Header gesendet. Leer läuft unauthentifiziert, was die Standardwerte für nvd_rate_limit und nvd_min_spacing_ms auf die anonyme Obergrenze von NVD (4/30s, 6500ms) anstatt auf die authentifizierte (48/30s, 700ms) setzt. Kostenlos und ~10x schneller.

Scan & Bewertung

Caching & Ratenbegrenzung

nvd_min_spacing_ms, nvd_rate_limit und parallel_throttle werden vom Scanner gelesen, sind aber nicht in config.example.json enthalten — fügen Sie sie nur hinzu, wenn Sie anpassen müssen. Siehe docs/rate-limiting.md.

Anreicherung & SLA

output

Ausgaben

Alles unten landet in output.report_dir.

  • vuln-report-YYYY-MM-DD.csv — der Bericht pro Fund. 28 Spalten (Schema unten).
  • vuln-history.db — SQLite-Historie (erfordert sqlite3): runs (Aggregate pro Durchlauf), findings (pro (device, software, cve) Historie offener Funde mit first_seen / last_seen / resolved_date / epss_score) und changes (getippte Woche-über-Woche-Ereignisse).
  • cve-dashboard.html — in sich geschlossenes HTML-Dashboard (Diagrammbibliothek eingebettet, keine externen Anfragen). Optional nach output.dashboard_share kopiert.

CSV-Schema (28 Spalten)

Der Spaltensatz ist fest und durch eine Gate-Prüfung erzwungen. In Reihenfolge:

Zeitplanung

Run-WeeklyScan.ps1 ist ein Wrapper für geplante Ausführungen: Es führt den Scanner aus seinem eigenen Verzeichnis aus, erfasst alle Ausgabeströme in einem datierten Log unter <script dir>/logs/ (überschreibbar mit -LogDir) und gibt den Exit-Code des Scanners weiter, sodass der Scheduler Fehler sieht.

Windows Task Scheduler:

root@kitploit:~
schtasks /Create /TN "CVE-Scan-Weekly" ^
  /TR "pwsh -NoProfile -File C:\path\to\Run-WeeklyScan.ps1" ^
  /SC WEEKLY /D SUN /ST 22:00 /RU SYSTEM

cron (Linux/macOS):

root@kitploit:~
0 22 * * 0  pwsh -File /path/to/Run-WeeklyScan.ps1

Dashboard-Hosting

cve-dashboard.html ist vollständig in sich geschlossen — öffnen Sie es direkt, legen Sie es auf einem beliebigen statischen Host oder einer Dateifreigabe ab, oder kopieren Sie es automatisch bei jedem Durchlauf über output.dashboard_share. Für zugriffsgeschütztes Hosting enthält das dashboard-auth/-Verzeichnis einen minimalen ASP.NET-Host mit Microsoft Entra (Azure AD)-Authentifizierung; siehe dessen README und RUNBOOK.

Ehrliche Einschränkungen (lesen Sie es, bevor Sie ihm vertrauen)

  • CPE-Abgleich ist von Natur aus unscharf. 40–60% des typischen Inventars hat überhaupt keinen NVD-Eintrag und wird übersprungen (protokolliert, nie stillschweigend). Die namensbasierte CPE-Auswahl kann das falsche Produkt wählen; ein Unterdrückungsworkflow existiert, weil er notwendig ist. Dies ist die Obergrenze des freien NVD-Ansatzes — ein bezahlter Scanner mit einem kuratierten Erkennungskatalog wird genauer sein. Der Wert dieses Tools liegt darin, kostenlos, transparent und überprüfbar zu sein.
  • UNKNOWN ist ein erstklassiges Urteil. Wenn der Scanner nicht beweisen kann, verwundbar oder gepatcht zu sein, sagt er das, anstatt zu raten.
  • Nur gegen NinjaOne verifiziert. Die Scan-Engine ist RMM-agnostisch (Eingabe ist nur Gerät + Software + Version); der -InputCsv-Modus erlaubt jedem RMM/SCCM/Intune-Export, sie zu füttern, aber nur der NinjaOne-Adapter wurde in Produktion eingesetzt.

Die vollständige, ungeschönte Liste — die CPE-Überspringungsrate, Dedup-Key-Masking, Seite-1-totalResults, MSRC-Supersedence-Lücken und mehr — finden Sie in docs/known-limitations.md.

Designhinweise

Einige strukturelle Entscheidungen, die unkonventionell aussehen, sind bewusst:

  • Einzelne Datei, kein Modul. Der heiße Scan-Pfad läuft innerhalb von ForEach-Object -Parallel, und diese Runspaces können keine Funktionen im äußeren Gültigkeitsbereich sehen — weshalb einige Hilfsfunktionen absichtlich innerhalb des parallelen Blocks dupliziert sind. Ein Aufbau mit einer Funktion pro Datei würde diese Duplizierung nicht beseitigen (der parallele Körper müsste den Quellcode trotzdem pro Runspace injiziert bekommen); es würde nur einen Build-Schritt hinzufügen und das Ein-Datei-Bereitstellungsmodell brechen. Falls das Projekt jemals über eine einzelne Datei hinauswächst, ist die Paketierung die v2-förmige Änderung, kein Patch.
  • [PSCustomObject]-Datensätze, keine Klassen. Funddatensätze werden innerhalb paralleler Runspaces erstellt und zurück zum Haupt-Runspace gemarshallt. PowerShell-Klasseninstanzen überleben diese Grenze nicht zuverlässig; [PSCustomObject] schon, und der CSV-Spaltenvertrag wird durch das Release-Gate anstelle eines Typsystems durchgesetzt.
  • Einfache PS7-Testskripte, nicht Pester. Die Testreihen in tests/ sind abhängigkeitsfreie Skripte mit Exit-Code-Überprüfungen, die überall dort ausgeführt werden können, wo pwsh existiert — einschließlich des Scan-Servers — ohne etwas zu installieren. CI führt sie alle auf Windows und Ubuntu aus.

Dokumentation

  • docs/how-it-works.md — die Scan-Pipeline Schritt für Schritt, Urteilslogik, Cache-Disziplin und der Fail-Soft-Vertrag.
  • docs/known-limitations.md — jede bekannte Art, wie der Scanner falsch liegen kann, und warum.
  • docs/rate-limiting.md — die NVD-Ratenbegrenzungslektionen als Bedienerleitfaden und Abstimmungstabelle.
  • docs/rmm-adapters.md — der Eingabevertrag, die beiden eingebauten Inventarpfade und wie man einen nativen Adapter hinzufügt.
  • docs/HISTORY.md — komprimierte, bereinigte Versionshistorie und die technischen Lektionen hinter jeder Veröffentlichung.

Mitwirken

PRs willkommen — vor allem RMM-Adapter. Siehe CONTRIBUTING.md für die Grundregeln und die Anforderung der sicheren Richtung (Statuslogik darf nur in Richtung mehr Sichtbarkeit irren, niemals stillschweigend in Richtung PATCHED).

Datenquellen & Quellenangabe

Dieses Tool ist nur so nützlich wie die kostenlosen, autoritativen Feeds, gegen die es abgleicht. Jeder der folgenden wird zur Scan-Zeit abgefragt; bitte respektieren Sie deren Bedingungen, wenn Sie darauf aufbauen.

  • NIST National Vulnerability Database (NVD) — CVE-Datensätze und betroffene Versionsbereiche über die NVD-API. Dieses Produkt verwendet die NVD-API, wird aber nicht von der NVD unterstützt oder zertifiziert. https://nvd.nist.gov/
  • CISA Known Exploited Vulnerabilities (KEV) Catalog — die maßgebliche Liste von CVEs, die bekanntermaßen in freier Wildbahn ausgenutzt wurden. https://www.cisa.gov/known-exploited-vulnerabilities-catalog
  • CVE Program — cvelistV5 — CVE-Datensätze plus die SSVC/Vulnrichment-Daten, die vom CISA ADP beigesteuert wurden. CVE® ist eine eingetragene Marke der MITRE Corporation. https://github.com/CVEProject/cvelistV5
  • SSVC (Stakeholder-Specific Vulnerability Categorization) — die Act/Attend/Track-Entscheidungslogik in diesem Tool basiert auf CERT/CC SSVC (Carnegie Mellon University Software Engineering Institute) und dem CISA SSVC Coordinator-Entscheidungsbaum, Version 2.0.3. Eine Anerkennung von CERT/CC und CISA ist erforderlich. https://www.cisa.gov/ssvc · https://github.com/CERTCC/SSVC
  • FIRST.org EPSS (Exploit Prediction Scoring System) — Wahrscheinlichkeit der Ausnutzung in den nächsten 30 Tagen. EPSS-Daten werden von FIRST bereitgestellt. Siehe Jay Jacobs, Sasha Romanosky, Benjamin Edwards, Michael Roytman, Idris Adjerid (2021), Exploit Prediction Scoring System, Digital Threats: Research and Practice, 2(3). https://www.first.org/epss/
  • Microsoft Security Response Center (MSRC) — die CVRF-API, die verwendet wird, um zu bestätigen, ob ein Microsoft-Sicherheitsupdate einen Fund bereits abdeckt. © Microsoft Corporation. https://api.msrc.microsoft.com/ · https://msrc.microsoft.com/
  • endoflife.date — End-of-Life- und End-of-Support-Daten für Software, die nie wieder gepatcht wird. Daten mit freundlicher Genehmigung des endoflife.date-Projekts. https://endoflife.date/

Lizenz

Apache-2.0 — siehe LICENSE.

Tool herunterladen
KeyStandardZweck
ninjaone.client_id""NinjaOne API OAuth2-Client-ID. Erforderlich für Live-Scans; für -InputCsv leer lassen.
ninjaone.client_secret""NinjaOne API OAuth2-Client-Geheimnis.
ninjaone.base_url— (Beispiel liefert https://app.ninjarmm.com)NinjaOne API Basis-URL; erforderlich für Live-Scans, kein eingebauter Fallback. Verwenden Sie den Host Ihrer Region (z.B. eu.ninjarmm.com, oc.ninjarmm.com).
KeyStandardZweck
cvss_threshold7.0Minimaler CVSS-Basiswert, damit ein bewertetes CVE als VULNERABLE gemeldet wird. KEV-gelistete CVEs umgehen diese Untergrenze.
ssvc_mission_prevalencehighSSVC Mission Prevalence Stakeholder-Eingabe (low / medium / high).
ssvc_public_wellbeinghighSSVC Public Well-being Stakeholder-Eingabe (low / medium / high).
KeyStandardZweck
nvd_cache_ttl_days7Tage, die ein NVD-Ergebnis (pro Softwarename) zwischengespeichert bleibt, bevor es erneut abgefragt wird.
nvd_cache_flush_every500NVD-Cache nach jeweils N abgeschlossenen Elementen auf die Festplatte sichern, damit ein abgebrochener Scan seine Abrufe behält. 0 deaktiviert (Ende-des-Scans-Speicherung läuft trotzdem).
nvd_min_spacing_ms700 mit API-Schlüssel, 6500 ohneMindestmillisekunden zwischen NVD-Aufrufen. Die bindende Ratenbeschränkung — zuerst anpassen.
nvd_rate_limit48 mit API-Schlüssel, 4 ohneGleitfenster-Obergrenze für NVD-Aufrufe pro 30s (Absicherung). Mindestens 1.
parallel_throttle20ForEach-Object -Parallel Runspace-Anzahl. NVD-Aufrufe werden trotzdem serialisiert; dies begrenzt nur die Cache-Treffer-Parallelität. Mindestens 1.
kev_cache_ttl_hours24TTL für den zwischengespeicherten CISA KEV-Katalog.
epss_cache_ttl_hours24TTL für die zwischengespeicherte FIRST.org EPSS-Score-Datei.
eol_cache_ttl_days7TTL für zwischengespeicherte endoflife.date-Abfragen.
msrc_cache_ttl_days30TTL für zwischengespeicherte MSRC CVRF-Daten.
cvelist_cache_ttl_days7TTL für zwischengespeicherte CVE-Programm (cvelistV5) / CISA-ADP SSVC-Daten.
cvelist_fetch_budget300Maximale CVE-Datensatzabrufe pro Durchlauf für SSVC/Vulnrichment-Anreicherung; der Rest wird auf den nächsten Durchlauf verschoben.
KeyStandardZweck
epss_spike_threshold0.10Mindestanstieg des EPSS-Scores eines Fundes zwischen Scans, um ein EPSS_SPIKE-Änderungsereignis auszulösen.
sla_days_critical14SLA-Fenster (Tage ab first_seen) für KRITISCHE Funde.
sla_days_high30SLA-Fenster für andere bewertete Schweregrade.
denied_software_csv""Pfad zu einem optionalen CSV-Abgleich für verbotene Software. Leer deaktiviert die Prüfung.
KeyStandardZweck
output.report_dir(erforderlich)Verzeichnis für alle Ausgaben — CSV, Historie-DB, Dashboard und Caches.
output.wiki_security_page""Optionaler Pfad zu einer Markdown-Expositionsseite. Nur geschrieben, wenn gesetzt.
output.dashboard_share""Optionaler Pfad/Freigabe, der bei jedem Durchlauf eine Kopie des Dashboards erhält. Leer = nur lokal.
  • eol-report-YYYY-MM-DD.csv — geschrieben, wenn Familien am Ende ihrer Lebensdauer erkannt werden.
  • denied-report-YYYY-MM-DD.csv — geschrieben, wenn denied_software_csv konfiguriert ist und zutrifft.
  • Cache-Dateien — nvd-cache.json, kev-cache.json, epss-cache.json, eol-cache.json, msrc-cache.json, cvelist-cache.json (alle gitignoriert).
  • Markdown-Expositionsseite — unter output.wiki_security_page, nur wenn gesetzt.
  • #SpalteBedeutung
    1device_idRMM-Geräte-ID (oder eine deterministische synthetische ID im -InputCsv-Modus).
    2hostnameGeräte-Hostname.
    3osBetriebssystemzeichenfolge (kann leer sein).
    4softwareProduktname wie inventarisiert.
    5installed_versionVersionszeichenfolge wie inventarisiert.
    6cve_idCVE-Bezeichner.
    7cvss_scoreCVSS-Basiswert (0 wenn keiner).
    8severityCVSS-Schweregradbezeichnung.
    9cvss_versionWelcher CVSS-Standard den Wert erzeugt hat (4.0/3.1/3.0/2.0/leer).
    10epss_scoreFIRST.org EPSS-Wahrscheinlichkeit (leer, wenn das CVE nicht im Katalog ist).
    11epss_percentileEPSS-Perzentil (leer, wenn nicht vorhanden).
    12ssvc_exploitationRohe CISA SSVC-Ausnutzungsoption (none/poc/active; leer ohne ADP-Daten).
    13ssvc_decisionSSVC-Entscheidung Act/Attend/Track (leer ohne ADP-Daten).
    14statusVULNERABLE / PATCHED / UNKNOWN.
    15published_dateCVE-Veröffentlichungsdatum.
    16unknown_reasonWarum eine Zeile UNKNOWN ist (SUSPECT_VERSION / NO_VERSION_BOUND / VERSION_PARSE_ERROR; sonst leer).
    17is_kevTrue, wenn das CVE im CISA KEV-Katalog ist.
    18kev_due_dateCISA KEV-Frist für Behebung.
    19kev_ransomware_useKEV-Flag für Ransomware-Kampagnennutzung.
    20fix_versionBerechnete Fix-Grenzversion.
    21fix_boundary_inclusiveOb die Fix-Grenze inklusiv ist.
    22advisory_urlVendor-Advisory oder NVD-Detail-URL.
    23patch_evidenceNachweis, wenn ein Microsoft-UNKNOWN auf PATCHED geändert wurde.
    24triage_statusTriage-Disposition aus triage.json (leer, wenn keine).
    25triage_noteTriage-Notiz.
    26first_seenDatum, an dem der Fund erstmals beobachtet wurde (aus der Historie-DB).
    27sla_dueSLA-Fälligkeitsdatum.
    28sla_breachOb die SLA verletzt ist.