PPS CLASS · PROJECT 1 OF 10 · Foundation

Home SOC Lab Build

Build your own detection environment before touching real alerts. It's the sandbox every later project in this track runs inside.

Video dropping soon

A detailed, screen-recorded video showing exactly how this project was worked through, step by step, is on the way. It'll walk through the whole build on screen, the same stages covered below, so you can watch it happen and follow along, not just read about it.

No need to wait, though: Stage 1 below (setting up your hypervisor and VMs) is simple enough to start on right now.

Tools For This Project

UTM, VMware Workstation Pro, or VirtualBoxWindows 11 + SysmonWazuhSuricata

Prerequisites

Get all of this downloaded before you start. None of it costs anything, and having it ready means you are not stopped mid-build waiting on a multi-gigabyte download. Every screenshot and command in this project uses UTM on Mac, but VMware Workstation Pro and VirtualBox both work too; see the Step-by-Step Walkthrough for how to set those up.

Hardware
  • 16GB RAM minimum. You will run three VMs, and one of them is a full SIEM. 8GB survives but everything crawls.
  • Virtualization enabled. Apple Silicon Macs have this built in. On an Intel Mac, or a Windows or Linux PC, confirm hardware virtualization (VT-x/AMD-V) is enabled in the firmware.
  • 150GB+ free disk space. Three VM disks, snapshots, and log data add up fast.
  • Stable internet. ISOs and the Wazuh install are multiple GB each, and the lab needs internet access to download packages even once it is isolated.
Downloads
  • A hypervisor. UTM (free on Mac), VMware Workstation Pro, or VirtualBox.
  • Windows 11 evaluation ISO. Free from Microsoft. Becomes the victim machine.
  • Kali Linux installer ISO. Get the plain installer image from kali.org, matched to your CPU, not a pre-built virtual machine appliance. This project has you install it yourself from scratch in Stage 1, that's how you actually learn what's inside it. Becomes the attacker machine.
  • Ubuntu Server ISO. Matched to your CPU. One box that runs both the SIEM and the network sensor.
  • Sysmon plus the SwiftOnSecurity config. Both go inside the Windows 11 VM.

Step-by-Step Walkthrough

Grab a coffee, work top to bottom, and don't skip ahead, later stages lean on earlier ones being done right, especially the network stage. Every command lives in its own box with a Copy button, so you never have to retype anything. Build all three machines from the installer ISOs yourself, skip any pre-built or pre-installed VM someone offers as a shortcut, installing each one from scratch is how you actually understand what you built, not just that it works. You'll end up with three virtual machines: one playing attacker, one playing victim, and one running your security tools. Stage 1 has you give each one a short, descriptive name (like kali-attacker) right after you create it, purely so you can tell three VM windows apart at a glance later, nothing more mysterious than that. Outside of Stage 1 itself, the rest of this guide just calls them what they are, your Kali Linux box, your Windows 11 box, and your Ubuntu Server box, so nothing here depends on you remembering a nickname.

PROGRESS
0 / 9 stages
1
Install Your Hypervisor & Create Your Three VM Shells

A hypervisor is just a program that lets your one physical computer run other, fully separate computers inside it, like sealed little boxes. Install one, then use it to create three empty VMs. Don't install Windows or Linux inside any of them just yet, we're only building and naming the shells right now.

You'll learn: what a hypervisor does, and how to provision a VM from nothing.

UTMVMware Workstation ProVirtualBox
Your computer

If you're on UTM: open it up, click the + button, and walk through the wizard three separate times, once pointed at your Kali Linux ISO, once at your Windows 11 ISO, and once at your Ubuntu Server ISO. Point it at the plain installer ISO each time, not a pre-built or pre-installed VM, Kali does offer ready-made virtual machine images online, but skip those here, this project wants you clicking through the real install yourself so you actually see what gets set up and why. Stop right after each one is created, don't boot into the installer yet, we just want three machines sitting in your VM list, powered off. Seeing all three appear is your proof the hypervisor itself is working before anything real gets built on top of it. Good news if you're on Apple Silicon: virtualization is built in, so there's no BIOS or firmware setting to go dig up the way you might need to on a Windows or Linux PC.

