Security Monitoring, SIEM, and Detection Engineering Questions
Building and operating the detection stack: the SOC and detection-engineering practice that answers 'can we see an attack happening.' Covers SIEM platform selection and architecture, use-case and detection-rule query development (for example Splunk SPL, KQL, or Sigma), alert triage and tuning to reduce false positives, detection engineering and closing coverage gaps, mapping detections to the MITRE ATT&CK framework and scoring detection coverage, log analysis and anomaly and baseline development, network and endpoint telemetry sourcing, malware and compromise-indicator recognition, and security operations center (SOC) alert escalation workflows. Distinct from the reactive work of containing, remediating, and communicating during a confirmed incident (incident response and postmortem topics own that ground; this topic stops at 'the alert fired and here is the detection logic', not 'here is how we contained and recovered from it'). Distinct from generic system-reliability monitoring and observability (SLOs, error budgets, uptime dashboards), a separate discipline even when the underlying ingestion mechanics look similar; the anomaly or signal here must be framed as adversarial or security-relevant. Distinct from hardening a software delivery pipeline against supply-chain compromise (SBOM generation, artifact signing, dependency and build-permission controls); this topic only touches the delivery pipeline from the detection side, spotting a compromised build or tainted artifact via telemetry, not the preventive-controls side. Distinct from designing security control architecture and governance (security architecture and cloud security architecture topics own the design-time question of what controls should exist); this topic is the run-time operation of the detection stack once those controls are in place.
Create a Sigma detection rule (or equivalent structured pseudocode) that correlates three events on the same host within a 15-minute window: suspicious PowerShell parent-child process chains (e.g., powershell -> encoded command), unusual outbound DNS TXT requests, and creation of scheduled tasks. Explain chosen fields, correlation window, and how to reduce false positives.
Sample Answer
Direct answer
Correlating a suspicious PowerShell parent-child chain, an unusual outbound DNS TXT request, and a scheduled-task creation into ONE detection is exactly the kind of multi-signal design that turns three individually medium-confidence events into one high-confidence finding; modern Sigma expresses this via a dedicated CORRELATION rule referencing three base rules, one per signal, with a shared time window and group-by key, rather than one monolithic rule trying to express all three conditions inline.
Structured elaboration
title: Suspicious PowerShell Parent-Child Chain
id: 1a2b3c4d-0001-4001-8001-000000000001
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\powershell.exe'
CommandLine|contains: '-EncodedCommand'
ParentImage|endswith:
- '\winword.exe'
- '\excel.exe'
- '\outlook.exe'
condition: selection
level: medium
fields:
- Computer
---
title: Unusual Outbound DNS TXT Request
id: 1a2b3c4d-0002-4002-8002-000000000002
logsource:
category: dns_query
product: windows
detection:
selection:
QueryType: 'TXT'
QueryName|re: '^[a-z0-9]{20,}\.'
condition: selection
level: medium
fields:
- Computer
---
title: Scheduled Task Creation Following Suspicious Activity
id: 1a2b3c4d-0003-4003-8003-000000000003
logsource:
category: task_scheduler
product: windows
detection:
selection:
EventID: 4698
condition: selection
level: medium
fields:
- Computer
---
title: PowerShell Chain, DNS TXT Beacon, and Scheduled Task on Same Host Within 15 Minutes
id: 1a2b3c4d-0004-4004-8004-000000000004
description: Correlates three individually-medium-confidence signals occurring on the
SAME host within a 15-minute window, raising combined confidence to high.
correlation:
type: temporal
rules:
- 1a2b3c4d-0001-4001-8001-000000000001
- 1a2b3c4d-0002-4002-8002-000000000002
- 1a2b3c4d-0003-4003-8003-000000000003
group-by:
- Computer
timespan: 15m
level: high
Correlation window: 15 minutes, chosen to be generous enough to capture the realistic gap between a PowerShell chain establishing a foothold, its DNS-based check-in, and a follow-on persistence step, while still tight enough that three unrelated, coincidental medium-confidence events on the same busy host would rarely all land within it by chance.
Chosen fields: each base rule exposes Computer as its group-by key, the shared entity the correlation joins on; the base rules' own fields (CommandLine, ParentImage, QueryName, and so on) remain available in each underlying event for an analyst to review once the CORRELATED finding surfaces, even though the correlation's own grouping only needs the shared host field.
Reducing false positives: each base rule already carries its own scoping (the PowerShell rule requires BOTH the encoded-command flag AND a specific, narrow set of parent applications, not PowerShell alone; the DNS rule requires TXT record type AND a high-entropy-looking subdomain pattern, not just any TXT query); requiring all three to independently fire on the SAME host within the SAME 15-minute window is a fourth, compounding layer of precision on top of each base rule's own scoping.
Worked example
Parsed and converted to Splunk SPL using pySigma with the Splunk backend, executed locally:
Output (actual output):
| multisearch
[ search Image="*\\powershell.exe" CommandLine="*-EncodedCommand*" ParentImage IN ("*\\winword.exe", "*\\excel.exe", "*\\outlook.exe") | eval event_type="1a2b3c4d-0001-4001-8001-000000000001" ]
[ search QueryType="TXT"
| regex QueryName="^[a-z0-9]{20,}\\." | eval event_type="1a2b3c4d-0002-4002-8002-000000000002" ]
[ search EventID=4698 | eval event_type="1a2b3c4d-0003-4003-8003-000000000003" ]
| bin _time span=15m
| stats dc(event_type) as event_type_count by _time Computer
| search event_type_count >= 3
The conversion confirms the whole correlation is syntactically and semantically valid, translating into a multisearch across all three base rules, tagging each event with which rule matched it, bucketing into 15-minute time windows via bin, and requiring dc(event_type) (distinct count of the three rule IDs) to reach 3, meaning all three signal types genuinely occurred on the same Computer within the same bucket. (Each Image/ParentImage path literal and the regex's own backslash are doubled by the backend, since SPL treats a single backslash as a string-escape character inside quoted values; this is correct SPL syntax, not a formatting artifact.)
A real finding from attempting this conversion, worth disclosing directly: Sigma's specification defines an even stronger correlation type, temporal_ordered, which would additionally require the three signals to occur in a SPECIFIC SEQUENCE (PowerShell chain, then DNS TXT, then scheduled task), which maps more precisely to the question's implied attack narrative than an unordered co-occurrence check. Attempting to convert a temporal_ordered version of this exact rule against the Splunk backend used here raised NotImplementedError: Correlation type 'temporal_ordered' is not supported by backend, confirmed directly. This is a genuine, current limitation of this specific backend's converter (not a limitation of Sigma itself), so the rule above uses the more broadly-supported temporal (unordered co-occurrence) type as the portable baseline, with ordering left as a query-time or downstream enrichment concern (checking each matched event's own timestamp order) rather than expressed natively in the correlation rule for this specific backend.
Trade-offs and pitfalls
- Common mistake: assuming every Sigma correlation type is supported identically across every backend; as directly demonstrated above,
temporal_orderedparses as valid Sigma but fails to convert on this specific backend, exactly the kind of gap that only surfaces by actually running the conversion, not by reading the YAML alone. - The unordered
temporaltype accepted here is a deliberate, disclosed precision trade-off: it will fire even if, say, the scheduled task creation happened to precede the PowerShell chain (an unlikely but not impossible ordering for a genuinely unrelated coincidence), which a true ordered correlation would correctly exclude; an analyst reviewing a fired alert from this rule should check the underlying events' actual timestamp order as part of triage, since the rule itself does not enforce it. - Common mistake: setting the correlation window too tight, assuming all three stages happen near-instantaneously; a 15-minute window deliberately allows for realistic operational gaps (DNS check-in intervals, an attacker pausing between stages) rather than assuming an unrealistically fast, fully-automated attack chain.
- This rule's precision depends heavily on each base rule's own individual scoping remaining tight: if any one base rule is loosened significantly, the overall correlation's combined confidence degrades correspondingly, since the correlation's strength is a direct function of how genuinely rare each of its three inputs is on its own.
Design a simple detection rule to identify potential brute-force login attempts on an authentication service. Specify thresholds (for example, failed attempts per account and per source IP over a time window), explain why both account- and source-based thresholds matter, and propose techniques to avoid noisy alerts in shared or high-traffic services.
Sample Answer
Direct answer
A basic brute-force detection needs TWO independent thresholds, not one, failed attempts per ACCOUNT over a time window (catches an attacker targeting one specific account from anywhere) and failed attempts per SOURCE IP over a time window (catches an attacker spraying many accounts from one place); either threshold alone misses the attack pattern the other is designed to catch.
Structured elaboration
Account-based threshold: for example, 10 failed attempts for the SAME account within 10 minutes, regardless of source IP. This catches an attacker who has one target account and is guessing passwords against it, possibly rotating through multiple source IPs specifically to evade an IP-only threshold.
Source-based threshold: for example, 20 failed attempts from the SAME source IP within 10 minutes, regardless of which account is targeted. This catches an attacker spraying many different account/password combinations from one location, a pattern the account-based threshold alone would miss entirely, since no single account individually crosses its own threshold.
Why both matter: an attacker aware of only an account-based threshold defeats it by spreading attempts across MANY accounts from one source (password spraying); an attacker aware of only a source-based threshold defeats it by rotating source IPs while hammering one account. Requiring both thresholds, evaluated independently, closes each evasion path the other threshold alone would leave open.
Techniques to avoid noisy alerts in shared or high-traffic services: for a shared authentication service (a VPN gateway, a public-facing login endpoint used by many legitimate users), a fixed absolute threshold calibrated for a low-traffic internal service will be far too sensitive; scale the threshold relative to the service's own observed baseline failure rate (a service with naturally high failure volume, due to normal user error at scale, needs a proportionally higher threshold than a low-traffic internal tool), and exclude known, legitimate high-volume automated sources (health checks, load-balancer probes) from the source-based count entirely.
Worked example
Concretely, a shared corporate VPN gateway naturally sees several hundred failed login attempts per day from ordinary user typos and expired passwords, spread across many accounts and many source IPs. A fixed threshold of "10 failures per IP in 10 minutes" calibrated for a low-traffic internal tool would fire constantly against this gateway's normal background noise. Recalibrating the source-based threshold to this specific service's own observed baseline (for instance, requiring failure volume from a single IP to exceed several times the service's typical per-IP failure rate within the window, derived from real historical data rather than an arbitrary round number) brings the detection back to a usable signal-to-noise ratio for THIS specific service, while the account-based threshold, which is inherently less affected by a shared service's overall traffic volume (since it is scoped to one account at a time), needs comparatively less service-specific recalibration.
Trade-offs and pitfalls
- Common mistake: implementing only one of the two thresholds, since it is simpler, and treating the resulting detection as complete brute-force coverage; as the elaboration above shows, each threshold has a specific, distinct evasion path the other is designed to close.
- Common mistake: using the SAME absolute threshold value across every service regardless of its own traffic volume and baseline noise level; the worked example demonstrates directly why a threshold appropriate for a low-traffic tool floods a high-traffic shared service with noise.
- This is the entry-level, non-correlated version of brute-force detection: two independent per-account and per-source thresholds are a reasonable starting point, while a fuller multi-device correlation approach adds explicit cross-host and cross-account correlation logic on top of it, catching a coordinated attacker who deliberately keeps each individual account or source just under ITS OWN threshold while the combined pattern across many accounts and sources is still clearly anomalous.
- Both thresholds should be tunable per service, not global constants: a single organization-wide threshold value, hardcoded once, cannot serve a genuinely diverse set of services with very different legitimate traffic volumes, which is exactly the noisy-shared-service problem the question specifically asks how to avoid.
List common indicators of data exfiltration or unauthorized bulk data access in a data platform context (for example, unusual bulk downloads, new external endpoints, large compressed exports, privileged account usage off-hours, anomalous query patterns). For each indicator, explain the immediate steps a security engineer should take to escalate, preserve evidence, and mitigate impact.
Sample Answer
Direct answer
In a data-platform context, unauthorized bulk data access shows up as a mismatch between HOW data is being accessed and how it is normally accessed, an unusually large export, a new external destination, a privileged account acting off its normal schedule, or a query pattern that scans far more broadly than typical business use, and the right escalation response scales with how immediately reversible the exposure still is.
Structured elaboration
Unusual bulk downloads/exports: a data volume pulled by one identity in one session substantially exceeding that identity's own historical norm. Immediate steps: preserve the export/query logs identifying exactly what was accessed (table/dataset-level detail, not just aggregate byte counts); escalate to the data platform's own security or data-governance owner, who can confirm whether this matches an authorized business use the analyst reviewing the alert alone might not have context for.
New external endpoints: a data export or query result being sent to a destination (an external API, an unfamiliar cloud storage bucket) that has never been used from this platform before. Immediate steps: block or pause the specific destination at the platform's own egress/network-policy layer where feasible, without necessarily disrupting the account's broader legitimate access; preserve the destination details (domain, IP, or bucket identifier) for scoping.
Large compressed exports: an export bundled or compressed in a way inconsistent with the platform's normal reporting or analytics workflows, since compression specifically is often chosen by an exfiltrating actor to reduce transfer footprint and evade simple byte-count thresholds, a genuine, worth-naming evasion consideration.
Privileged account usage off-hours: a data-platform administrative or elevated-access account performing bulk access outside its normal, established working pattern. Immediate steps: verify directly with the account owner (or their manager, if the owner is unreachable) whether this was an authorized, planned activity BEFORE assuming malicious intent, but treat the account as provisionally suspect (increased monitoring, not full disablement pending confirmation) until that verification completes.
Anomalous query patterns: a query scanning across FAR more tables, partitions, or rows than the requesting identity's typical workload, a pattern-based signal distinct from a simple volume threshold, catching a bulk-access attempt structured to stay under a raw byte-count alert while still touching an unusually broad swath of the platform's data.
Escalation, evidence preservation, and mitigation, common across all five indicators: preserve the platform's own access/audit logs immediately (data platforms often have SHORTER log retention than a dedicated SIEM, making prompt preservation a genuine, time-sensitive concern rather than a formality); escalate to the specific data owner or data-governance function for the affected dataset, who holds the business context a security analyst alone typically lacks; and apply the LEAST disruptive mitigation that genuinely contains the exposure (blocking a specific destination rather than disabling an entire account, where the two achieve comparable containment) while the investigation proceeds.
Trade-offs and pitfalls
- Common mistake: alerting purely on raw byte-volume thresholds and missing the anomalous-query-PATTERN indicator entirely; a bulk-access attempt deliberately structured to stay under a byte-count threshold while still touching an unusually broad set of tables would evade volume-only detection but not a pattern-based check, which is why both indicator types are named here, not just the more obvious volume signal.
- Common mistake: disabling a suspected account's access immediately and completely, before verification, on every off-hours privileged-access finding; a legitimate emergency maintenance action IS a real, common cause of this exact pattern, and immediate full lockout on unverified suspicion carries a genuine business-disruption cost that a more measured, verify-first response (with heightened monitoring in the interim) avoids while still containing genuine risk.
- Log-retention urgency on data platforms specifically is a real, easy-to-miss operational gap: many data platforms' own native query/access logs retain far less history than a centralized SIEM would, meaning "preserve the evidence" needs to happen with real urgency the moment an indicator is identified, not treated as a routine, can-wait step the way it might be for a longer-retention security-specific log source.
- This answer stops at IDENTIFICATION and immediate, evidence-preserving/escalation steps; it does not design the full incident-response investigation or a data-loss-prevention program, which are separate, later-stage disciplines outside this answer's scope.
What is log normalization in the context of SIEMs? Explain why normalization matters for correlation rules and threat hunting, and give a simple example mapping a Windows log event to a normalized schema with fields such as timestamp, src_ip, dst_ip, user, action, and process_name.
Sample Answer
Direct answer
Log normalization is the process of translating raw, source-specific log formats into one consistent schema, common field names, common data types, common timestamp format, so that events from entirely different systems can be searched, compared, and correlated using the same query logic; without it, a correlation rule or a threat hunt would need a separate, bespoke implementation for every single log source's own idiosyncratic format, which does not scale and quietly breaks the moment a source's format changes.
Structured elaboration
Why normalization matters for correlation rules: a correlation rule that joins events across sources can only do so if both event types expose a comparable "user" field, a comparable "host" field, and a comparable timestamp format; without normalization, the rule author would need to know and separately handle each source's own field-naming convention, and any new source added later would silently break every existing rule that assumed a single schema.
Why normalization matters for threat hunting: a hunter searching across MULTIPLE data sources for a hypothesis-driven pattern depends on being able to write ONE query spanning sources, rather than manually translating the same underlying question into several source-specific query dialects; normalization is what makes cross-source hunting practical at all, rather than a slow, manual, source-by-source exercise.
Worked example
A raw Windows Security Event Log entry for a successful logon (Event ID 4624) arrives with its own native field names (SubjectUserName, IpAddress, TargetLogonId, a Windows-specific timestamp format). Mapped to a normalized schema:
| Normalized field | Value (from the raw Windows event) |
|---|---|
timestamp | ISO 8601, UTC-normalized |
src_ip | The value from the raw event's IpAddress field |
dst_ip | The host that generated the event (the local system's own address) |
user | The value from the raw event's SubjectUserName field |
action | logon_success (a normalized, source-agnostic action label) |
process_name | Not applicable for this event type, left null rather than populated with a placeholder |
A completely different source, say, a cloud identity provider's own sign-in log, arrives in an entirely different native JSON structure with its own field names, but maps to the SAME normalized schema (timestamp, src_ip, user, action, and so on). A single correlation rule written against the NORMALIZED user and action fields works identically against both sources without ever needing to know either source's own native format, which is the entire practical payoff of normalization.
Trade-offs and pitfalls
- Common mistake: under-investing in normalization while over-investing in detection-rule content; a large library of well-written correlation rules is only as good as the normalization layer feeding it consistent field names, and a rule silently failing to match because a source's field was never mapped correctly is a much harder defect to notice than an obviously broken rule.
- Common mistake: leaving a field null/not-applicable inconsistently, sometimes null, sometimes an empty string, sometimes a placeholder value like "N/A"; inconsistent null handling across sources breaks exactly the kind of clean, uniform query logic normalization exists to enable, since a rule checking for a null field needs to know it will ALWAYS be represented the same way.
- Normalization schema changes need their own change-management discipline: adding or modifying a normalized field can silently affect every existing correlation rule and hunt query that touches it, making an uncoordinated schema change a genuine, systemic risk, not merely a routine data-pipeline update.
- This is a foundational definitional concept that more advanced telemetry-sourcing and detection-rule work builds directly on: the field-mapping example given here (Windows
SubjectUserName/IpAddressto a normalizeduser/src_ipschema) is the same underlying mechanism every additional log source has to go through, one mapping definition per source, feeding the same shared schema. - Normalized schemas need explicit VERSIONING, not just careful initial design: a schema is rarely finished on day one, a new detection use case eventually needs a field the original schema did not anticipate; adding a field is usually safe, but renaming or re-typing an EXISTING field breaks every rule and hunt query already written against it, so a versioned schema (with old field names supported alongside new ones for a defined deprecation window) avoids forcing a synchronized, error-prone rewrite of every downstream rule the moment the schema changes.
Behavioral: Tell me about a time when you led an initiative to improve monitoring or detection coverage. Use the STAR format: describe the situation and task, the actions you took (architectural/operational changes), the measurable results (metrics, reduced MTTD/false positives), and lessons learned. Be explicit about trade-offs you made.
Sample Answer
Direct answer
A strong answer to this behavioral question demonstrates genuine LEADERSHIP of a monitoring/detection-coverage improvement, not just individual technical execution, walking through how the initiative was identified and justified, what specific architectural or operational changes were driven, how the improvement was measured with real, defensible numbers, and an honest accounting of the trade-offs made along the way, since the question explicitly asks for trade-offs, glossing over them is a missed part of the ask.
Structured elaboration
Situation and task: describe the starting coverage or detection gap concretely (a specific, named weakness, not a vague "monitoring wasn't great"), and what made addressing it an INITIATIVE the candidate led, not just a task assigned and executed, evidence of identifying the need, building a case for it, and driving it, the leadership dimension the question is specifically probing for.
Actions, architectural/operational changes: the SPECIFIC changes made, described concretely enough that a technical interviewer can evaluate the actual engineering judgment involved, not just the outcome.
Measurable results: real, derivable metrics (a measured reduction in mean time to detect for a specific detection category, a measured false-positive-rate improvement, a measured increase in validated ATT&CK coverage for a defined, relevant technique subset), grounded in the candidate's own actual recollection and appropriately hedged where exact figures are not precisely remembered, never a suspiciously precise, invented number.
Lessons learned: a genuine, specific takeaway (not a platitude), ideally one that shaped how the candidate approaches similar initiatives since.
Trade-offs made, explicitly, since the question asks for this directly: what was DEPRIORITIZED or given up to pursue this initiative (a different gap left unaddressed for now, a slower rollout accepted in exchange for lower operational risk, a more expensive but more maintainable architecture chosen over a cheaper but more brittle one), and the REASONING behind that trade-off, demonstrating the candidate can articulate not just what they did but why they chose that path over the available alternatives.
Worked example
A candidate might structure a real answer around: "I identified that our detection coverage for cloud-based lateral movement was effectively zero, informed by a coverage-matrix review I initiated. I built the business case using the technique's relevance to our actual cloud footprint, not just an abstract framework-coverage argument, and got buy-in to prioritize onboarding the missing identity-plane telemetry ahead of two other, lower-priority backlog items. The trade-off I made explicitly: I chose to delay a planned SIEM cost-optimization project by one quarter to free up the engineering capacity, reasoning that closing a genuine detection gap outweighed a purely cost-driven improvement in the near term. After the telemetry was onboarded and the corresponding detection rules built and validated via a scoped red-team exercise, we measured a clear improvement in validated coverage for that specific technique category, and the false-positive rate for the new rules stayed within our target range after an initial two-week tuning period. The lesson I took forward: framing a coverage gap in terms of the SPECIFIC, relevant threat scenario, not an abstract percentage, was what actually got resourcing approved, and I've used that framing in every gap-closure proposal since." This structure names a concrete trade-off, a specific measured result, and a genuine, applied lesson.
Trade-offs and pitfalls
- Common mistake: answering this question with a purely technical narrative (what was built) and skipping the LEADERSHIP dimension (how the initiative was identified, justified, and driven) the question is specifically asking about; "tell me about a time you LED an initiative" is probing for more than "tell me about a technical project you worked on."
- Common mistake: omitting the trade-offs section entirely, or answering it vaguely ("there were some trade-offs"); the question explicitly asks to "be explicit about trade-offs you made," and a candidate who skips this or answers it thinly is leaving an explicitly-requested part of the question unaddressed.
- Common mistake: presenting invented, suspiciously precise metrics rather than genuinely recalled, appropriately-hedged figures; reproducible, defensible numbers matter more than impressive-sounding ones, and an interviewer experienced in this domain will often notice the difference.
- This is a behavioral/experience question, and the sample answer above is a STRUCTURAL template, not a script to memorize: the value for an actual candidate is having a real, specific example ready that follows this same shape (identify and justify, drive the change, measure honestly, name a real trade-off, extract a genuine lesson), not reciting these particular details.
Unlock Full Question Bank
Get access to all Security Monitoring, SIEM, and Detection Engineering interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.