T1591.003

Identify Business Tempo

Adversaries may gather information about the victim's business tempo that can be used during targeting. Business tempo information includes operational hours, days of the week, purchase and procurement schedules, and hardware/software shipment timings. Adversaries exploit this intelligence to optimize attack timing (e.g., launching intrusions during off-hours when SOC staffing is reduced), target supply chain shipments, or craft convincing spearphishing pretexts referencing internal operational cadences. While the reconnaissance activity itself typically occurs outside the victim environment — via public websites, social media, direct phishing — detectable artifacts emerge when: (1) organization-owned web properties are systematically scraped for operational content, (2) OSINT enumeration tools run on managed endpoints, or (3) phishing lures referencing business tempo arrive in organizational email. Detection confidence is inherently low due to the external and passive nature of this technique.

Microsoft Sentinel / Defender
kusto
let OperationalPageKeywords = dynamic([
  "/contact", "/hours", "/schedule", "/business-hours", "/store-hours",
  "/shipping", "/delivery", "/procurement", "/purchasing", "/supply-chain",
  "/vendor", "/locations", "/about", "/operations", "/logistics",
  "/holiday", "/calendar", "/availability", "/dispatch"
]);
let BotUserAgents = dynamic([
  "python-requests", "scrapy", "curl/", "wget/", "libwww",
  "mechanize", "httplib", "go-http-client", "java/", "okhttp",
  "python-urllib", "aiohttp", "httpx", "requests", "axios",
  "playwright", "puppeteer", "selenium"
]);
let LegitCrawlers = dynamic([
  "Googlebot", "Bingbot", "Slurp", "DuckDuckBot", "Baiduspider",
  "YandexBot", "Sogou", "facebookexternalhit", "LinkedInBot",
  "Twitterbot", "Applebot", "AhrefsBot", "SemrushBot"
]);
CommonSecurityLog
| where TimeGenerated > ago(24h)
| where DeviceVendor in ("Palo Alto Networks", "Fortinet", "Cisco", "Zscaler", "Akamai", "Imperva", "F5", "Cloudflare")
| where RequestURL has_any (OperationalPageKeywords)
| where not (RequestClientApplication has_any (LegitCrawlers))
| where RequestClientApplication has_any (BotUserAgents)
    or isempty(RequestClientApplication)
    or not (RequestClientApplication has_any ("Mozilla", "Chrome", "Safari", "Edge", "Firefox"))
| extend IsEmptyUA = isempty(RequestClientApplication)
| extend IsBotUA = RequestClientApplication has_any (BotUserAgents)
| summarize
    RequestCount = count(),
    UniquePages = dcount(RequestURL),
    SampledURLs = make_set(RequestURL, 15),
    Earliest = min(TimeGenerated),
    Latest = max(TimeGenerated),
    DurationMinutes = datetime_diff('minute', max(TimeGenerated), min(TimeGenerated))
    by SourceIP, RequestClientApplication, DeviceName, IsEmptyUA, IsBotUA
| where RequestCount > 8 or UniquePages > 4
| extend PagesPerMinute = iff(DurationMinutes > 0, toreal(RequestCount) / toreal(DurationMinutes), toreal(RequestCount))
| sort by RequestCount desc
low severity low confidence

Data Sources

Network Traffic: Network Traffic Content Application Log: Application Log Content WAF / Web Proxy CommonSecurityLog

Required Tables

CommonSecurityLog

False Positives

  • Legitimate SEO auditing tools (Ahrefs, Semrush, Screaming Frog) run by the organization's own marketing team against their own web properties
  • Internal web monitoring or uptime services (Pingdom, UptimeRobot, StatusCake) that periodically fetch operational pages to verify availability
  • Academic or business intelligence web scrapers conducting market research unrelated to adversarial reconnaissance
  • Procurement and vendor management platforms (Coupa, SAP Ariba) that crawl supplier websites to gather operational data for supply chain management
  • Load testing and performance testing tools (JMeter, Locust, k6) running against web properties during authorized capacity testing

Unlock Pro Content

Get the full detection package for T1591.003 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections