
अपनी जांच को क्लाउड की शक्ति से बढ़ाएं

ReconSwarm एक मॉड्यूलर टोही स्वचालन ढाँचा है जिसे वितरित सुरक्षा परीक्षण के लिए डिज़ाइन किया गया है। यह क्लाउड बुनियादी ढाँचा प्रदान करता है, समानांतर टोही पाइपलाइनों को निष्पादित करता है, और न्यूनतम कॉन्फ़िगरेशन ओवरहेड के साथ परिणाम संग्रह करता है।
ReconSwarm बग बाउंटी शिकारियों, प्रवेश परीक्षकों, DevSecOps इंजीनियरों और सुरक्षा शोधकर्ताओं के लिए उपयुक्त है, जिन्हें मैन्युअल बुनियादी ढाँचा प्रबंधन के बिना स्केलेबल, स्वचालित टोही वर्कफ़्लो की आवश्यकता है।

ReconSwarm क्लाउड प्रावधान, रिमोट सिस्टम नियंत्रण, पाइपलाइन निष्पादन और कॉन्फ़िगरेशन प्रबंधन के बीच स्पष्ट अलगाव के साथ एक मॉड्यूलर आर्किटेक्चर का अनुसरण करता है।
ReconSwarm क्लाउड प्रावधानकर्ताओं के लिए विभेदित यूनियन पैटर्न का उपयोग करता है। provisioner.type फ़ील्ड यह निर्धारित करता है कि कौन सा प्रदाता कॉन्फ़िगरेशन सक्रिय है:
provisioner:
type: yandex_cloud # Discriminator field
yandex_cloud: # Active when type: yandex_cloud
iam_token: "${YC_TOKEN}"
# key_path: "./sa_auth_key.json"
folder_id: "${YC_FOLDER_ID}"
# ... provider-specific settings
अतिरिक्त क्लाउड प्रदाताओं को Provisioner इंटरफ़ेस को लागू करके और फ़ैक्टरी में एक नया प्रकार जोड़कर एकीकृत किया जा सकता है।
चरण एक्स्टेंसिबल घटक हैं जो कार्यकर्ता VMs पर संचालन निष्पादित करते हैं:
सभी चरण फ़ील्ड टेम्पलेट रेंडरिंग का समर्थन करते हैं। कार्यक्षमता बढ़ाने के लिए नए चरण प्रकार जोड़े जा सकते हैं।
ReconSwarm सर्वर पूरी तरह से स्टेटलेस है — सभी स्थिति etcd में बनी रहती है:
यह आर्किटेक्चर सक्षम करता है:
| क्षमता | विवरण |
|---|---|
| क्षैतिज स्केलिंग | लोड बैलेंसर के पीछे कई सर्वर इंस्टेंस चलाएँ |
| शून्य-डाउनटाइम पुनरारंभ | पाइपलाइन स्थिति खोए बिना सर्वर को पुनरारंभ करें |
| क्रैश पुनर्प्राप्ति | नया सर्वर इंस्टेंस वहाँ से शुरू होता है जहाँ पिछला छूट गया था |
| स्थिति निरीक्षण | डिबगिंग और निगरानी के लिए सीधे etcd से क्वेरी करें |
उच्च उपलब्धता सेटअप:
┌─────────────┐
│ Client │
└──────┬──────┘
│
┌──────▼──────┐
│Load Balancer│
└──────┬──────┘
┌────────────┼────────────┐
│ │ │
┌──────▼──────┐ ┌───▼───┐ ┌──────▼──────┐
│ Server 1 │ │Server2│ │ Server 3 │
└──────┬──────┘ └───┬───┘ └──────┬──────┘
│ │ │
└────────────┼────────────┘
│
┌──────▼──────┐
│ etcd cluster│
└─────────────┘
सभी सर्वर एक ही etcd क्लस्टर साझा करते हैं और किसी भी अनुरोध को संभाल सकते हैं। यदि कोई सर्वर पाइपलाइन के बीच में क्रैश हो जाता है, तो दूसरा सर्वर etcd से स्थिति पढ़ने के बाद निष्पादन जारी रख सकता है।
नोट: वर्तमान कार्यान्वयन etcd से लोड करने के बाद पाइपलाइनों को मेमोरी में निष्पादित करता है। पाइपलाइन पुनरारंभ के साथ पूर्ण क्रैश पुनर्प्राप्ति भविष्य के रिलीज़ के लिए योजनाबद्ध है।
git clone <repository>
cd reconswarm
go mod download
task build
ReconSwarm सर्वर कॉन्फ़िगरेशन को पाइपलाइन कॉन्फ़िगरेशन से अलग करता है:
| कॉन्फ़िग प्रकार | फ़ाइल | विवरण |
|---|---|---|
| सर्वर | reconswarm.yaml | क्लाउड प्रदाता, etcd, कार्यकर्ता पूल सेटिंग्स |
| पाइपलाइन | अलग YAML फ़ाइल | लक्ष्य और चरण, -f फ़्लैग के माध्यम से पारित |
सर्वर कॉन्फ़िगरेशन reconswarm.yaml ( CONFIG_PATH पर्यावरण चर के माध्यम से कॉन्फ़िगर करने योग्य) में संग्रहीत है। सभी स्ट्रिंग मान ${VAR} या $VAR सिंटैक्स का उपयोग करके पर्यावरण चर विस्तार का समर्थन करते हैं।
# Server settings
server:
port: 50051
# Etcd connection for state management
etcd:
endpoints:
- "localhost:2379"
dial_timeout: 5 # seconds
username: "" # optional, supports ${ETCD_USER}
password: "" # optional, supports ${ETCD_PASSWORD}
# Cloud provisioner (discriminated union)
provisioner:
type: yandex_cloud # Provider selector
# Yandex Cloud configuration (active when type: yandex_cloud)
yandex_cloud:
iam_token: "${YC_TOKEN}"
# key_path: "./sa_auth_key.json"
folder_id: "${YC_FOLDER_ID}"
default_zone: "ru-central1-b"
default_image: "fd8b1cmhmncn7lt4tqn4"
default_username: "root"
default_cores: 2
default_memory: 2 # GB
default_disk_size: 20 # GB
# Worker pool settings
workers:
max_workers: 5
setup_commands:
- "apt update"
- "apt install -y docker.io"
पाइपलाइन कॉन्फ़िगरेशन एक अलग YAML फ़ाइल में संग्रहीत है और -f फ़्लैग के माध्यम से पारित किया जाता है। दोनों लिपटे और अनलिपटे प्रारूप समर्थित हैं:
लिपटा प्रारूप (अनुशंसित):
# pipeline.yaml
pipeline:
targets:
- value: "example.com"
type: crtsh
- value: ["sub1.example.com", "sub2.example.com"]
type: list
stages:
- name: "Run scanner"
type: exec
steps:
- "nmap -sC -sV -iL {{.Targets.filepath}} -oN /opt/recon/scan.txt"
- name: "Collect results"
type: sync
src: "/opt/recon/scan.txt"
dest: "./results/{{.Worker.Name}}.txt"
अनलिपटा प्रारूप (समर्थित भी):
# pipeline.yaml
targets:
- value: "example.com"
type: crtsh
stages:
- name: "Run scanner"
type: exec
steps:
- "nmap -iL {{.Targets.filepath}} -oN /opt/recon/scan.txt"
कॉन्फ़िगरेशन मान दो प्रारूपों में पर्यावरण चर प्रतिस्थापन का समर्थन करते हैं:
${VAR} — कोष्ठक में पूर्ण चर नाम$VAR — सरल चर नामयदि कोई पर्यावरण चर सेट नहीं है, तो शाब्दिक स्ट्रिंग ( ${VAR} या $VAR सहित) का उपयोग किया जाएगा।
Yandex Cloud एकीकरण के लिए, प्रदान की गई सेटअप स्क्रिप्ट का उपयोग करें: