
Бот для мониторинга поверхности атак на базе projectdiscovery, работающий на axiom
Proteus — база данных и API для axiom https://github.com/pry0cc/axiom.
Изначально написано для Сборка ASM-платформы с помощью ProjectDiscovery Tools.
Сначала склонируйте репозиторий
git clone https://github.com/pry0cc/proteus ~/.proteus
cd ~/.proteus
Затем измените config/notify.yaml, чтобы добавить ваш Slack-вебхук.
Перейдите в каталог bin и измените тома в docker-compose.yml, чтобы они соответствовали вашей локальной настройке axiom. Вам нужно заменить /home/op/ на вашу текущую домашнюю директорию $HOME.
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
Вот и всё!
Сохраняйте ваши цели в локальной папке scope ( ~/.proteus/scope/ )
Все флоты уникальны для каждой цели, поэтому данные не пересекаются. Вы можете либо запустить экземпляры и затем запустить сканирование — в этом случае экземпляры останутся после завершения, — либо просто запустить сканирование. Если запустить сканирование без предварительно созданных экземпляров, по умолчанию будет создано 5 экземпляров, которые будут автоматически удалены по завершении.
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>
Клиент выводит данные в виде таблицы. TODO: добавить вывод в JSON или текст.
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>