Convert Figma logo to code with AI

owasp-amass logoamass

In-depth attack surface mapping and asset discovery

11,783
1,860
11,783
194

Top Related Projects

Fast passive subdomain enumeration tool.

Find domains and subdomains related to a given domain

Fast subdomains enumeration tool for penetration testers

A Tool for Domain Flyovers

E-mails, subdomains and names Harvester - OSINT

Quick Overview

OWASP Amass is an open-source intelligence (OSINT) tool designed for network mapping and external asset discovery. It performs DNS enumeration, scraping of web archives, and utilizes various data sources to build a comprehensive map of an organization's external-facing digital infrastructure.

Pros

  • Comprehensive data collection from numerous sources
  • Highly customizable and extensible through configuration files
  • Active community support and regular updates
  • Integration capabilities with other security tools

Cons

  • Steep learning curve for beginners
  • Can be resource-intensive for large-scale scans
  • Potential for false positives in results
  • May require additional API keys for full functionality

Code Examples

# Basic subdomain enumeration
amass enum -d example.com
# Passive enumeration with specific data sources
amass enum -passive -d example.com -src virustotal,dnsdumpster
# Advanced enumeration with output to a database
amass db -d example.com -config config.ini -o results.txt

Getting Started

  1. Install Amass:

    go install -v github.com/owasp-amass/amass/v3/...@master
    
  2. Run a basic enumeration:

    amass enum -d example.com
    
  3. For more advanced usage, create a configuration file (config.ini) with API keys and custom settings.

  4. Run Amass with the configuration:

    amass enum -config config.ini -d example.com
    

For detailed documentation and advanced features, refer to the official OWASP Amass GitHub repository.

Competitor Comparisons

Fast passive subdomain enumeration tool.

Pros of Subfinder

  • Faster execution time for subdomain enumeration
  • Simpler setup and usage, with fewer dependencies
  • More focused on subdomain discovery, making it easier to integrate into specific workflows

Cons of Subfinder

  • Less comprehensive feature set compared to Amass
  • Limited active enumeration techniques
  • Fewer data sources and integrations for information gathering

Code Comparison

Subfinder (main subdomain enumeration function):

func (s *Session) EnumerateSubdomains(domain string, config *Config) chan *Result {
    results := make(chan *Result)
    go func() {
        defer close(results)
        // Enumeration logic here
    }()
    return results
}

Amass (main enumeration function):

func (e *Enumeration) Start() error {
    if err := e.Config.CheckSettings(); err != nil {
        return err
    }
    e.dataSources = datasrcs.GetAllSources(e.Config)
    e.startAddressRanges()
    e.startRootDomains()
    return nil
}

The code snippets show that Subfinder focuses on a single function for subdomain enumeration, while Amass has a more complex structure with multiple components and data sources involved in the enumeration process.

Find domains and subdomains related to a given domain

Pros of assetfinder

  • Lightweight and fast, focusing solely on subdomain enumeration
  • Simple to use with minimal configuration required
  • Easily integrable into scripts and automation workflows

Cons of assetfinder

  • Limited feature set compared to Amass
  • Fewer data sources for subdomain discovery
  • Less active development and community support

Code Comparison

assetfinder:

func main() {
    domains := make(chan string)
    go func() {
        sc := bufio.NewScanner(os.Stdin)
        for sc.Scan() {
            domains <- sc.Text()
        }
        close(domains)
    }()
    // ... (processing logic)
}

Amass:

func main() {
    // ... (configuration and setup)
    enum := enumeration.NewEnumeration(cfg)
    if err := enum.Start(); err != nil {
        r.Fprintf(color.Error, "%v\n", err)
        os.Exit(1)
    }
    // ... (result processing)
}

assetfinder is more straightforward, focusing on reading domains from stdin and processing them. Amass has a more complex structure, involving configuration, enumeration setup, and extensive processing logic.

Fast subdomains enumeration tool for penetration testers

Pros of Sublist3r

  • Lightweight and easy to use, with a simple command-line interface
  • Fast execution for quick subdomain enumeration
  • Supports multiple search engines and sources for subdomain discovery

Cons of Sublist3r

  • Less comprehensive and fewer features compared to Amass
  • Not actively maintained, with the last update in 2018
  • Limited output formats and reporting options

