ScopeSentry Documentation
repository·main·Indexed 23 days ago
https://github.com/autumn-27/scopesentryA distributed security scanning platform for asset mapping, subdomain enumeration, vulnerability scanning, and information leakage detection. It features a multi-node architecture, a plugin system for extensibility, and a CTWatcherSDK for Certificate Transparency log monitoring. The platform supports asset management, directory scanning, web crawling, and integrates with MongoDB and Redis for data persistence.
What's inside ScopeSentry
- Draco is an open-source library designed for compressing and decompressing 3D geometric meshes and point clouds. Its primary purpose is to optimize the storage and transmission of 3D graphics data.
Overview of ScopeSentry features
mainScopeSentry is a distributed security tool designed for asset mapping and vulnerability management. Key capabilities include:
- Asset Management: Subdomain enumeration, subdomain takeover detection, port scanning, asset identification, and asset grouping.
- Scanning & Detection: Directory scanning, vulnerability scanning, sensitive information leakage detection, and POC import.
- Monitoring & Crawling: URL extraction, web crawling, and page monitoring.
- Extensibility: A plugin system that allows adding new tools via extensions and custom web fingerprints.
ScopeSentry Core Features Overview
mainScopeSentry is a distributed asset mapping and security scanning tool. Key capabilities include:
- Asset Mapping: Subdomain enumeration, subdomain takeover detection, port scanning, and asset identification.
- Scanning & Detection: Directory scanning, vulnerability scanning, sensitive information leak detection (including PDF support), and POC import.
- Automation: ICP/APP/Mini-program automated collection, crawler, and page monitoring.
- Extensibility: A plugin system to integrate any external tool.
- Management: Asset grouping, multi-node scanning, webhook support, and data export.
Best Practice: Two-stage scanning for Root Domains
mainWhen performing full information collection on root domains, do not run a single massive pipeline. Because tasks are distributed by target, a single node handling a root domain will also handle all its discovered subdomains, leading to uneven load and potential errors.
Recommended Workflow:
Stage 1: Subdomain Collection
targetSource:generaltarget: Your list of root domains.- Template: Use a template containing only
SubdomainScanandSubdomainSecurity. - Wait for completion using
get_task.
Stage 2: Subsequent Modules
targetSource:subdomainsearch:task=="<Stage 1 Task Name>"(exact match).- Template: Use templates for port scanning, asset mapping, or vulnerability scanning (exclude
SubdomainScan).
This approach allows subdomains to be distributed as independent targets across all available nodes, significantly increasing parallel efficiency.
Draco decoder file variations
mainThe Draco utilities consist of three main files, provided in two different build variations depending on your requirements:
Files
draco_decoder.js: An Emscripten-compiled decoder compatible with any modern browser.draco_decoder.wasm: A WebAssembly decoder for newer browsers and devices.draco_wasm_wrapper.js: A JavaScript wrapper used to interface with the WASM decoder.
Build Variations
- Default: Latest stable builds tracking the Draco
masterbranch. - glTF: Builds specifically targeted by the glTF mesh compression extension, tracking the
gltf_2.0_draco_extensionbranch.
Use the search DSL for custom queries
mainThe
searchparameter uses a custom Domain Specific Language (DSL), not SQL.Operators:
==: Exact match (Uses Index)^: Prefix match (e.g.,domain=^example.com) (Uses Index)=: Fuzzy/Regex match (Does NOT use index)!=: Exclusion&&: Logical AND||: Logical OR
Common Search Fields by Type:
asset:domain,ip,port,service,app,title,statuscode,icon,banner,type,body,headervulnerability:url,vulname,matched,request,response,levelDirScanResult:url,statuscode,redirect,lengthsubdomain:domain,ip,type,value- Universal Fields:
tag,task(task name),rootDomain
domain==www.example.com && port==443 domain=^example.com level==high statuscode==200Retrieve initial user password and 2FA code
mainAfter running the single-host deployment, you must check the container logs to find the initial user password and the plugin two-factor authentication (2FA) password.
docker logs scope-sentryAdd new scanning nodes
mainScopeSentry supports a distributed architecture where you can add multiple scanning nodes. To add a new node, clone the
ScopeSentry-Scanrepository and use its specific docker-compose file.Configuration Steps:
- Clone
ScopeSentry-Scan. - Navigate to the
builddirectory. - Edit the
.envfile to provide connection information for your existing MongoDB and Redis instances. - Set a unique
NodeNamein the.envfile. If left empty, a name will be randomly generated (though you can change it later in the web interface). - Run the node using
scan-docker-compose.yml.
git clone https://github.com/Autumn-27/ScopeSentry-Scan.git cd ScopeSentry-Scan/build # Edit the connection information for MongoDB and Redis in the .env file. # NodeName is the node name, and each node name should be unique. docker-compose -f scan-docker-compose.yml up -d- Clone
Install ScopeSentry via Docker Compose
mainTo deploy a single-host instance of ScopeSentry, clone the repository and use the provided
single-host-deployment.ymlfile. This deployment includes four containers:mongodb,redis,scope-sentry(the server), andscopesentry-scan(the scanning node).Important: Before running, you must edit the
.envfile to change the default MongoDB and Redis account passwords.git clone https://github.com/Autumn-27/ScopeSentry.git cd ScopeSentry # Change the MongoDB and Redis account passwords in the .env file. docker-compose -f single-host-deployment.yml up -dRetrieve initial login credentials
mainAfter the containers are running, you can retrieve the initial user password and the secondary verification password for the plugin by checking the logs of the
scope-sentrycontainer.docker logs scope-sentryCreate a scanning task
mainTo create a scan task using
create_scan_task, you must provide aname, anode(fromlist_nodes), and atemplate(the template ObjectID, not the name).The
targetSourcedetermines where the scan targets are pulled from. Common sources include:general: Direct input via thetargetfield.project: Targets pulled from a project (requiresprojectObjectID array).asset: Targets searched from the asset library (requiressearch).subdomain: Targets searched from the subdomain library (requiressearch).RootDomain: Targets searched from the root domain library (requiressearch).UrlScan: Targets searched from URL scan results (requiressearch).*Source(e.g.,subdomainSource): UsestargetTp=searchwithsearchortargetTp=selectwithtargetIdsto pull from selected/searched assets.
Create a scanning template
mainTo build a custom scanning template via
create_scan_template:- Call
list_plugin_modulesto see available module names. - Call
list_plugins(optionally filtered bymodule) to find the specifichashand defaultparameterfor each plugin. - Use
create_scan_templateby defining themodulesarray, where each entry maps a module to its corresponding pluginhasharray.
- Call