mirror of
https://github.com/Vyntral/god-eye.git
synced 2026-02-12 16:52:45 +00:00
God's Eye is an ultra-fast subdomain enumeration and reconnaissance tool with AI-powered security analysis. ## ✨ Key Features ### 🔍 Comprehensive Enumeration - 20+ passive sources (crt.sh, Censys, URLScan, etc.) - DNS brute-force with smart wordlists - Wildcard detection and filtering - 1000 concurrent workers for maximum speed ### 🌐 Deep Reconnaissance - HTTP probing with 13+ security checks - Port scanning (configurable) - TLS/SSL fingerprinting - Technology detection (Wappalyzer-style) - WAF detection (Cloudflare, Akamai, etc.) - Security header analysis - JavaScript secrets extraction - Admin panel & API discovery - Backup file detection - robots.txt & sitemap.xml checks ### 🎯 Subdomain Takeover Detection - 110+ fingerprints (AWS, Azure, GitHub Pages, Heroku, etc.) - CNAME validation - Dead DNS detection ### 🤖 AI-Powered Analysis (NEW!) - Local AI using Ollama - No API costs, complete privacy - Real-time CVE detection via function calling (queries NVD database) - Cascade architecture: phi3.5 (fast triage) + qwen2.5-coder (deep analysis) - JavaScript security analysis - HTTP response anomaly detection - Executive summary reports ### 📊 Output Formats - Pretty terminal output with colors - JSON export - CSV export - TXT (simple subdomain list) - Silent mode for piping ## 🚀 Installation bash go install github.com/Vyntral/god-eye@latest ## 📖 Quick Start bash # Basic scan god-eye -d example.com # With AI analysis god-eye -d example.com --enable-ai # Only active hosts god-eye -d example.com --active # Export to JSON god-eye -d example.com -o results.json -f json ## 🎯 Use Cases - Bug bounty reconnaissance - Penetration testing - Security audits - Attack surface mapping - Red team operations ## ⚠️ Legal Notice This tool is for authorized security testing only. Users must obtain explicit permission before scanning any targets. Unauthorized access is illegal. ## 📄 License MIT License with additional security tool terms - see LICENSE file ## 🙏 Credits Built with ❤️ by Vyntral for Orizon Powered by Go, Ollama, and the security community --- 🤖 Generated with Claude Code https://claude.com/claude-code Co-Authored-By: Claude <noreply@anthropic.com>
140 lines
4.8 KiB
Go
140 lines
4.8 KiB
Go
package config
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Config holds the scan configuration
|
|
type Config struct {
|
|
Domain string
|
|
Wordlist string
|
|
Concurrency int
|
|
Timeout int
|
|
Output string
|
|
Format string
|
|
Silent bool
|
|
Verbose bool
|
|
NoBrute bool
|
|
NoProbe bool
|
|
NoPorts bool
|
|
NoTakeover bool
|
|
Resolvers string
|
|
Ports string
|
|
OnlyActive bool
|
|
JsonOutput bool
|
|
// AI Configuration
|
|
EnableAI bool
|
|
AIUrl string
|
|
AIFastModel string
|
|
AIDeepModel string
|
|
AICascade bool
|
|
AIDeepAnalysis bool
|
|
}
|
|
|
|
// Stats holds scan statistics
|
|
type Stats struct {
|
|
TotalFound int32
|
|
TotalResolved int32
|
|
TotalActive int32
|
|
TakeoverFound int32
|
|
StartTime time.Time
|
|
}
|
|
|
|
// SubdomainResult holds all information about a subdomain
|
|
type SubdomainResult struct {
|
|
Subdomain string `json:"subdomain"`
|
|
IPs []string `json:"ips,omitempty"`
|
|
CNAME string `json:"cname,omitempty"`
|
|
PTR string `json:"ptr,omitempty"`
|
|
ASN string `json:"asn,omitempty"`
|
|
Org string `json:"org,omitempty"`
|
|
Country string `json:"country,omitempty"`
|
|
City string `json:"city,omitempty"`
|
|
StatusCode int `json:"status_code,omitempty"`
|
|
ContentLength int64 `json:"content_length,omitempty"`
|
|
RedirectURL string `json:"redirect_url,omitempty"`
|
|
Title string `json:"title,omitempty"`
|
|
Server string `json:"server,omitempty"`
|
|
Tech []string `json:"technologies,omitempty"`
|
|
Headers []string `json:"headers,omitempty"`
|
|
WAF string `json:"waf,omitempty"`
|
|
TLSVersion string `json:"tls_version,omitempty"`
|
|
TLSIssuer string `json:"tls_issuer,omitempty"`
|
|
TLSExpiry string `json:"tls_expiry,omitempty"`
|
|
Ports []int `json:"ports,omitempty"`
|
|
Takeover string `json:"takeover,omitempty"`
|
|
ResponseMs int64 `json:"response_ms,omitempty"`
|
|
FaviconHash string `json:"favicon_hash,omitempty"`
|
|
RobotsTxt bool `json:"robots_txt,omitempty"`
|
|
SitemapXml bool `json:"sitemap_xml,omitempty"`
|
|
MXRecords []string `json:"mx_records,omitempty"`
|
|
TXTRecords []string `json:"txt_records,omitempty"`
|
|
NSRecords []string `json:"ns_records,omitempty"`
|
|
// Security checks
|
|
SecurityHeaders []string `json:"security_headers,omitempty"`
|
|
MissingHeaders []string `json:"missing_headers,omitempty"`
|
|
OpenRedirect bool `json:"open_redirect,omitempty"`
|
|
CORSMisconfig string `json:"cors_misconfig,omitempty"`
|
|
AllowedMethods []string `json:"allowed_methods,omitempty"`
|
|
DangerousMethods []string `json:"dangerous_methods,omitempty"`
|
|
// Discovery checks
|
|
AdminPanels []string `json:"admin_panels,omitempty"`
|
|
GitExposed bool `json:"git_exposed,omitempty"`
|
|
SvnExposed bool `json:"svn_exposed,omitempty"`
|
|
BackupFiles []string `json:"backup_files,omitempty"`
|
|
APIEndpoints []string `json:"api_endpoints,omitempty"`
|
|
// Cloud and Email Security
|
|
CloudProvider string `json:"cloud_provider,omitempty"`
|
|
S3Buckets []string `json:"s3_buckets,omitempty"`
|
|
SPFRecord string `json:"spf_record,omitempty"`
|
|
DMARCRecord string `json:"dmarc_record,omitempty"`
|
|
EmailSecurity string `json:"email_security,omitempty"`
|
|
TLSAltNames []string `json:"tls_alt_names,omitempty"`
|
|
// JavaScript Analysis
|
|
JSFiles []string `json:"js_files,omitempty"`
|
|
JSSecrets []string `json:"js_secrets,omitempty"`
|
|
// AI Analysis
|
|
AIFindings []string `json:"ai_findings,omitempty"`
|
|
AISeverity string `json:"ai_severity,omitempty"`
|
|
AIModel string `json:"ai_model,omitempty"`
|
|
CVEFindings []string `json:"cve_findings,omitempty"`
|
|
}
|
|
|
|
// IPInfo holds IP geolocation data
|
|
type IPInfo struct {
|
|
ASN string `json:"as"`
|
|
Org string `json:"org"`
|
|
Country string `json:"country"`
|
|
City string `json:"city"`
|
|
}
|
|
|
|
// SourceResult holds passive source results
|
|
type SourceResult struct {
|
|
Name string
|
|
Subs []string
|
|
Err error
|
|
}
|
|
|
|
// Default values
|
|
var DefaultResolvers = []string{
|
|
"8.8.8.8:53",
|
|
"8.8.4.4:53",
|
|
"1.1.1.1:53",
|
|
"1.0.0.1:53",
|
|
"9.9.9.9:53",
|
|
}
|
|
|
|
var DefaultWordlist = []string{
|
|
"www", "mail", "ftp", "localhost", "webmail", "smtp", "pop", "ns1", "ns2",
|
|
"ns3", "ns4", "dns", "dns1", "dns2", "api", "dev", "staging", "prod",
|
|
"admin", "administrator", "app", "apps", "auth", "beta", "blog", "cdn",
|
|
"chat", "cloud", "cms", "cpanel", "dashboard", "db", "demo", "docs",
|
|
"email", "forum", "git", "gitlab", "help", "home", "host", "img",
|
|
"images", "imap", "internal", "intranet", "jenkins", "jira", "lab",
|
|
"legacy", "login", "m", "mobile", "monitor", "mx", "mysql", "new",
|
|
"news", "old", "panel", "portal", "preview", "private", "proxy", "remote",
|
|
"server", "shop", "smtp", "sql", "ssh", "ssl", "stage", "staging",
|
|
"static", "status", "store", "support", "test", "testing", "tools",
|
|
"vpn", "web", "webmail", "wiki", "www1", "www2", "www3",
|
|
}
|