
Orchestrateur modulaire de scan de sécurité qui combine des agents spécialisés pour la détection de vulnérabilités, la reconnaissance et l'empreinte numérique à travers les réseaux, les applications web, les applications mobiles et les API.
[](https://badge.fury.io/py/ostorlab) [](https://pepy.tech/project/ostorlab) [](https://blog.ostorlab.co/) [](https://twitter.com/ostorlabsec) # Moteur d'orchestration de scans OXO OXO est un framework de scan de sécurité conçu pour la modularité, l'évolutivité et la simplicité. Il est open source et maintenu par [Ostorlab](https://ostorlab.co). Le moteur OXO combine des outils spécialisés qui travaillent de manière cohérente pour trouver des vulnérabilités et effectuer des actions telles que la reconnaissance, l'énumération et le fingerprinting. * [Documentation](https://oxo.ostorlab.co/docs) * [Agents Store](https://oxo.ostorlab.co/store) * [Manuel CLI](https://oxo.ostorlab.co/docs/manual) * [Exemples](https://oxo.ostorlab.co/tutorials/examples)  # Fonctionnalités clés * **Modulaire et évolutif** : Combinez facilement plusieurs agents spécialisés pour effectuer des scans complets. * **Prise en charge étendue des actifs** : Scannez tout, des adresses IP et domaines aux applications mobiles (Android, iOS, HarmonyOS) et aux schémas d'API. * **Agent Store** : Accédez à une bibliothèque croissante d'agents communautaires et officiels pour les outils de sécurité populaires. * **Extensible** : Prise en charge intégrée pour créer et publier vos propres agents à l'aide d'un framework Python simple. * **API First** : Dispose d'une API GraphQL pour une intégration facile dans les pipelines CI/CD et autres workflows automatisés. # Prérequis Docker est requis pour exécuter des scans localement. Pour installer Docker, veuillez suivre ces [instructions](https://docs.docker.com/get-docker/). # Installation OXO est distribué sous forme de package Python sur PyPI. Pour l'installer, exécutez simplement la commande suivante si vous avez déjà `pip` installé. ```shell pip install -U ostorlab ``` # Démarrage OXO est livré avec un store qui compte des dizaines d'agents, allant des agents de scan réseau comme Nmap, Nuclei ou Tsunami, aux scanners web comme ZAP, aux outils de fingerprinting web comme WhatWeb et Wappalyzer, aux outils de brute-force DNS comme Subfinder et Dnsx, au scan de fichiers malveillants comme VirusTotal, et bien plus encore. Pour exécuter n'importe lequel de ces outils combinés, exécutez simplement la commande suivante : > La CLI OXO est accessible via les commandes `oxo` ou `ostorlab`. ```shell oxo scan run --install --agent agent/ostorlab/nmap --agent agent/ostorlab/tsunami --agent agent/ostorlab/nuclei ip 8.8.8.8 ``` Cette commande téléchargera et installera les agents de scan suivants : * [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) Elle scannera l'adresse IP cible `8.8.8.8`. Les agents sont livrés sous forme d'images Docker standard. # Gestion des scans Pour vérifier l'état du scan, exécutez : ```shell oxo scan list ``` Une fois le scan terminé, pour accéder aux résultats du scan, exécutez : ```shell oxo vulnz list --scan-id <scan-id> oxo vulnz describe --vuln-id <vuln-id> ``` Pour arrêter un scan en cours, exécutez : ```shell oxo scan stop --scan-id <scan-id> ``` # Image Docker Pour exécuter `oxo` dans un conteneur, vous pouvez utiliser l'image publiquement disponible et exécuter la commande suivante : ```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 ``` Remarques : * La commande commence directement par : `scan run`, car l'image `ostorlab/oxo` a `oxo` comme `entrypoint`. * Il est important de monter le socket Docker afin qu'OXO puisse créer des agents sur la machine hôte. # Journaux du scanner on-prem Lors de l'exécution d'OXO en tant que scanner on-prem, utilisez `--persist-logs` pour écrire les journaux du scanner sur le disque : ```shell oxo scanner --scanner-id <scanner-uuid> --persist-logs ``` Par défaut, les journaux sont écrits dans `~/.ostorlab/scanner.log`. Pour choisir un autre fichier : ```shell oxo scanner --scanner-id <scanner-uuid> --persist-logs --log-file /var/log/ostorlab/scanner.log ``` Pour modifier la verbosité des journaux persistés : ```shell oxo scanner --scanner-id <scanner-uuid> --persist-logs --log-level DEBUG ``` # Actifs OXO prend en charge le scan de plusieurs types d'actifs, permettant une couverture de sécurité complète sur différentes plateformes et protocoles. | Catégorie | Actif | Description | |----------|-------|-------------| | **Réseau** | `ip` | Adresse IP ou plage d'adresses IP (v4 et v6). | | | `domain-name` | Nom de domaine. | | **Web** | `link` | Lien web, acceptant une URL, une méthode, des en-têtes et un corps de requête. | | | `api-schema` | Schéma d'API (OpenAPI, GraphQL, etc.). | | **Mobile** | `android-apk` / `android-aab` | Fichiers de package Android (.APK, .AAB). | | | `android-store` | Application Android dans le Google Play Store. | | | `ios-ipa` | Fichier de package iOS (.IPA). | | | `ios-store` | Application iOS dans l'Apple App Store. | | | `ios-testflight` | Application iOS dans TestFlight. | | | `harmonyos-apk` / `harmonyos-hap` | Fichiers de package HarmonyOS. | | **Autre** | `file` | Fichier générique. | | | `phone-number` | Numéro de téléphone. | | | `agent` | Méta-scan d'un agent. | # Le Store OXO répertorie tous les agents sur un store public où vous pouvez rechercher et également publier vos propres agents.  # Publier votre premier agent Pour écrire votre premier agent, vous pouvez consulter un tutoriel complet [ici](https://oxo.ostorlab.co/tutorials/write_an_agent). Les étapes sont essentiellement les suivantes : * Clonez un agent modèle avec tous les fichiers déjà configurés. * Modifiez le fichier `template_agent.py` pour ajouter votre logique. * Modifiez le `Dockerfile` en ajoutant les étapes de build supplémentaires nécessaires. * Modifiez le `ostorlab.yaml` en ajoutant les sélecteurs, la documentation, l'image et la licence. * Publiez-le sur le store. Une fois votre agent écrit, vous pouvez le publier sur le store pour que d'autres puissent l'utiliser et le découvrir. Le store gérera la construction de l'agent et récupérera automatiquement les nouvelles versions depuis votre dépôt Git.  ## Idées d'agents à construire Implémentations d'outils populaires tels que : * ~~[semgrep](https://github.com/returntocorp/semgrep) pour le scan de code source.~~ * [nbtscan](http://www.unixwiz.net/tools/nbtscan.html) : Scanne les serveurs de noms NetBIOS ouverts sur le réseau de votre cible. * [onesixtyone](https://github.com/trailofbits/onesixtyone) : Scanner rapide pour trouver des services SNMP exposés publiquement. * [Retire.js](http://retirejs.github.io/retire.js/) : Scanner détectant l'utilisation de bibliothèques JavaScript présentant des vulnérabilités connues. * ~~[snallygaster](https://github.com/hannob/snallygaster) : Détecte les fuites de fichiers et autres problèmes de sécurité sur les serveurs HTTP.~~ * ~~[testssl.sh](https://testssl.sh/) : Identifie diverses faiblesses TLS/SSL, notamment Heartbleed, CRIME et ROBOT.~~ * ~~[TruffleHog](https://github.com/trufflesecurity/truffleHog) : Recherche dans les dépôts Git les chaînes à haute entropie~~ et les secrets, en creusant profondément dans l'historique des commits. * [cve-bin-tool](https://github.com/intel/cve-bin-tool) : Scanne les binaires à la recherche de composants vulnérables. * [XSStrike](https://github.com/s0md3v/XSStrike) : Scanner de vulnérabilités web XSS avec génération de payloads. * ~~[Subjack](https://github.com/haccer/subjack) : Outil de scan de prise de contrôle de sous-domaines.~~ * [DnsReaper](https://github.com/punk-security/dnsReaper) : Outil de scan de prise de contrôle de sous-domaines. * [Gitleaks](https://github.com/gitleaks/gitleaks) : Outil SAST pour détecter et prévenir les secrets codés en dur. * [ffuf](https://github.com/ffuf/ffuf) : Fuzzer web rapide écrit en Go. * [Gobuster](https://github.com/OJ/gobuster) : Outil utilisé pour le brute-force d'URI, de sous-domaines DNS, et plus encore. ## Crédits En tant que projet open source dans un domaine en évolution rapide, nous sommes toujours ouverts aux contributions, qu'il s'agisse d'une nouvelle fonctionnalité, d'une infrastructure améliorée ou d'une meilleure documentation. Consultez [CONTRIBUTING.md](https://github.com/ostorlab/oxo/blob/main/CONTRIBUTING.md) pour commencer. Nous tenons à remercier les contributeurs suivants pour leur aide à faire d'OXO un meilleur outil : * [@jamu85](https://github.com/jamu85) * [@ju-c](https://github.com/ju-c) * [@distortedsignal](https://github.com/distortedsignal)