Skip to main content

Azure Container Instance Distributed Operations

Project description

acido

Distributed security scanning framework for Azure Container Instances.

Acido (Azure Container Instance Distributed Operations) enables bug bounty hunters, penetration testers, and red team operators to scan at massive scale by distributing workloads across multiple Azure containers.

Table of Contents

Why Acido?

Speed: Distribute scans across 10, 50, or 100+ containers. What takes 24 hours on one machine completes in minutes with parallelization.

Cost-Effective: Pay only when scanning. Spin up 100 containers for 30 minutes, then destroy them - no idle infrastructure costs.

Tool Support: Works with any containerized security tool (nmap, masscan, Nuclei, Nikto, gowitness, etc.).

Simple: Split targets automatically, deploy containers, collect results, cleanup - all automated.

acido

Inspired by axiom.

Installation

Prerequisites:

  • Python 3.7+
  • Docker
  • Azure account (free tier works)

Setup:

  1. Install acido:
pip install acido
  1. Login to Azure:
az login
  1. Create Azure Container Registry:
az acr create --resource-group MyResourceGroup --name myregistry --sku Basic
  1. Configure acido:
acido -c

Provide: resource group name, registry server (e.g., myregistry.azurecr.io), registry username, registry password, and storage account name.

Note: For CI/CD pipelines, see .github/AZURE_PERMISSIONS.md for Service Principal setup.

Quick Start

  1. Create a target list (targets.txt):
facebook.com
uber.com
paypal.com
  1. Create scanning image:
# Using short name (will look for 'nmap' image)
acido create nmap

# Or specify the full Docker image URL
acido create nuclei --image projectdiscovery/nuclei:latest
  1. Run distributed scan:
acido -f nmap-scan \
    -n 3 \
    -im nmap \
    -t 'nmap -iL input -p 0-1000' \
    -i targets.txt \
    -o output \
    --rm-when-done

Parameters:

  • -f Fleet name
  • -n Number of container instances
  • -im Image name (e.g., 'nmap', 'nuclei:latest', or full URL)
  • -t Command to execute
  • -i Input file (auto-split across containers)
  • -o Output file
  • --rm-when-done Auto-delete containers after completion

Results saved to output.json and all_output.txt.

CLI Reference

usage: acido [-h] [-c] [-f FLEET] [-im IMAGE_NAME] [--create-ip CREATE_IP] 
             [--ip] [-n NUM_INSTANCES] [-t TASK] [-e EXEC_CMD] 
             [-i INPUT_FILE] [-w WAIT] [-s SELECT] [-l] [-r REMOVE] [-in]
             [-sh SHELL] [-d DOWNLOAD_INPUT] [-o WRITE_TO_FILE] [-rwd]
             {create}

positional arguments:
  {create}              Subcommands
    create              Create acido-compatible image from base image
                        Usage: acido create <name> [--image <full-image-url>]

optional arguments:
  -h, --help            Show help message
  -c, --config          Configure acido
  -f FLEET              Fleet name
  -im IMAGE_NAME        Deploy specific image
  --create IMAGE        Create acido-compatible image (alternative syntax)
  --create-ip NAME      Create IPv4 address for routing
  --ip                  Use existing IPv4 address
  -n NUM                Number of instances
  -t TASK               Command to execute
  -e EXEC_CMD           Execute on selected instances
  -i INPUT_FILE         Input file for task
  -w WAIT               Max timeout
  -s SELECT             Select instances by name/regex
  -l, --list            List all instances
  -r REMOVE             Remove instances by name/regex
  -in, --interactive    Interactive session
  -sh SHELL             Execute and upload to blob
  -d DOWNLOAD           Download from blob
  -o OUTPUT             Save output in JSON
  -rwd, --rm-when-done  Remove containers after completion

Examples

Distributed Nmap Scan

Scan 1,000 hosts with 20 containers:

acido -f nmap-fleet \
    -n 20 \
    -im nmap \
    -t 'nmap -iL input -p- --min-rate 1000' \
    -i targets.txt \
    -o output \
    --rm-when-done

Nuclei Vulnerability Scan

Scan 10,000 URLs with 50 containers:

acido -f nuclei-scan \
    -n 50 \
    -im nuclei \
    -t 'nuclei -list input -t /nuclei-templates/' \
    -i urls.txt \
    -o results

Masscan Port Discovery

Scan entire network with 100 containers:

acido -f masscan \
    -n 100 \
    -im masscan \
    -t 'masscan -iL input -p0-65535 --rate 10000' \
    -i networks.txt \
    -o masscan-results

Single IP Routing

Route all containers through one IP for whitelisting:

# Create IP
acido --create-ip pentest-ip

# Deploy with IP routing
acido -f scan -n 50 --ip \
    --image myregistry.azurecr.io/nmap:latest \
    -t 'nmap -iL input -p-' \
    -i targets.txt

Credits

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

acido-0.21.tar.gz (27.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

acido-0.21-py3-none-any.whl (28.6 kB view details)

Uploaded Python 3

File details

Details for the file acido-0.21.tar.gz.

File metadata

  • Download URL: acido-0.21.tar.gz
  • Upload date:
  • Size: 27.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for acido-0.21.tar.gz
Algorithm Hash digest
SHA256 a5361b4f43a8bccfaeefe015f28a8ac9b8bd7d6d0e1fb1288fcd2628416191f3
MD5 ec36a50d876aa067fbbe341224b29b7f
BLAKE2b-256 7b89ca496812426debee3ce52ee16a52247430f8a73315e257a735275441a784

See more details on using hashes here.

File details

Details for the file acido-0.21-py3-none-any.whl.

File metadata

  • Download URL: acido-0.21-py3-none-any.whl
  • Upload date:
  • Size: 28.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for acido-0.21-py3-none-any.whl
Algorithm Hash digest
SHA256 c37fb65ab50cd325984f2313175d8a77afb6e1d0fb51f553c2587909119ef44b
MD5 0d4f9eff76f3159306c70b3483c4e7c7
BLAKE2b-256 989d489ae5b3bbe7ffaff3d2f4393d654fbba68ad9e5a73b839bcd9ed701c76f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page