Skip to main content

PyPI version Downloads Ostorlab blog Twitter Follow

OXO Scan Orchestration Engine

OXO is a security scanning framework built for modularity, scalability, and simplicity.

OXO Engine combines specialized tools to work cohesively to find vulnerabilities and perform actions like recon, enumeration, and fingerprinting.

Main oxo

Key Features

  • Modular & Scalable: Easily combine multiple specialized agents to perform comprehensive scans.
  • Broad Asset Support: Scan anything from IP addresses and domains to mobile applications (Android, iOS, HarmonyOS) and API schemas.
  • Agent Store: Access a growing library of community and official agents for popular security tools.
  • Extensible: Built-in support for creating and publishing your own agents using a simple Python-based framework.
  • API First: Features a GraphQL API for easy integration into CI/CD pipelines and other automated workflows.

Requirements

Docker is required to run scans locally. To install Docker, please follow these instructions.

Installing

OXO ships as a Python package on PyPI. To install it, simply run the following command if you have pip already installed.

pip install -U ostorlab

Getting Started

OXO ships with a store that boasts dozens of agents, from network scanning agents like Nmap, Nuclei, or Tsunami, web scanners like ZAP, web fingerprinting tools like WhatWeb and Wappalyzer, DNS brute-forcing tools like Subfinder and Dnsx, malware file scanning like VirusTotal, and much more.

To run any of these tools combined, simply run the following command:

OXO CLI is accessible using the oxo or ostorlab commands.

oxo scan run --install --agent agent/ostorlab/nmap --agent agent/ostorlab/tsunami --agent agent/ostorlab/nuclei ip 8.8.8.8

This command will download and install the following scanning agents:

It will scan the target IP address 8.8.8.8.

Agents are shipped as standard Docker images.

Scan Management

To check the scan status, run:

oxo scan list

Once the scan has completed, to access the scan results, run:

oxo vulnz list --scan-id <scan-id>
oxo vulnz describe --vuln-id <vuln-id>

To stop a running scan, run:

oxo scan stop --scan-id <scan-id>

Docker Image

To run oxo in a container, you may use the publicly available image and run the following command:

docker run -v /var/run/docker.sock:/var/run/docker.sock ostorlab/oxo:latest scan run --install --agent agent/ostorlab/nmap ip 8.8.8.8

Notes:

  • The command starts directly with: scan run, this is because the ostorlab/oxo image has oxo as an entrypoint.
  • It is important to mount the Docker socket so OXO can create agents on the host machine.

On-Prem Scanner Logs

When running OXO as an on-prem scanner, use --persist-logs to write scanner logs to disk:

oxo scanner --scanner-id <scanner-uuid> --persist-logs

By default, logs are written to ~/.ostorlab/scanner.log. To choose another file:

oxo scanner --scanner-id <scanner-uuid> --persist-logs --log-file /var/log/ostorlab/scanner.log

To change the persisted log verbosity:

oxo scanner --scanner-id <scanner-uuid> --persist-logs --log-level DEBUG

Assets

OXO supports scanning multiple asset types, allowing for comprehensive security coverage across different platforms and protocols.

Category Asset Description
Network ip IP address or IP range (v4 and v6).
domain-name Domain name.
Web link Web link, accepting a URL, method, headers, and request body.
api-schema API schema (OpenAPI, GraphQL, etc.).
Mobile android-apk / android-aab Android package files (.APK, .AAB).
android-store Android app in the Google Play Store.
ios-ipa iOS package file (.IPA).
ios-store iOS app in the Apple App Store.
ios-testflight iOS app in TestFlight.
harmonyos-apk / harmonyos-hap HarmonyOS package files.
Other file Generic file.
phone-number Phone number.
agent Meta-scanning of an agent.

The Store

OXO lists all agents on a public store where you can search and also publish your own agents.

Store

Publish Your First Agent

To write your first agent, you can check out a full tutorial here.