On VMware Workstation Pro or VirtualBox instead, it's the same idea with a different wizard: click New (or Create), walk through the prompts for each ISO, and stop before it actually boots into setup.

Now, rename them. This one's small but saves you real headaches later, once you have three VM windows open at once, you want the title bar to tell you instantly which is which instead of guessing. Right-click each VM in your list and rename it: the Kali Linux one becomes kali-attacker, the Windows 11 one becomes win11-victim, and the Ubuntu Server one becomes ubuntu-siem. That's it, you're officially a VM landlord now.

2
Build the Isolated Lab Network First

Before you install an operating system in any of them, let's build these three VMs a private room to live in, one that's separate from your actual home Wi-Fi. They'll be able to talk to each other just fine inside that room, but nothing outside your lab gets to wander in, and nothing inside gets to wander out onto your real network.

You'll learn: network segmentation, the same reason real SOC environments isolate before they ever start monitoring.

Private networkIsolated network
UTM · each VM's settings, before you power it on for the first time

Do this exact same thing for all three VMs: click the VM, open Settings, click Network on the left, and find the dropdown labeled Network Mode. Change it to Shared Network. Repeat for the other two, and you're done with this stage.

Here's the plain-English version of why that specific setting matters: Shared Network quietly builds a private little internet just for your lab, kind of like a guest Wi-Fi network only your VMs are invited to. They can all see and talk to each other, and they can still reach the real internet through your Mac (so installs and updates keep working), but nothing on your actual home network can see them, and they can't see it either.

Whatever you do, don't pick Bridged. Bridged does the opposite of what we're after: it puts the VM directly onto your real home Wi-Fi, as if it were just another laptop plugged into your router. That kind of exposure is exactly what this stage exists to prevent. You might also spot a mode called Host Only sitting nearby, skip that one too, it locks things down even further by cutting off internet access completely, which would break your installs a few stages from now. Shared Network already gives you the privacy we're after while keeping the internet connection alive.

VMware Workstation Pro · each VM's settings, before you power it on for the first time

Same idea as UTM above, just a different menu. With the VM selected (not running), click VM in the menu bar, then Settings, then Network Adapter on the left. Select NAT and click OK. Do this for all three VMs. VMware's NAT mode is the same idea as UTM's Shared Network above, your VMs get a private network together plus a route out to the internet, without ever touching your real Wi-Fi. Skip Bridged (puts the VM on your home network) and skip Host-only (kills internet access).

VirtualBox · each VM's settings, before you power it on for the first time

VirtualBox needs one extra step first, plain NAT in VirtualBox actually keeps each VM separate from the others, so open VirtualBox, go to File → Preferences → Network, click the NAT Networks tab, and click the plus button to create one, the defaults are fine. Then, for each VM, with it powered off, open Settings → Network → Adapter 1, and change Attached to from NAT to NAT Network, picking the one you just created. Do this for all three VMs. This gives you the exact same result as UTM's Shared Network and VMware's NAT above, all three VMs can reach each other and the internet, nothing from your home network can reach them.

3
Set Up the Victim Machine

Install Windows 11 on the network you just built, then teach it to actually pay attention to itself. Fresh Windows barely logs anything useful out of the box, Sysmon is what fixes that.

You'll learn: endpoint instrumentation, what telemetry a SOC actually needs from a machine, and why the Windows default is not it.

Windows 11SysmonSwiftOnSecurity config
Windows 11 (victim) · before you install anything

Inside the VM, download Sysmon from Microsoft's Sysinternals site (it comes as a zip), and download sysmonconfig-export.xml from SwiftOnSecurity's page, that's a free, widely trusted ruleset that tells Sysmon exactly what to watch for. Unzip Sysmon into your Downloads folder (anywhere works, just remember where), then drop sysmonconfig-export.xml into that exact same folder, sitting right next to Sysmon64.exe and Sysmon64a.exe. They need to be neighbors for the install command below to find the config.

Windows 11 (victim) · PowerShell — Run as Administrator