Code Comparison

Sublist3r:

def main(domain, threads, savefile, ports, silent, verbose, enable_bruteforce, engines):
    bruteforce_list = []
    subdomains = []
    search_list = []
    
    # ... (rest of the code)

Amass:

func (e *Enumeration) Start() error {
	if err := e.Config.CheckSettings(); err != nil {
		return err
	}

	// ... (rest of the code)

Sublist3r is written in Python and has a more straightforward codebase, while Amass is written in Go and offers a more complex and feature-rich implementation. Amass provides a more robust and extensible architecture, allowing for greater customization and integration with other tools.

A Tool for Domain Flyovers

Pros of Aquatone

  • Focuses on visual reconnaissance with automated screenshots
  • Easier to use for quick visual domain enumeration
  • Provides a clean HTML report for easy analysis

Cons of Aquatone

  • Less comprehensive subdomain enumeration compared to Amass
  • Limited active reconnaissance capabilities
  • Fewer data sources for information gathering

Code Comparison

Aquatone (Go):

func takeScreenshot(url string, timeout time.Duration) (*[]byte, error) {
    ctx, cancel := chromedp.NewContext(context.Background())
    defer cancel()
    ctx, cancel = context.WithTimeout(ctx, timeout)
    defer cancel()
    // ... (screenshot capture logic)
}

Amass (Go):

func (e *Enumeration) submitKnownNames(ctx context.Context) {
    for _, src := range e.Sys.DataSources() {
        if !e.Config.SourceFilter.Include(src.String()) {
            continue
        }
        names := src.KnownNames(ctx, e.Config.Domain)
        e.submitNames(ctx, src, names)
    }
}

Both projects are written in Go, but they serve different purposes. Aquatone focuses on visual reconnaissance and screenshot capture, while Amass is more oriented towards comprehensive subdomain enumeration and data source integration.

E-mails, subdomains and names Harvester - OSINT

Pros of theHarvester

  • Lightweight and easy to use, with a simpler learning curve
  • Supports a wide range of data sources, including search engines and social media platforms
  • Offers flexible output formats, including HTML and XML

Cons of theHarvester

  • Less comprehensive in terms of subdomain enumeration compared to Amass
  • Slower performance when dealing with large-scale reconnaissance tasks
  • Limited advanced features and customization options

Code Comparison

theHarvester:

from theHarvester.discovery import *
from theHarvester.discovery.constants import *
search = googlesearch.search_google(word, limit, start)
search.process()

Amass:

enum := enum.NewEnumeration()
enum.Config.AddDomains([]string{domain})
enum.Start()
for result := range enum.Output {
    // Process the result
}

The code snippets demonstrate the basic usage of both tools. theHarvester uses a more straightforward approach with Python, while Amass employs a more structured and concurrent design in Go, reflecting its more advanced capabilities.

Both tools are valuable for reconnaissance, but Amass generally offers more comprehensive and powerful features for subdomain enumeration and asset discovery, albeit with a steeper learning curve. theHarvester, on the other hand, provides a simpler and more accessible option for quick information gathering from various online sources.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

OWASP Logo OWASP Amass

OWASP Flagship GitHub Release Docker Images Follow on Twitter Chat on Discord

GitHub Test Status GoDoc License Go Report CodeFactor Maintainability codecov

The OWASP Amass Project performs network mapping of attack surfaces and external asset discovery using open source information gathering and active reconnaissance techniques.

Information Gathering Techniques Used:

TechniqueData Sources
APIs360PassiveDNS, Ahrefs, AnubisDB, BeVigil, BinaryEdge, BufferOver, BuiltWith, C99, Chaos, CIRCL, DNSDB, DNSRepo, Deepinfo, Detectify, FOFA, FullHunt, GitHub, GitLab, GrepApp, Greynoise, HackerTarget, Hunter, IntelX, LeakIX, Maltiverse, Mnemonic, Netlas, Pastebin, PassiveTotal, PentestTools, Pulsedive, Quake, SOCRadar, Searchcode, Shodan, Spamhaus, Sublist3rAPI, SubdomainCenter, ThreatBook, ThreatMiner, URLScan, VirusTotal, Yandex, ZETAlytics, ZoomEye
CertificatesActive pulls (optional), Censys, CertCentral, CertSpotter, Crtsh, Digitorus, FacebookCT
DNSBrute forcing, Reverse DNS sweeping, NSEC zone walking, Zone transfers, FQDN alterations/permutations, FQDN Similarity-based Guessing
RoutingASNLookup, BGPTools, BGPView, BigDataCloud, IPdata, IPinfo, RADb, Robtex, ShadowServer, TeamCymru
ScrapingAbuseIPDB, Ask, Baidu, Bing, CSP Header, DNSDumpster, DNSHistory, DNSSpy, DuckDuckGo, Gists, Google, HackerOne, HyperStat, PKey, RapidDNS, Riddler, Searx, SiteDossier, Yahoo
Web ArchivesArquivo, CommonCrawl, HAW, PublicWWW, UKWebArchive, Wayback
WHOISAlienVault, AskDNS, DNSlytics, ONYPHE, SecurityTrails, SpyOnWeb, WhoisXMLAPI

Installation Go Version Docker Images GitHub Downloads

You can find some additional installation variations in the Installation Guide.

Prebuilt Packages

  1. Simply unzip the package
  2. Put the precompiled binary into your path
  3. Start using OWASP Amass!

Homebrew

brew tap owasp-amass/amass
brew install amass

Docker Container

  1. Install Docker
  2. Pull the Docker image by running docker pull caffix/amass
  3. Run docker run -v OUTPUT_DIR_PATH:/.config/amass/ caffix/amass enum -d example.com

The volume argument allows the Amass graph database to persist between executions and output files to be accessed on the host system. The first field (left of the colon) of the volume option is the amass output directory that is external to Docker, while the second field is the path, internal to Docker, where amass will write the output files.

From Source

  1. Install Go and setup your Go workspace
  2. Download OWASP Amass by running go install -v github.com/owasp-amass/amass/v4/...@master
  3. At this point, the binary should be in $GOPATH/bin

Documentation GoDoc

Use the Installation Guide to get started.

Go to the User's Guide for additional information.

See the Tutorial for example usage.

See the Amass Scripting Engine Manual for greater control over your enumeration process.

Corporate Supporters

ZeroFox Logo IPinfo Logo WhoisXML API Logo

Testimonials

Accenture Logo Accenture

"Accenture’s adversary simulation team has used Amass as our primary tool suite on a variety of external enumeration projects and attack surface assessments for clients. It’s been an absolutely invaluable basis for infrastructure enumeration, and we’re really grateful for all the hard work that’s gone into making and maintaining it – it’s made our job much easier!"

- Max Deighton, Accenture Cyber Defense Manager

Visma Logo Visma

"For an internal red team, the organisational structure of Visma puts us against a unique challenge. Having sufficient, continuous visibility over our external attack surface is an integral part of being able to efficiently carry out our task. When dealing with hundreds of companies with different products and supporting infrastructure we need to always be on top of our game.

For years, OWASP Amass has been a staple in the asset reconnaissance field, and keeps proving its worth time after time. The tool keeps constantly evolving and improving to adapt to the new trends in this area."

- Joona Hoikkala (@joohoi) & Alexis Fernández (@six2dez), Visma Red Team

References DEF CON 30 Recon Village DEF CON 28 Red Team Village DEF CON 27 Demo Labs

Did you write a blog post, magazine article or do a podcast about OWASP Amass? Or maybe you held or joined a conference talk or meetup session, a hacking workshop or public training where this project was mentioned?

Add it to our ever-growing list of REFERENCES.md by forking and opening a Pull Request!

Top Mentions

Contributing Contribute Yes Chat on Discord

We are always happy to get new contributors on board! Please check CONTRIBUTING.md to learn how to contribute to our codebase, and join our Discord Server to discuss current project goals.

Troubleshooting Chat on Discord

If you need help with installation and/or usage of the tool, please join our Discord server where community members can best help you.

:stop_sign: Please avoid opening GitHub issues for support requests or questions!

Licensing License

This program is free software: you can redistribute it and/or modify it under the terms of the Apache license. OWASP Amass and any contributions are Copyright © by Jeff Foley 2017-2023. Some subcomponents have separate licenses.

Network graph