The steps are basically as follows:

  • Clone a template agent with all files already set up.
  • Change the template_agent.py file to add your logic.
  • Change the Dockerfile by adding any extra building steps.
  • Change the ostorlab.yaml by adding selectors, documentation, image, and license.
  • Publish it on the store.

Once you have written your agent, you can publish it on the store for others to use and discover it. The store will handle agent building and will automatically pick up new releases from your Git repo.

Build

Ideas for Agents to Build

Implementations of popular tools such as:

  • semgrep for source code scanning.
  • nbtscan: Scans for open NetBIOS name servers on your target’s network.
  • onesixtyone: Fast scanner to find publicly exposed SNMP services.
  • Retire.js: Scanner detecting the use of JavaScript libraries with known vulnerabilities.
  • snallygaster: Finds file leaks and other security problems on HTTP servers.
  • testssl.sh: Identifies various TLS/SSL weaknesses, including Heartbleed, CRIME, and ROBOT.
  • TruffleHog: Searches through Git repositories for high-entropy strings and secrets, digging deep into commit history.
  • cve-bin-tool: Scans binaries for vulnerable components.
  • XSStrike: XSS web vulnerability scanner with generative payload.
  • Subjack: Subdomain takeover scanning tool.
  • DnsReaper: Subdomain takeover scanning tool.
  • Gitleaks: SAST tool for detecting and preventing hardcoded secrets.
  • ffuf: Fast web fuzzer written in Go.
  • Gobuster: Tool used to brute-force URIs, DNS subdomains, and more.

Credits

As an open-source project in a rapidly developing field, we are always open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation.

We would like to thank the following contributors for their help in making OXO a better tool:

Download files

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

Source Distribution

ostorlab-2.9.18.tar.gz (12.5 MB view details)

Uploaded Source

Built Distribution

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

ostorlab-2.9.18-py3-none-any.whl (14.2 MB view details)

Uploaded Python 3

File details

Details for the file ostorlab-2.9.18.tar.gz.

File metadata

  • Download URL: ostorlab-2.9.18.tar.gz
  • Upload date:
  • Size: 12.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for ostorlab-2.9.18.tar.gz
Algorithm Hash digest
SHA256 ff9214ef8d82e9b8892843067dc109ce0b229a03caf69327c924396432bf0d98
MD5 4f731b873d781a895a83847fe2e2890c
BLAKE2b-256 f30f7d4c4907b435a87119edbe70d8f504a1cccef486488abb1ece5a5acf789f

See more details on using hashes here.

File details

Details for the file ostorlab-2.9.18-py3-none-any.whl.

File metadata

  • Download URL: ostorlab-2.9.18-py3-none-any.whl
  • Upload date:
  • Size: 14.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for ostorlab-2.9.18-py3-none-any.whl
Algorithm Hash digest
SHA256 b4d64d179769f7c948f1e2204e7e9a99e48e49b16aefbdb4eae6a7db43b6d176
MD5 4f8504fa9406e3b36aca020c41994e53
BLAKE2b-256 f49345001de95d2ce94ad08f80cd6304ae057141770d47d132fccb0bd85592cd

See more details on using hashes here.

Release history Release notifications | RSS feed

2.10.2

2 files

2.10.1

2 files

2.10.0

2 files

2.9.30

2 files

2.9.29

2 files

2.9.28

2 files

2.9.27

2 files

2.9.26

2 files

2.9.25

2 files

2.9.24

2 files

2.9.23

2 files

2.9.22

2 files

2.9.21

2 files

2.9.20

2 files

2.9.19

2 files

This release

2.9.18 This release

2 files

2.9.17

2 files

2.9.16

2 files

2.9.15

2 files

2.9.14

2 files

2.9.13

2 files

2.9.12

2 files

2.9.11

2 files

2.9.10

2 files

2.9.9

2 files

2.9.8

2 files

2.9.7

2 files

