
أداة سريعة وقابلة للتخصيص لاكتشاف الخدمات، مدعومة بنظام بصمات مرن. تساعدك في تحديد الخدمات وواجهات برمجة التطبيقات (APIs) وتكوينات الشبكة عبر بنيتك التحتية.
أداة سريعة وقابلة للتخصيص للكشف عن الخدمات، تعمل بنظام بصمات مرن. تساعدك في تحديد الخدمات وواجهات برمجة التطبيقات (API) وتكوينات الشبكة عبر بنيتك التحتية.
قم بتنزيل أحدث إصدار من الإصدارات
# مسح IP واحد
zscan -target 192.168.1.1
# مسح نطاق CIDR
zscan -target 192.168.1.0/24
# مسح أهداف متعددة (مفصولة بـ ; أو ,)
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"
# مسح منافذ محددة
zscan -target 192.168.1.1 -port 80,443,8080
# حفظ النتائج في ملف JSON
zscan -target 192.168.1.1 -output results.json
# إرسال النتائج إلى خادم بعيد
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)
}
قم بتشغيل docker build -t zscan . لبناء الصورة.
قم بتشغيل docker run zscan --target 127.0.0.1 --config /app/config/config.yaml لبدء حاوية.
يدعم ZScan تطوير POC مخصص بصيغة YAML. للحصول على معلومات مفصلة حول كتابة POC، يرجى الرجوع إلى دليل كتابة POC.
مثال على 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:')"
لمزيد من الأمثلة والتفاصيل حول الصيغة، راجع دليل كتابة POC.
الماسحات التقليدية للأصول أو الثغرات الأمنية بُنيت منذ عقود. هي مغلقة المصدر، بطيئة بشكل لا يصدق، وموجهة من قبل البائعين. اليوم، يقوم المهاجمون باستغلال CVEs الصادرة حديثًا بشكل جماعي عبر الإنترنت في غضون أيام، على عكس السنوات التي كانت تستغرقها سابقًا. يتطلب هذا التحول نهجًا مختلفًا تمامًا لمواجهة عمليات الاستغلال الشائعة على الإنترنت.
لقد بنينا ZScan لحل هذا التحدي. جعلنا إطار محرك المسح بالكامل مفتوحًا وقابلاً للتخصيص - مما يسمح لمجتمع الأمن العالمي بالتعاون لمواجهة ناقلات الهجوم والثغرات الشائعة على الإنترنت. يُستخدم ZScan الآن ويساهم فيه العديد من المؤسسات والجهات الحكومية والجامعات.
يمكنك المشاركة من خلال المساهمة في الكود الخاص بنا، أو مكتبة القوالب، أو الانضمام إلى فريقنا.
شكرًا لجميع المساهمين الرائعين من المجتمع على إرسال طلبات السحب (PRs) والحفاظ على هذا المشروع محدثًا. ❤️
ZScan موزع بموجب رخصة MIT.
| الخيار | الوصف |
|---|
-target | عنوان IP أو نطاق CIDR (يدعم الفواصل ; أو ,) |
-port | منافذ مخصصة للمسح (مفصولة بفواصل) |
-config | مسار ملف التكوين (الافتراضي: config/config.yaml) |
-geo | تفعيل تحديد الموقع الجغرافي والبحث عن معلومات IP |
-output | صيغة الإخراج: json أو html أو md |
-report | عنوان URL لإرسال نتائج المسح |
-apikey | مفتاح API لمصادقة التقرير (رمز Bearer) |
-version | عرض معلومات الإصدار |