
Ein schnelles, anpassbares Dienst-Erkennungstool, das von einem flexiblen Fingerprint-System angetrieben wird. Es hilft Ihnen, Dienste, APIs und Netzwerkkonfigurationen in Ihrer Infrastruktur zu identifizieren.
Ein schnelles, anpassbares Dienst-Erkennungstool, das von einem flexiblen Fingerabdrucksystem unterstützt wird. Es hilft Ihnen, Dienste, APIs und Netzwerkkonfigurationen in Ihrer Infrastruktur zu identifizieren.
Laden Sie die neueste Version von den Releases herunter
# Einzelne IP scannen
zscan -target 192.168.1.1
# CIDR-Bereich scannen
zscan -target 192.168.1.0/24
# Mehrere Ziele scannen (getrennt durch ; oder ,)
zscan -target "192.168.1.0/24;10.0.0.0/24"
zscan -target "192.168.1.1,192.168.1.2,192.168.1.3"
# Bestimmte Ports scannen
zscan -target 192.168.1.1 -port 80,443,8080
# Ergebnisse in JSON-Datei speichern
zscan -target 192.168.1.1 -output results.json
# Ergebnisse an entfernten Server melden
zscan -target 192.168.1.0/24 -report http://server/api/assets
package main
import (
"flag"
"log"
"os"
"time"
"github.com/zcyberseclab/zscan/pkg/stage"
)
func main() {
target := flag.String("target", "", "IP address or CIDR range to scan")
configPath := flag.String("config", "config/config.yaml", "Path to config file")
templatesDir := flag.String("templates-dir", "templates", "Path to templates directory")
enableGeo := flag.Bool("geo", false, "Enable geolocation and IP info lookup")
enableCensys := flag.Bool("censys", false, "Enable Censys data enrichment")
censysAPIKey := flag.String("censys-api-key", "", "Censys API Key")
censysSecret := flag.String("censys-secret", "", "Censys API Secret")
flag.Parse()
if *target == "" {
log.Fatal("Target IP or CIDR range is required")
}
// Handle Censys credentials from environment if not provided
if *enableCensys {
if *censysAPIKey == "" || *censysSecret == "" {
*censysAPIKey = os.Getenv("CENSYS_API_KEY")
*censysSecret = os.Getenv("CENSYS_SECRET")
}
if *censysAPIKey == "" || *censysSecret == "" {
log.Printf("Warning: Censys integration enabled but credentials not provided. Skipping Censys data enrichment.")
*enableCensys = false
}
}
// Create scanner
scanner, err := stage.NewScanner(*configPath, *templatesDir, *enableGeo, *enableCensys, *censysAPIKey, *censysSecret)
if err != nil {
log.Fatalf("Failed to create scanner: %v", err)
}
defer scanner.Close()
// Perform scan
startTime := time.Now()
results, err := scanner.Scan(*target)
if err != nil {
log.Fatalf("Scan failed: %v", err)
}
// Print results
if err := stage.PrintResults(results); err != nil {
log.Printf("Error printing results: %v", err)
}
duration := time.Since(startTime)
log.Printf("\nScan completed in: %v\n", duration)
}
Führen Sie docker build -t zscan . aus, um das Image zu erstellen.
Führen Sie docker run zscan --target 127.0.0.1 --config /app/config/config.yaml aus, um einen Container zu starten.
ZScan unterstützt die Entwicklung benutzerdefinierter POCs im YAML-Format. Ausführliche Informationen zum Schreiben von POCs finden Sie in unserem POC-Schreib-Leitfaden.
Beispiel-POC:
type: Path Traversal
cve-id: CVE-2021-41773
severity: critical
rules:
- method: GET
path: /icons/.%2e/%2e%2e/etc/passwd
expression: "response.status==200 && response.body.bcontains(b'root:')"
Weitere Beispiele und die detaillierte Syntax finden Sie in unserem POC-Schreib-Leitfaden.
Herkömmliche Asset- oder Schwachstellenscanner wurden vor Jahrzehnten entwickelt. Sie sind Closed-Source, unglaublich langsam und herstellerabhängig. Heutige Angreifer nutzen neu veröffentlichte CVEs innerhalb von Tagen massenhaft im Internet aus, im Gegensatz zu den Jahren, die es früher dauerte. Diese Verschiebung erfordert einen völlig anderen Ansatz zur Bekämpfung aktueller Exploits im Internet.
Wir haben ZScan entwickelt, um diese Herausforderung zu lösen. Wir haben das gesamte Scanning-Engine-Framework offen und anpassbar gemacht – damit die globale Sicherheits-Community zusammenarbeiten und die aktuellen Angriffsvektoren und Schwachstellen im Internet bekämpfen kann. ZScan wird jetzt von vielen Unternehmen, Behörden und Universitäten genutzt und weiterentwickelt.
Sie können teilnehmen, indem Sie zu unserem Code, unserer Vorlagenbibliothek beitragen oder unserem Team beitreten.
Vielen Dank an alle großartigen Community-Mitwirkenden, die PRs senden und dieses Projekt auf dem neuesten Stand halten. ❤️
ZScan wird unter der MIT-Lizenz vertrieben.
| Option | Beschreibung |
|---|
-target | IP-Adresse oder CIDR-Bereich (unterstützt ; oder , als Trennzeichen) |
-port | Benutzerdefinierte zu scannende Ports (kommagetrennt) |
-config | Pfad zur Konfigurationsdatei (Standard: config/config.yaml) |
-geo | Geolokalisierung und IP-Info-Suche aktivieren |
-output | Ausgabeformat: json, html oder md |
-report | URL, an die Scanergebnisse gemeldet werden |
-apikey | API-Schlüssel für die Berichtauthentifizierung (Bearer-Token) |
-version | Versionsinformationen anzeigen |