Intermediate · Logs, SIEM and incident response · topic 21 of 43 · 40 min
SIEM and alert triage
Explanation
Why a SIEM
A company of 1,000 people can produce millions of log events a day from hundreds of systems. No person can read that. A SIEM collects the logs, converts them into a common format (normalising), stores them, lets you search them, and runs detection rules that raise alerts when a pattern looks like an attack.
- Collect: agents and connectors pull logs from Windows, Linux, firewalls, cloud and apps.
- Normalise: map different field names to common ones (a source IP is "src_ip" whatever the device called it).
- Correlate: link events across sources, like "many failed logons, then one success, then a new admin account".
- Alert: create a ticket for the SOC with the evidence attached.
- Search and dashboards: let analysts investigate and managers see trends.
Well-known SIEMs include Splunk, Microsoft Sentinel, IBM QRadar, Google Security Operations and Elastic Security. Wazuh is a popular open-source platform for home labs. Each has its own search language, but the ideas are the same.
index=wineventlog EventCode=4625
| stats count by src_ip, user
| where count > 10
| sort - countSecurityEvent
| where EventID == 4625
| summarize Failures = count() by IpAddress, TargetUserName
| where Failures > 10
| order by Failures descA correlation rule: guessing then success
A single failed logon is normal: people mistype. Many failures followed by a success from the same source is much more worrying, because the guessing may have worked. Rules like this combine events to cut noise.
events = [
("198.51.100.23", "failure"), ("198.51.100.23", "failure"),
("198.51.100.23", "failure"), ("198.51.100.23", "success"),
("10.20.5.7", "failure"), ("10.20.5.7", "success"),
]
fails = {}
for ip, result in events:
if result == "failure":
fails[ip] = fails.get(ip, 0) + 1
elif fails.get(ip, 0) >= 3:
print("ALERT: success after", fails[ip], "failures from", ip)Triage: the first 15 minutes
Triage means sorting by urgency, like a hospital emergency desk. For each alert, an L1 analyst works through steps like these:
- Read the alert: what rule fired, on which host and user, when?
- Gather context: who is this user, what is this machine, is it important, is the source IP internal, a known partner, or known bad (threat intelligence)?
- Look around: other alerts or unusual events for this user or host in the last 24 hours.
- Decide: true positive, false positive, or benign true positive (real activity that is allowed, like an approved penetration test).
- Set severity and act: close with a note, or escalate to L2 with the evidence, following the playbook.
| Severity | Example | Typical response time |
|---|---|---|
| Critical | Ransomware running on a server | Immediately, call the on-call lead |
| High | Admin account logged in from a new country after failures | Within minutes |
| Medium | Malware blocked by antivirus on one laptop | Within hours |
| Low | Single port scan from the internet, blocked | Review in daily summary |
Response-time targets differ between companies; the playbook and service agreement set them.
Writing it down
Every triage ends with a short note: what you checked, what you found, your verdict and why. Another analyst should be able to read it and reach the same conclusion. "Closed, FP" is not a note; "Closed as false positive: source 10.20.5.33 is the vulnerability scanner (asset tag VS-01), scan approved in change ticket CHG-1182" is.
Common mistakes
- Closing alerts by habit because "it is always a false positive".
- Not checking the user's other activity: one alert is often part of a bigger story.
- Escalating with no evidence attached.
- Never feeding back: if a rule is noisy, tell the detection engineers so it gets tuned.
Need help?
Stuck on a word or an idea? Search this course, or every course, and jump straight to the explanation or a worked question.
Try:
Watch the lesson
SIEM and alert triage · 1/7
Companies create millions of log events a day. A SIEM collects, normalises and searches them.
Prefer a video by a teacher? Find free videos on “SIEM explained alert triage SOC analyst splunk sentinel” on YouTube ↗
In real life: Impossible travel
A Sentinel rule fires: user priya@company logged in from Chennai at 09:10 and from an IP in another continent at 09:40. Triage: the second login used a consumer VPN service, the user's phone approved MFA, and Priya confirms she turned on a VPN app. Verdict: benign true positive. The analyst closes it with a note and suggests that company policy forbid personal VPN apps on work accounts. Had Priya not recognised it, the account would have been disabled and escalated at once.
Practice (0/3 done)
An alert fires because the company's own vulnerability scanner scanned servers during an approved window. The best verdict is…
Write success_after_failures(events, threshold) where events is an ordered list of (ip, result) with result "failure" or "success". Return a sorted list of IPs that had a "success" after at least threshold failures from the same IP (failures counted before that success).
Write a triage note for this alert: "Admin account it-admin2 logged in (4624, logon type 10) to FILE-SRV-01 at 03:12 IST from 10.20.8.41 after 14 failed attempts (4625) in 5 minutes." Make up reasonable context and give a verdict.
Quick quiz
Read more (free)
Related help
Before this, learn
This topic builds on these. If something here feels new, open them first.
Related topics
- The incident response lifecycle (NIST SP 800-61)Logs, SIEM and incident response · same module
- A SOC analyst's day and playbooksLogs, SIEM and incident response · same module
- Logging and monitoring in the cloudCloud security basics
- Logging, threat detection and incident responseCloud Computing (AWS, Azure, Google Cloud) · Cloud security and compliance
- Incident managementDevOps: Git, Docker, Kubernetes and CI/CD · SRE: reliability and incidents
- Monitoring, logs and alertsFull-Stack Development · Deploying and running the app
Questions people ask about this
Open a question to see the answer and why. The first ones are this topic's own quiz, so try the quiz above before you peek.
What does "normalise" mean in a SIEM?
Answer: Convert different log formats into common field names
Normalising lets one search cover logs from many different devices.
Which search language does Microsoft Sentinel use?
Answer: KQL
Sentinel uses KQL (Kusto Query Language); Splunk uses SPL.
Why correlate "many failures then a success" rather than alert on every failure?
Answer: It cuts noise and points to guessing that may have worked
Single failures are normal; the combination is meaningful.
Which is a good triage note?
Answer: "False positive: source is the approved scanner VS-01, change ticket CHG-1182"
Notes must give evidence so others can check the verdict.
Ransomware is actively encrypting files on a server. Severity?
Answer: Critical
Active damage to important systems is critical: act immediately.
Which Event ID is a failed logon?Related
A log source has sent nothing for three hours. Why does this matter?Related
Answer: Attacks on those systems would be invisible
Silence can hide an attack; check source health every shift.
Which event most strongly suggests an attacker is hiding?Related
Answer: StopLogging
Turning off audit logging is a classic defence evasion step.
Which is the Microsoft Azure SIEM service?Related
Answer: Microsoft Sentinel
Microsoft Sentinel is Azure's cloud SIEM; Defender for Cloud handles posture and workload protection.
Pass the quiz (60% or more) or mark this topic as done when you are ready.
Your progress is saved on this device only.
Next steps
- 2 more topics in “Logs, SIEM and incident response” before its exam: The incident response lifecycle (NIST SP 800-61), A SOC analyst's day and playbooks.
- Module 5 exam: Logs, SIEM and incident response · 13 questions · 25 min, without help. 4 topics of this module still to finish first.
- Then the next module, Malware and web security. 43 topics left in the course before the final exam.