2.9.6

2 files

2.9.5

2 files

2.9.3

2 files

2.9.2

2 files

2.9.1

2 files

2.9.0

2 files

2.8.8

2 files

2.8.7

2 files

2.8.6

2 files

2.8.4

2 files

2.8.3

2 files

2.8.2

2 files

2.7.8

2 files

2.7.7

2 files

2.7.6

2 files

2.7.3

2 files

2.7.1

2 files

2.7.0

2 files

2.6.2

2 files

2.6.1

2 files

2.6.0

2 files

2.5.5

2 files

2.5.4

2 files

2.5.3

2 files

2.5.2

2 files

2.5.1

2 files

2.5.0

2 files

2.4.0

2 files

2.3.2

2 files

2.3.1

2 files

2.3.0

2 files

2.2.0

2 files

2.1.2

2 files

2.1.1

2 files

2.1.0

2 files

2.0.0

2 files

1.21.0

2 files

1.20.0

2 files

1.19.0

2 files

1.18.1

2 files

1.18.0

2 files

1.17.0

2 files

1.16.1

2 files

1.16.0

2 files

1.15.1

2 files

1.15.0

2 files

1.14.1

2 files

1.14.0

2 files

1.13.2

2 files

1.13.1

2 files

1.13.0

2 files

1.12.0

2 files

1.11.0

2 files

1.10.1

2 files

1.10.0

2 files

1.9.9

2 files

1.9.8

2 files

1.9.7

2 files

1.9.6

2 files

1.9.5

2 files

1.9.4

2 files

1.9.3

2 files

1.9.2

2 files

1.9.1

2 files

1.9.0

2 files

1.8.1

2 files

1.8.0

2 files

1.7.15

2 files

1.7.13

2 files

1.7.12

2 files

1.7.11

2 files

1.7.10

2 files

1.7.9

2 files

1.7.8

2 files

1.7.7

2 files

1.7.6

2 files

1.7.5

2 files

1.7.4

2 files

1.7.3

2 files

1.7.2

2 files

1.7.1

2 files

1.7.0

2 files

1.6.13

2 files

1.6.12

2 files

1.6.11

2 files

1.6.10

2 files

1.6.9

2 files

1.6.8

2 files

1.6.7

2 files

1.6.6

2 files

1.6.5

2 files

1.6.4

2 files

1.6.3

2 files

1.6.2

2 files

1.6.1

2 files

1.6.0

2 files

1.5.10

2 files

1.5.6

2 files

1.5.5

2 files

1.5.4

2 files

1.5.3

2 files

1.5.2

2 files

1.5.1

2 files

1.5.0

2 files

1.4.4

2 files

1.4.3

2 files

1.4.2

2 files

1.4.1

2 files

1.4.0

2 files

1.3.6

2 files

1.3.5

2 files

1.3.4

2 files

1.3.3

2 files

1.3.2

2 files

1.3.1

2 files

1.3.0

2 files

1.2.26

2 files

1.2.25

2 files

1.2.24

2 files

1.2.23

2 files

1.2.22

2 files

1.2.21

2 files

1.2.20

2 files

1.2.19

2 files

1.2.18

2 files

1.2.17

2 files

1.2.16

2 files

1.2.15

2 files

1.2.14

2 files

1.2.13

2 files

1.2.12

2 files

1.2.11

2 files

1.2.10

2 files

1.2.9

2 files

1.2.8

2 files

1.2.7

2 files

1.2.6

2 files

1.2.5

2 files

1.2.4

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.12

2 files

1.1.11

2 files

1.1.10

2 files

1.1.9

2 files

1.1.8

2 files

1.1.7

2 files

1.1.6

2 files

1.1.5

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.38

2 files

1.0.37

2 files

1.0.36

2 files

1.0.34

2 files

1.0.33

2 files

1.0.32

2 files

1.0.31

2 files

1.0.30

2 files

1.0.29

2 files