Click Start, type powershell, then right-click Windows PowerShell in the results and choose Run as administrator. Click Yes on the prompt. Running as Administrator matters here specifically because Sysmon installs a background driver, a low-level piece of software, and a regular window isn't allowed to do that.

Move into the folder where you saved Sysmon and the config file:

cd Downloads

cd just means "change directory," and Downloads is wherever you actually saved the files, swap in the real folder name if it's somewhere else.

Now the actual install:

Sysmon64a.exe -accepteula -i sysmonconfig-export.xml

Breaking that down piece by piece: Sysmon64a.exe is the program itself, the ARM64 build (that "a" stands for ARM, use this one if your Windows VM is ARM64, which it will be if you're on an Apple Silicon Mac). -accepteula quietly agrees to Microsoft's license on your behalf, skip it and Sysmon just pops up a license window and waits forever for a click. -i tells Sysmon to install itself, and sysmonconfig-export.xml right after it is the actual file it should install with, the SwiftOnSecurity rules you downloaded. On an Intel or AMD machine, swap in Sysmon64.exe (no "a") everywhere in this command instead. Picking the wrong one fails with "This driver has been blocked from loading," which sounds scary but is really just a CPU mismatch, not a security problem.

Windows 11 (victim) · PowerShell — Run as Administrator · only if a reinstall is needed
Sysmon64.exe -u force

-u tells Sysmon to uninstall itself, and force makes it clean itself out completely even if the earlier install only got halfway. Run the correct install command again right after this.

Key things to know
  • Sysmon (System Monitor) watches and logs detailed activity Windows does not record by default: process creation, network connections, file changes, registry edits, driver loads.
  • Sysmon only observes, it never blocks or allows anything. It's not a firewall and not an antivirus, just a very attentive notetaker. The machine behaves identically whether Sysmon is installed or not.
  • The SwiftOnSecurity config turns on the categories that are off by default so you get real coverage, and filters out routine Windows noise so that coverage stays actually usable instead of drowning you in it.
  • Once installed, confirm it's working by opening Event Viewer and browsing to Applications and Services Logs > Microsoft > Windows > Sysmon > Operational. You should see fresh events piling up.
  • While you're in the VM, also install UTM Guest Tools from UTM's menu bar at the top of the VM window (look for an option like "Install Guest Tools," VMware Tools or VirtualBox Guest Additions do the same job on those platforms), so copy and paste starts working between your computer and this VM. You'll be pasting commands a lot from here on.
4
Set Up the Attacker Machine

Bring Kali up on the same isolated network. It just sits idle until Stage 8, its whole job right now is to exist as the source of test traffic later on.

You'll learn: the attacker's side of the lab, and how to simulate real activity safely.

Kali LinuxNmap (pre-installed)
Kali Linux (attacker) · terminal
sudo apt update && sudo apt install -y spice-vdagent

A quick word on Linux commands before we go further, you'll see this shape a lot: sudo means "run this as the administrator." apt is Kali's package manager, the built-in tool that finds and installs software for you. update refreshes its list of what's available, and && just means "then, once that's done, run the next part." install -y spice-vdagent tells it to install the spice-vdagent package specifically, and -y auto-answers "yes" to the "are you sure?" prompt so it doesn't sit there waiting on you. The whole thing enables clipboard sharing between your computer and this VM, not required for the lab to technically work, but you'll be pasting commands into this window constantly, so it's worth the thirty seconds.

Kali Linux (attacker) · terminal
ip a

ip a just asks Linux to list every network connection it has and the address each one holds. We're only reading it here, to confirm Kali landed on the same subnet as your other two VMs (look for matching first three numbers, something like 192.168.64.x on all three). If it doesn't match, go back and double-check this VM's network setting from Stage 2.

5
Deploy the SIEM

Install Ubuntu Server, run Wazuh's official all-in-one script on it, then install the Wazuh Agent inside your Windows 11 VM so Sysmon's logs actually start shipping in somewhere useful.

You'll learn: log centralization, the single idea every SIEM is built around.

Wazuh IndexerWazuh ManagerWazuh DashboardWazuh Agent
Ubuntu Server (SIEM + IDS box) · terminal
curl -sO https://packages.wazuh.com/4.x/wazuh-install.sh
sudo bash ./wazuh-install.sh -a

First line: curl fetches a file straight off the internet, -s keeps it quiet instead of spamming your screen with a progress bar, and the capital O tells it to save the file under its original name instead of dumping its contents at you. Second line: bash runs the script you just downloaded, and -a is the flag that says "install everything, indexer, manager, and dashboard, all in one pass," instead of you wiring each piece together by hand. It finishes by printing an auto-generated admin password, copy that somewhere safe right away, it scrolls off screen and won't be shown to you again.

Windows 11 (victim) · PowerShell — Run as Administrator
msiexec.exe /i wazuh-agent.msi /q WAZUH_MANAGER='<ubuntu-siem IP>'
NET START WazuhSvc

Don't type this one literally, the real version comes from your Wazuh Dashboard itself: open it, go to the Agents screen, click Deploy new agent, and it'll generate this exact command with your manager's real IP address already filled in. For context on what it's doing: msiexec is Windows' own installer program, /i tells it to install the file that follows, /q keeps it quiet with no popup windows, and WAZUH_MANAGER= tells the agent which machine to phone home to, your Ubuntu Server VM. NET START WazuhSvc then actually starts the agent service so it begins running instead of just sitting there installed and idle.

Key things to know
  • Wazuh is a free, open source SIEM and XDR platform. Under the hood it's three components: the Indexer stores and searches your data, the Manager is the brain that receives agent data and runs detection rules against it, and the Dashboard is the web page you actually look at.
  • A Wazuh Agent is the small program installed on an endpoint (your Windows 11 VM here) that collects logs, Sysmon included, and forwards them to the Manager.
  • Once the agent shows Active in the dashboard, confirm Sysmon data specifically is arriving by checking that agent's Events view. Seeing real events there is the actual finish line for this stage, not just a green "Active" light.
6
Deploy the Network IDS

Install Suricata on the same Ubuntu Server VM, point it at the correct network interface, and prove it actually fires a real alert, not just that the service says it's running.

You'll learn: network-based detection versus endpoint-based detection, and why real SOCs run both.

Suricata
Ubuntu Server (SIEM + IDS box) · terminal
sudo apt update && sudo apt install -y suricata suricata-update

Installs Suricata itself plus suricata-update, the little helper tool that manages its detection rules.

Ubuntu Server (SIEM + IDS box) · terminal
ip a

Find your real network interface name before touching any config, something like enp0s1. Modern Ubuntu doesn't use the old eth0 name anymore, so write down whatever you actually see listed here, you'll need it in the next step.

Ubuntu Server (SIEM + IDS box) · terminal
sudo nano /etc/suricata/suricata.yaml

This opens the config file in nano, a simple text editor that runs right inside your terminal window, no separate app needed. Use your arrow keys to move around like normal. Scroll to find the af-packet: section near the top and change - interface: to the exact name you just read off with ip a, not eth0. When you're done editing, press Ctrl+O (that's the letter O, for "output") to save, hit Enter to confirm the filename, then Ctrl+X to exit back to your terminal. You'll use this exact same save-and-exit combo every time nano shows up later in this guide.

