<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[RouteToRoot]]></title><description><![CDATA[RouteToRoot]]></description><link>https://blog.routetoroot.io</link><image><url>https://cdn.hashnode.com/uploads/logos/6a1dee02cb7a80b4b790a539/63c01668-3eab-4c2a-b291-5b8c9d057342.png</url><title>RouteToRoot</title><link>https://blog.routetoroot.io</link></image><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 14:21:15 GMT</lastBuildDate><atom:link href="https://blog.routetoroot.io/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Lab 22: Same Logs, New SIEM — Setting Up Splunk From Scratch]]></title><description><![CDATA[Lab 21 closed the detection gap in Elastic.
31 alerts fired. End-to-end detection confirmed. The Elastic SIEM phase of the portfolio was complete.
So naturally, I installed a second SIEM.
Lab 22 is th]]></description><link>https://blog.routetoroot.io/lab-22-same-logs-new-siem-setting-up-splunk-from-scratch</link><guid isPermaLink="true">https://blog.routetoroot.io/lab-22-same-logs-new-siem-setting-up-splunk-from-scratch</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[Career Change]]></category><category><![CDATA[#infosec]]></category><category><![CDATA[Splunk]]></category><category><![CDATA[SOC]]></category><dc:creator><![CDATA[routetoroot]]></dc:creator><pubDate>Fri, 11 Sep 2026 00:38:36 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1dee02cb7a80b4b790a539/b83a0818-da4f-401c-abcd-67aa030c8d86.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Lab 21 closed the detection gap in Elastic.</p>
<p>31 alerts fired. End-to-end detection confirmed. The Elastic SIEM phase of the portfolio was complete.</p>
<p>So naturally, I installed a second SIEM.</p>
<p>Lab 22 is the start of the Splunk chapter — deploying Splunk Enterprise 10.2.2 on the same Kali Linux host, pointing it at the same log source, and seeing what it takes to build detection coverage from scratch on a completely different platform.</p>
<p>Same logs. Same threats. Different tool.</p>
<hr />
<h3>Why Splunk</h3>
<p>Real SOC environments don't run one SIEM and call it done. Different organizations use different platforms — Elastic, Splunk, Microsoft Sentinel, IBM QRadar. An analyst who only knows one tool is an analyst with a ceiling.</p>
<p>The goal of the Splunk series isn't to prove that Splunk is better or worse than Elastic. It's to demonstrate that the detection engineering concepts I built in Labs 11–21 aren't platform-specific. The logic transfers. The syntax changes.</p>
<p>That's what platform-agnostic detection actually looks like in practice.</p>
<hr />
<h3>Installing Splunk Enterprise on Kali Linux</h3>
<p>Splunk Enterprise doesn't come pre-installed. The setup starts with downloading the <code>.deb</code> package directly from Splunk's servers:</p>
<pre><code class="language-plaintext">wget -O splunk-10.2.2-linux-amd64.deb "https://download.splunk.com/products/splunk/releases/10.2.2/linux/splunk-10.2.2-80b90d638de6-linux-amd64.deb"
</code></pre>
<p>Then installing it:</p>
<pre><code class="language-plaintext">sudo dpkg -i splunk-10.2.2-80b90d638de6-linux-amd64.deb
</code></pre>
<p>Then starting Splunk and accepting the license:</p>
<pre><code class="language-plaintext">sudo /opt/splunk/bin/splunk start --accept-license --run-as-root
</code></pre>
<p>On first launch, Splunk prompts you to create an admin account. Once that's done, the web interface is accessible at <a href="http://localhost:8000"><code>http://localhost:8000</code></a> — Splunk's browser-based UI where everything lives.</p>
<p>First impression coming from Elastic: different layout, different terminology, same fundamental concept. You're building a pipeline from log source to searchable index to detection logic. The plumbing is just labeled differently.</p>
<hr />
<h3>Configuring Log Ingestion</h3>
<p>Getting Splunk to ingest logs follows a similar path to Elastic — you tell it where to look, what to call it, and how to handle it.</p>
<p>The configuration path in Splunk's web interface:</p>
<p><strong>Settings → Add Data → Monitor → Files &amp; Directories</strong></p>
<p>Settings applied:</p>
<ul>
<li><p><strong>Source:</strong> <code>/var/log/auth.log</code></p>
</li>
<li><p><strong>Source Type:</strong> <code>linux_auth</code> (custom, created to properly categorize authentication log events)</p>
</li>
<li><p><strong>Host:</strong> <code>kali</code></p>
</li>
<li><p><strong>Index:</strong> <code>default</code></p>
</li>
<li><p><strong>Continuously Monitor:</strong> Yes</p>
</li>
</ul>
<p>That last setting — Continuously Monitor — is important. It means Splunk doesn't just take a one-time snapshot of the file. It watches for new events in real time, which is what you need for live detection.</p>
<hr />
<h3>Verifying Ingestion</h3>
<p>A pipeline that's configured but unverified is a pipeline you can't trust. Lab 21 taught me that lesson the hard way.</p>
<p>I ran a baseline search to confirm events were actually making it into Splunk's index.</p>
<p><strong>Result: 180 events indexed.</strong></p>
<p>Then I ran a targeted search to confirm the SSH brute force events from Labs 13 and 21 were present:</p>
<p><strong>Result: 76 events — all SSH brute force attempts confirmed.</strong></p>
<p>That number matters. 76 events from previous lab simulations, sitting in Splunk's index, immediately available for analysis. The rsyslog fix from Lab 21 wasn't just about closing the Elastic detection gap — it was a prerequisite for everything that comes next in the Splunk series.</p>
<p>One fix. Two SIEMs. Both operational.</p>
<hr />
<h3>What This Lab Actually Taught Me</h3>
<p>Installing a second SIEM reinforced something that's easy to read about but harder to internalize until you've done it:</p>
<p><strong>The tool is not the skill.</strong></p>
<p>The ability to configure a log source, verify ingestion, and confirm that the right data is in the index — that process is identical whether you're in Elastic or Splunk. The interface looks different. The search syntax is different. The underlying discipline is exactly the same.</p>
<p>Analysts who understand the pipeline — log source → ingestion → index → search → detection — can work in any SIEM. Analysts who only memorized the clicks in one platform are going to struggle the moment they sit in front of another one.</p>
<p>That's the gap I'm closing with this series.</p>
<hr />
<h3>What's Next</h3>
<p>Splunk is running. Logs are flowing. 76 SSH brute force events are sitting in the index waiting to be detected.</p>
<p>Lab 23 is where the detection rules get built — writing SPL queries targeting SSH authentication failures and configuring real-time alerts. Same logic as Lab 12 in Elastic. Different syntax.</p>
<p>Full lab report and documentation on GitHub: <a href="https://github.com/RouteToRoot">github.com/RouteToRoot</a></p>
<hr />
<p><em>Follow the journey:</em><br /><em>GitHub: github.com/RouteToRoot</em><br /><em>YouTube: youtube.com/@RouteToRoot_Sec</em><br /><em>Portfolio:</em> <a href="http://routetoroot.io"><em>routetoroot.io</em></a></p>
]]></content:encoded></item><item><title><![CDATA[Lab 21: I Finally Closed the Detection Gap]]></title><description><![CDATA[Eight labs ago, I ran a brute force attack against my own system and watched zero alerts fire.
I knew the attack happened. The logs confirmed it. But the SIEM never saw it — because the logs that matt]]></description><link>https://blog.routetoroot.io/lab-21-i-finally-closed-the-detection-gap</link><guid isPermaLink="true">https://blog.routetoroot.io/lab-21-i-finally-closed-the-detection-gap</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[Career Change]]></category><category><![CDATA[#infosec]]></category><category><![CDATA[Elastic]]></category><category><![CDATA[SOC]]></category><dc:creator><![CDATA[routetoroot]]></dc:creator><pubDate>Sat, 05 Sep 2026 03:29:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1dee02cb7a80b4b790a539/cd962b8e-ebbe-466c-8a11-dd2b1571dc18.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Eight labs ago, I ran a brute force attack against my own system and watched zero alerts fire.</p>
<p>I knew the attack happened. The logs confirmed it. But the SIEM never saw it — because the logs that mattered weren't making it into Elastic. I documented the gap, flagged it for remediation, and kept building.</p>
<p>That gap followed me through Labs 14, 15, 16, 17, 18, 19, and 20.</p>
<p>Lab 21 is where it finally gets closed.</p>
<p>What Was Actually Broken</p>
<p>The root cause turned out to be two configuration issues working together to create a complete blind spot.</p>
<p>Kali Linux doesn't install rsyslog by default. Without it, systemd-journald — the logging backend — has no syslog consumer to forward logs to. And without a syslog consumer, no /var/log/auth.log file gets created.</p>
<p>That's the first problem.</p>
<p>The second problem: ForwardToSyslog in /etc/systemd/journald.conf was set to no by default. Even if rsyslog had been installed, forwarding still wouldn't have happened without explicitly enabling it.</p>
<p>The combined effect: SSH authentication failures were being captured in the systemd journal — they existed, they were real, they were verifiable — but they never made it to a file that Elastic Agent could read. Elastic Agent's System integration monitors file-based log sources. No file, no ingestion. No ingestion, no alerts.</p>
<p>The detection rule wasn't broken. The pipeline was.</p>
<p>The Remediation</p>
<p>The fix required two steps: enable syslog forwarding in journald, then install rsyslog to receive it.</p>
<p>Step 1 — Enable ForwardToSyslog</p>
<p>sudo nano /etc/systemd/journald.conf</p>
<h1>Changed: ForwardToSyslog=yes</h1>
<p>sudo systemctl restart systemd-journald</p>
<p>Step 2 — Install rsyslog</p>
<p>sudo apt install rsyslog -y</p>
<p>Step 3 — Confirm auth.log exists</p>
<p>ls /var/log/auth.log</p>
<h1>Output: /var/log/auth.log</h1>
<p>That output — /var/log/auth.log — was the moment I knew the fix had worked. The file existed. The pipeline had somewhere to write.</p>
<p>Validating End-to-End Detection</p>
<p>A fix that hasn't been tested is a fix you can't trust.</p>
<p>I ran the same brute force simulation that had produced zero alerts in Lab 13 — ten consecutive failed SSH authentication attempts against the local SSH service using an invalid username:</p>
<p>for i in {1..10}; do ssh -o ConnectTimeout=5 invalid_<a href="mailto:user@127.0.0.1">user@127.0.0.1</a>; done</p>
<p>Then I verified the attack was writing to auth.log:</p>
<p>sudo grep "invalid_user" /var/log/auth.log</p>
<p>Confirmed. Then I went to Kibana Discover and queried for ingested events from the Kali host.</p>
<p>61 documents returned.</p>
<p>Then I checked the Alerts dashboard.</p>
<p>31 alerts fired.</p>
<p>Rule: SSH Authentication Failure Detected. Host: kali. Severity: Medium. Risk Score: 47.</p>
<p>The full pipeline — from attack activity on the host, through rsyslog, into /var/log/auth.log, picked up by Elastic Agent, ingested into logs-system.auth-*, evaluated against the detection rule, and surfaced as an alert in Kibana — was working end-to-end.</p>
<p>Eight labs. One misconfiguration. Thirty-one alerts.</p>
<p>What This Actually Means</p>
<p>There's a lesson here that goes beyond rsyslog configuration.</p>
<p>The detection gap was invisible. The rules didn't error. The agent didn't report a problem. The SIEM dashboard looked normal. Nothing screamed that something was wrong — because a missing log source doesn't generate noise. It generates silence.</p>
<p>And silence in a SOC is dangerous, because silence can look like safety.</p>
<p>In a real environment, this kind of gap could persist for months without anyone noticing. Attackers targeting SSH on Linux hosts would have gone completely undetected. No alerts, no investigation, no response — not because the security team wasn't watching, but because the SIEM was watching the wrong data stream.</p>
<p>The analysts who catch gaps like this aren't the ones who trust the dashboard. They're the ones who run simulations, verify log sources, and treat silence as a signal worth investigating.</p>
<p>That's the work.</p>
<p>The Detection Chain — Fully Validated Step Status SSH brute force executed ✅ Confirmed Events written to auth.log ✅ Confirmed Logs ingested to Elastic ✅ 61 documents Detection rule triggered ✅ Yes Alerts generated ✅ 31 alerts What's Next</p>
<p>The Elastic SIEM phase of the lab portfolio is complete.</p>
<p>Next up: Splunk. Same detection logic, different platform — because real detection engineering isn't about memorizing tool syntax. It's about understanding the pattern underneath it. Platform-agnostic. Threat-focused.</p>
<p>Labs 22–25 build out Splunk detection coverage from scratch. The gap that took eight labs to close in Elastic? We're not making the same mistake twice.</p>
<p>Full lab report and documentation on GitHub: github.com/RouteToRoot</p>
<p>Follow the journey: GitHub: github.com/RouteToRoot YouTube: youtube.com/@RouteToRoot_Sec Portfolio: routetoroot.io</p>
]]></content:encoded></item><item><title><![CDATA[Lab 13: The Attack Ran. The Alerts Didn't Fire.]]></title><description><![CDATA[In Lab 12, I built the detection rules.
Three prebuilt Elastic rules targeting Linux attack techniques. One custom KQL rule for SSH authentication failures. The pipeline was configured, the rules were]]></description><link>https://blog.routetoroot.io/lab-13-the-attack-ran-the-alerts-didn-t-fire</link><guid isPermaLink="true">https://blog.routetoroot.io/lab-13-the-attack-ran-the-alerts-didn-t-fire</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[Career Change]]></category><category><![CDATA[#infosec]]></category><category><![CDATA[Elastic]]></category><category><![CDATA[SOC]]></category><dc:creator><![CDATA[routetoroot]]></dc:creator><pubDate>Mon, 31 Aug 2026 01:36:36 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1dee02cb7a80b4b790a539/0340ad69-f1a6-498f-a9a0-7f6734f04012.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In Lab 12, I built the detection rules.</p>
<p>Three prebuilt Elastic rules targeting Linux attack techniques. One custom KQL rule for SSH authentication failures. The pipeline was configured, the rules were live, and the SIEM was watching.</p>
<p>Lab 13 was the moment of truth — run a real attack simulation and see if the detections held up.</p>
<p>They didn't.</p>
<hr />
<h3>The Attack</h3>
<p>The setup was straightforward. Start the SSH service on the Kali Linux host, run a brute force loop generating repeated failed authentication attempts against the local SSH service using an invalid username, and watch the Elastic Alerts dashboard for rule triggers.</p>
<pre><code class="language-plaintext">sudo systemctl start ssh
for i in {1..10}; do ssh -o ConnectTimeout=5 invalid_user@127.0.0.1; done
</code></pre>
<p>Ten connection attempts. Three failed password entries per attempt. Thirty total authentication failure events generated on the host.</p>
<p>The attack worked exactly as expected. Confirmation came straight from the system journal:</p>
<pre><code class="language-plaintext">sudo journalctl -u ssh --since "1 hour ago" | tail -20
</code></pre>
<p>The output was unambiguous — invalid user attempts from 127.0.0.1, failed password entries per connection, connection closed entries confirming authentication denial. Thirty failed authentication events, all logged, all verified.</p>
<p>The attack happened. The logs proved it.</p>
<hr />
<h3>The Alerts Dashboard</h3>
<p>I pulled up the Elastic Security Alerts dashboard and waited.</p>
<p>Nothing.</p>
<p>Zero alerts. Four rules configured — three prebuilt Elastic rules and one custom KQL rule — and not a single one triggered. The Rule Monitoring tab told the same story: one rule succeeded, three with no response, zero failures, zero errors.</p>
<p>The rules weren't broken. They just hadn't seen anything to alert on.</p>
<hr />
<h3>Finding the Gap</h3>
<p>This is where the lab shifted from attack simulation to detection engineering.</p>
<p>When an alert doesn't fire, there are only a few possible explanations. The attack didn't happen. The logs weren't generated. The logs weren't collected. The logs weren't in the right data stream. Or the rule query didn't match the data.</p>
<p>I'd already eliminated the first two — the attack happened and the logs were confirmed in the system journal. So I worked down the chain.</p>
<p>The Elastic detection rules query specific index patterns:</p>
<ul>
<li><p><code>filebeat-*</code></p>
</li>
<li><p><code>logs-system.auth-*</code></p>
</li>
</ul>
<p>Neither of those data streams contained the SSH failure events from the Kali host.</p>
<p>Root cause identified: the SSH authentication failure events generated on Kali Linux are stored in the systemd journal and the <code>/var/log/btmp</code> binary log file. The Elastic Agent System integration, as currently configured, wasn't collecting those specific log sources. The agent was enrolled and sending data — just not the right data.</p>
<p>The SIEM had blind spots it didn't advertise.</p>
<hr />
<h3>What the Detection Gap Actually Means</h3>
<p>Here's the thing about detection gaps — they're not failures. They're findings.</p>
<p>In a real SOC environment, this is exactly the workflow: simulate attack activity, monitor for alerts, trace the detection chain when alerts don't fire, identify the gap, document it, remediate it. The gap between attack execution and alert generation has to be traced systematically — host logs → agent collection → data stream → rule query → alert. Every link in that chain is a potential failure point.</p>
<p>The fact that I could run the simulation, confirm the attack in host logs, monitor the SIEM, identify zero alerts, and then trace the root cause to a specific log ingestion configuration issue? That's not a failed lab. That's the lab working exactly as it should.</p>
<table>
<thead>
<tr>
<th>Component</th>
<th>Status</th>
</tr>
</thead>
<tbody><tr>
<td>SSH brute force executed</td>
<td>✅ Confirmed</td>
</tr>
<tr>
<td>Attack logs on host</td>
<td>✅ Confirmed (journalctl)</td>
</tr>
<tr>
<td>Logs ingested to Elastic</td>
<td>❌ Not confirmed</td>
</tr>
<tr>
<td>Detection rules triggered</td>
<td>❌ No</td>
</tr>
<tr>
<td>Alerts generated</td>
<td>❌ No</td>
</tr>
</tbody></table>
<p>Detection gap documented. Remediation path identified.</p>
<hr />
<h3>What This Taught Me</h3>
<p>A SIEM is only as effective as its log sources.</p>
<p>That sounds obvious when you read it. It hits differently when you've just watched thirty brute force events generate zero alerts because the agent wasn't configured to forward the right logs. The detection rule was correct. The attack was real. The gap was a misconfiguration that would have been invisible without running this test.</p>
<p>Real-world SOC environments have these gaps all the time. Misconfigured agent policies, blind spots in log collection, data streams that don't match rule queries. The analysts who find them — by running simulations, tracing detection chains, and documenting what they find — are the ones who actually improve the security posture of their organization.</p>
<p>Documenting a detection gap is as valuable as documenting a successful detection. It demonstrates that you understand the full pipeline, not just the alerts dashboard.</p>
<hr />
<h3>What's Next</h3>
<p>The gap is documented. The remediation path is clear.</p>
<p>Lab 14 moves into threat hunting in Kibana — but the SSH detection gap doesn't go away quietly. It follows the lab series for the next several labs until it finally gets resolved.</p>
<p>That resolution is coming. But first, there's more to build.</p>
<p>Full lab report on GitHub: <a href="https://github.com/RouteToRoot">github.com/RouteToRoot</a></p>
<p><em>Follow the journey:</em><br /><em>GitHub: github.com/RouteToRoot</em><br /><em>YouTube: youtube.com/@RouteToRoot_Sec</em><br /><em>Portfolio:</em> <a href="http://routetoroot.io"><em>routetoroot.io</em></a></p>
]]></content:encoded></item><item><title><![CDATA[Lab 12: How I Taught My SIEM to Recognize an Attack]]></title><description><![CDATA[Lab 11 got the pipeline running.
Logs were flowing from my Kali Linux host into Elastic SIEM. The agent was enrolled. The data was real. But a SIEM that ingests logs and does nothing with them is just]]></description><link>https://blog.routetoroot.io/lab-12-how-i-taught-my-siem-to-recognize-an-attack</link><guid isPermaLink="true">https://blog.routetoroot.io/lab-12-how-i-taught-my-siem-to-recognize-an-attack</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[Career Change]]></category><category><![CDATA[#infosec]]></category><category><![CDATA[Elastic]]></category><category><![CDATA[SOC]]></category><dc:creator><![CDATA[routetoroot]]></dc:creator><pubDate>Fri, 28 Aug 2026 01:57:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1dee02cb7a80b4b790a539/94f3fb15-0c30-4846-b589-95de615e56e9.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Lab 11 got the pipeline running.</p>
<p>Logs were flowing from my Kali Linux host into Elastic SIEM. The agent was enrolled. The data was real. But a SIEM that ingests logs and does nothing with them is just an expensive storage system.</p>
<p>Lab 12 was where I flipped the switch from passive to active — from collecting data to actually detecting threats.</p>
<hr />
<h3>What Detection Rules Actually Are</h3>
<p>Before I get into the lab, it's worth explaining what a detection rule is, because it's one of those terms that sounds more complicated than it is.</p>
<p>A detection rule is a condition. It tells the SIEM: <em>if you see this pattern in the logs, fire an alert.</em></p>
<p>That's it. The sophistication is in how you define the condition — what data you're looking at, what pattern you're matching, and how you tune the rule to catch real threats without drowning analysts in false positives.</p>
<p>Elastic Security gives you two ways to build detection coverage. Prebuilt rules developed and maintained by Elastic's security team, mapped directly to the MITRE ATT&amp;CK framework. And custom rules you write yourself, tailored to your specific environment.</p>
<p>In Lab 12, I used both.</p>
<hr />
<h3>The Prebuilt Rules: Standing on the Shoulders of Elastic's Security Team</h3>
<p>My first move was installing three prebuilt Elastic detection rules targeting Linux-based attack techniques:</p>
<ul>
<li><p><strong>Linux User Account Credential Modification</strong> — detects changes to user credentials, a common post-exploitation technique</p>
</li>
<li><p><strong>Potential Internal Linux SSH Brute Force Detected</strong> — flags repeated failed SSH authentication attempts from inside the network</p>
</li>
<li><p><strong>Potential Linux Hack Tool Launched</strong> — identifies execution of known offensive security tools on a Linux host</p>
</li>
</ul>
<p>Each of these rules is mapped to specific MITRE ATT&amp;CK techniques. The SSH brute force rule, for example, maps to T1110 (Brute Force), T1110.001 (Password Guessing), and T1110.003 (Password Spraying). That mapping matters because it gives analysts immediate context when an alert fires — not just <em>what</em> happened, but <em>where it fits in the attacker's playbook</em>.</p>
<p>Installing prebuilt rules is straightforward. You navigate to the Detection Rules section in Elastic Security, browse the rule library, and enable the ones relevant to your environment. Three clicks and you have enterprise-grade detection logic written by people who track real threat actors for a living.</p>
<p>That's not something to take lightly.</p>
<hr />
<h3>The Custom Rule: Writing My First KQL Detection Logic</h3>
<p>Prebuilt rules cover common attack patterns. But every environment has unique characteristics that prebuilt rules can't anticipate. That's where custom rules come in.</p>
<p>For Lab 12, I wrote a custom rule to detect failed SSH authentication attempts on my Kali Linux host using KQL — Kibana Query Language. KQL is Elastic's search syntax, and it's readable enough that you can understand what a query is doing even if you've never written one before.</p>
<p>The rule settings:</p>
<ul>
<li><p><strong>Name:</strong> SSH Authentication Failure Detected</p>
</li>
<li><p><strong>Severity:</strong> Medium</p>
</li>
<li><p><strong>Risk Score:</strong> 47</p>
</li>
<li><p><strong>Rule Type:</strong> Custom Query</p>
</li>
<li><p><strong>Query Language:</strong> KQL</p>
</li>
</ul>
<p>The query targets authentication events where the outcome is a failure — specifically catching the pattern of repeated failed login attempts that characterizes a brute force attack.</p>
<p>Writing this rule taught me something that reading about KQL never would: the query has to match the data that's actually in your environment. If your log source isn't structured the way your rule expects, the rule won't fire — even if the attack is happening. The rule is only as good as the data behind it.</p>
<hr />
<h3>Testing the Rules: Simulating an SSH Brute Force Attack</h3>
<p>Rules that have never been tested are rules you can't trust. So I ran a simulation.</p>
<p>Using the Kali Linux host, I generated repeated failed SSH authentication attempts against the local SSH service:</p>
<pre><code class="language-plaintext">sudo systemctl start ssh
ssh invalid_user@127.0.0.1
</code></pre>
<p>Multiple failed attempts. Multiple invalid users. The kind of activity that, on a real network, would indicate someone systematically trying to guess their way into a system.</p>
<p>Then I went to the Elastic Security Alerts dashboard and waited.</p>
<p>The rules fired.</p>
<p>Not all of them — and that matters, which is exactly what Lab 13 is about. But the detection logic was working. The pipeline from attack activity to log ingestion to rule evaluation to alert generation was intact.</p>
<p>That's a working SOC detection workflow, built from scratch.</p>
<hr />
<h3>What This Lab Actually Taught Me</h3>
<p>Detection engineering is about more than writing queries. It's about understanding the relationship between attacker behavior, log data, and detection logic — and knowing where that chain can break.</p>
<p>A few things that landed differently after doing this hands-on:</p>
<p><strong>MITRE ATT&amp;CK isn't just a framework for reading.</strong> When you see your own detection rules mapped to T1110 and its sub-techniques, the framework stops being abstract. It becomes a practical tool for understanding what you're detecting and what gaps you still have.</p>
<p><strong>Prebuilt rules are a starting point, not a finish line.</strong> They give you solid baseline coverage fast. But real detection engineering means understanding your environment well enough to write the rules that prebuilt libraries don't cover.</p>
<p><strong>Rule tuning is the real work.</strong> Getting a rule to fire is easy. Getting it to fire on real threats without burying your analysts in noise is the skill that separates good detection engineers from great ones.</p>
<hr />
<h3>What's Next</h3>
<p>The rules are configured. The simulation ran. Some alerts fired.</p>
<p>But not all of them — because there was a detection gap I didn't know about yet. One that would take eight more labs to find and fix.</p>
<p>That's Lab 13.</p>
<p>Full lab report and documentation on GitHub: <a href="https://github.com/RouteToRoot">github.com/RouteToRoot</a></p>
<hr />
<p><em>Follow the journey:</em><br /><em>GitHub: github.com/RouteToRoot</em><br /><em>YouTube: youtube.com/@RouteToRoot_Sec</em><br /><em>Portfolio:</em> <a href="http://routetoroot.io"><em>routetoroot.io</em></a></p>
]]></content:encoded></item><item><title><![CDATA[Patch Tuesday Just Dropped 421 CVEs. One Was Already Being Exploited.]]></title><description><![CDATA[Every second Tuesday of the month, Microsoft drops a security update. And every month, the security community holds its breath a little.
August 2026's Patch Tuesday was a big one.
421 CVEs patched acr]]></description><link>https://blog.routetoroot.io/patch-tuesday-just-dropped-421-cves-one-was-already-being-exploited</link><guid isPermaLink="true">https://blog.routetoroot.io/patch-tuesday-just-dropped-421-cves-one-was-already-being-exploited</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[Vulnerability management]]></category><category><![CDATA[grc]]></category><category><![CDATA[patch tuesday]]></category><category><![CDATA[Career Change]]></category><dc:creator><![CDATA[routetoroot]]></dc:creator><pubDate>Thu, 20 Aug 2026 00:46:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1dee02cb7a80b4b790a539/f0a2c5bc-c1e3-4d95-ad5b-09962aff4bef.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Every second Tuesday of the month, Microsoft drops a security update. And every month, the security community holds its breath a little.</p>
<p>August 2026's Patch Tuesday was a big one.</p>
<p>421 CVEs patched across Microsoft's product lineup. 62 rated critical. And one — CVE-2026-68820, an elevation of privilege vulnerability in the Windows kernel — was already being actively exploited in the wild before the fix even shipped.</p>
<p>That's not a drill. That's a zero-day.</p>
<p><strong>The patch doesn't protect you the moment it drops</strong></p>
<p>Here's what most people outside of security don't fully appreciate: releasing a patch and deploying a patch are two completely different things.</p>
<p>Between the moment Microsoft publishes a fix and the moment that fix is actually running on every endpoint in your environment, there's a window. And that window — however long it lasts — is exactly where attackers operate.</p>
<p>For large enterprises, that window can stretch days, weeks, or longer. Patches have to be tested against production systems, prioritized by severity, scheduled around maintenance windows, and pushed across potentially thousands of endpoints without breaking anything.</p>
<p>421 patches. One month. That's the reality of vulnerability management.</p>
<p><strong>This is a GRC problem, not just an IT problem</strong></p>
<p>Vulnerability management lives at the intersection of technical controls and governance. It's not enough to know a patch exists — organizations need:</p>
<ul>
<li><p>A process for ingesting and triaging CVEs by severity and exploitability</p>
</li>
<li><p>Defined SLAs for how fast critical patches must be deployed</p>
</li>
<li><p>Accountability structures to ensure patches actually get applied</p>
</li>
<li><p>Audit trails to prove compliance to regulators and auditors</p>
</li>
</ul>
<p>Without that governance layer, even the best technical teams end up playing whack-a-mole. Patch management without policy is just hope.</p>
<p><strong>What I'm building toward</strong></p>
<p>I'm currently working through my cybersecurity lab portfolio — 29+ labs covering Elastic SIEM, Splunk, Microsoft Sentinel, Nessus, and more. My Nessus labs focus specifically on vulnerability scanning and prioritization — identifying exposures, scoring them by risk, and thinking through remediation workflows.</p>
<p>That hands-on work is teaching me what Patch Tuesday makes obvious every month: defenders don't have unlimited time, and neither do organizations. Prioritization isn't optional. It's survival.</p>
<p>421 CVEs. One already exploited. The clock is always running.</p>
<p>🔗 Explore my full lab portfolio: <a href="http://routetoroot.github.io">routetoroot.github.io</a></p>
]]></content:encoded></item><item><title><![CDATA[I Finally Stopped Reading About SIEMs and Built One]]></title><description><![CDATA[I'd been reading about SIEM tools for months before I actually touched one.
SIEM — Security Information and Event Management — shows up in almost every SOC job description. It's the platform analysts ]]></description><link>https://blog.routetoroot.io/i-finally-stopped-reading-about-siems-and-built-one</link><guid isPermaLink="true">https://blog.routetoroot.io/i-finally-stopped-reading-about-siems-and-built-one</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[Career Change]]></category><category><![CDATA[#infosec]]></category><category><![CDATA[Elastic]]></category><category><![CDATA[SOC]]></category><dc:creator><![CDATA[routetoroot]]></dc:creator><pubDate>Mon, 27 Jul 2026 02:16:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1dee02cb7a80b4b790a539/13432589-ed9e-489a-b3e2-9fe9af23bb26.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I'd been reading about SIEM tools for months before I actually touched one.</p>
<p>SIEM — Security Information and Event Management — shows up in almost every SOC job description. It's the platform analysts live in. The place where logs flow in, alerts fire, and investigations begin. I knew what it was conceptually. But knowing what something is and actually deploying one are two completely different things.</p>
<p>Lab 11 was the day I stopped reading about it and started building.</p>
<hr />
<h3>What I Was Setting Up</h3>
<p>The goal was straightforward on paper: deploy Elastic Cloud Serverless SIEM, enroll an Elastic Agent on my Kali Linux host, and confirm that logs were actually flowing into the platform.</p>
<p>Three steps. One outcome — a working SIEM pipeline.</p>
<p>What nobody tells you before you start is that "straightforward on paper" and "smooth in practice" rarely mean the same thing in a lab environment.</p>
<hr />
<h3>Step 1: Standing Up Elastic Cloud Serverless</h3>
<p>Elastic offers a free cloud trial that's more than enough to get a functional SIEM environment running. The Serverless option is the right choice for a home lab — no infrastructure to manage, no Elasticsearch cluster to babysit. You spin up a Security project, and Elastic handles the backend.</p>
<p>The setup process itself is guided. You create an account, start a new Security project, and land in Kibana — Elastic's web interface where everything lives. The dashboard is clean and purpose-built for security work. Integrations, detection rules, alerts, and the Discover interface for raw log querying are all right there.</p>
<p>First impression: this is a real tool. Not a toy, not a simplified student version. The same platform security teams use in production environments.</p>
<hr />
<h3>Step 2: Enrolling Elastic Agent on Kali Linux</h3>
<p>Elastic Agent is the component that actually collects logs from your host and ships them to the SIEM. Getting it enrolled on my Kali Linux machine was the most technically involved part of the lab.</p>
<p>The process runs through Kibana's Fleet interface — Elastic's agent management console. You create an agent policy, download the agent package for Linux, and run an enrollment command that registers the agent with your cloud instance.</p>
<p>The enrollment command looks something like this:</p>
<pre><code class="language-plaintext">sudo ./elastic-agent install \
  --url=&lt;your-fleet-server-url&gt; \
  --enrollment-token=&lt;your-token&gt;
</code></pre>
<p>Once that runs successfully, the agent shows up as enrolled in Fleet. Green status. Connected.</p>
<p>That moment — watching the agent appear as active in the console — is one of those small wins that feels bigger than it probably should. Because it means the pipeline is alive. Data is moving.</p>
<hr />
<h3>Step 3: Confirming Log Ingestion</h3>
<p>The final step was verifying that logs from the Kali host were actually arriving in Elastic. This is where a lot of first-time setups fall apart — the agent enrolls, but the data doesn't flow the way you expect.</p>
<p>In Kibana's Discover interface, I queried for events from the enrolled host and confirmed that system logs were coming through. The timestamps were current. The host name matched. The data was real.</p>
<p>Pipeline confirmed.</p>
<hr />
<h3>What This Lab Actually Taught Me</h3>
<p>Setting up a SIEM from scratch teaches you something that reading about SIEM never does: you learn where the data actually comes from.</p>
<p>It's easy to think of a SIEM as a magic box that knows everything happening on your network. It's not. It only knows what you tell it. Every log source has to be explicitly configured. Every agent has to be enrolled. Every data stream has to be verified.</p>
<p>The intelligence of a SIEM is only as good as the instrumentation behind it. And the analyst who understands that — who knows not just how to query the data but where the data comes from and why it might be missing — is going to be more effective than one who just knows how to run searches.</p>
<p>That lesson was worth more than the lab itself.</p>
<hr />
<h3>What's Next</h3>
<p>Lab 11 got the pipeline running. Lab 12 is where things get interesting — that's where I started building detection rules. Taking a live SIEM with real log data and teaching it to recognize an attack.</p>
<p>That's the post coming next.</p>
<p>If you want to follow along with the actual lab work, the full documented report is on my GitHub: <a href="https://github.com/RouteToRoot">github.com/RouteToRoot</a></p>
<hr />
<p><em>Follow the journey:</em><br /><em>GitHub: github.com/RouteToRoot</em><br /><em>YouTube: youtube.com/@RouteToRoot_Sec</em><br /><em>Portfolio:</em> <a href="http://routetoroot.io"><em>routetoroot.io</em></a></p>
]]></content:encoded></item><item><title><![CDATA[SOC or GRC? Why I'm Targeting Both (And How I'm Deciding)]]></title><description><![CDATA[When people ask me what kind of cybersecurity role I'm going after, I give them the same answer every time:
"SOC analyst or GRC analyst — whichever one hires me first."
That usually gets a laugh. But ]]></description><link>https://blog.routetoroot.io/soc-or-grc-why-i-m-targeting-both-and-how-i-m-deciding</link><guid isPermaLink="true">https://blog.routetoroot.io/soc-or-grc-why-i-m-targeting-both-and-how-i-m-deciding</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[Career Change]]></category><category><![CDATA[#infosec]]></category><category><![CDATA[grc]]></category><category><![CDATA[SOC]]></category><dc:creator><![CDATA[routetoroot]]></dc:creator><pubDate>Tue, 14 Jul 2026 04:13:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1dee02cb7a80b4b790a539/ca0fcd42-59c4-46bd-803f-861b80091030.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When people ask me what kind of cybersecurity role I'm going after, I give them the same answer every time:</p>
<p>"SOC analyst or GRC analyst — whichever one hires me first."</p>
<p>That usually gets a laugh. But the truth is more nuanced than that, and I think it's worth laying out publicly — because if you're a career-changer trying to break into security, you've probably hit this same fork in the road.</p>
<p>Two paths. Both legitimate. Both in demand. And just different enough that the wrong choice could mean spending years doing work that doesn't fit you.</p>
<p>So here's how I'm thinking about it.</p>
<hr />
<h3>First, What Are We Actually Talking About?</h3>
<p><strong>SOC Analyst (Security Operations Center)</strong> is the hands-on, real-time side of security. You're monitoring alerts, investigating incidents, triaging threats, and responding when something goes wrong. The job rewards fast thinking, pattern recognition, and comfort with ambiguity. You live inside tools like Elastic SIEM, Splunk, and Microsoft Sentinel.</p>
<p><strong>GRC Analyst (Governance, Risk, and Compliance)</strong> is the strategy and structure side. You're building frameworks, assessing risk, managing audits, and making sure the organization meets its compliance obligations — think NIST, ISO 27001, SOC 2, HIPAA. Less about chasing alerts, more about building the systems that prevent problems in the first place.</p>
<p>Both roles matter. Both are hiring. And they require more overlapping skills than most people realize.</p>
<hr />
<h3>Which Role Does My Background Map To Better?</h3>
<p>This is where it gets interesting — because the honest answer is both, for different reasons.</p>
<p>My trucking background maps to GRC almost perfectly. Risk management, vendor assessment, documentation, audit readiness — I did all of that running Mud Mule LLC. I just didn't have the framework or the vocabulary. When I started studying GRC concepts, I kept having the same reaction: <em>I've done this. I just called it something else.</em></p>
<p>But my lab work pulls me toward SOC. Twenty-nine labs deep, I've spent the most time in SIEM tools — building detection rules, analyzing logs, investigating simulated incidents, writing Python scripts to automate alert triage. That's SOC muscle memory. When an alert fires in a lab environment and I start working through it methodically, something clicks in a way that feels right.</p>
<p>So my background says GRC. My hands say SOC.</p>
<p>That's not a contradiction — it's actually an asset. It means I can speak both languages, which makes me useful in roles that sit at the intersection of the two.</p>
<hr />
<h3>So What's the Gut Feeling?</h3>
<p>If I'm being honest — and this whole blog is about being honest — I think I'm a SOC analyst who will eventually move into GRC.</p>
<p>The hands-on work energizes me. I like being in the terminal. I like the puzzle of an alert that doesn't make sense until suddenly it does. I like building detection logic and watching it catch something it was designed to catch.</p>
<p>But I also know that the skills I built in a decade of running a business aren't going away. At some point, the experience I have managing operational risk, dealing with vendors, and keeping meticulous records is going to be exactly what a GRC team needs.</p>
<p>For now, I'm keeping both doors open. Applying to SOC roles. Studying frameworks that matter for GRC. Building a portfolio that speaks to both.</p>
<hr />
<h3>What This Means If You're In the Same Position</h3>
<p>Don't let the decision paralyze you. Both paths lead somewhere good. The worst thing you can do is spend six months agonizing over which role to pursue instead of building the skills that make you competitive for either one.</p>
<p>Figure out which work actually energizes you when you do it. That's your signal.</p>
<p>Study the fundamentals that apply to both — networking, log analysis, risk concepts, the major compliance frameworks. Security+ covers a lot of this ground intentionally.</p>
<p>And keep your options open until the market gives you feedback. Your first job in security probably won't be your last, and the skills transfer more than you think.</p>
<p>The route matters less than staying on it.</p>
<hr />
<p><em>Follow the journey:</em><br /><em>GitHub: github.com/RouteToRoot</em><br /><em>YouTube: youtube.com/@RouteToRoot_Sec</em><br /><em>Portfolio:</em> <a href="http://routetoroot.io"><em>routetoroot.io</em></a></p>
]]></content:encoded></item><item><title><![CDATA[What Running a Trucking Company Taught Me About Cybersecurity]]></title><description><![CDATA[I used to joke that running Mud Mule LLC was like playing a video game on hard mode with no save points.
Every morning started with variables I couldn't control. Fuel prices spiked overnight. A load t]]></description><link>https://blog.routetoroot.io/what-running-a-trucking-company-taught-me-about-cybersecurity</link><guid isPermaLink="true">https://blog.routetoroot.io/what-running-a-trucking-company-taught-me-about-cybersecurity</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[Career Change]]></category><category><![CDATA[#infosec]]></category><category><![CDATA[grc]]></category><category><![CDATA[SOC]]></category><dc:creator><![CDATA[routetoroot]]></dc:creator><pubDate>Wed, 24 Jun 2026 03:03:38 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1dee02cb7a80b4b790a539/dac8f5f7-96b3-4c3a-b0d8-59a5618963cc.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I used to joke that running Mud Mule LLC was like playing a video game on hard mode with no save points.</p>
<p>Every morning started with variables I couldn't control. Fuel prices spiked overnight. A load that was confirmed yesterday got cancelled this morning. A tire blew out somewhere in the middle of nowhere at 2 AM. And somewhere in all of that, I still had to make payroll, keep the equipment moving, and make decisions — fast, with incomplete information.</p>
<p>I didn't know it at the time. But I was training for cybersecurity.</p>
<hr />
<h3>The Trucking Industry Doesn't Forgive Sloppy Risk Management</h3>
<p>When you're running a commercial trucking operation, every decision is a risk calculation — whether you frame it that way or not.</p>
<p>Do you take a load that pays well but routes through a state with strict weight limits and aggressive DOT inspectors? Do you run a truck that's showing early warning signs, or do you pull it and eat the downtime? Do you lock in a contract rate or stay spot market and gamble on freight demand?</p>
<p>None of those decisions have a clear right answer. They all depend on your current exposure, your margins, your tolerance for downside risk, and what you know about the variables in play.</p>
<p>Sound familiar?</p>
<p>In GRC — Governance, Risk, and Compliance — that's the entire job. You assess risk. You weigh likelihood against impact. You make recommendations knowing that no environment is zero-risk, and that the goal isn't to eliminate risk, it's to manage it to an acceptable level.</p>
<p>I spent nearly a decade doing exactly that. I just didn't have the vocabulary for it yet.</p>
<hr />
<h3>When Things Break, You Don't Get to Panic</h3>
<p>There's a moment every owner-operator knows. Something goes wrong — really wrong — and every instinct you have wants to spiral. But you can't. Because panicking doesn't fix the truck, and it doesn't get the load delivered.</p>
<p>You stop. You assess. What do I actually know right now? What's the immediate impact? What needs to happen in the next ten minutes, and what can wait?</p>
<p>That mental process — triage under pressure — is exactly what a SOC analyst does when an alert fires at 11 PM on a Friday.</p>
<p>You don't know yet if it's a false positive or a live incident. You don't know the scope. You don't know if someone is actively moving through the network or if a misconfigured rule threw a flag. What you do know is that spiraling wastes time, and time is the one thing you can't recover.</p>
<p>The ability to stay calm, work the problem methodically, and communicate clearly under pressure isn't something you learn in a classroom. I learned it on the side of a highway waiting for a mobile mechanic, trying to figure out how to salvage a load that was already running late.</p>
<hr />
<h3>Vendor Trust Is a Security Problem Too</h3>
<p>Running a trucking company means managing relationships — brokers, shippers, fuel card providers, maintenance shops, insurance carriers. And one of the hard lessons you learn early is that not every party in your supply chain has your best interests in mind.</p>
<p>Brokers low-ball rates and bury fees in the fine print. Shippers misrepresent load weights. Third-party maintenance shops cut corners you won't discover until something fails on the road.</p>
<p>In cybersecurity, we call that the third-party risk problem. Your organization's security posture is only as strong as the weakest link in your vendor ecosystem. A trusted software provider with a compromised update pipeline can be your worst nightmare — and you let them in.</p>
<p>I already knew, viscerally, that "trusted" isn't the same as "verified." I'd just never heard the term supply chain attack before.</p>
<hr />
<h3>Logs, Records, and the Paper Trail That Saves You</h3>
<p>If there's one discipline that trucking and cybersecurity share completely, it's documentation.</p>
<p>In trucking, your logbook is everything. Hours of service, inspection records, bills of lading, maintenance logs — all of it has to be accurate, timestamped, and audit-ready. Because when something goes wrong — an accident, a DOT audit, an insurance dispute — the paper trail is either your best defense or the thing that buries you.</p>
<p>In security, logs are your ground truth. SIEM tools like Elastic and Splunk exist because without a reliable, timestamped record of what happened on your network, you're flying blind. Detection is only possible if you collected the right data. Investigation is only possible if the logs weren't tampered with. Attribution is only possible if the chain of evidence holds.</p>
<p>The mindset is identical: document everything, because you don't know which record will matter until you need it.</p>
<hr />
<h3>The Skills Were Always There</h3>
<p>Here's what I want other career-changers to hear.</p>
<p>You probably have more relevant experience than you think. The gap isn't your intelligence or your capability — it's vocabulary and technical depth. Both of those are learnable. You close them with study, labs, and time.</p>
<p>The instincts that come from running a business, managing real risk, working under pressure, and building trust in high-stakes environments? Those aren't learnable from a textbook. Those come from doing hard things for a long time.</p>
<p>I spent eight years building them without realizing what I was building.</p>
<p>Now I'm here — 29 labs deep, Security+ in progress, portfolio growing at <a href="http://routetoroot.github.io">routetoroot.github.io</a> — and for the first time in a long time, the work feels like mine.</p>
<p>The route was longer than I expected. But I was more prepared for it than I knew.</p>
<hr />
<p><em>Follow the journey:</em> <em>GitHub: github.com/RouteToRoot</em> <em>YouTube: youtube.com/@RouteToRoot_Sec</em> <em>Portfolio:</em> <a href="http://routetoroot.io"><em>routetoroot.io</em></a></p>
]]></content:encoded></item><item><title><![CDATA[From Trucking to Cybersecurity — Why I Made the Switch]]></title><description><![CDATA[Published: June 1, 2026Author: Eric EllisonTags: career change, cybersecurity, beginner, personal, routetoroot

I want to be honest with you from the jump.
I didn't come from a tech background. I don']]></description><link>https://blog.routetoroot.io/from-trucking-to-cybersecurity-why-i-made-the-switch</link><guid isPermaLink="true">https://blog.routetoroot.io/from-trucking-to-cybersecurity-why-i-made-the-switch</guid><dc:creator><![CDATA[routetoroot]]></dc:creator><pubDate>Mon, 01 Jun 2026 21:53:13 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1dee02cb7a80b4b790a539/a95ac633-4b44-42bd-80b7-1a7c102b6945.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Published:</strong> June 1, 2026<br /><strong>Author:</strong> Eric Ellison<br /><strong>Tags:</strong> career change, cybersecurity, beginner, personal, routetoroot</p>
<hr />
<p>I want to be honest with you from the jump.</p>
<p>I didn't come from a tech background. I don't have a Computer Science degree. I didn't start coding at 12. I wasn't the kid taking apart computers in the garage.</p>
<p>For nearly a decade, I ran a trucking company. Mud Mule LLC. I was the owner, the operator, the dispatcher, the accountant, and half the time, the driver. I built something from nothing with my own hands, and for a long time, that was enough.</p>
<p>Then it wasn't.</p>
<hr />
<h2>The Honest Truth About Why I Left</h2>
<p>The trucking industry grinds you down in ways that are hard to explain unless you've lived it. You're always chasing the next load, the next contract, the next check. You're away from home more than you're in it. You're at the mercy of fuel prices, freight rates, broker margins, and a dozen things you can't control.</p>
<p>My company was struggling. I was tired — not the kind of tired that sleep fixes. The kind that comes from spending years building something that owns you more than you own it.</p>
<p>I needed out.</p>
<p>But here's the thing. Knowing you need to leave and actually leaving are two completely different things. Because the moment you start thinking about walking away, a voice in your head starts talking.</p>
<p><em>You're too old for this.</em><br /><em>You don't have the education.</em><br /><em>You have no experience in tech.</em><br /><em>Who do you think you are?</em></p>
<p>I had been interested in cybersecurity and technology for almost eight years. Eight years of reading articles, watching videos, being fascinated by how systems work and how they break. Eight years of telling myself it was just a hobby. Eight years of talking myself out of pursuing the one thing that actually excited me.</p>
<p>I was my own worst enemy.</p>
<hr />
<h2>The Day Everything Changed</h2>
<p>There wasn't a dramatic moment. No single event that flipped a switch.</p>
<p>I just got tired of being my own hater.</p>
<p>One day I decided — enough. I was going to be my own biggest fan instead. I was going to pursue this like I had nothing to lose, because honestly? At that point, I didn't.</p>
<p>I went all in.</p>
<p>I started studying. I built a home lab. I started doing hands-on cybersecurity exercises. I completed lab after lab — packet capture, network analysis, SIEM deployment, threat hunting, GRC compliance. Twenty-nine labs and counting, all documented, all evidence-based, all real.</p>
<p>I built this brand — RouteToRoot — because the name says everything about where I'm going. You follow the route until you reach root. You follow the path, however long it takes, until you get there.</p>
<hr />
<h2>What I Want You to Take From This</h2>
<p>If you're reading this and you're in a similar place — stuck in something that's draining you, interested in cybersecurity but convinced you're too old, too inexperienced, too late — I want to tell you something.</p>
<p>You're not.</p>
<p>I'm building this in public so you can see every step. The labs. The certifications. The job search. The wins and the setbacks. All of it.</p>
<p>This blog is where I document the route. Every tool I learn, every vulnerability I analyze, every CTF I work through, every concept that finally clicks — it goes here.</p>
<p>You're not watching someone who already made it. You're watching someone make it in real time.</p>
<p>Welcome to RouteToRoot.</p>
<hr />
<p><em>Follow the journey:</em><br /><em>GitHub: github.com/RouteToRoot</em><br /><em>YouTube: youtube.com/@RouteToRoot_Sec</em><br /><em>Portfolio: routetoroot.io</em></p>
]]></content:encoded></item></channel></rss>