1.0.28

2 files

1.0.27

2 files

1.0.26

2 files

1.0.25

2 files

1.0.23

2 files

1.0.22

2 files

1.0.20

2 files

1.0.19

2 files

1.0.18

2 files

1.0.17

2 files

1.0.16

2 files

1.0.15

2 files

1.0.14

2 files

1.0.12

2 files

1.0.11

2 files

1.0.10

2 files

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.20.7

2 files

0.20.6

2 files

0.20.5

2 files

0.20.4

2 files

0.20.3

2 files

0.20.2

2 files

0.20.1

2 files

0.20.0

2 files

0.19.10

2 files

0.19.9

2 files

0.19.8

2 files

0.19.7

2 files

0.19.6

2 files

0.19.5

2 files

0.19.4

2 files

0.19.3

2 files

0.19.2

2 files

0.19.0

2 files

0.18.24

2 files

0.18.23

2 files

0.18.22

2 files

0.18.21

2 files

0.18.20

2 files

0.18.19

2 files

0.18.18

2 files

0.18.17

2 files

0.18.16

2 files

0.18.15

2 files

0.18.14

2 files

0.18.13

2 files

0.18.12

2 files

0.18.11

2 files

0.18.10

2 files

0.18.9

2 files

0.18.8

2 files

0.18.7

2 files

0.18.6

2 files

0.18.5

2 files

0.18.4

2 files

0.18.3

2 files

0.18.2

2 files

0.18.1

2 files

0.18.0

2 files

0.17.2

2 files

0.17.1

2 files

0.17.0

2 files

0.16.7

2 files

0.16.6

2 files

0.16.5

2 files

0.16.4

2 files

0.16.3

2 files

0.16.2

2 files

0.16.1

2 files

0.16.0

2 files

0.15.15

2 files

0.15.14

2 files

0.15.13

2 files

0.15.12

2 files

0.15.11

2 files

0.15.10

2 files

0.15.9

2 files

0.15.8

2 files

0.15.7

2 files

0.15.6

2 files

0.15.5

2 files

0.15.4

2 files

0.15.3

2 files

0.15.2

2 files

0.15.1

2 files

0.15.0

2 files

0.14.11

2 files

0.14.10

2 files

0.14.9

2 files

0.14.8

2 files

0.14.7

2 files

0.14.6

2 files

0.14.5

2 files

0.14.4

2 files

0.14.3

2 files

0.14.2

2 files

0.14.1

2 files

0.13.9

2 files

0.13.8

2 files

0.13.7

2 files

0.13.4

2 files

0.13.3

2 files

0.13.2

2 files

0.13.1

2 files

0.13.0

2 files

0.12.10

2 files

0.12.9

2 files

0.12.8

2 files

0.12.7

2 files

0.12.6

2 files

0.12.5

2 files

0.12.4

2 files

0.12.3

2 files

0.12.2

2 files

0.12.1

2 files

0.12.0

2 files

0.11.3

2 files

0.11.2

2 files

0.11.1

2 files

0.11.0

2 files

0.10.2

2 files

0.10.1

2 files

0.9.12

2 files

0.9.11

2 files

0.9.10

2 files

0.9.9

2 files

0.9.8

2 files

0.9.7

2 files

0.9.6

2 files

0.9.5

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.19

2 files

0.7.18

2 files

0.7.17

2 files

0.7.16

2 files

0.7.15

2 files

0.7.14

2 files

0.7.13

2 files

0.7.12

2 files

0.7.11

2 files

0.7.10

2 files

0.7.9

2 files

0.7.8

2 files

0.7.7

2 files

0.7.6

2 files

0.7.5

2 files

0.7.4

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.5

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

0.4.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.18

2 files

0.2.17

2 files

0.2.16

2 files

0.2.15

2 files

0.2.14

2 files

0.2.13

2 files

0.2.12

2 files

0.2.11

2 files

0.2.10

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page