EasyEASM

repository·main·Indexed 43 days ago

https://github.com/g0ldencybersec/easyeasm

A zero-cost attack surface management (ASM) tool that provides visibility into external-facing assets. It automates daily scans with passive and active enumeration modes, generates results in EasyEASM.csv, and supports notifications for new domain discoveries via Slack or Discord webhooks.

Tokens
1.1K
Snippets
4
Records
7
Agent score
6%

What's inside EasyEASM

  1. Run EasyEASM and view results

    main

    To execute the tool, ensure your config.yml is prepared in the current directory, then run the easyeasm binary. Upon completion, the tool generates an output file named EasyEASM.csv in the run directory, which contains the discovered assets.

    ./easyeasm
  2. Configure EasyEASM via config.yml

    main

    EasyEASM requires a configuration file named config.yml located in the directory from which you execute the tool. The configuration is defined under the runConfig key and controls domains, notification webhooks, scan types, and enumeration settings.

    # EasyEASM configurations
    runConfig:
      domains:  # List root domains here.
        - example.com
        - mydomain.com
      slack: https://hooks.slack.com/services/DUMMYDATA/DUMMYDATA/RANDOM # Slack webhook url for Slack notifications.
      discord: https://discord.com/api/webhooks/DUMMYURL/Dasdfsdf # Discord webhook for Discord notifications.
      runType: fast   # Set to either fast (passive enum) or complete (active enumeration).
      activeWordlist: subdomainWordlist.txt
      activeThreads: 100
  3. Run EasyEASM in Fast or Complete mode

    main

    EasyEASM operates in two distinct modes determined by the runType setting in your configuration file.

    • fast: Performs passive enumeration only. It uses a PassiveRunner to find subdomains and then runs httpx to verify which domains are live.
    • complete: Performs both passive and active enumeration. It uses an ActiveRunner to perform active enumeration, permutation scans, and passive enumeration, followed by an httpx scan to check for live domains.

    If an invalid runType is provided, the application will panic. Ensure your configuration file contains either fast or complete (case-insensitive).

  4. Automate notifications for new domains via Slack or Discord

    main

    EasyEASM can automatically notify you when new subdomains are discovered by comparing the current run against the previous run's data (EasyEASM.csv).

    If a previous run is detected, the tool will check your configuration for webhooks:

    1. If cfg.RunConfig.SlackWebhook starts with https, it uses utils.NotifyNewDomainsSlack.
    2. If cfg.RunConfig.DiscordWebhook starts with https, it uses utils.NotifyNewDomainsDiscord.

    Note: The tool renames the previous results to old_EasyEASM.csv at the start of a run to facilitate this comparison.

  5. Configure EasyEASM run modes

    main

    To control the depth of the External Attack Surface Management (EASM) scan, set the runType key in your configuration file.

    ValueDescription
    fastPassive enumeration only. Faster, less intrusive.
    completePassive + Active enumeration + Permutation scanning. More thorough.

    Example configuration logic (conceptual):

    runConfig:
      runType: "complete"
      domains: ["example.com"]
      activeWordlist: "path/to/wordlist"
      activeThreads: 10
  6. Reference: EasyEASM runConfig options

    main

    The following configuration keys are available under the runConfig object in config.yml:

    runConfig:
      domains:           # List of root domains to scan (e.g., ['example.com'])
      slack:             # Slack webhook URL for notifications
      discord:           # Discord webhook URL for notifications
      runType:           # Scan mode: 'fast' (passive enumeration) or 'complete' (active enumeration)
      activeWordlist:    # Path to the wordlist file used for active enumeration
      activeThreads:     # Number of concurrent threads for active enumeration