lazyrecon
This script is intended to automate your reconnaissance process in an organized fashion
Top Related Projects
Fast and customizable vulnerability scanner based on simple YAML based DSL.
Take a list of domains and probe for working HTTP and HTTPS servers
In-depth attack surface mapping and asset discovery
Fetch known URLs from AlienVault's Open Threat Exchange, the Wayback Machine, and Common Crawl.
Simple, fast web crawler designed for easy, quick discovery of endpoints and assets within a web application
Fast web fuzzer written in Go
Quick Overview
LazyRecon is an automated reconnaissance tool designed for bug bounty hunters and penetration testers. It automates various recon processes, including subdomain enumeration, port scanning, and vulnerability scanning, to streamline the initial phases of security assessments and bug hunting.
Pros
- Automates multiple reconnaissance tasks, saving time and effort
- Integrates various popular tools like Sublist3r, Amass, and Nmap
- Customizable and extensible through configuration files
- Generates organized output for easy analysis
Cons
- Requires multiple dependencies to be installed separately
- May generate a large amount of noise or false positives
- Limited documentation and community support
- Not actively maintained (last update was in 2020)
Getting Started
-
Clone the repository:
git clone https://github.com/nahamsec/lazyrecon.git
-
Install dependencies:
sudo apt-get install sublist3r amass nmap whatweb
-
Make the script executable:
chmod +x lazyrecon.sh
-
Run LazyRecon:
./lazyrecon.sh -d example.com
Note: Ensure you have proper authorization before scanning any domains or systems you don't own.
Competitor Comparisons
Fast and customizable vulnerability scanner based on simple YAML based DSL.
Pros of Nuclei
- More extensive and customizable scanning capabilities with a large library of templates
- Supports multiple protocols beyond just HTTP (e.g., DNS, TCP, SSH)
- Active development and frequent updates from a larger community
Cons of Nuclei
- Steeper learning curve due to its more complex configuration and template system
- May require more system resources for large-scale scans compared to LazyRecon
Code Comparison
LazyRecon (Bash script):
echo "Starting recon on $domain"
mkdir -p $domain $domain/screenshots $domain/loot $domain/gowitness
Nuclei (YAML template):
id: example-template
info:
name: Example Template
author: John Doe
severity: info
requests:
- method: GET
path:
- "{{BaseURL}}"
Summary
Nuclei offers more advanced and flexible scanning capabilities, supporting various protocols and a vast template library. However, it may be more complex to use and resource-intensive compared to LazyRecon. LazyRecon is simpler and focuses on basic reconnaissance tasks, making it easier for beginners but less powerful for advanced users. The choice between the two depends on the user's needs, expertise, and the complexity of the target environment.
Take a list of domains and probe for working HTTP and HTTPS servers
Pros of httprobe
- Lightweight and focused on a single task (probing for live HTTP/HTTPS servers)
- Fast execution due to its simplicity and Go implementation
- Easy to integrate into other tools or scripts
Cons of httprobe
- Limited functionality compared to LazyRecon's comprehensive reconnaissance approach
- Lacks built-in reporting or output formatting options
- Requires additional tools for a complete recon workflow
Code Comparison
LazyRecon (Bash):
for domain in $(cat $domain_list); do
echo "Enumerating subdomains for $domain"
./subfinder -d $domain -o $domain_subs
done
httprobe (Go):
func main() {
sc := bufio.NewScanner(os.Stdin)
for sc.Scan() {
result := probe(sc.Text())
fmt.Println(result)
}
}
LazyRecon is a comprehensive bash script that automates various reconnaissance tasks, including subdomain enumeration, while httprobe is a focused Go tool for probing HTTP/HTTPS servers. LazyRecon offers a broader range of functionality but may be slower and less modular. httprobe is faster and more easily integrated into custom workflows but requires additional tools for a complete reconnaissance process.
In-depth attack surface mapping and asset discovery
Pros of Amass
- More comprehensive subdomain enumeration with multiple data sources
- Advanced features like DNS brute-forcing and permutation scanning
- Actively maintained with frequent updates and improvements
Cons of Amass
- Steeper learning curve due to more complex configuration options
- Can be resource-intensive for large-scale scans
- May require additional setup for optimal performance
Code Comparison
LazyRecon (Bash script):
subfinder -d $domain -o .tmp/subfinder_$domain
assetfinder --subs-only $domain | tee .tmp/assetfinder_$domain
Amass (Go-based tool):
enum := amass.NewEnumeration()
enum.Config.AddDomain(domain)
err := enum.Start()
LazyRecon is a shell script that combines various tools, while Amass is a standalone Go application with more integrated functionality. LazyRecon is simpler to use but less feature-rich, whereas Amass offers more advanced capabilities at the cost of increased complexity.
Fetch known URLs from AlienVault's Open Threat Exchange, the Wayback Machine, and Common Crawl.
Pros of gau
- Faster execution due to Go implementation
- More focused on URL discovery from various sources
- Simpler to use with fewer dependencies
Cons of gau
- Less comprehensive reconnaissance compared to LazyRecon
- Lacks built-in vulnerability scanning features
- Doesn't include subdomain enumeration capabilities
Code Comparison
LazyRecon (Bash):
while read line; do
if [[ ! "${line}" =~ ^[[:space:]]*# ]]; then
echo "${line}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
fi
done < "${1:-/dev/stdin}"
gau (Go):
func main() {
var domains []string
sc := bufio.NewScanner(os.Stdin)
for sc.Scan() {
domains = append(domains, sc.Text())
}
}
LazyRecon is a more comprehensive reconnaissance tool written in Bash, offering a wider range of features including subdomain enumeration and vulnerability scanning. It's designed for broader security assessments but may be slower due to its shell script nature.
gau, on the other hand, is a focused Go-based tool for URL discovery. It's faster and simpler to use, making it ideal for quick URL gathering tasks. However, it lacks the extensive reconnaissance capabilities of LazyRecon.
Choose LazyRecon for comprehensive security assessments, and gau for rapid URL discovery in specific scenarios.
Simple, fast web crawler designed for easy, quick discovery of endpoints and assets within a web application
Pros of hakrawler
- Written in Go, offering better performance and cross-platform compatibility
- Focuses on crawling and discovering endpoints, providing more targeted functionality
- Supports custom headers and cookies for authenticated crawling
Cons of hakrawler
- Less comprehensive than LazyRecon, focusing primarily on crawling
- Requires manual integration with other tools for a complete reconnaissance workflow
- May miss some reconnaissance steps that LazyRecon automates
Code Comparison
LazyRecon (Bash):
while read line; do
if [[ ! -z "$line" ]]; then
sleep 1
$tools/httprobe -c 50 < $line > $line.tmp
cat $line.tmp | sed 's/https\?:\/\///' | sort -u > $line
rm $line.tmp
fi
done < $domain_list
hakrawler (Go):
func crawl(url string, depth int, source string) {
if depth >= *maxDepth {
return
}
resp, err := client.Get(url)
if err != nil {
return
}
defer resp.Body.Close()
// ... (crawling logic)
}
The code snippets highlight the different approaches: LazyRecon uses Bash scripting for domain probing, while hakrawler implements a recursive crawling function in Go.
Fast web fuzzer written in Go
Pros of ffuf
- Written in Go, offering better performance and cross-platform compatibility
- More focused on web fuzzing with advanced features like custom output formats
- Actively maintained with frequent updates and contributions
Cons of ffuf
- Lacks the all-in-one reconnaissance approach of LazyRecon
- Requires more manual configuration and chaining with other tools for comprehensive recon
- Steeper learning curve for beginners compared to LazyRecon's script-based approach
Code Comparison
ffuf:
func main() {
flag.Parse()
if err := ffuf.New().Run(); err != nil {
fmt.Printf("\n[ERR] %s\n", err)
os.Exit(1)
}
}
LazyRecon:
aquatone-discover -d $domain
aquatone-scan -d $domain
cat $domain/hosts.txt | httprobe > $domain/responsive.txt
subjack -w $domain/hosts.txt -t 100 -timeout 30 -ssl -c ~/go/src/github.com/haccer/subjack/fingerprints.json -v 3 >> $domain/final.txt
The code snippets highlight the different approaches: ffuf uses a Go-based structure for web fuzzing, while LazyRecon employs a bash script to chain multiple reconnaissance tools together.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
_ ____ ____ ___ _ ____ _____ ____ ____ _
/ \ / _ \/_ \\ \/// __\/ __// _Y _ \/ \ /|
| | | / \| / / \ / | \/|| \ | / | / \|| |\ ||
| |_/\| |-||/ /_ / / | /| /_ | \_| \_/|| | \||
\____/\_/ \|\____//_/ \_/\_\\____\\____|____/\_/ \|
Usage
./lazyrecon.sh -d domain.com
To exclude particular subdomains:
./lazyrecon.sh -d domain.com -e excluded.domain.com,other.domain.com
About
LazyRecon is a script written in Bash, it is intended to automate some tedious tasks of reconnaissance and information gathering. This tool allows you to gather some information that should help you identify what to do next and where to look.
Main Features
-
Create a dated folder with recon notes
-
Grab subdomains using:
* Sublist3r, certspotter and cert.sh * Dns bruteforcing using massdns
-
Find any CNAME records pointing to unused cloud services like aws
-
Probe for live hosts over ports 80/443
-
Grab a screenshots of responsive hosts
-
Scrape wayback for data:
* Extract javascript files * Build custom parameter wordlist, ready to be loaded later into Burp intruder or any other tool * Extract any urls with .jsp, .php or .aspx and store them for further inspection
-
Perform nmap on specific ports
-
Get dns information about every subdomain
-
Perform dirsearch for all subdomains
-
Generate a HTML report with output from the tools above
-
Improved reporting and less output while doing the work
-
Dark mode for html reports
New features
- Directory search module is now MULTITHREADED (up to 10 subdomains scanned at a time)
- Enhanced html reports with the ability to search for strings, endpoints, reponse sizes or status codes
- Subdomain exclusion by using option
-e
like this:-e excluded.domain.com,other.domain.com
DEMO
Installation & Requirements
- Download the install script from https://github.com/nahamsec/bbht.
- Go version 1.10 or later.
System Requirements
- Recommended to run on vps with 1VCPU and 2GB ram.
Authors and Thanks
This script makes use of tools developped by the following people
- Tom Hudson - Tomonomnom
- Ahmed Aboul-Ela - Aboul3la
- B. Blechschmidt - Blechschmidt
- Thomas D. - Maaaaz
- Daniel Miessler - Danielmiessler
TO DO
- Report only mode to generate reports for old dirsearch data
Warning: This code was originally created for personal use, it generates a substantial amount of traffic, please use with caution.
Top Related Projects
Fast and customizable vulnerability scanner based on simple YAML based DSL.
Take a list of domains and probe for working HTTP and HTTPS servers
In-depth attack surface mapping and asset discovery
Fetch known URLs from AlienVault's Open Threat Exchange, the Wayback Machine, and Common Crawl.
Simple, fast web crawler designed for easy, quick discovery of endpoints and assets within a web application
Fast web fuzzer written in Go
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot