
नेटवर्क मॉनिटरिंग टूल जो प्रक्रिया-से-नेटवर्क कनेक्शनों का मानचित्रण करता है, क्लाउड प्रदाताओं की पहचान करता है, और बीकनिंग गतिविधि का पता लगाता है।
नेटवर्क मॉनिटरिंग टूल जो प्रोसेस-से-नेटवर्क कनेक्शन का मानचित्रण करता है, क्लाउड प्रदाताओं की पहचान करता है, और फ़ायरवॉल नियम उत्पन्न करता है। संग्रह के लिए हल्का एजेंट, एकत्रीकरण के लिए सर्वर, विश्लेषण के लिए पार्सर।
क्रॉस-मशीन अवलोकन — OS संस्करण तुलना, साझा IP पहचान, सभी होस्टों में बीकनिंग उम्मीदवार:

प्रति-होस्ट विवरण — गंभीर अलर्ट (EOL OS, अज्ञात IP पर nc.exe बीकनिंग):

प्रति-होस्ट विवरण — चेतावनी (बीकन उम्मीदवार फ़्लैग किया गया):

प्रति-होस्ट विवरण — स्वच्छ (कोई विसंगति नहीं):

cargo build --release
# Simple collection
cargo run --release -- collect --duration-seconds 300
# With DNS lookups
cargo run --release -- collect --duration-seconds 300 --enable-dns
# With compression and encryption
cargo run --release -- collect \
--duration-seconds 300 \
--compress \
--encrypt-key "your-secret-password"
# Generate all reports
cargo run --release -- parse \
--input connections.jsonl \
--process-summary processes.json \
--cloud-analysis cloud.json \
--firewall-rules-iptables firewall.sh \
--database-export network.sql
# Offline ownership lookup with local ASN DB (no network calls)
cargo run --release -- parse \
--input connections.jsonl \
--cloud-analysis cloud.json \
--asn-db ip2asn-v4.tsv
# Live ARIN lookup with persistent cache (re-run skips already-queried IPs)
cargo run --release -- parse \
--input connections.jsonl \
--cloud-analysis cloud.json \
--arin-lookup \
--arin-cache arin_cache.json
# Quick 5-minute analysis
cargo run --release -- monitor \
--duration-seconds 300 \
--output-dir ./analysis \
--full-analysis
agent बाइनरी एक न्यूनतम, ज़ीरो-फ़्लैग डिप्लॉयमेंट लक्ष्य है। सभी कॉन्फ़िगरेशन एनवायरनमेंट वेरिएबल्स के माध्यम से संकलन समय पर बाइनरी में बेक किया जाता है — इसे लक्ष्य पर ड्रॉप करें और बिना किसी तर्क के चलाएँ।
AGENT_SERVER="http://10.0.1.5:8080/upload" \
AGENT_KEY="labkey123" \
AGENT_INTERVAL="5" \
AGENT_BATCH="200" \
AGENT_DURATION="0" \
AGENT_DNS="false" \
AGENT_ENCRYPT_KEY="mysecretpassword" \
cargo build --release --bin agent
target/release/agent पर परिणामी बाइनरी में कोई बाहरी निर्भरता नहीं होती और किसी फ़्लैग की आवश्यकता नहीं होती:
./agent
| वेरिएबल | डिफ़ॉल्ट | विवरण |
|---|---|---|
AGENT_SERVER | http://localhost:8080/upload | अपलोड एंडपॉइंट URL |
AGENT_KEY | (कोई नहीं) | X-API-Key हेडर मान |
AGENT_INTERVAL | 5 | सॉकेट पोल अंतराल (सेकंड में) |
AGENT_BATCH | 200 | प्रति अपलोड बैच रिकॉर्ड |
AGENT_DURATION | 0 | रन अवधि सेकंड में (0 = हमेशा चलाएँ) |
AGENT_DNS | false | IP को होस्टनाम में हल करें |
AGENT_ESTABLISHED | true | केवल ESTABLISHED कनेक्शन |
AGENT_LOCAL_COPY | false | अपलोड के साथ स्थानीय .jsonl प्रति रखें |
AGENT_COMPRESS | false | अपलोड से पहले Gzip संपीड़ित करें |
AGENT_ENCRYPT_KEY | (कोई नहीं) | AES-256-GCM पेलोड एन्क्रिप्ट करें (पासवर्ड या 64-अक्षर हेक्स कुंजी) |
AGENT_UA | (reqwest डिफ़ॉल्ट) | HTTP User-Agent हेडर |
AGENT_SERVER="https://collector.internal/upload" \
AGENT_KEY="prod-api-key" \
AGENT_DURATION="0" \
AGENT_INTERVAL="30" \
AGENT_COMPRESS="true" \
AGENT_ENCRYPT_KEY="$(cat /etc/gibson/key)" \
cargo build --release --bin agent
cargo run --release -- collect \
--duration-seconds 3600 \
--interval-seconds 10 \
--compress \
--encrypt-key "your-32-char-hex-key-or-password" \
--upload-url "https://your-server.com/api/upload" \
--api-key "your-api-key" \
--batch-size 50 \
--delete-after-upload
cargo run --release -- collect \
--duration-seconds 86400 \
--interval-seconds 30 \
--output connections_daily.jsonl \
--enable-dns \
--compress
पार्सर अमेलित IP के स्वामी की पहचान करने के लिए दो परस्पर अनन्य मार्गों का समर्थन करता है:
| विधि | फ़्लैग | गति | नेटवर्क | सबसे उपयुक्त |
|---|---|---|---|---|
| स्थानीय ASN DB | --asn-db | तत्काल | कोई नहीं | बार-बार विश्लेषण, एयर-गैप्ड वातावरण |
| लाइव ARIN RDAP | --arin-lookup | धीमा (प्रति-IP) | हाँ | एकमुश्त लुकअप, कोई स्थानीय DB उपलब्ध नहीं |
ip2asn डेटाबेस डाउनलोड करें (साप्ताहिक रीफ़्रेश):
curl -O https://iptoasn.com/data/ip2asn-v4.tsv.gz && gunzip ip2asn-v4.tsv.gz
जब --asn-db प्रदान किया जाता है, तो --arin-lookup अनदेखा कर दिया जाता है। ARIN परिणामों को डिस्क पर सहेजने के लिए --arin-cache का उपयोग करें ताकि पुनः चलाने पर पहले से क्वेरी किए गए IP छोड़ दिए जाएँ।
# Parse with cloud detection focus
cargo run --release -- parse \
--input connections.jsonl \
--cloud-analysis cloud_report.json \
--min-connections 5 \
--whitelist-processes "chrome,firefox,safari,edge"
collector_server.py बनाएँ:
from flask import Flask, request, jsonify
import os
import json
import base64
from datetime import datetime
from Crypto.Cipher import AES
import gzip
app = Flask(__name__)
# Configuration
UPLOAD_DIR = "./collected_data"
API_KEY = "your-secure-api-key"
ENCRYPTION_KEY = bytes.fromhex("your-32-byte-hex-key") # Optional
os.makedirs(UPLOAD_DIR, exist_ok=True)
def decrypt_data(encrypted_data, key):
"""Decrypt AES-256-GCM encrypted data"""
decoded = base64.b64decode(encrypted_data)
nonce = decoded[:12]
ciphertext = decoded[12:]
cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
plaintext = cipher.decrypt_and_verify(ciphertext[:-16], ciphertext[-16:])
return plaintext