Navigation Reference
The homepage search spans detection rules and events/audit logs/record types. Use the filter dropdowns below the search bar (Type / Vendor / Tactic / More) for the most common filters, or type operators directly in the search box.
Shared behaviors#
Every operator takes the form name:value. These rules apply across the operators, so the tables below do not repeat them.
- Spaces AND.
tactic:execution vendor:sigmareturns rules matching both terms. - Commas OR. The facet operators take a comma list of alternatives that OR together. Repeating a facet merges its values the same way, so
vendor:sigma vendor:elasticequalsvendor:sigma,elastic. The list operators (with:,uses:,excludes:,by:(aliasgroupby:),body:) instead AND across occurrences and treat a comma list inside one occurrence as an OR-group, for example,uses:Image,CommandLinematches a rule touching either field, whileuses:Image uses:CommandLinerequires both. - Quotes force an exact match. In
field:/value:, the quotes anchor the indicator match and allow spaces (value:"net user"). A quoted phrase matches exactly ("process creation"). *is a wildcard inside a value, for example,value:*mimikatz*.
Negation#
Prefix a negatable operator with - to exclude its matches, for example tactic:execution -vendor:splunk. Negation stacks and refines a query. You can also pair it with a positive term. A - on a bare word (-foo) stays free text. A comma list under a negation excludes each alternative (-vendor:sigma,elastic drops both), and negation validates all-or-nothing. One invalid alternative keeps the whole token in free text instead of a partial exclusion.
Every operator negates, including the facet operators, the list operators, the indicator operators, and the semantic labels. An alias negates in the same bucket as its canonical form (-ta:execution is -tactic:execution). -type:rules returns every result kind except rules, -has:sample equals no:sample, -no:sample equals has:sample, and -like:slug drops the seed rule together with its equivalent, stricter, and broader relatives.
Standalone -kind: / -field: / -value: (with no positive field:, value:, or kind: in the query) exclude at rule level. They drop every rule carrying a matching predicate leaf, so type:rules -kind:is_null lists the rules that never null-check. Alongside a positive indicator filter they instead refine which leaves count as a match.
Search operators#
The tables share three columns. Operator is the token you type, with its alias in parentheses where one exists. Argument is what follows the colon. Effect is what the operator returns.
Scope#
| Operator | Argument | Effect |
|---|---|---|
type: | events, rules, providers, all (default) | Restrict results to one type. type:rules with no other term browses the whole rule corpus |
vendor: | a vendor value (see Vendor values) | Filter rules to one or more detection vendors. An unrecognized item leaves the whole token in free text |
MITRE ATT&CK#
| Operator | Argument | Effect |
|---|---|---|
tactic: (ta:) | tactic slug, display name, or TA-id (credential_access, TA0006) | Rules tagged with the tactic. In ATT&CK v19, TA0005 is stealth (legacy defense_evasion folds onto it) and TA0112 is defense_impairment |
technique: (tech:) | technique ID (T1003, T1003.001) | Rules tagged with the technique |
Severity#
| Operator | Argument | Effect |
|---|---|---|
severity: (sev:) | critical, high, medium, low, informational (info) | Rules at the given severity |
Rule structure#
| Operator | Argument | Effect |
|---|---|---|
correlation: | single_event, sequence, alternatives, alternatives_cross_log, all_required, correlated | Rules of that correlation shape |
with: | an event ID (stackable) | Rules that bind the event ID, including single-event rules. with:4624 with:4769 requires both. with:4624,4769 binds either |
has: / no: | timewindow, threshold, newterms | Rule-structure flags. has:timewindow requires a time window, has:threshold requires a threshold-cardinality rule, and has:newterms requires an Elastic new-terms baseline. no: inverts each flag |
like: | a rule slug | Rules in the same canonical-form equivalence class or a subsumption pair with the seed. Cards label each as equivalent, stricter, or broader. For example like:okta_api_token_created returns the Sigma seed rule okta_api_token_created plus Panther's okta_api_key_created labeled stricter |
Predicate fields#
These return rule cards and follow the list-operator comma rule above. Occurrences AND across the operator, and a comma list within one occurrence ORs.
| Operator | Argument | Effect |
|---|---|---|
uses: | a field name (substring, stackable) | Rules whose predicate tree touches the field (any value, any kind). Compare field:, which also narrows each rule card to the matching leaf and adds indicator cards |
excludes: | a field name (substring, stackable) | Rules with a top-level not() clause on the field. This is the community's FP-whitelist tradecraft, per field |
by: (groupby:) | a field name (substring, stackable) | Rules whose group_by_keys contain the term (case-insensitive) |
Rule body#
body: is a deep full-text search over each rule's raw body/source text (the query as authored, including comments and syntax that never lands in the predicate tree), not just the parsed predicates that uses: / field: / value: search. Matching is exact-token, not substring. The index tokenizes on lowercased runs of 2+ alphanumeric or underscore characters, so body:mimikatz matches a rule whose body contains the standalone token mimikatz but not mimikatz2. The token index is a separate artifact that loads on the first body: query rather than shipping with the base search bundle.
| Operator | Argument | Effect |
|---|---|---|
body: | a token (stackable) | Rules whose raw source text contains the token. body:mimikatz,sekurlsa is either-or. body:mimikatz body:sekurlsa requires both |
Indicators#
The field: / value: / indicator: operators search detection-rule predicates, answering the question "has anyone written a rule for this IOC?" They drive two result kinds at once. The indicator tier shows one card per field+value pair, ranked by rule count. Each card shows the predicate kind, the total rule count with vendor breakdown, and the first 5 contributing rules. The card's +N more button expands the rest in place, so every contributing rule is one click away. The rule tier narrows rule cards to those carrying a predicate leaf that matches the filter (the card's matching-indicators line shows which leaf matched).
The two result kinds have different inclusion rules. The search returns a rule card when that rule has a matching predicate, even if no other rule uses the same field, predicate kind, and value. It returns an indicator card only when at least two rules use the same canonical field, predicate kind, and value, so indicator cards are not a complete list of every predicate or monitored value in the matching rules. When a rule appears without a corresponding indicator card, use its matching-predicates line or Show stages & exclusions to inspect that rule. To extract every distinct value selected by the complete query, use Copy matching values in the results toolbar.
| Operator | Argument | Effect |
|---|---|---|
field: | a field name (quote for exact, field:"Image") | Predicate field. Substring + *-glob by default, so field:Image also matches ParentImage. An unquoted comma list is an OR-group over field names (field:Image,ParentImage matches either), while a quoted value stays a single literal field name |
value: | a value (quote for exact or for spaces, value:"net user") | Predicate value. Substring + *-glob by default (value:*mimikatz*). Never comma-split, since a real predicate value can carry a literal comma. A comma-bearing value that returns nothing gets called out in the status line, in case the comma was meant as an OR-group |
indicator: | F=V (indicator:Image=*\powershell.exe) | Shorthand for field:F value:V. Quote either half for an exact match. Neither half is comma-split |
kind: | a predicate kind (see Predicate kinds) | Filter by that predicate kind. The query ignores an unknown alternative beside a known one. The diagnostic fires only when every alternative is unknown |
kind: / field: / value: also narrow rule cards to those carrying a matching predicate leaf, ANDing with every other structural filter. For example vendor:elastic kind:cidr_match returns Elastic rules with a cidr_match leaf, and type:rules kind:is_null returns rules with an is_null leaf. They drive the indicator tier in parallel, and the card's matching-indicators line shows which leaf matched.
Curated semantic labels#
Four operators tag each rule by what its detection logic is about. They are the identity involved, the permission or access scope concerned, the resource inspected, and the operation performed. The site derives them from structured rule signals (parsed predicate fields, values, providers, platforms, and correlation keys), but the labels themselves are curated interpretations, not native IR properties. operation:public_exposure, for example, recognizes specific positive rule signals that indicate a resource was made public. There is no universal IR node named "public exposure."
Use these operators to discover related detection families across vendors, then validate a promising result with its matching predicates or a more direct field:, value:, kind:, or uses: query. A missing label does not prove the rule cannot detect the behavior, and a matching label does not make every rule interchangeable. A single rule commonly carries several labels. For example an LSASS-dump rule is resource:credential, and an Entra guest invite can be identity:external operation:account_lifecycle.
These operators filter rule cards only. Values are a closed vocabulary that autocomplete lists in full. A few curated aliases fold to the canonical value (spn → service_principal, guest → external, admin → admin_role, kms → crypto_key, secret → credential, pod → workload, login/signin → authentication, mfa → mfa_change).
| Operator | Argument | Effect |
|---|---|---|
identity: | an identity value | Rules whose logic involves that actor or target identity type |
permission: | a permission value | Rules involving that permission grant or access scope |
resource: | a resource value | Rules whose inspected object is that resource type |
operation: | an operation value | Rules performing that security-relevant operation |
Platform & domain#
| Operator | Argument | Effect |
|---|---|---|
platform: (plat:) | one of the locked 19-value platform vocabulary (windows, linux, macos, cross-platform, aws, azure, gcp, m365, intune, google-workspace, okta, github, onepassword, kubernetes, network, web, saas, identity, application) | Rules targeting that platform (a rule may carry several) |
domain: (dom:) | endpoint, cloud, identity, saas, container, network, web, application | Rules in that detection domain |
Event attributes#
The "More" panel exposes six of these as three-way selects (any, yes, no) rather than checkboxes. Choosing yes writes has:<flag> into the query, no writes no:<flag>, and any removes the token. You can also type any event flag inline, including ones the panel does not expose.
| Operator | Argument | Effect |
|---|---|---|
has: / no: | an event flag (see Event flags) | Events that have (has:) or lack (no:) the attribute |
Value reference#
The enumerated vocabularies referenced above. Each table pairs the canonical Value (with its alias in parentheses where one exists) with its Meaning.
Vendor values#
Used with vendor:.
| Value | Meaning |
|---|---|
sigma | Sigma |
elastic | Elastic |
splunk (spl) | Splunk |
kusto (kql, sentinel, defender) | Kusto (Microsoft Sentinel + Defender XDR) |
chronicle (secops) | Chronicle (Google SecOps) |
panther | Panther |
mql (sublime) | Sublime MQL |
Predicate kinds#
Used with kind:. The kind is the canonical predicate operator (how a rule matches a value), normalized across vendor lingo (kind:contains covers both Sigma's |contains modifier and Splunk's contains function).
| Value | Meaning |
|---|---|
contains | Substring match (folds the contains and match kinds together) |
eq | Exact equality |
starts_with | Prefix match |
ends_with | Suffix match |
regex_match (regex) | Regular-expression match |
cidr_match (cidr) | IP / CIDR range match |
wildcard | Wildcard / glob match |
in | Membership in a value set |
ne | Not-equal |
gt / lt / ge / le | Numeric comparators |
length_compare | String / array length comparison (flags suspiciously long or empty fields) |
For example value:10.0.0.0/8 kind:cidr_match, field:Image value:c:\windows\ kind:starts_with, field:CommandLine kind:regex, kind:in field:process_name.
is_null / is_not_null narrow rule cards and produce presence indicator cards. kind:is_null lists the fields the corpus null-checks (with rule counts and vendor breakdown). Because is_null / is_not_null carry no value, the card shows just the field and the kind. like is its own vendor-native kind (a SQL-style LIKE pattern, typed literally). It narrows rule cards, but the indicator tier does not carry it. The inverse holds for macro, length_compare, and func_call. They match indicator cards only, never rule cards, because the rule tier deliberately drops those leaf kinds as non-IoC structure. cross_field_compare is value-bearing but rare, and a field/kind/value combination used by only one rule does not produce an indicator card.
Identity values#
Used with identity:.
| Value | Meaning |
|---|---|
application | An OAuth application / app-registration actor |
assumed_role | A temporary-credential role session (AWS AssumeRole, web identity) |
external | A guest, cross-tenant B2B, or outside-collaborator identity |
root | The root / superuser account (AWS Root, UID 0, macOS/ESXi root) |
service_account | A service account (GCP IAM SA, Kubernetes ServiceAccount, Linux daemon) |
service_principal | An Entra service principal / app registration |
user | A named user identity |
Permission values#
Used with permission:.
| Value | Meaning |
|---|---|
admin_role | A full-admin role or permission set (Global Admin, AdministratorAccess, Entra tier-0 roles) |
application_role | An Entra application-role assignment |
wildcard_grant | A wildcard (*) resource or principal in an IAM / resource policy |
pass_role | The AWS iam:PassRole permission |
ews_mail_access | The EWS.AccessAsUser.All mailbox-access permission |
full_access_as_app | The full_access_as_app application permission |
mail_read | The Graph Mail.Read scope |
mail_readwrite | The Graph Mail.ReadWrite scope |
mail_send | The Graph Mail.Send scope |
admin_role and application_role also include BloodHound Enterprise attack-path findings, which are computed posture ("a principal can reach that role"), not an observed grant.
Resource values#
Used with resource:.
| Value | Meaning |
|---|---|
credential | Credential-bearing material (LSASS/SAM/NTDS/DPAPI, cloud keys & secrets, credential files) |
crypto_key | A KMS / Key Vault cryptographic key |
storage | Object storage (S3 bucket, GCS, Azure blob container) |
file | A file operated on (download / upload / create / delete / modify) |
workload | A container / serverless workload (K8s pod, container EDR, Lambda, Cloud Functions) |
compute | A VM / compute instance (Azure VM, AWS EC2, GCP instance, ESXi VM) |
snapshot | A disk / DB snapshot (AWS EBS/RDS, Azure/GCP disk snapshot) |
network_config | A network-boundary or firewall config (security groups, NACLs, netsh, iptables) |
network_destination | A network destination as the inspected object (C2 host, malicious domain, beacon) |
scheduled_task | A scheduled task / cron job (schtasks, TaskCache, crontab, K8s CronJob) |
persistence_location | An autostart location (registry Run keys, Startup folder, systemd unit, launchd) |
writable_directory | A world-writable / attacker-writable directory (/tmp, /dev/shm, curated Windows dirs) |
kernel_module | A kernel module / driver (insmod/modprobe, Windows .sys driver load) |
mailbox | A mailbox / mail folder (inbox rules, EWS, Graph mailFolders) |
email | An email message object |
ci_workflow | A GitHub Actions workflow_run / workflow_job |
branch_protection | A GitHub branch-protection rule / ruleset |
credential also includes BloodHound Enterprise attack-path findings (LAPS/gMSA read, DCSync, Kerberoast), which are computed posture, not an observed access.
Operation values#
Used with operation:.
| Value | Meaning |
|---|---|
authentication | A sign-in / logon, including failed-auth and brute-force |
permission_grant | A role or permission granted to a principal |
policy_change | An access-control / security policy object changed |
account_lifecycle | A user / service / guest account created or deleted |
credential_creation | New credential material minted (access key, service-account key, password reset) |
mfa_change | An MFA factor enrolled, reset, disabled, or bypassed |
federation_change | An IdP federation / SSO trust configuration changed |
oauth_consent | An OAuth application consent granted |
mail_access | A mailbox / message accessed (MailItemsAccessed, AdminMailAccess) |
mailbox_rule | An inbox / transport forwarding rule created or modified |
interactive_access | An interactive / remote-shell session (K8s exec, RDP, pty shell, SSM) |
impersonation | One identity acting as another (Okta/K8s/GCP/Exchange impersonation) |
service_tamper | A defensive service or security control stopped / disabled / tampered (T1562) |
logging_tamper | An audit / detection logging control disabled or deleted |
public_exposure | A resource made publicly / anonymously reachable |
external_sharing | A resource shared externally / via an anonymous link |
secret_access | A stored secret read / retrieved |
data_deletion | Destructive / bulk data deletion (bucket/object delete, BigQuery destructive, device wipe) |
privileged_workload | A privileged container / pod (hostPath, host namespace, added capabilities) |
cryptomining | Cryptomining activity (mining pools, stratum, miner processes) |
Event flags#
Used with has: / no:. has: requires the flag, and no: excludes it.
| Value | Meaning |
|---|---|
sample | Events with real .evtx sample data |
fields | Events with human-written field descriptions |
notes | Events with community analyst notes |
refs | Events with external reference links |
trace | Trace events from MOF-based providers |
3rdparty | Events from non-Microsoft vendors |
rule | Events with any detection rule |
pattern | Events that link to detection patterns |
description | Events with a prose description |
page | Events with their own canonical page |
sigma / elastic / splunk / kusto / chronicle | Events with rules from that specific vendor (the vendor value aliases above work here too) |
Flag values comma-split (has:sigma,threshold sets both) and validate all or nothing, so an unknown flag keeps the whole token in free text. With type:rules, the event flags return the rule set unfiltered and the status line says so (the flags describe events, which the rules scope never shows).
Free text & exact match#
Bare words (no operator) match event titles, fields, and descriptions, and, for rules, the title, description, and indexed predicate field/value tokens, so a keyword that lives only in a rule's logic still surfaces it. Quote a phrase for an exact multi-word match, for example "logon type" 4624 requires the exact phrase plus the free-text term.
Examples#
| Query | What it does |
|---|---|
4624 | Event 4624 (Security Auditing logon) first, then rules referencing it |
kerberos | Provider matches, then Kerberos rules, then Kerberos events |
tactic:credential_access vendor:sigma | All Sigma rules tagged with the Credential Access tactic |
vendor:sigma,elastic technique:T1003.001 | LSASS-dumping rules authored in Sigma or Elastic (comma = OR), then ANDed with the technique |
tactic:execution -vendor:splunk | Execution-tagged rules from every vendor except Splunk |
vendor:chronicle lsass | Chronicle (Google SecOps) rules matching "lsass" |
field:CommandLine value:*mimikatz* | Rules that filter CommandLine for mimikatz substrings |
field:Image,ParentImage value:*mimikatz* | Rules whose Image or ParentImage field carries a mimikatz value (comma = OR over field names) |
indicator:Image=*\powershell.exe | Rules checking the Image field for paths ending in \powershell.exe |
vendor:elastic kind:cidr_match | Elastic rules carrying a CIDR-range predicate leaf (kind narrows the rule cards) |
type:rules -kind:is_null | Every rule except those carrying an is_null presence check (standalone indicator negation excludes at rule level) |
-type:rules kerberos | Kerberos events and providers, since excluding the rules kind still leaves the other two |
with:4624 with:4769 | Rules that watch both Logon (4624) and TGS-REQ (4769), a Kerberoasting-flavored correlation |
like:win_system_krbrelayup_service_installation | The KrbRelayUp detection's equivalence class, sibling rules from sigma and splunk on the same service-install signature |
uses:Image -uses:CommandLine | Rules touching Image but not CommandLine |
excludes:ParentImage | Rules that whitelist a parent-process path to suppress FPs. Handy when tuning a new rule on the same field |
body:mimikatz | Rules whose raw source text mentions mimikatz anywhere (comments, macros, non-predicate syntax), not just matching predicate values |
identity:external operation:account_lifecycle | Rules where a guest or other external identity is invited, created, or removed (Entra guest invites and their cloud cousins) |
"privilege escalation" has:sample no:3rdparty | Exact phrase, with sample event data, Microsoft providers only |
Result types#
Each result card carries a small label in the leading edge showing its type.
- EVENT is a Windows event log entry (provider / event ID / title)
- RULE is a detection rule (vendor badge + title + MITRE technique tags), with a vendor-colored left border
- PROVIDER is a Windows event provider with its event and sample counts
- INDICATOR is a field+value combination used by at least two rules, with the first 5 contributing rules below and a
+N morebutton that expands the rest
A single query collects at most 200 rule cards and 100 indicator cards. The rule count shown on an indicator card is not capped (it reflects every contributing rule), so for an exact rule total on a query that hits the 200-card ceiling, either read the indicator card counts or split the query by vendor: and sum the results. Copy matching values is not limited by either card cap.
Working with results#
Each rule card has a Show stages & exclusions button that inlines the rule's stages, predicates, exclusions, and indicators in a scrollable panel beneath the card. It fetches the rule page once and caches per-rule for subsequent toggles. Useful for peeking at structural detail across several search hits without losing query context.
A Compact view / Expanded view toggle sits at the left of the toolbar above the cards. Compact view collapses every card to a single line for scanning large result sets. The choice persists across visits, and toggling writes a view= parameter into the URL hash so a copied link reproduces the same density.
The results toolbar provides Copy as markdown and Copy as JSON. Markdown export is a 12-column table (Type, Title, Vendor / Provider, Severity, Events, Technique IDs, Technique Names, Tactics, Author, Description (~2 sentences), Source (GitHub URL minus the host prefix), URL). JSON export is a flat array with the same 12 columns as snake_case keys (type, title, vendor_or_provider, severity, event_ids, technique_ids, technique_names, tactics, author, description, source_url, url). Every cell is a plain string, lists join with semicolons, and descriptions stay untruncated, so the output pastes straight into a JSON-to-CSV converter for spreadsheet use. Both cover every result in the current collected set, not just the visible page.
Predicate searches using field:, value:, indicator:, or kind: also provide Copy matching values. It copies one distinct, non-empty predicate value per line by reading every rule that satisfies the complete query. It includes values used by only one rule and ignores the 100-indicator and 200-total-card caps. For example, with:13 field:"TargetObject" copies every indexed TargetObject value from rules that bind event ID 13, even when no indicator card exists for that value.
- Click opens the result in the current tab
- Ctrl+click / Cmd+click / Shift+click / middle-click opens the result in a new tab
Keyboard shortcuts#
The site provides Vimium-style navigation.
Scrolling#
j and k to scroll down/up
d and u to scroll one-half page down/up
gg to scroll to the top
G to scroll to the bottom
Link hints#
f to show a single character per link that you can enter to open in the same tab
Searching#
/ to start a search. On a page with a search box it focuses the box. On a Windows catalog provider page it takes you to the /windows/ catalog search. On every other page it takes you to the combined event and rule search on the home page. The ?search= URL parameter that these redirects carry is presence-only, so any value (or none) focuses the search box on load.
Search results#
Arrow Down and Arrow Up to navigate results
Enter to open the highlighted result
Escape to close results
Navigation#
h to go back in page history
l to go forward in page history
Reading your query back#
A line under the search box explains the current query in plain language, for example "Rules binding event 4624 and also binding event 4769 but not from splunk." It updates on every keystroke and stays blank for an empty box.
When a value does not match its operator's vocabulary, for example sev:hi, the explanation adds a short warning and a clickable fix ("Did you mean severity:high?"). Clicking the fix corrects the query in place.
Focusing an empty search box opens a starter panel with your recent searches at the top and curated example questions grouped under four headings ("What events exist", "How the rule is built", "What the rule is about", "What the rule looks for"). Clicking a question runs its query. Escape closes the panel.
A rule page carries the same idea in its Indicators and Exclusions tables. Each row gets a Search column that runs the matching query back on the home search, so you can pivot from one rule's predicate straight into every other rule that shares it.
The curated identity, permission, resource, and operation labels above have their own reference page at /references/semantic-labels/, with every value's meaning and how many rules carry it.