Inside a SOC
A security operations centre (SOC) is the team that watches a company's systems, catches attacks early and contains them before damage spreads. This lesson walks you through what a SOC does, who does it, the tools they use and the numbers that tell them how they are doing, by spending a shift inside Mangrove Market's small SOC. By the end you will read a job advert for a SOC analyst and know exactly what the work is.
By the end you can
- Describe the SOC loop: detect, triage, investigate, respond and improve
- Name the roles and tiers, and follow how one alert flows between them
- Say what a SIEM, an EDR, a SOAR, a case system and a threat-intel feed are each for
- Read the core SOC measures and explain how each one can mislead you
- Tell an in-house SOC from a managed one, and place ATT&CK, the kill chain and the OODA loop
The everyday picture
Picture the security desk of a large building at night. Dozens of camera feeds fill a wall of screens. A guard cannot stare at every feed at once, so motion sensors raise a light when something moves on a feed. A junior guard checks each light: a cat on the loading dock is waved away in seconds; a person trying a locked door gets a closer look. If it looks real, the junior calls a senior guard, who pulls up the last hour of that camera, checks the door logs and decides whether this is a break-in. If it is, the shift supervisor runs the response: lock the floor, call the owner, keep a written log of every step.
A SOC is that desk for a company's computers. The camera feeds are logs from apps, laptops, the network and the cloud. The motion sensors are detection rules that raise an alert. The junior guard is Tier 1 triage, the senior is Tier 2 investigation, and the supervisor's response plan is incident response. The whole point is the same: most lights are nothing, a few matter a great deal, and the job is to tell them apart fast and act before the intruder reaches anything valuable.
What a SOC actually does
A SOC is not a product you buy; it is a function made of people, process and tools, running around the clock. Its work is a loop with five steps that never really stops:
- Detect. Collect logs from everywhere and run rules over them so that suspicious activity turns into an alert. You met where these logs come from in Thinking like an attacker, and the next lesson, Logs that matter, goes deep on them.
- Triage. Look at each alert quickly and decide: harmless, needs more work, or raise it. Most alerts are closed here.
- Investigate. For the ones that survive triage, gather evidence and work out what really happened and how far it went.
- Respond. If it is a real incident, contain it, remove the attacker and recover, keeping a record the whole time.
- Improve. Feed what you learned back into better rules and fewer blind spots, so the same thing is caught faster next time.
The last step is what separates a SOC that gets better from one that drowns. Every closed alert is a chance to ask "should this have fired at all?" and "what did we miss?". Without that loop, a SOC answers the same false alarms forever and still misses the real attack.
Quick check
A Mangrove rule has fired 300 times this week, and every single one turned out to be a harmless scheduled backup job. What should the SOC do?
This is exactly what the improve step is for: a rule that is 100% false alarms steals attention from real work. You narrow it so the known-good backup no longer matches, while making sure a genuine version of the activity still would. Switching it off blindly creates a blind spot, and closing 300 by hand every week is how analysts burn out.
Roles, tiers and how an alert flows
A SOC sorts its work by how hard and how rare it is. The names vary between companies, but the shape is almost always the same.
- Tier 1, triage analyst. Works the alert queue. For each alert, gathers the quick context and gives a verdict in minutes: false positive (close it, with a note), or real enough to escalate. The skill is speed with good judgement, not deep investigation.
- Tier 2, investigation analyst. Takes escalated alerts and digs in: pulls the full history, pivots across logs, works out what happened and how far it spread, and decides whether this is a true incident.
- Tier 3, threat hunter and detection engineer. Looks for attackers no rule caught (Threat hunting), and writes and tunes the detection rules the whole SOC runs on (Writing detections). This is the senior, creative end.
- Incident responder. Leads the containment and recovery when an incident is declared (Incident response). In a small SOC this is Tier 2 and Tier 3 wearing a different hat; in a large one it is a separate team.
- Threat-intelligence analyst. Tracks which attackers target companies like yours and what they do, and turns that into things to look for. In a small SOC this is a feed everyone reads, not a person.
- SOC lead or manager. Owns the queue, the shift rota, the measures and the relationship with the rest of the business.
A single alert flows through these roles like water finding the lowest path. Most never leave Tier 1. The few that do get heavier attention at each step, and only a handful reach a declared incident. Each tier owns a different decision, and that is the thing to remember: Tier 1 decides "is this worth a closer look?", Tier 2 decides "is this a real incident, and how big?", and incident response decides "what do we do about it right now?".
Quick check
A Tier 1 analyst sees an alert for a store manager signing in from two cities an hour apart. They are not sure if it is real. What is the right move?
Tier 1's decision is "is this worth a closer look?", and an impossible-travel sign-in they cannot explain clearly is. Scoping it fully is Tier 2's job; a Tier 1 who disappears into one alert for two hours is not triaging the queue. Closing it on a guess or locking an account with no investigation are both decisions above Tier 1's pay grade.
The core tools, and what each is for
You will see the same handful of tools in almost every SOC. You do not need to run them yet; you need to know what job each does, because job adverts list them and alerts come from them.
| Tool | What it is for |
|---|---|
| SIEM | The log warehouse and rule engine. Collects logs from everywhere, lets you search them, and raises alerts when a rule or a correlation across sources matches. |
| EDR | The eyes on laptops and servers. Records what programs run, what files change and what connects out, raises its own alerts, and can isolate a machine on command. |
| SOAR | The automation layer. Runs repeatable steps for you: gather the context for an alert, open a ticket, disable an account, so analysts spend time on judgement, not clicking. |
| Case or ticket system | The record. Every alert, investigation and incident lives here with its timeline, evidence and who did what, so nothing is lost and handovers work. |
| Threat-intel feed | The outside view. A stream of known-bad addresses, file fingerprints and attacker techniques to match against your logs and to tell you what to look for. |
A useful way to hold them together: the EDR and other sensors watch, the SIEM gathers and correlates, the SOAR does the repetitive work, the case system remembers, and threat intel tells you what is worth watching for. None of them is the SOC. They are the instruments; the analysts and the process are the SOC.
Quick check
Mangrove wants that impossible-travel alert to automatically pull the account's recent logins, the device it used and its location history, and attach them to a ticket before an analyst even opens it. Which tool does that work?
Automatically running the same enrichment steps on every alert is the SOAR's job. The ticket ends up in the case system and the context may come from the EDR and identity logs, but the thing that orchestrates the steps is the SOAR. This kind of automation is what keeps the alert volume per analyst from crushing the team.
The measures, and how each one lies
SOCs are judged by a few numbers. You should know them, and know how each can be gamed or can mislead, because a number chased blindly makes the SOC worse.
- Mean time to detect (MTTD). From when an attack starts to when the SOC notices. Lower is better. It lies when you only measure the attacks you caught; the ones you never saw are not in the average.
- Mean time to respond (MTTR). From alert to contained. Lower is better, but you can shrink it by closing alerts fast without really handling them, which trades a good number for real risk.
- Dwell time. How long an attacker was inside before being found. The honest version of MTTD, and the one that hurts: industry reports still measure serious intrusions in weeks.
- False-positive rate. The share of alerts that were harmless. High rates burn analysts out and hide real alerts in the noise. But driving it to zero by loosening rules just means you stop catching things.
- Alert volume per analyst. How many alerts each person must handle per shift. Past a point, quality falls and misses rise, however good the people are.
Two traps matter most. First, an average hides its worst cases: an MTTR of "20 minutes" can be mostly two-minute auto-closes and a few alerts that sat for a day, and the day-long one is the one that hurt. Look at the slowest tenth, not just the mean. Second, every target can be met by doing the wrong thing. The real goal is not a pretty dashboard; it is that real attacks are caught and contained before they cause harm. The measures are there to start that conversation, and burnout is the one that quietly breaks a SOC: tired analysts working a flood of false positives miss the real alert, so a healthy false-positive rate and alert volume are safety measures, not comfort.
Quick check
A SOC lead proudly reports that mean time to respond dropped from 40 minutes to 8 this quarter. What should you ask before celebrating?
A mean can fall because work improved or because alerts are being closed without real handling, and the average hides the few slow alerts that actually matter. You want to know which cause it is and to see the tail, not just the mean. Headcount and tools might help, but they are not what the number by itself tells you.
In-house or managed, and the frameworks that organise the work
Not every company runs its own 24/7 SOC; it is expensive and hard to staff. The common choices are an in-house SOC (your own people and tools), a managed SOC or MSSP (a provider watches your alerts, often just forwarding the serious ones back to you), and MDR, managed detection and response, where a provider also investigates and takes some response actions on your behalf. Many companies, Mangrove included, run a hybrid: a small in-house team during the day and a provider covering nights and weekends. The trade is control and context versus cost and coverage: your own team knows your systems, a provider gives you round-the-clock eyes you could not afford to hire.
Three shared frameworks give the work a common language, so a Mangrove analyst and an outside provider can describe the same attack the same way.
- MITRE ATT&CK is the shared dictionary of attacker techniques, grouped by the attacker's goal (initial access, persistence, exfiltration, and so on). Detections and hunts are mapped to its technique IDs, which is how a SOC knows what it can and cannot see.
- The cyber kill chain describes an intrusion as a sequence of stages. Its value is the idea that you do not need to catch the first step; breaking any link stops the attack.
- The OODA loop (observe, orient, decide, act) is the tempo of response. Whoever runs the loop faster, attacker or defender, tends to win, which is why speed and good context matter so much.
One more idea runs through this whole course. The old picture of a SOC is analysts clicking through consoles all day. The modern picture is a detection-as-code SOC: detection rules are written as code, reviewed, version-controlled and tested like any software, so a rule has a test that proves it fires on the attack and stays quiet on normal activity. It turns "we think this rule works" into "we proved it does", and it is why this course teaches you to build and test detections, not just click them.
Build it
Produce two things a real SOC runs on: a one-page triage runbook so any analyst handles an alert the same way, and a query that turns the alert log into an honest metric.
Write a triage runbook for one alert type
Pick impossible-travel sign-in. A runbook says what to check, how to decide, and when to escalate, so a tired analyst at 3 am still does the right thing.
Markdown# Runbook: impossible-travel sign-in Severity: high | ATT&CK: T1078 Valid Accounts Context to gather (the SOAR does this automatically): - the account's last 10 sign-ins: time, city, device, IP - is there a known VPN or travel for this user? - what can this account reach (store app, back office, cloud)? Decide: - Both sign-ins explained by a known VPN or device -> false positive, close with note - One location unknown AND a sensitive action followed -> escalate to Tier 2 as account takeover - Unsure -> escalate; do not guess Escalate with: the two sign-ins, what the account can reach, and your one-line reason.Record every alert in a table you can measure
The case system is the source of truth. A minimal shape is enough to compute real numbers.
SQLCREATE TABLE alert ( id int PRIMARY KEY, rule text NOT NULL, severity text NOT NULL CHECK (severity IN ('critical','high','medium','low')), status text NOT NULL CHECK (status IN ('open','closed')), opened_at timestamp NOT NULL, closed_at timestamp, -- NULL while still open analyst text );Turn the log into an honest metric
Average minutes to close, per severity, over the alerts you actually finished. Read it next to the count, because an average over two alerts says little.
SQLSELECT severity, count(*) AS closed_count, round(avg(extract(epoch FROM (closed_at - opened_at)) / 60)) AS avg_minutes FROM alert WHERE status = 'closed' GROUP BY severity ORDER BY avg_minutes DESC;Outputseverity | closed_count | avg_minutes ----------+--------------+------------- medium | 2 | 150 high | 3 | 90 critical | 2 | 40 low | 2 | 30Then always ask the second question the mean hides: which single alert took the longest, and why? That is where the lesson is.
Bring it to your team
Ask these when your team sets up or reviews its detection and response work.
- For our top alert rules, what share of their alerts are false positives, and who owns tuning the worst one?
- When an alert comes in at 3 am, is there a runbook, or does each analyst guess?
- Which decision does each tier own, and does everyone agree on where Tier 1 stops?
- Are we reading the slowest tenth of our response times, or only the mean?
- Which log sources are we blind to, and which ATT&CK techniques can we not see at all?
- Who covers nights and weekends, and how do they reach us when it is real?
Red flags
- A SOC measured only by how fast it closes alerts, with no check on whether real ones were handled.
- One rule generating most of the queue, left on for months because "we might miss something".
- No runbooks, so quality depends on which analyst is on shift.
- Detection rules that live only in a console, never reviewed, version-controlled or tested.
- A managed provider forwarding raw alerts no one has the context to action.
Practice
Measure the alert queue
The table alert(id, rule, severity, status, opened_at, closed_at, analyst) holds one morning's alerts. For every severity, return the severity, a closed_count of its closed alerts, and the avg_minutes to close them (the average of closed_at minus opened_at in minutes, rounded to a whole number). Count only alerts whose status is closed. Order by avg_minutes, highest first.
CREATE TABLE alert (id int PRIMARY KEY, rule text NOT NULL, severity text NOT NULL, status text NOT NULL, opened_at timestamp NOT NULL, closed_at timestamp, analyst text); INSERT INTO alert VALUES (1, 'EDR script from till', 'critical', 'closed', '2026-10-13 02:00', '2026-10-13 02:30', 'ama'), (2, 'Mass file export', 'critical', 'closed', '2026-10-13 03:00', '2026-10-13 03:50', 'ravi'), (3, 'Impossible travel', 'high', 'closed', '2026-10-13 08:00', '2026-10-13 09:00', 'ama'), (4, 'Account takeover', 'high', 'closed', '2026-10-13 09:00', '2026-10-13 11:00', 'ravi'), (5, 'New admin created', 'high', 'closed', '2026-10-13 10:00', '2026-10-13 11:30', 'ama'), (6, 'Odd cloud API call', 'medium', 'closed', '2026-10-13 07:00', '2026-10-13 10:20', 'ravi'), (7, 'Port scan from guest Wi-Fi', 'medium', 'closed', '2026-10-13 07:30', '2026-10-13 09:10', 'ama'), (8, 'Backup job export', 'low', 'closed', '2026-10-13 06:00', '2026-10-13 06:20', 'ravi'), (9, 'Password spray (blocked)', 'low', 'closed', '2026-10-13 06:00', '2026-10-13 06:40', 'ama'), (10, 'Suspicious login', 'critical', 'open', '2026-10-13 04:00', NULL, NULL), (11, 'Malware quarantined', 'high', 'open', '2026-10-13 05:00', NULL, NULL);
-- Average minutes to close per severity, highest average first
SELECT severity, status
FROM alert;
[{"severity": "medium", "closed_count": 2, "avg_minutes": 150},
{"severity": "high", "closed_count": 3, "avg_minutes": 90},
{"severity": "critical", "closed_count": 2, "avg_minutes": 40},
{"severity": "low", "closed_count": 2, "avg_minutes": 30}]
Show a solution
SELECT severity,
count(*) AS closed_count,
round(avg(extract(epoch FROM (closed_at - opened_at)) / 60)) AS avg_minutes
FROM alert
WHERE status = 'closed'
GROUP BY severity
ORDER BY avg_minutes DESC;The WHERE drops the two open alerts (ids 10 and 11), which have no closed_at and would poison the average. extract(epoch FROM (closed_at - opened_at)) gives the gap in seconds, so dividing by 60 gives minutes, and round makes it a whole number. Reading avg_minutes next to closed_count is the point: medium is slowest here, but it is only two alerts, so one slow alert moved the whole number.
Give three alerts a Tier 1 verdict
You are the Tier 1 analyst on Mangrove's morning shift. For each alert below, write a one-line verdict (false positive, needs a look, or likely real) and say whether you close it or escalate, with a one-sentence reason. (1) A store manager's account signed in from the usual city on their usual device, then exported the full customer list, which they have never done before. (2) An EDR alert that a till in one store tried to run a script from a temporary folder. (3) A rule fired because the nightly backup service read a large number of records, as it does every night at the same time.
- Each verdict is one of the three allowed values and names close or escalate
- You escalate the customer-list export even though the sign-in looks normal, because the action is the unusual part
- You escalate the till script, because a POS till should never run scripts
- You close the backup alert as a false positive and note it for tuning, rather than leaving it to fire every night
Show a model answer
(1) Needs a look, escalate. The sign-in is normal, but a manager exporting the entire customer list for the first time is exactly the kind of action that matters; triage checks the login, but deciding whether this is misuse or a compromised-but-trusted account is Tier 2's call. This is why you watch actions, not just logins.
(2) Likely real, escalate. Tills run a fixed set of software and should never execute scripts from a temp folder; that pattern maps to an attacker running code on an endpoint, so it goes to Tier 2 to scope which till and what ran.
(3) False positive, close with a note and flag for tuning. It is the same known backup service, at the same time, doing its normal job. Closing it is right, but leaving the rule to fire every night is not: note it so Tier 3 narrows the rule to exclude the known service while still catching an unusual bulk read.
Check yourself
A SOC's dashboard shows mean time to respond at a healthy 12 minutes, yet an attacker lived in the network for three weeks before being caught. How do both numbers fit together?
Response time only starts counting once an alert exists. Dwell time is the quieter, more painful number: how long the attacker was in before anything fired. A SOC can respond quickly to every alert and still have long dwell time if its detections missed the intrusion, which is why both are measured.
Mangrove's lead wants to cut the false-positive rate, which is crushing the two Tier 1 analysts. A vendor suggests simply loosening the noisiest rules so they fire far less often. What is the risk of taking that advice as given?
False-positive rate and detection both move when you change a rule. A lazy loosening buys a calmer queue at the price of missing the real thing. Good tuning removes the specific known-good trigger, such as a named backup service, while keeping the rule able to catch a genuine version. Fewer alerts is only good if you did not stop seeing real ones.
A fast-growing company cannot hire enough people for round-the-clock coverage but wants attacks investigated and contained outside office hours, not just forwarded to them. Which option fits best?
The company needs response, not just monitoring, when its own team is asleep. MDR adds investigation and agreed response on the company's behalf, which a plain MSSP that only forwards alerts does not. A SIEM alone raises alerts with nobody to work them, and an office-hours in-house team leaves nights uncovered.
Flashcards
Key takeaways
- A SOC runs a loop: detect, triage, investigate, respond and improve. The improve step is what stops it drowning in the same false alarms.
- Work is sorted by tiers, and each tier owns a decision: worth a look, real incident, act now. Most alerts never leave Tier 1.
- Learn what each tool is for: the SIEM gathers and correlates, the EDR watches endpoints, the SOAR automates, the case system remembers, threat intel points you at what matters.
- Every SOC measure can mislead; averages hide the worst cases and any target can be met the wrong way. The real goal is catching and containing real attacks.
- In-house, MSSP and MDR trade control against cost and coverage. ATT&CK, the kill chain and the OODA loop give the work a shared language, and modern SOCs treat detections as tested code.
Sources and further reading
- MITRE ATT&CK, a public knowledge base of adversary tactics and techniques, MITRE
- NIST SP 800-61 Rev. 2, Computer Security Incident Handling Guide, NIST, 2012
- NIST Cybersecurity Framework (CSF) 2.0, NIST, 2024
- Cybersecurity Best Practices, CISA
- FIRST, the Forum of Incident Response and Security Teams