Ubuntu Server (SIEM + IDS box) · terminal
sudo systemctl restart suricata
sudo systemctl status suricata

systemctl is how Linux starts, stops, and restarts background services. The first line restarts Suricata so it picks up the interface change you just made, the second shows its current status. You're looking for a clean "active (running)" with an Engine started line and no repeated restarts scrolling by above it.

Ubuntu Server (SIEM + IDS box) · terminal
curl http://1.1.1.1/

This one's on purpose, we're deliberately triggering an alert so you can prove Suricata is actually watching, not just idling quietly. The specific rule that fires here matches a curl request to a literal IP address like this one, not a domain name, so this exact command is what makes it go off.

Ubuntu Server (SIEM + IDS box) · terminal
sudo grep -c '"event_type":"alert"' /var/log/suricata/eve.json
sudo cat /var/log/suricata/fast.log

grep searches through a file for lines that match something, -c just counts how many matches it finds instead of printing them all. The second line prints Suricata's plain-English alert log so you can actually read what it caught.

How you'll know it worked: the alert count is greater than 0, and fast.log shows a line mentioning "curl User-Agent to Dotted Quad." That's Suricata, doing its job.

Ubuntu Server (SIEM + IDS box) · terminal · optional, quiets a noisy default rule
sudo nano /etc/suricata/disable.conf

