Detection rules › Kusto

Tomcat - Known malicious user agent

Status
available
Severity
high
Time window
1h
Source
github.com/Azure/Azure-Sentinel

'Detects known malicious user agents'

MITRE ATT&CK coverage

Rule body kusto

id: 5e77a818-5825-4ff6-a901-80891c4774d1
name: Tomcat - Known malicious user agent
description: |
  'Detects known malicious user agents'
severity: High
status: Available
requiredDataConnectors:
  - connectorId: CustomLogsAma
    datatypes:
      - Tomcat_CL
queryFrequency: 1h
queryPeriod: 1h
triggerOperator: gt
triggerThreshold: 0
tactics:
  - InitialAccess
relevantTechniques:
  - T1190
  - T1133
query: |
  let malicious_ua = dynamic(['Nikto', 'hydra', '.nasl', 'absinthe', 'advanced email extractor', 'arachni', 'autogetcontent', 'bilbo', 'BFAC', 'brutus', 'brutus/aet', 'bsqlbf', 'cgichk', 'cisco-torch', 'commix', 'core-project', 'crimscanner', 'datacha0s', 'dirbuster', 'domino hunter', 'dotdotpwn', 'email extractor', 'fhscan core', 'floodgate', 'get-minimal', 'gootkit auto-rooter scanner', 'grabber', 'grendel-scan', 'havij', 'inspath', 'internet ninja', 'jaascois', 'zmeu', 'masscan', 'metis', 'morfeus', 'mysqloit', 'n-stealth', 'nessus', 'netsparker', 'nmap nse', 'nmap scripting engine', 'nmap-nse', 'nsauditor', 'openvas', 'pangolin', 'paros', 'pmafind', 'prog.customcrawler', 'qualys was', 's.t.a.l.k.e.r.', 'security scan', 'springenwerk', 'sql power injector', 'sqlmap', 'sqlninja', 'teh forest lobster', 'this is an exploit', 'toata dragostea', 'toata dragostea mea pentru diavola', 'uil2pn', 'vega', 'voideye', 'w3af.sf.net', 'w3af.sourceforge.net', 'w3af.org', 'webbandit', 'webinspect', 'webshag', 'webtrends security analyzer', 'webvulnscan', 'whatweb', 'whcc', 'wordpress hash grabber', 'xmlrpc exploit', 'WPScan', 'XSpider', 'SF/', 'FooBar/42', 'ScanAlert', 'Webscanner', 'Webster', 'fantomCrew', 'fantomBrowser', 'visvo', 'magereport', 'ltx71', 'websiteprotection', 'BigCliqueBOT', 'BOT for JCE']);
  TomcatEvent
  | where HttpUserAgentOriginal has_any (malicious_ua)
  | extend MalwareCustomEntity = HttpUserAgentOriginal
entityMappings:
  - entityType: Malware
    fieldMappings:
      - identifier: Name
        columnName: MalwareCustomEntity
version: 1.0.2
kind: Scheduled

Stages and Predicates

Let binding: malicious_ua

let malicious_ua = dynamic(['Nikto', 'hydra', '.nasl', 'absinthe', 'advanced email extractor', 'arachni', 'autogetcontent', 'bilbo', 'BFAC', 'brutus', 'brutus/aet', 'bsqlbf', 'cgichk', 'cisco-torch', 'commix', 'core-project', 'crimscanner', 'datacha0s', 'dirbuster', 'domino hunter', 'dotdotpwn', 'email extractor', 'fhscan core', 'floodgate', 'get-minimal', 'gootkit auto-rooter scanner', 'grabber', 'grendel-scan', 'havij', 'inspath', 'internet ninja', 'jaascois', 'zmeu', 'masscan', 'metis', 'morfeus', 'mysqloit', 'n-stealth', 'nessus', 'netsparker', 'nmap nse', 'nmap scripting engine', 'nmap-nse', 'nsauditor', 'openvas', 'pangolin', 'paros', 'pmafind', 'prog.customcrawler', 'qualys was', 's.t.a.l.k.e.r.', 'security scan', 'springenwerk', 'sql power injector', 'sqlmap', 'sqlninja', 'teh forest lobster', 'this is an exploit', 'toata dragostea', 'toata dragostea mea pentru diavola', 'uil2pn', 'vega', 'voideye', 'w3af.sf.net', 'w3af.sourceforge.net', 'w3af.org', 'webbandit', 'webinspect', 'webshag', 'webtrends security analyzer', 'webvulnscan', 'whatweb', 'whcc', 'wordpress hash grabber', 'xmlrpc exploit', 'WPScan', 'XSpider', 'SF/', 'FooBar/42', 'ScanAlert', 'Webscanner', 'Webster', 'fantomCrew', 'fantomBrowser', 'visvo', 'magereport', 'ltx71', 'websiteprotection', 'BigCliqueBOT', 'BOT for JCE']);

Stage 1: source

TomcatEvent

Stage 2: where

| where HttpUserAgentOriginal has_any (malicious_ua)

References malicious_ua (defined above).

Stage 3: extend

| extend MalwareCustomEntity = HttpUserAgentOriginal

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
HttpUserAgentOriginalmatch
  • .nasl
  • BFAC
  • BOT for JCE
  • BigCliqueBOT
  • FooBar/42
  • Nikto
  • SF/
  • ScanAlert
  • WPScan
  • Webscanner
  • Webster
  • XSpider
  • absinthe
  • advanced email extractor
  • arachni
  • autogetcontent
  • bilbo
  • brutus
  • brutus/aet
  • bsqlbf
  • cgichk
  • cisco-torch
  • commix
  • core-project
  • crimscanner
  • datacha0s
  • dirbuster
  • domino hunter
  • dotdotpwn
  • email extractor
  • fantomBrowser
  • fantomCrew
  • fhscan core
  • floodgate
  • get-minimal
  • gootkit auto-rooter scanner
  • grabber
  • grendel-scan
  • havij
  • hydra
  • inspath
  • internet ninja
  • jaascois
  • ltx71
  • magereport
  • masscan
  • metis
  • morfeus
  • mysqloit
  • n-stealth
  • nessus
  • netsparker
  • nmap nse
  • nmap scripting engine
  • nmap-nse
  • nsauditor
  • openvas
  • pangolin
  • paros
  • pmafind
  • prog.customcrawler
  • qualys was
  • s.t.a.l.k.e.r.
  • security scan
  • springenwerk
  • sql power injector
  • sqlmap
  • sqlninja
  • teh forest lobster
  • this is an exploit
  • toata dragostea
  • toata dragostea mea pentru diavola
  • uil2pn
  • vega
  • visvo
  • voideye
  • w3af.org
  • w3af.sf.net
  • w3af.sourceforge.net
  • webbandit
  • webinspect
  • webshag
  • websiteprotection
  • webtrends security analyzer
  • webvulnscan
  • whatweb
  • whcc
  • wordpress hash grabber
  • xmlrpc exploit
  • zmeu

Output fields

Fields the rule emits when it matches. Chronicle authors list these in the outcome block; they appear on the detection and $risk_score drives alerting. Sentinel / Defender XDR rules build them up through project / summarize / extend stages. Sentinel maps these into alert fields via entityMappings and customDetails; Defender XDR custom detections surface them as alert fields directly.

FieldSource
MalwareCustomEntityextend