
Un bot de surveillance de surface d'attaque piloté par projectdiscovery et propulsé par axiom
Proteus - La base de données et l'API d'axiom https://github.com/pry0cc/axiom.
À l'origine, écrit pour Hacking Together an ASM Platform Using ProjectDiscovery Tools.
Tout d'abord, clonez le dépôt
git clone https://github.com/pry0cc/proteus ~/.proteus
cd ~/.proteus
Ensuite, modifiez config/notify.yaml pour y inclure votre webhook Slack.
Accédez au répertoire bin et modifiez les volumes du fichier docker-compose.yml afin qu'ils correspondent à votre configuration axiom locale. Vous devrez remplacer /home/op/ par votre répertoire $HOME actuel.
services:
redis:
image: redis
mongo:
image: mongo
worker:
image: proteus/worker
build:
context: bin/worker/
volumes:
- /home/op/.axiom/accounts/personal.json:/root/.axiom/accounts/default.json # map your account here
- /home/op/.axiom/modules:/root/.axiom/modules # map modules
- /home/op/.ssh:/root/.ssh # map SSH
- /home/op/.proteus:/app # map proteus folder to the app (for persistence of data like rawdata & scans), not 100% necessary but nice to have.
cd bin/
sudo docker compose build
sudo docker compose up
C'est tout !
Stockez vos cibles dans le dossier scope local ( ~/.proteus/scope/ )
Toutes les flottes sont uniques pour chaque cible, il n'y a donc aucun croisement de données. Vous pouvez soit démarrer des instances puis lancer des scans, auquel cas les instances seront conservées, soit simplement lancer des scans. Si vous lancez un scan sans qu'aucune instance ne soit présente, 5 instances seront démarrées par défaut puis automatiquement supprimées à la fin.
curl -s http://127.0.0.1:80/api/<target>/launch_scan
curl -s http://127.0.0.1:80/api/<target>/launch_scan?spinup=8
curl -s http://127.0.0.1:80/api/<target>/launch_scan?spinup=8&module=asm
curl -s http://127.0.0.1:80/api/<target>/spinup?instances=15 # spin up instances for a target
curl -s http://127.0.0.1:80/api/<target>/scans
curl -s http://127.0.0.1:80/api/<target>/<datatype>
curl -s http://127.0.0.1:80/api/<target>/dnsx
curl -s http://127.0.0.1:80/api/<target>/http
curl -s http://127.0.0.1:80/api/<target>/subs
curl -s http://127.0.0.1:80/api/<target>/nuclei
curl -s http://127.0.0.1:80/api/<target>/<datatype>?scan_id=<scan_id>
Le client présente les données sous forme de tableau, à faire : ajouter une sortie JSON ou texte.
pip3 install -r bin/client/requirements.txt
bin/client/client.py --target <target> --type http
bin/client/client.py --target <target> --type dns
bin/client/client.py --target <target> --type host
bin/client/client.py --target <target> --type scans
bin/client/client.py --target <target> --type scans --scanid <scan_id>