Add these two lines, then save the same way as before (Ctrl+O, Enter, Ctrl+X):

# Routine APT/package-manager traffic, too noisy for a home lab
2013504
Ubuntu Server (SIEM + IDS box) · terminal
sudo suricata-update
sudo systemctl restart suricata

Rebuilds Suricata's active rule set with that one rule now suppressed, then restarts the service to load it.

Key things to know
  • Suricata is a free, open source network IDS (intrusion detection system): it watches traffic and matches it against thousands of signature rules, then logs an alert on a match. It doesn't block anything on its own, it's a detector, not a firewall.
  • disable.conf plus suricata-update is the correct, permanent way to quiet a specific rule. Never hand-edit /var/lib/suricata/rules/suricata.rules directly, suricata-update overwrites that file every time it runs, so a direct edit there just vanishes on the next update.
  • eve.json is Suricata's full structured log, every alert as JSON. fast.log is a lightweight, human-readable version of the same alerts.
7
Connect Suricata to the SIEM

Wire Suricata's alert log into Wazuh, so network detections and endpoint telemetry finally show up side by side in the same dashboard instead of living in two separate worlds.

You'll learn: how a SIEM ingests an arbitrary log source.

ossec.confWazuh Manager
Ubuntu Server (SIEM + IDS box) · terminal
sudo nano /var/ossec/etc/ossec.conf

Opens Wazuh Manager's main config file in nano. Scroll down and find an existing <localfile> block anywhere in the file (there are already a few), then add a new one right next to it:

<localfile>
  <log_format>json</log_format>
  <location>/var/log/suricata/eve.json</location>
</localfile>

Paste that in, then save with Ctrl+O, Enter, Ctrl+X. This block tells the Wazuh Manager "also read this file," pointing it straight at Suricata's alert log. No separate agent needed for this one, since Suricata and the Wazuh Manager live on the very same VM.

Ubuntu Server (SIEM + IDS box) · terminal
sudo systemctl restart wazuh-manager
sudo systemctl status wazuh-manager

The manager only picks up a config change like this after it's restarted, so this step isn't optional.

Ubuntu Server (SIEM + IDS box) · terminal
sudo grep -i suricata /var/ossec/logs/ossec.log
sudo grep -i suricata /var/ossec/logs/alerts/alerts.log | tail -5

