
Orchestratore modulare di scansione della sicurezza che combina agenti specializzati per il rilevamento delle vulnerabilità, la ricognizione e l'impronta digitale su reti, applicazioni web, app mobili e API.
[](https://badge.fury.io/py/ostorlab) [](https://pepy.tech/project/ostorlab) [](https://blog.ostorlab.co/) [](https://twitter.com/ostorlabsec) # OXO Scan Orchestration Engine OXO è un framework di scansione di sicurezza progettato per modularità, scalabilità e semplicità. È open source ed è mantenuto da [Ostorlab](https://ostorlab.co). OXO Engine combina strumenti specializzati affinché lavorino in modo coeso per individuare vulnerabilità ed eseguire azioni come recon, enumerazione e fingerprinting. * [Documentazione](https://oxo.ostorlab.co/docs) * [Agents Store](https://oxo.ostorlab.co/store) * [Manuale CLI](https://oxo.ostorlab.co/docs/manual) * [Esempi](https://oxo.ostorlab.co/tutorials/examples)  # Caratteristiche principali * **Modulare e scalabile**: combina facilmente più agenti specializzati per eseguire scansioni complete. * **Ampio supporto di asset**: scansiona qualsiasi cosa, dagli indirizzi IP e domini alle applicazioni mobile (Android, iOS, HarmonyOS) e agli schemi API. * **Agent Store**: accedi a una libreria in crescita di agenti della community e ufficiali per i più diffusi strumenti di sicurezza. * **Estensibile**: supporto integrato per creare e pubblicare i tuoi agenti usando un semplice framework basato su Python. * **API First**: dispone di un'API GraphQL per una facile integrazione in pipeline CI/CD e altri flussi di lavoro automatizzati. # Requisiti Docker è necessario per eseguire le scansioni in locale. Per installare Docker, segui queste [istruzioni](https://docs.docker.com/get-docker/). # Installazione OXO viene distribuito come pacchetto Python su PyPI. Per installarlo, esegui semplicemente il seguente comando se hai già `pip` installato. ```shell pip install -U ostorlab ``` # Per iniziare OXO viene fornito con uno store che vanta decine di agenti, da agenti di scansione di rete come Nmap, Nuclei o Tsunami, scanner web come ZAP, strumenti di web fingerprinting come WhatWeb e Wappalyzer, strumenti di DNS brute-forcing come Subfinder e Dnsx, scansione di file malware come VirusTotal e molto altro. Per eseguire tutti questi strumenti combinati, esegui semplicemente il seguente comando: > La CLI di OXO è accessibile usando i comandi `oxo` o `ostorlab`. ```shell oxo scan run --install --agent agent/ostorlab/nmap --agent agent/ostorlab/tsunami --agent agent/ostorlab/nuclei ip 8.8.8.8 ``` Questo comando scaricherà e installerà i seguenti agenti di scansione: * [agent/ostorlab/nmap](https://oxo.ostorlab.co/store/agent/ostorlab/nmap) * [agent/ostorlab/tsunami](https://oxo.ostorlab.co/store/agent/ostorlab/tsunami) * [agent/ostorlab/nuclei](https://oxo.ostorlab.co/store/agent/ostorlab/nuclei) Scansionerà l'indirizzo IP di destinazione `8.8.8.8`. Gli agenti sono distribuiti come immagini Docker standard. # Gestione delle scansioni Per controllare lo stato della scansione, esegui: ```shell oxo scan list ``` Una volta completata la scansione, per accedere ai risultati, esegui: ```shell oxo vulnz list --scan-id <scan-id> oxo vulnz describe --vuln-id <vuln-id> ``` Per interrompere una scansione in esecuzione, esegui: ```shell oxo scan stop --scan-id <scan-id> ``` # Immagine Docker Per eseguire `oxo` in un container, puoi usare l'immagine pubblicamente disponibile ed eseguire il seguente comando: ```shell 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 ``` Note: * Il comando inizia direttamente con: `scan run`, questo perché l'immagine `ostorlab/oxo` ha `oxo` come `entrypoint`. * È importante montare il socket Docker affinché OXO possa creare agenti sulla macchina host. # Log dello scanner on-prem Quando esegui OXO come scanner on-prem, usa `--persist-logs` per scrivere i log dello scanner su disco: ```shell oxo scanner --scanner-id <scanner-uuid> --persist-logs ``` Per impostazione predefinita, i log vengono scritti in `~/.ostorlab/scanner.log`. Per scegliere un altro file: ```shell oxo scanner --scanner-id <scanner-uuid> --persist-logs --log-file /var/log/ostorlab/scanner.log ``` Per cambiare la verbosità dei log persistiti: ```shell oxo scanner --scanner-id <scanner-uuid> --persist-logs --log-level DEBUG ``` # Asset OXO supporta la scansione di più tipi di asset, consentendo una copertura di sicurezza completa su diverse piattaforme e protocolli. | Categoria | Asset | Descrizione | |----------|-------|-------------| | **Rete** | `ip` | Indirizzo IP o intervallo IP (v4 e v6). | | | `domain-name` | Nome di dominio. | | **Web** | `link` | Link web, che accetta URL, metodo, header e corpo della richiesta. | | | `api-schema` | Schema API (OpenAPI, GraphQL, ecc.). | | **Mobile** | `android-apk` / `android-aab` | File di pacchetto Android (.APK, .AAB). | | | `android-store` | App Android nel Google Play Store. | | | `ios-ipa` | File di pacchetto iOS (.IPA). | | | `ios-store` | App iOS nell'Apple App Store. | | | `ios-testflight` | App iOS in TestFlight. | | | `harmonyos-apk` / `harmonyos-hap` | File di pacchetto HarmonyOS. | | **Altro** | `file` | File generico. | | | `phone-number` | Numero di telefono. | | | `agent` | Meta-scansione di un agente. | # Lo Store OXO elenca tutti gli agenti su uno store pubblico dove puoi cercare e anche pubblicare i tuoi agenti.  # Pubblica il tuo primo agente Per scrivere il tuo primo agente, puoi consultare un tutorial completo [qui](https://oxo.ostorlab.co/tutorials/write_an_agent). I passaggi sono sostanzialmente i seguenti: * Clona un agente template con tutti i file già configurati. * Modifica il file `template_agent.py` per aggiungere la tua logica. * Modifica il `Dockerfile` aggiungendo eventuali passaggi di build extra. * Modifica il file `ostorlab.yaml` aggiungendo selettori, documentazione, immagine e licenza. * Pubblicalo sullo store. Una volta scritto il tuo agente, puoi pubblicarlo sullo store affinché altri possano usarlo e scoprirlo. Lo store gestirà la build dell'agente e rileverà automaticamente le nuove release dal tuo repository Git.  ## Idee di agenti da sviluppare Implementazioni di strumenti popolari come: * ~~[semgrep](https://github.com/returntocorp/semgrep) per la scansione del codice sorgente.~~ * [nbtscan](http://www.unixwiz.net/tools/nbtscan.html): scansiona la rete del target alla ricerca di server di nomi NetBIOS aperti. * [onesixtyone](https://github.com/trailofbits/onesixtyone): scanner veloce per trovare servizi SNMP esposti pubblicamente. * [Retire.js](http://retirejs.github.io/retire.js/): scanner che rileva l'uso di librerie JavaScript con vulnerabilità note. * ~~[snallygaster](https://github.com/hannob/snallygaster): trova fughe di file e altri problemi di sicurezza sui server HTTP.~~ * ~~[testssl.sh](https://testssl.sh/): identifica varie debolezze TLS/SSL, tra cui Heartbleed, CRIME e ROBOT.~~ * ~~[TruffleHog](https://github.com/trufflesecurity/truffleHog): cerca nei repository Git stringhe ad alta entropia~~ e segreti, scavando in profondità nella cronologia dei commit. * [cve-bin-tool](https://github.com/intel/cve-bin-tool): scansiona i binari alla ricerca di componenti vulnerabili. * [XSStrike](https://github.com/s0md3v/XSStrike): scanner di vulnerabilità web XSS con payload generativo. * ~~[Subjack](https://github.com/haccer/subjack): strumento di scansione per subdomain takeover.~~ * [DnsReaper](https://github.com/punk-security/dnsReaper): strumento di scansione per subdomain takeover. * [Gitleaks](https://github.com/gitleaks/gitleaks): strumento SAST per rilevare e prevenire segreti hardcoded. * [ffuf](https://github.com/ffuf/ffuf): web fuzzer veloce scritto in Go. * [Gobuster](https://github.com/OJ/gobuster): strumento usato per brute-forzare URI, sottodomini DNS e altro. ## Crediti In quanto progetto open source in un campo in rapido sviluppo, siamo sempre aperti a contributi, che si tratti di una nuova funzionalità, di un'infrastruttura migliorata o di una documentazione migliore. Consulta [CONTRIBUTING.md](https://github.com/ostorlab/oxo/blob/main/CONTRIBUTING.md) per iniziare. Vorremmo ringraziare i seguenti contributori per il loro aiuto nel rendere OXO uno strumento migliore: * [@jamu85](https://github.com/jamu85) * [@ju-c](https://github.com/ju-c) * [@distortedsignal](https://github.com/distortedsignal)