Assets Discovery
Perform a discovery search to identify potential compromises.
Assets Discovery Guide
Endpoint:
/search-by-domain/discovery
Required Permissions:
search-by-domain
Overview
The Assets Discovery endpoint helps you identify and monitor potential compromises across your domains. It provides detailed insights into compromised URLs, their frequency, and the types of compromises (employee or user) affecting your digital assets.
Use Cases
- Discover compromised corporate assets
- Monitor shadow IT and unknown applications
- Track employee and user exposure across domains
- Identify high-risk applications and services
- Map your organization's digital footprint
Request Format
{
"domains": [
"tesla.com",
"teslamotors.net"
],
"types": [
"employees",
"users"
],
"keywords": [
"sso",
"oauth2"
],
"keywords_match": "any",
"cursor": "base64_encoded_cursor"
}
Request Parameters Explained
domains
: List of domains to analyze (required, max 500)types
: Filter by compromise type (employees/users)keywords
: Search for specific URL patternskeywords_match
: Match 'any' or 'all' keywordscursor
: Pagination token for large result sets
Understanding the Response
Each discovery result contains:
{
"data": [
{
"_id": "6385de3f6dcd5e5341f8dcff",
"url": "https://sso.tesla.com/adfs/ls",
"domain": "tesla.com",
"type": "employee",
"last_uploaded_date": "2025-01-15T23:43:40.481Z",
"occurrence": 174
}
],
"nextCursor": "base64_encoded_next_cursor" || null // null if no more results
}
Response Fields
_id
: Internal unique identifier used for paginationurl
: The complete URL where compromise occurreddomain
: Associated root domaintype
: Compromise type (employee/user)last_uploaded_date
: Most recent compromise dateoccurrence
: Number of times this URL was compromisednextCursor
: Token for fetching next page of results (based onoccurrence
+_id
combo)
Best Practices
1. Domain Management
- Start with your primary domains
- Include subdomains and related domains
- Consider regional domains
- Monitor acquired company domains
2. Type Filtering
employees
: Focus on corporate credential exposureusers
: Track customer/external user compromises- Use both types for comprehensive monitoring
3. Keyword Strategy
{
"keywords": [
"admin",
"portal",
"auth",
"login"
],
"keywords_match": "any"
}
- Target critical systems
- Include common application paths
- Consider multiple languages
- Use
all
for specific combinations
4. Pagination
- Use cursor-based pagination for large datasets
- Store cursors for continuous monitoring
- Implement retry logic for timeouts
Common Search Patterns
1. Critical Infrastructure Discovery
{
"domains": [
"example.com"
],
"keywords": [
"vpn",
"admin",
"remote",
"gateway"
],
"keywords_match": "any"
}
2. Employee Access Monitoring
{
"domains": [
"example.com"
],
"types": [
"employees"
],
"keywords": [
"mail",
"collaboration",
"docs"
],
"keywords_match": "any"
}
3. Customer Portal Security
{
"domains": [
"example.com"
],
"types": [
"users"
],
"keywords": [
"account",
"portal",
"login"
],
"keywords_match": "any"
}
Risk Assessment Framework
High Risk Indicators
- High occurrence counts
- Critical system URLs
- Admin/management interfaces
- Recent upload dates
- Multiple compromise types
Medium Risk Indicators
- Moderate occurrence counts
- Non-critical business applications
- Older upload dates
- Single compromise type
Low Risk Indicators
- Low occurrence counts
- Public-facing content
- Old upload dates
- Infrequent appearances
Implementation Strategy
1. Initial Discovery
- List all known domains
- Run broad search without keywords
- Analyze results for patterns
- Identify unknown assets
2) Continuous Monitoring
- Schedule regular scans
- Track new appearances
- Monitor occurrence changes
- Set up alerts for critical assets
3) Incident Response Integration
- Automate discovery checks
- Feed results to SIEM
- Create incident tickets
- Track remediation progress
Error Handling
- 400: Validate domain format and count
- 403: Check API key permissions
- 408: Implement backoff strategy
- 500: Retry with smaller scope
Performance Optimization
- Batch domain requests
- Cache frequent searches
- Implement rate limiting
- Use pagination for large results
Security Considerations
- Secure API credentials
- Limit access to results
- Encrypt stored data
- Audit search patterns
Integration Examples
Continuous Monitoring Script
async def monitor_domains(domains):
cursor = None
while True:
try:
response = await discovery_search(
domains=domains,
cursor=cursor
)
process_results(response.data)
cursor = response.nextCursor
if not cursor:
break
except TimeoutError:
await asyncio.sleep(5)
Alert Integration
def analyze_discovery(results):
for item in results:
if item['occurrence'] > THRESHOLD:
alert_security_team(item)
if is_critical_asset(item['url']):
create_incident_ticket(item)
Reporting Tips
- Group findings by domain
- Track occurrence trends
- Highlight critical assets
- Monitor type distribution
- Calculate risk scores
Updated 18 days ago