The first line confirms the manager is actually reading eve.json (the -i just means match "suricata" whether it's upper or lowercase). The second shows the last few Suricata alerts as Wazuh decoded them, look for a line mentioning Rule: 86601, Wazuh's built-in decoder made specifically for Suricata alerts.

How you'll know it worked: alerts.log shows a Suricata alert decoded under Rule 86601. That's your network sensor and your SIEM officially talking to each other.

8
Prove the Lab Works End to End

Generate one real connection between Kali and Windows, and confirm it shows up in the Wazuh dashboard. This is the moment that proves every earlier stage is actually wired together, not just working in isolation.

You'll learn: detection validation, the habit of proving a pipeline actually works instead of assuming it does.

Test-NetConnectionnetcatWazuh Dashboard
Kali Linux (attacker) · terminal
nc -lvnp 4444

nc is short for netcat, basically a Swiss-army knife for making and listening for network connections. -l means listen, -v means verbose so it actually tells you what's happening instead of staying silent, -n skips trying to look up hostnames, and -p 4444 picks which port to listen on, 4444 is arbitrary, any free port works. Leave this running and watching, don't close the window.

Windows 11 (victim) · PowerShell (not Command Prompt)
Test-NetConnection -ComputerName <kali-attacker IP> -Port 4444

This has to be PowerShell specifically, not the older Command Prompt (cmd.exe), which doesn't know this command and will just say it's not recognized. Open Start, type powershell, and open Windows PowerShell (the prompt should read PS C:\...>). -ComputerName is who you're trying to reach, your Kali VM's IP address, and -Port is which door you're knocking on, 4444, to match what Kali is listening on. A result of TcpTestSucceeded : True, together with the connection actually landing in your Kali terminal, confirms the two VMs can genuinely reach each other. Curious what happens with a straightforward Nmap scan instead? Check the Troubleshooting section below, it's a real, expected quirk, not a bug in your lab.

Wazuh Dashboard · your browser

Open the Events tab for your Windows 11 agent and confirm you can see the outbound connection you just made sitting right there in the list. Seeing it is the whole point of this stage.

9
Snapshot & Document the Build

Take a clean snapshot of all three VMs right now, while everything's working, so you can always roll back to this exact known-good state if a later project ever breaks something.

You'll learn: environment hygiene and documentation discipline, the unglamorous habits that separate a working analyst from someone who followed a tutorial once.

Snapshots
Your hypervisor · each VM

Shut each VM down properly, then right-click it in your hypervisor's VM list and choose Snapshot (or Clone, depending on your hypervisor), while it's sitting in this exact working state. You just gave yourself a free "undo" button for the rest of this course. Nicely done, that's Project 1 complete.

Documented by Moore · AliTere Academy

Notes & Tips

Not on a Mac? This walkthrough uses UTM, but VMware Workstation Pro and VirtualBox both work. Stage 2 of the walkthrough has the exact network setting steps written out for both, right alongside UTM's.

Save the Wazuh admin password immediately. The install script prints it once at the very end and never shows it again.

Never hand-edit Suricata's compiled rules file. Use disable.conf plus suricata-update to quiet a rule; a direct edit to suricata.rules disappears on the next update.

Install guest tools early. UTM Guest Tools, VMware Tools, or VirtualBox Guest Additions all enable copy and paste between your computer and each VM. You will be pasting commands constantly.

Snapshot the moment everything works. Every later project in this track assumes this lab is up and running. A known-good snapshot means a broken later project never costs you this one.

Interview questions you should know

Interviewers really do ask about this exact stuff. Try answering out loud, in your own words, before you flip the card, that habit of explaining what you built without reading off a script is what actually separates "I followed the steps" from "I understand what I built," and it's what gets you hired. Click a card to flip it.

Scenario question

Your SIEM is receiving a large number of alerts from one detection rule, and most of them look benign. How would you investigate the rule, decide whether it needs tuning, and make sure you don't tune it so aggressively that you miss a real attack?

Click to flip

How to think about it

You already did this for real: Suricata had a noisy rule firing on routine traffic, and you quieted it with disable.conf plus suricata-update, never by hand-editing the compiled rules file, since that edit just disappears on the next update. Talk through the judgment part: confirm the traffic really is benign in your specific environment (not just annoying), suppress narrowly by the exact rule ID rather than a whole category, and write down why you suppressed it. That last part matters, an untuned rule wastes your time, but an over-tuned one can quietly blind you to the exact technique it was built to catch.

Scenario question

Your IDS generates a high-severity alert for possible network intrusion, but you can't immediately find evidence of compromise on the affected endpoint. How would you determine whether the alert is a true positive or a false positive?

Click to flip

How to think about it

A network alert by itself is only one data point, don't decide anything off it alone. Pull the endpoint's own telemetry for that same time window and see if the two sides agree. That's the exact reason this project doesn't stop at Suricata: Sysmon's telemetry and Suricata's alerts both land in Wazuh together, so you can pivot from a Suricata alert to what that same host's processes and connections were doing at that timestamp. Only call it a true or false positive once endpoint and network evidence actually line up, or once you've confirmed there's genuinely nothing to find on the host.

Scenario question

If you were given Windows endpoint logs, network IDS alerts, and SIEM alerts for the same incident, how would you correlate the different sources of telemetry to build an accurate timeline of what happened?

Click to flip

How to think about it

This is literally what Stages 5 and 6 of this project set up. Sysmon ships host telemetry, Suricata ships network alerts, and both feed into Wazuh instead of living in two separate places you'd have to check by hand. To correlate them: order everything by timestamp first, then find the common thread, same host, same IP, same agent name, and read the sequence as a story rather than a pile of isolated log lines. That's also exactly why you'd filter Wazuh by agent.name and a specific field like data.win.system.channel rather than scrolling through everything.

Scenario question

You receive a high-severity alert in your SIEM showing suspicious PowerShell activity on a Windows endpoint. Walk me through exactly how you would investigate it and determine whether it is malicious or legitimate.

Click to flip

How to think about it

This is exactly what Sysmon's Event ID 1 (process creation) is built to catch, it logs the full command line, the parent process, and a hash for anything that runs, PowerShell included, which is the telemetry your Windows 11 VM is already generating in this project. Investigate by reading the whole command line, not just "powershell.exe ran," checking what launched it (a normal admin session looks very different from Word or a script spawning it), and watching for encoded or obfuscated arguments. Legitimate activity usually has a boring, explainable parent process and plain-text commands, malicious activity often doesn't.

Behavioral question

Tell me about a time you made a mistake while investigating or troubleshooting a security problem. What did you miss, how did you correct it, and what did you change afterward?

Click to flip

How to think about it

You have a real one from this project: assuming a recent event just never arrived, when the actual cause was your VM's clock drifting out of sync with real time, so the dashboard's time filter was quietly hiding it the whole time. The "mistake" worth admitting isn't the drift itself, it's jumping straight to "something's broken" before checking the simpler explanation. Structure your answer as Situation, Task, Action, Result: what you saw, what you wrongly assumed, what you checked that proved you wrong, and what habit you built afterward (like checking the timestamp on the newest event before trusting an empty result).

Behavioral question

Tell me about a time you had to learn a new security tool or technology quickly in order to solve a problem. How did you approach learning it, and what was the result?

Click to flip

How to think about it

This whole project is that story, tell it as one. Situation: you needed a working detection lab and had likely never touched a hypervisor, Sysmon, Suricata, or Wazuh before. Task: get all of it installed, configured, and actually talking to each other. Action: worked through official docs and install scripts one stage at a time, hit real errors (a rule that wouldn't stop firing, an interface name that didn't match), and fixed them instead of giving up. Result: don't just say "it worked," point to how you actually proved it, the netcat-and-Test-NetConnection check in Stage 8 that confirmed the whole pipeline, not just each piece in isolation.

Troubleshooting

ProblemKali cannot reach Windows at all; Nmap fails with "no route to host."
FixThe VMs landed on different virtual subnets, usually because one VM's network setting does not match the other two. Shut it down, check its Network Mode against the others, and make sure all three use the same setting from Stage 2.
ProblemSuricata will not stay running, or keeps restarting.
FixAlmost always the network interface name in suricata.yaml is wrong. Modern Ubuntu does not use eth0. Run ip a and use the real interface name you see there.
ProblemTesting Suricata with the classic testmynids.org curl command does nothing, or the domain will not even resolve.
FixThat domain is dead. Use curl http://1.1.1.1/ instead. The active rule specifically matches a curl request to a literal IP address, not a domain name, so a plain domain will not trigger it either.
ProblemAn Nmap scan from Kali against the Windows VM shows every port "filtered," and nothing shows up in Wazuh.
FixThis is not a broken lab. Windows Firewall silently drops unsolicited inbound connections by default, so there is nothing for a signature to match. Validate the pipeline going the other direction instead: a netcat listener on Kali plus Test-NetConnection from Windows.
ProblemTest-NetConnection says it is "not recognized as the name of a cmdlet."
FixIt was run in Command Prompt. Test-NetConnection only works in PowerShell; open Windows PowerShell specifically (the prompt reads PS C:\...>) and run it there.
ProblemA recent event does not show up in the Wazuh dashboard even for a short time range like "last 15 minutes."
FixVM clocks drift out of sync with real time, sometimes by 30 minutes or more, especially after a VM has been paused and resumed a lot. Check the timestamp on the newest logged event before assuming nothing arrived, or widen the time range.
← All Projects Alert Triage & Shift Monitoring →