<?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[Learning Cybersecurity in Public]]></title><description><![CDATA[A weekly series documenting my cybersecurity learning journey from scratch — computational thinking, algorithms, Linux, networking, and more. Real notes, real bugs, real progress.]]></description><link>https://durgamadhav.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6a1db104cc268013976acd05/99618450-0688-43d1-9b3b-5fa73aeb574d.jpg</url><title>Learning Cybersecurity in Public</title><link>https://durgamadhav.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 16:05:46 GMT</lastBuildDate><atom:link href="https://durgamadhav.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Why 'Close Enough' Fails in Cyber Threat Intelligence — Lessons from MITRE ATT&CK, MISP, and YARA]]></title><description><![CDATA[This Week in Numbers

🧩 7 CTI frameworks and tools covered — Pyramid of Pain, Cyber Kill Chain, Unified Kill Chain, Diamond Model, MITRE ATT&CK, MISP/OpenCTI, YARA

🕵️ 4 practical rooms worked end-t]]></description><link>https://durgamadhav.hashnode.dev/why-close-enough-fails-in-cyber-threat-intelligence-lessons-from-mitre-att-ck-misp-and-yara</link><guid isPermaLink="true">https://durgamadhav.hashnode.dev/why-close-enough-fails-in-cyber-threat-intelligence-lessons-from-mitre-att-ck-misp-and-yara</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[#learninginpublic]]></category><category><![CDATA[buildinpublic]]></category><category><![CDATA[threat intelligence]]></category><category><![CDATA[mitre-attack]]></category><category><![CDATA[MISP]]></category><category><![CDATA[yara]]></category><category><![CDATA[SOC Analyst]]></category><category><![CDATA[CTIACertification]]></category><category><![CDATA[#infosec]]></category><category><![CDATA[tryhackmewalkthrough]]></category><dc:creator><![CDATA[Durga Madhav Chandra Vemulapalli]]></dc:creator><pubDate>Mon, 10 Aug 2026 16:53:01 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1db104cc268013976acd05/e1947add-55a8-4ee2-aa1e-e2cc4dfa08c2.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2>This Week in Numbers</h2>
<ul>
<li><p>🧩 <strong>7</strong> CTI frameworks and tools covered — Pyramid of Pain, Cyber Kill Chain, Unified Kill Chain, Diamond Model, MITRE ATT&amp;CK, MISP/OpenCTI, YARA</p>
</li>
<li><p>🕵️ <strong>4</strong> practical rooms worked end-to-end (Trooper, Summit, Eviction, Friday Overtime)</p>
</li>
<li><p>⏱️ <strong>10</strong> minutes stuck on a single MITRE label before "why vs. how" finally clicked</p>
</li>
<li><p>🔁 <strong>5</strong> struggles documented — all the same root cause wearing a different costume</p>
</li>
<li><p>💡 <strong>1</strong> realization: getting a framework "roughly right" isn't the same as getting it right</p>
</li>
</ul>
<hr />
<h2>Every Struggle Was the Same Mistake Wearing a Different Costume</h2>
<p>Going in, I expected this week to be the easy one. Two weeks of hands-on tooling behind me — Nmap, Wireshark, Metasploit, Burp — and now just frameworks to read and apply. Reading always feels safer than running an exploit.</p>
<p>By the end of the week I knew better:</p>
<blockquote>
<p><strong>Almost everything this week — MITRE ATT&amp;CK, the Pyramid of Pain, MISP, the Diamond Model, YARA — was really the same question asked in a different vocabulary: am I actually being precise here, or just close enough?</strong></p>
</blockquote>
<p>A Tactic and a Technique both describe "what the attacker did," but one is the goal and one is the method. An IOC and an IOA both describe "evidence," but one is a disposable artifact and one is the behavior underneath it. A saved MISP event and a published one both look identical in the UI, but only one is actually shared. Five different frameworks, one repeated failure mode: collapsing two related-but-different ideas into a single guess.</p>
<ul>
<li>What was the attacker trying to accomplish, versus how did they do it? → <strong>Tactic vs. Technique</strong></li>
<li>Did the artifact change, or did the behavior change? → <strong>IOC vs. IOA</strong></li>
<li>Did I finish the action, or just set it up? → <strong>Saving vs. Publishing in MISP</strong></li>
<li>Am I exploring one thread, or the whole web around it? → <strong>Pivoting the Diamond Model</strong></li>
<li>Is my rule's logic specific, or just present? → <strong>YARA strings vs. condition</strong></li>
</ul>
<p>Once that pattern was visible, Week-10 stopped feeling like five unrelated rooms and started feeling like one long lesson in the same discipline, asked five different ways.</p>
<hr />
<h2>02 — I Mapped an Alert's "How" and Called It the "Why" in MITRE ATT&amp;CK</h2>
<p>Working through the MITRE room, I was given a scenario: a phishing email drops a malicious macro to gain a foothold. I confidently labeled "Phishing" as the Tactic. It felt right — phishing is the attack. ATT&amp;CK marked it wrong, and it took a good ten minutes to figure out why.</p>
<p>I'd been reading Tactics and Techniques as the same thing wearing different labels. A Tactic is the attacker's goal — the "why" (here, Initial Access). A Technique is the specific method used to reach that goal — the "how" (Phishing sits underneath the Initial Access Tactic). I'd been naming the tool and calling it the objective.</p>
<pre><code class="language-plaintext">1. "What was the attacker trying to accomplish?"        → that's the Tactic
2. "What specific method did they use to accomplish it?" → that's the Technique

Scenario: phishing email → malicious macro → foothold
Tactic:     Initial Access
Technique:  Phishing (T1566)
</code></pre>
<p>🔐 <strong>The habit that fixed it:</strong> Getting a framework "roughly right" isn't the same as getting it right. Mislabeling a Technique as a Tactic doesn't just cost a wrong answer — in a real SOC it means writing the incident report at the wrong level of detail entirely. {% /callout %}</p>
<hr />
<h2>03 — I Treated a Rotated IOC as "New Intel" Instead of the Same IOA</h2>
<p>In the Pyramid of Pain room, I hit a scenario where an attacker's C2 IP changed between two incidents. My first instinct was to log it as a separate, unrelated finding — new IP, new entry.</p>
<p>I'd been thinking entirely in IOC terms — each new hash or IP as its own isolated fact — instead of asking whether the underlying <em>behavior</em> connecting them was the same. The IP had changed; the technique used to stand it up hadn't. I was tracking artifacts, not the attacker.</p>
<pre><code class="language-plaintext">1. Has this IOC (hash/IP/domain) changed?     → expected, low pain to rotate
2. Has the underlying TTP changed?             → if no, it's still the same actor/campaign
3. Log it as a continuation, not a new event
</code></pre>
<p>That one distinction is the entire reason the Pyramid of Pain exists — low-pain indicators are <em>supposed</em> to change. Treating every rotated IOC as a brand-new finding means missing that it's the same campaign wearing a different IP.</p>
<hr />
<h2>04 — I Built a MISP Event and Assumed It Was Shared the Moment I Saved It</h2>
<p>In the Threat Intelligence Tools room, I created a MISP event, added a few IOCs as attributes, and moved on assuming it was now visible to the connected community. Nothing had actually been shared.</p>
<p>Saving an event in MISP and publishing it are two different actions. I'd created and populated the event but never hit publish, and I hadn't set a Traffic Light Protocol (TLP) tag either — so even if I had published it, MISP had no instruction on who was actually cleared to see it.</p>
<pre><code class="language-plaintext">1. Create Event
2. Add Attributes (IOCs)
3. Tag with TLP (who's allowed to see this)
4. Publish
</code></pre>
<p>🔐 <strong>Real-world echo:</strong> An unpublished MISP event is functionally the same as an analyst's private notes — accurate, but useless to anyone else. The entire value of a TIP is step 4, not step 2. {% /callout %}</p>
<hr />
<h2>05 — I Stayed on One Vertex of the Diamond Model Instead of Pivoting</h2>
<p>In the Trooper room, I identified a malicious IP (Infrastructure) early and spent most of my time learning more <em>about that one IP</em> — more WHOIS lookups, more passive DNS — instead of moving anywhere else.</p>
<p>I'd found one vertex of the Diamond Model and kept digging straight down into it instead of using it to reach the other three. The room's actual expectation was to pivot from that Infrastructure data point out to Capability (what tooling connected to it) and eventually Adversary — not to exhaustively mine a single vertex first.</p>
<pre><code class="language-plaintext">Adversary ←→ Infrastructure ←→ Capability ←→ Victim
   (found one? ask what it connects to on each of the other three)
</code></pre>
<p>The Diamond Model's value is in the pivoting, not in any one vertex alone. Going deep on Infrastructure without ever crossing to Capability or Adversary is the CTI equivalent of reading one page of a report and calling it the investigation.</p>
<hr />
<h2>06 — My YARA Rule "Matched" Everything Because I Never Wrote a Real Condition</h2>
<p>Writing my first YARA rule, I defined a few <code>strings</code> that looked specific to the sample malware, ran it, and it flagged almost every file in the test set — including clearly unrelated ones.</p>
<p>I'd copied the rule structure but left the <code>condition</code> block as a lazy catch-all instead of combining the strings with real logic. A condition like "any of them" matches if even one loosely common string shows up anywhere — which is exactly what happened, since one of my patterns was generic enough to appear in unrelated files too.</p>
<pre><code class="language-yara">condition:
    $a and $b and not $c    // require the specific combination,
                             // explicitly exclude a known false-positive pattern
</code></pre>
<p>🔐 <strong>The habit that fixed it:</strong> The <code>strings</code> block is just a list of candidates — the <code>condition</code> block is what actually turns YARA into a detection instead of a keyword search. A rule with strong strings and a weak condition is still a weak rule. {% /callout %}</p>
<hr />
<h2>The Bigger Realization</h2>
<blockquote>
<p><em>Week-09 taught me not to distrust the tool before checking my own configuration. Week-10 taught me a sharper version of the same lesson: the frameworks are precise, and "close enough" on a term is exactly how a Technique gets logged as a Tactic, a rotated IP gets logged as new intel, and a saved event never actually reaches anyone.</em></p>
</blockquote>
<p>Every mistake this week traced back to the same root cause, just wearing a different framework's clothes. A confident MITRE label collapsed the moment I actually separated "why" from "how." A rotated IOC looked like new intel until I checked the behavior underneath it. A MISP event looked shared until I noticed I'd skipped the one button that mattered. A single Diamond Model vertex felt thorough until the practical room asked me to actually pivot. A YARA rule looked correct until its condition logic proved otherwise.</p>
<p>None of these were tool failures. Nmap, MISP, and YARA all did exactly what I told them to — the gap was always in how carefully I'd actually defined the term or the logic before trusting my first read of it.</p>
<hr />
<h2>How I Studied This Week</h2>
<p>Instead of taking each room's summary at face value, I forced myself to separate concepts that felt interchangeable before trusting any answer:</p>
<table>
<thead>
<tr>
<th>Question I asked</th>
<th>Why it mattered</th>
</tr>
</thead>
<tbody><tr>
<td>Is this the goal, or the method?</td>
<td>Kept Tactic and Technique from collapsing into one guess</td>
</tr>
<tr>
<td>Did the artifact change, or the behavior?</td>
<td>Turned IOC vs. IOA from trivia into an actual filter</td>
</tr>
<tr>
<td>Did I finish the action, or just set it up?</td>
<td>Caught the save-vs-publish gap in MISP before it repeated</td>
</tr>
<tr>
<td>Am I exploring one thread, or the whole web?</td>
<td>Forced an actual pivot across the Diamond Model instead of one deep dive</td>
</tr>
<tr>
<td>Is my logic specific, or just present?</td>
<td>Turned YARA <code>strings</code> into a real <code>condition</code>, not a keyword list</td>
</tr>
</tbody></table>
<p>I also went past the room summaries themselves — reading MITRE's own ATT&amp;CK site directly for real technique IDs, checking Bianco's original Pyramid of Pain post instead of only the room's version of it, and reading MISP's own docs for how TLP tagging and correlation actually work under the hood.</p>
<hr />
<h2>5 Mental Models I Had to Replace</h2>
<p><strong>Misconception 01 — A Tactic is just a more formal name for the attack.</strong> It's the attacker's goal, not their method. Phishing is a Technique; Initial Access is the Tactic it serves.</p>
<p><strong>Misconception 02 — Every changed indicator is a new finding.</strong> A rotated IP is expected, low-pain behavior — check whether the TTP changed before logging anything as "new."</p>
<p><strong>Misconception 03 — Creating an event in MISP means it's shared.</strong> Creating populates it. TLP tagging and publishing are what actually make it visible to anyone else.</p>
<p><strong>Misconception 04 — Finding one Diamond Model vertex is the investigation.</strong> It's the starting point. The model's entire value is in pivoting across all four.</p>
<p><strong>Misconception 05 — A YARA rule with the right strings is a working rule.</strong> Strings are just candidates. The condition is the logic that turns them into an actual detection.</p>
<hr />
<h2>Resources That Helped Me</h2>
<table>
<thead>
<tr>
<th>Resource</th>
<th>Why It Helped</th>
</tr>
</thead>
<tbody><tr>
<td><strong>TryHackMe — SOC Level 1 Path (CTI module)</strong></td>
<td>The rooms where every mistake — and every fix — actually happened</td>
</tr>
<tr>
<td><strong>MITRE ATT&amp;CK (attack.mitre.org)</strong></td>
<td>Primary source for real technique IDs, checked directly instead of trusting a room's summary</td>
</tr>
<tr>
<td><strong>MITRE ATT&amp;CK Navigator</strong></td>
<td>Visualized technique coverage instead of just reading the matrix flat</td>
</tr>
<tr>
<td><strong>The Pyramid of Pain (David Bianco, original post)</strong></td>
<td>Went to the source instead of only the room's rewording of the six levels</td>
</tr>
<tr>
<td><strong>MISP Project docs</strong></td>
<td>Clarified the create → tag → publish sequence I'd skipped a step of</td>
</tr>
<tr>
<td><strong>OpenCTI Platform docs</strong></td>
<td>Explained the knowledge-graph model behind the room's walkthrough</td>
</tr>
<tr>
<td><strong>YARA Documentation</strong></td>
<td>Reference for actually writing condition logic, not just copying the sample rule</td>
</tr>
</tbody></table>
<hr />
<h2>Week 10 Complete.</h2>
<p>Week-09 was about running tools against a target. This week was about understanding the target before the tools ever get used — the Pyramid of Pain, the Kill Chain models, and the Diamond Model are all the same question asked three different ways: how far did the attacker get, and what would actually cost them to change?</p>
<p>Seven frameworks and tools, four full practical scenarios, and five mistakes that all trace back to one habit I'm still building: trusting my first read of a term less, and checking the actual definition more.</p>
<p><strong>Next step:</strong> carry this same precision into detection and response — connecting how an attacker's TTPs actually get mapped, alerted on, and investigated once they show up in a real SIEM.</p>
<hr />
<p><strong>Let's Connect</strong></p>
<p><em>If you're on a similar journey or have feedback, I'd love to connect!</em></p>
<p>🔗 <strong>LinkedIn:</strong> <a href="https://www.linkedin.com/in/durga-madhav-chandra-vemulapalli-a96143398/">Durga Madhav Chandra</a> 💻 <strong>GitHub:</strong> <a href="https://github.com/DurgaMadhavChandra/cybersecurity-journey">DurgaMadhavChandra</a></p>
<hr />
<p><em>#Cybersecurity #LearningInPublic #BuildInPublic #ThreatIntelligence #MITREATTACK #MISP #YARA #InfoSec #SOCAnalyst #CTI</em></p>
]]></content:encoded></item><item><title><![CDATA[From Theory to the Terminal — Week 09: Two TryHackMe Paths, One Hard Lesson]]></title><description><![CDATA[This Week in Numbers



🧭 27
Rooms/modules completed (13 Pre Security + 14 Cyber Security 101)



🛠️ 13
Tools actually run, not just read about


🐞 4
Debugging struggles documented in detail


🎯 1]]></description><link>https://durgamadhav.hashnode.dev/from-theory-to-the-terminal-week-09-two-tryhackme-paths-one-hard-lesson</link><guid isPermaLink="true">https://durgamadhav.hashnode.dev/from-theory-to-the-terminal-week-09-two-tryhackme-paths-one-hard-lesson</guid><category><![CDATA[CyberSecurity101 #PreSecurity #TryHackMe #SOCAnalyst #LearningInPublic #BuildInPublic #Networking #Metasploit #BurpSuite #SIEM #CyberSecurity]]></category><category><![CDATA[TryHackMe Walkthrough]]></category><category><![CDATA[cybersecurity]]></category><category><![CDATA[metasploit]]></category><category><![CDATA[SIEM]]></category><category><![CDATA[networking]]></category><category><![CDATA[learning]]></category><category><![CDATA[#learning-in-public]]></category><dc:creator><![CDATA[Durga Madhav Chandra Vemulapalli]]></dc:creator><pubDate>Sun, 02 Aug 2026 20:08:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1db104cc268013976acd05/cfd67896-1805-4707-ac46-8ed2eb7e0f84.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2>This Week in Numbers</h2>
<table>
<thead>
<tr>
<th>🧭 27</th>
<th>Rooms/modules completed (13 Pre Security + 14 Cyber Security 101)</th>
</tr>
</thead>
<tbody><tr>
<td>🛠️ 13</td>
<td>Tools actually run, not just read about</td>
</tr>
<tr>
<td>🐞 4</td>
<td>Debugging struggles documented in detail</td>
</tr>
<tr>
<td>🎯 1</td>
<td>New certification prep started (SOC Analyst Level 1)</td>
</tr>
</tbody></table>
<hr />
<h2>Two Paths, One Week</h2>
<p>I went into this week expecting Cyber Security 101 to teach me new concepts. Pre Security had already given me the map — OSI, TCP/IP, Linux and Windows fundamentals, how the web works. I assumed Cyber Security 101 would just be "the same map, zoomed in."</p>
<p>It wasn't. It was the same map, handed to me with the instruction: <em>now walk it yourself.</em></p>
<p>Every room in Cyber Security 101 ends the same way — not a quiz, but a live VM and a flag you actually have to capture. That single design choice changed the entire shape of the week. I wasn't reading about Nmap. I was staring at my own scan output, trying to figure out why half the ports said something I didn't fully understand yet.</p>
<hr />
<h2>01 — Pre Security: The Terrain I Already Knew, Now With Hands on It</h2>
<p>Pre Security's 13 rooms weren't new information — I'd built the mental model for most of this already. What changed was doing it instead of reading it.</p>
<p>Offensive/Defensive Security Intro → Careers → Network Fundamentals → LAN → OSI Model → Packets, Frames &amp; Ports → Extending Your Network → How the Web Works → Website Fundamentals → Web Architecture → Linux Fundamentals → Windows Fundamentals</p>
<p>The room that actually surprised me here was <strong>Website Fundamentals</strong>. I already knew, in theory, that developers sometimes leave sensitive data sitting in front-end source code. Actually opening a page's source and finding something I wasn't supposed to see turned "check the source code" from a rule I'd read into a reflex I now have.</p>
<hr />
<h2>02 — Cyber Security 101: Where Theory Became Muscle Memory</h2>
<p>This is where the week actually got hard. 14 modules, 55 sub-rooms, covering everything from Linux/Windows/AD fundamentals to cryptography, exploitation, web hacking, offensive tooling, defensive security, and the 2025 OWASP Top 10.</p>
<h3>The Room That Changed My Whole Perspective — "Blue"</h3>
<p>Inside the Exploitation Basics module sits a room called "Blue" — a deliberately unpatched Windows machine, vulnerable to a years-old, fully documented SMB exploit. I fired up Metasploit, searched for the module, set my target, and ran it.</p>
<p>It worked. First try, technically.</p>
<p>Then my Meterpreter session died instantly, before I could type a single command.</p>
<p>🔐 What I learned the hard way: a successful exploit and a stable session are two different milestones. My payload architecture didn't match the target, and my LHOST was pointing at the wrong interface. The exploit "worked" — the connection just never had a chance to survive. I go into the full breakdown in this week's 03-errors-and-struggles.md.</p>
<p>Once I fixed both values and got a stable session, running getuid, sysinfo, and browsing the filesystem on a machine I'd just exploited was the single most concrete "I actually did that" moment of the entire certificate so far.</p>
<hr />
<h2>03 — Networking Got Real: Nmap, Wireshark, Tcpdump</h2>
<p>Pre Security taught me what a port scan is. This week I ran one.</p>
<p>nmap -sV -sC -p- 10.10.10.10</p>
<p>Watching real open/closed/filtered results come back — instead of reading a definition of what those words mean — is what separated "I know what Nmap is" from "I can use Nmap."</p>
<h3>The Filtered Port That Almost Got Skipped</h3>
<p>I nearly walked straight past a filtered port, reading it the same as closed — "nothing there, move on." It isn't the same thing at all.</p>
<p>open → something is actively listening and responded closed → the host responded, but nothing is listening filtered → no response at all — a firewall is in the way, the real state is unknown, not "safe to ignore"</p>
<p>That one word, misread, would have meant skipping exactly the kind of port a firewall is deliberately protecting — the one most worth a second look.</p>
<hr />
<h2>04 — Cryptography Stopped Being a Definition</h2>
<p>I already knew, on paper, that hashing is one-way and encryption is reversible with a key. This week I cracked an actual hash:</p>
<p>john --wordlist=rockyou.txt hash.txt</p>
<p>Watching John chew through a wordlist and actually recover a plaintext password is what made "weak, reused passwords are a real vulnerability" stop being a warning I'd read a dozen times and start being something I'd proven myself.</p>
<hr />
<h2>05 — Web Hacking Taught Me the Browser Lies</h2>
<p>Opening Burp Suite's Proxy tab for the first time, I expected to immediately see traffic. I saw nothing. My first assumption: the tool was broken.</p>
<p>It wasn't. My browser simply wasn't pointed at Burp's listener yet.</p>
<p>Burp Proxy listener → 127.0.0.1:8080 (default) Browser proxy setting → manually set to the same host:port Burp's CA certificate → installed in the browser for HTTPS interception</p>
<p>Once traffic actually started flowing through, intercepting and editing a request before it reached the server made "never trust client-side validation" a lesson I proved to myself instead of one I just accepted from a slide.</p>
<hr />
<h2>06 — Starting SAL-1 and the 20 Minutes That Taught Me Everything</h2>
<p>With both learning paths done, I started prepping for TryHackMe's SOC Analyst Level 1 (SAL-1) certification. I expected the jump to be conceptual. It wasn't — it was learning to actually investigate.</p>
<p>During one of the first investigation labs, I searched for events tied to an alert and found nothing. I rewrote my query. Checked filters. Started wondering if the SIEM wasn't collecting logs at all.</p>
<p>🔐 The realization: almost twenty minutes in, I noticed my search window was set to the wrong time range. The logs had been there the entire time — I was simply looking in the wrong place. A SIEM can only show you what you ask it to show, and even a perfectly written query is useless against the wrong timeframe.</p>
<p>Since then, every investigation starts the same way, before a single query gets typed:</p>
<ol>
<li><p>Verify the alert timestamp</p>
</li>
<li><p>Confirm the search/time range covers that timestamp</p>
</li>
<li><p>Confirm the correct log source is selected</p>
</li>
<li><p>Only then start searching for evidence</p>
</li>
</ol>
<hr />
<h2>The Cybersecurity Connection</h2>
<p>Every struggle this week — the SIEM, the filtered port, the dead Meterpreter session, the empty Burp history — traced back to the exact same root cause, and it wasn't a knowledge gap:</p>
<p>I trusted my first assumption about what a tool was telling me, instead of verifying the state it was actually in.</p>
<p>The realization that changed everything this week:</p>
<p>"The tools are rarely wrong. The assumptions about what they're currently configured to show you absolutely can be."</p>
<p>That's not a Nmap lesson or a Burp Suite lesson — it's the exact instinct a SOC analyst has to fight on every single shift.</p>
<hr />
<h2>How I Studied This Week</h2>
<p>Instead of rushing to the flag, I forced myself to slow down on four questions every time something didn't behave the way I expected:</p>
<table>
<thead>
<tr>
<th>Question</th>
<th>Why it mattered</th>
</tr>
</thead>
<tbody><tr>
<td>What did I actually configure, vs. what did I assume?</td>
<td>Killed the reflex to blame the tool first</td>
</tr>
<tr>
<td>What is this output actually telling me?</td>
<td>filtered ≠ closed; a dead session ≠ a bad exploit</td>
</tr>
<tr>
<td>Would I have caught this under time pressure?</td>
<td>Simulated the "SOC shift" mindset, not just the lab mindset</td>
</tr>
<tr>
<td>How do I stop this from costing me 20 minutes next time?</td>
<td>Turned every mistake into a checklist, not just a lesson learned once</td>
</tr>
</tbody></table>
<hr />
<h2>4 Mental Models I Had to Replace</h2>
<p>Misconception 01 — "No results" means the data isn't there Usually it means the query is wrong — the time range, the filter, the log source — not that the underlying data doesn't exist.</p>
<p>Misconception 02 — A scan result is either "there" or "not there" Nmap's filtered state is neither — it's an honest "I don't know," and treating uncertainty as "safe to ignore" is exactly how real findings get skipped.</p>
<p>Misconception 03 — A successful exploit means the job is done Getting a session to open and getting a session to survive are two separate problems, gated by completely different configuration details.</p>
<p>Misconception 04 — If a tool shows nothing, the tool is broken Almost every "broken tool" moment this week was actually a configuration gap on my end — the browser's proxy setting, the search window, the payload architecture. The tool was doing exactly what it was told.</p>
<hr />
<h2>Resources That Helped Me</h2>
<table>
<thead>
<tr>
<th>Resource</th>
<th>Why It Helped</th>
</tr>
</thead>
<tbody><tr>
<td>TryHackMe — Pre Security Path</td>
<td>Built the theory (OSI, TCP/IP, Linux/Windows basics) that made every later tool make sense</td>
</tr>
<tr>
<td>TryHackMe — Cyber Security 101 Path</td>
<td>Hands-on rooms across networking, crypto, exploitation, web hacking, and defensive tooling</td>
</tr>
<tr>
<td>Nmap Reference Guide, Wireshark Docs, PortSwigger Burp Docs, Rapid7 Metasploit Docs</td>
<td>Went to each tool's own documentation instead of only following room instructions</td>
</tr>
<tr>
<td>GitHub (Public Notes)</td>
<td>Complete notes, resources, and weekly struggles — building in public</td>
</tr>
</tbody></table>
<hr />
<h2>Week 09 Complete. 🛠️🔐</h2>
<p>Pre Security answered "how does this all work?" Cyber Security 101 answered "what do I actually run to test or defend it?"</p>
<p>But the thing that's actually going to matter once I'm in a SOC seat isn't knowing what Nmap or a SIEM does. It's the habit this week forced on me: verify what you're looking at before you trust what it's telling you.</p>
<p>Next step: keep pushing through SAL-1 prep, and start treating every lab like a real shift instead of a room to finish.</p>
<p>Let's Connect</p>
<p>If you're on a similar journey or have feedback, I'd love to connect!</p>
<p>🔗 LinkedIn: <a href="https://www.linkedin.com/in/durga-madhav-chandra-vemulapalli-a96143398/">Durga Madhav Chandra</a>
💻 GitHub: <a href="https://github.com/DurgaMadhavChandra/cybersecurity-journey">DurgaMadhavChandra</a></p>
<p>#CyberSecurity101 #PreSecurity #TryHackMe #SOCAnalyst #LearningInPublic #BuildInPublic #Networking #Metasploit #BurpSuite #SIEM #CyberSecurity</p>
]]></content:encoded></item><item><title><![CDATA[From Learning Cybersecurity to Demonstrating It — Week 08: Career Readiness, AI, and Professional Communication]]></title><description><![CDATA[This Week in Numbers

🎓 2 Coursera courses completed (Put It to Work: Prepare for Cybersecurity Jobs, Accelerate Your Job Search with AI)

🧩 9 courses of the Google Cybersecurity Certificate now com]]></description><link>https://durgamadhav.hashnode.dev/from-learning-cybersecurity-to-demonstrating-it-week-08-career-readiness-ai-and-professional-communication</link><guid isPermaLink="true">https://durgamadhav.hashnode.dev/from-learning-cybersecurity-to-demonstrating-it-week-08-career-readiness-ai-and-professional-communication</guid><category><![CDATA[/from-learning-cybersecurity-to-demonstrating-it-week-08-career-readiness-ai-and-professional-communication Edit]]></category><dc:creator><![CDATA[Durga Madhav Chandra Vemulapalli]]></dc:creator><pubDate>Fri, 24 Jul 2026 13:55:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1db104cc268013976acd05/1bbb47c5-fc06-4355-ae2c-54bd829c9543.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2>This Week in Numbers</h2>
<ul>
<li><p>🎓 <strong>2</strong> Coursera courses completed (Put It to Work: Prepare for Cybersecurity Jobs, Accelerate Your Job Search with AI)</p>
</li>
<li><p>🧩 <strong>9</strong> courses of the Google Cybersecurity Certificate now complete — the certificate is done</p>
</li>
<li><p>🗣️ <strong>1st</strong> week the "struggle" wasn't a script or a query — it was explaining my own work out loud</p>
</li>
<li><p>🤖 <strong>4</strong> AI tools added to my job-search workflow (Career Dreamer, Sheets, Gemini, Gemini Live)</p>
</li>
<li><p>💡 <strong>0</strong> technical errors to report — and that's the actual story of this week</p>
</li>
</ul>
<hr />
<h2>Everything Comes Back to Deployment, Not Just Skill</h2>
<p>Going into this week, I expected it to feel like a light wrap-up after seven weeks of technical weight. By the end of it, I understood it differently:</p>
<blockquote>
<p><strong>Course 8 and Course 9 weren't a break from the technical work — they were the step that makes the technical work count for something. A skill nobody can see you use isn't a skill an employer can hire.</strong></p>
</blockquote>
<p>Data classification, incident escalation, stakeholder communication, resumes, interviews, elevator pitches, AI-assisted job search — on paper these look like seven unrelated topics. In practice they're all the same question asked from different angles:</p>
<ul>
<li>Can I take what I know, and get it in front of the right person, in a form they can actually use?</li>
</ul>
<hr />
<h2>02 — Knowing What to Protect, and Who to Tell</h2>
<p>Course 8 opened with the security mindset — the habit of constantly evaluating risk instead of waiting for an alert to force the question. That habit only works if you also know what you're protecting, which is where data classification came in: public, private, sensitive, and confidential data don't deserve the same amount of effort, and treating them all the same is its own kind of mistake.</p>
<p>From there the course moved into incident escalation — not solving the incident myself, but recognizing something is wrong and getting it to the right person, following whatever escalation policy is actually in front of me rather than guessing. Then it went one step further: even once something is escalated correctly, five very different stakeholders — a risk manager, a CEO, a CFO, a CISO, an operations manager — all need that same information delivered differently.</p>
<p>🔍 <strong>The habit that stuck:</strong> Escalation isn't about knowing everything. It's about recognizing something is wrong, getting it to someone who does, and then explaining it in whatever format that specific person can act on fastest.</p>
<hr />
<h2>03 — Turning Seven Weeks of Notes Into a Resume and an Interview</h2>
<p>This was the part of the week that actually felt uncomfortable, in a good way. Writing seven weeks of notes is one thing. Compressing that into resume bullets, a two-minute elevator pitch, and answers I could actually say out loud under mock-interview pressure is a completely different skill — and it exposed which topics I understood well enough to explain, versus which ones I only understood well enough to recognize on a quiz.</p>
<p>The STAR method (Situation, Task, Action, Result) was the tool that made this possible. It turns a vague claim like "I'm good at incident response" into a specific, verifiable story with a beginning, middle, and end. The mock interview question about walking through an incident response was the first time Course 6's entire lifecycle came out of my mouth instead of off a page — that's when it stopped feeling memorized and started feeling learned.</p>
<p>🔍 <strong>The habit that stuck:</strong> The gap between "I understand this" and "I can explain this to someone else" is bigger than it looks — right up until an interview forces you to close it.</p>
<hr />
<h2>04 — Bringing AI Into the Job Search Itself</h2>
<p>Course 9 shifted the lens again — from preparing materials manually to using AI as an actual collaborator in the search. Career Dreamer turned my background into a Career Identity Statement and a web of career paths I wouldn't have thought to search for directly. A simple Google Sheets tracker kept every application, contact, and follow-up date somewhere other than my memory. Gemini helped tighten résumé language and tailor it per job description, and Gemini Live let me practice answering out loud, in real time, instead of just typing responses into a text box.</p>
<p>None of these tools did the thinking for me — Career Dreamer doesn't apply to jobs, Gemini doesn't know what's actually true about my background, and Gemini Live doesn't decide what a good answer sounds like. What they removed was the friction of starting from a blank page at every single step.</p>
<p>🔍 <strong>The habit that stuck:</strong> As more people use AI tools to prepare, the advantage stops being <em>access</em> to the tools and starts being how deliberately they're actually used.</p>
<hr />
<h2>The Bigger Realization</h2>
<blockquote>
<p><em>The first seven weeks of this certificate taught me how systems work, how to watch them, and how to automate that watching. This week taught me that none of it matters if it stays in my head or in a GitHub repo nobody reads out loud. Course 8 and Course 9 aren't a detour from the technical work — they're the delivery mechanism for it.</em></p>
</blockquote>
<p>Every earlier week had a moment where the tool told me I was wrong — an error, a failed lab check, a rule that saved wrong. This week didn't have that moment, and I think that's exactly why it was harder in a different way. Nothing was going to flag a weak elevator pitch or a resume bullet that undersold what I actually did. The only feedback loop was whether I could say it clearly enough that someone else understood it the first time.</p>
<hr />
<h2>How I Studied This Week</h2>
<table>
<thead>
<tr>
<th>Question I asked</th>
<th>Why it mattered</th>
</tr>
</thead>
<tbody><tr>
<td>Who actually needs to know this, and in what format?</td>
<td>Turned "I found something" into an escalation that matches the right stakeholder</td>
</tr>
<tr>
<td>Can I say this out loud in under a minute?</td>
<td>Built and rebuilt my elevator pitch until it stopped sounding rehearsed</td>
</tr>
<tr>
<td>Does this resume bullet prove a skill, or just name a course?</td>
<td>Rewrote resume language around specific, verifiable outcomes instead of course titles</td>
</tr>
<tr>
<td>What would I actually say if this came up in a real interview?</td>
<td>Ran the mock interview activity instead of only skimming the question list</td>
</tr>
</tbody></table>
<p>I also kept a job-search tracker running in Sheets from day one instead of trusting memory, and used Gemini Live to practice answering out loud more than once — the same way regex101 gave me a fast feedback loop back in Week 7.</p>
<hr />
<h2>4 Mindset Shifts From This Week</h2>
<p><strong>Shift 01 — Data protection isn't uniform.</strong> Public, private, sensitive, and confidential data all carry different risk, and treating them the same wastes effort where it matters least and under-protects where it matters most.</p>
<p><strong>Shift 02 — Escalation is a judgment skill, not a technical one.</strong> The size of an issue today says nothing about the size it could become if it isn't escalated — and every organization's process is different, so the transferable skill is finding and following whatever policy exists.</p>
<p><strong>Shift 03 — A resume proves you can do the job; a cover letter (and an elevator pitch) explains why you want to.</strong> Tailoring both to the specific role and company is what separates an application from a form letter.</p>
<p><strong>Shift 04 — AI tools narrow the preparation gap, not the effort gap.</strong> Career Dreamer, Gemini, and Gemini Live make starting easier, but the judgment about what's true and worth saying is still entirely mine.</p>
<hr />
<h2>Resources That Helped Me</h2>
<table>
<thead>
<tr>
<th>Resource</th>
<th>Why It Helped</th>
</tr>
</thead>
<tbody><tr>
<td><a href="https://www.coursera.org/learn/prepare-for-cybersecurity-jobs"><strong>Put It to Work: Prepare for Cybersecurity Jobs (Coursera)</strong></a></td>
<td>Covered escalation, stakeholder communication, resumes, and interview prep in one course</td>
</tr>
<tr>
<td><a href="https://www.coursera.org"><strong>Accelerate Your Job Search with AI (Coursera)</strong></a></td>
<td>Introduced Career Dreamer, Gemini, and Gemini Live as one connected job-search workflow</td>
</tr>
<tr>
<td><a href="https://grow.google/careerdreamer"><strong>Career Dreamer</strong></a></td>
<td>Turned my background into a Career Identity Statement and a web of relevant career paths</td>
</tr>
<tr>
<td><a href="https://niccs.cisa.gov/workforce-development/nice-framework"><strong>NIST NICE Framework</strong></a></td>
<td>Helped map what I've learned onto real entry-level job titles</td>
</tr>
<tr>
<td><a href="https://www.linkedin.com/"><strong>LinkedIn</strong></a></td>
<td>Updated my profile and started following working analysts and CISOs</td>
</tr>
<tr>
<td><a href="https://github.com/"><strong>GitHub</strong></a></td>
<td>Organized this repo into something that already functions as a portfolio</td>
</tr>
</tbody></table>
<hr />
<h2>Week 08 Complete.</h2>
<p>Nine courses of the Google Cybersecurity Certificate, done. The first weeks taught me how systems work. The middle weeks taught me how to watch them and automate that watching. This week taught me how to walk into a room — or a Zoom call — and explain why any of it matters to someone deciding whether to hire me.</p>
<p>The certificate didn't end with a lab or a script. It ended with a résumé, a pitch, and a mock interview answer that finally sounded like something I understood, not something I memorized.</p>
<p><strong>Next step:</strong> start applying the "who needs to know this, and how" instinct from this week to real applications — and keep building this repo as the portfolio piece it already turned out to be.</p>
<hr />
<p><strong>Let's Connect</strong></p>
<p><em>If you're on a similar journey or have feedback, I'd love to connect!</em></p>
<p>🔗 <strong>LinkedIn:</strong> <a href="https://www.linkedin.com/in/durga-madhav-chandra-vemulapalli-a96143398/">Durga Madhav Chandra</a> 💻 <strong>GitHub:</strong> <a href="https://github.com/DurgaMadhavChandra/cybersecurity-journey">DurgaMadhavChandra</a></p>
<hr />
<p><em>#Cybersecurity #LearningInPublic #BuildInPublic #GoogleCybersecurityCertificate #InfoSec #SOCAnalyst #CareerChange #JobSearch #AIforCareers #CertificateComplete</em></p>
]]></content:encoded></item><item><title><![CDATA[From Searching for Data to Investigating an Event — Week 07: Detection, Response, and Python Automation]]></title><description><![CDATA[This Week in Numbers

🚨 2 Coursera courses completed (Sound the Alarm: Detection and Response, Automate Cybersecurity Tasks with Python)

🐍 1st Week I wrote and debugged real Python scripts instead ]]></description><link>https://durgamadhav.hashnode.dev/from-searching-for-data-to-investigating-an-event-week-07-detection-response-and-python-automation</link><guid isPermaLink="true">https://durgamadhav.hashnode.dev/from-searching-for-data-to-investigating-an-event-week-07-detection-response-and-python-automation</guid><category><![CDATA[*#Cybersecurity #LearningInPublic #BuildInPublic #Python #SIEM #GoogleCybersecurityCertificate #InfoSec #SOCAnalyst #IncidentResponse #DetectionAndResponse*]]></category><dc:creator><![CDATA[Durga Madhav Chandra Vemulapalli]]></dc:creator><pubDate>Sun, 19 Jul 2026 06:37:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1db104cc268013976acd05/482945a5-d4b8-4ca2-9e46-1814a9e57cbb.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2>This Week in Numbers</h2>
<ul>
<li><p>🚨 <strong>2</strong> Coursera courses completed (Sound the Alarm: Detection and Response, Automate Cybersecurity Tasks with Python)</p>
</li>
<li><p>🐍 <strong>1st</strong> Week I wrote and debugged real Python scripts instead of just reading about syntax</p>
</li>
<li><p>🕵️ <strong>0</strong> error messages thrown across all four mistakes this week — every one of them ran clean and was still wrong</p>
</li>
<li><p>🔍 <strong>1</strong> rule direction I read backwards, and didn't catch until the lab flagged it</p>
</li>
<li><p>💡 <strong>1</strong> Realization: the most dangerous mistakes are the ones the tool never complains about</p>
</li>
</ul>
<hr />
<h2>Everything Comes Back to Asking the Right Question First</h2>
<p>Going into this week, I expected Course 6 and Course 7 to feel like two separate skills — one about watching a network, one about writing code. By the end of the week I understood them differently:</p>
<blockquote>
<p><strong>Almost everything this week — SIEM queries, IDS rules, regex, containment decisions — was really the same failure wearing different clothes: acting before I'd actually confirmed what I was looking at.</strong></p>
</blockquote>
<p>A SIEM query without a hypothesis is just noise. An IDS rule read left-to-right instead of source-to-destination watches the wrong traffic. A regex with an unescaped character matches the wrong text and never tells you. A containment decision made before analysis is a guess with extra steps. Once that clicked, Course 6 and Course 7 stopped feeling like "detection" and "automation" bolted together, and started reporting back to the same underlying question:</p>
<ul>
<li>Did I actually confirm what I think happened, before I acted on it?</li>
</ul>
<hr />
<h2>02 — I Was Searching for Data Instead of Investigating an Event</h2>
<p>I could read through logs and understand what individual entries meant. I could follow along with packet analysis just fine. But the moment a lab put me inside a SIEM tool and asked me to investigate an event, I froze. I kept writing queries trying to "find something" — throwing filters at the tool hoping something useful would surface. I had no direction.</p>
<p>IDS signatures changed how I saw everything. A signature isn't just a rule — it's a written description of known attack behavior. When I traced one back to what an actual attacker does, the SIEM query stopped being a search problem. It became a question: did this specific behavior happen, and when?</p>
<pre><code class="language-plaintext">Before: pull fields and filter, hoping something useful surfaces
        (undirected exploration — no hypothesis, just noise)

After:  1. What does this attack behavior actually look like?
        2. What source IP, port, or time window would prove it happened?
        3. Only then → build the query around that specific answer
</code></pre>
<p>🔍 <strong>The habit that fixed it:</strong> A SIEM query without a security question behind it is just noise. The tool only becomes powerful once you know what attack behavior you're looking for — and that only comes from understanding how the attack actually works, not from memorizing the query language. {% /callout %}</p>
<hr />
<h2>03 — I Wrote an IDS Rule Backwards Without Noticing</h2>
<p>The activity asked for a rule alerting on traffic coming into a protected host on port 22. I wrote the protected host first because it felt like the important part — the same way I'd read an English sentence, subject first. The lab flagged it as wrong and I couldn't immediately see why.</p>
<pre><code class="language-plaintext">alert protocol source_ip source_port -&gt; dest_ip dest_port (options)

What I wrote:  192.168.1.10:22 -&gt; any:any   (traffic FROM the host, port 22)
What I needed: any:any -&gt; 192.168.1.10:22   (traffic TO the host, port 22)
</code></pre>
<p>A Suricata-style rule reads as <code>source -&gt; destination</code>, not "important thing first." I had the direction of the traffic completely backwards — my rule was watching for traffic <em>leaving</em> port 22, not arriving at it.</p>
<p>🔍 <strong>Real-world echo:</strong> A rule that "looks right" because the important detail is early in the line isn't the same as a rule that's structurally correct. The arrow means direction, and skimming past it is exactly how a detection rule ends up watching the wrong traffic entirely. {% /callout %}</p>
<hr />
<h2>04 — My Regex Matched Nothing Because I Forgot to Escape a Period</h2>
<p>I wrote a pattern to pull IP addresses out of a log file:</p>
<pre><code class="language-python">import re
match = re.search(r'\d+.\d+.\d+.\d+', log_line)
</code></pre>
<p>It ran without any errors, which made me assume it was correct — until I tested it against a log line with a version number sitting next to an IP address, and it matched the wrong thing entirely.</p>
<p>I'd forgotten that <code>.</code> in regex means "any character," not a literal period. My pattern wasn't looking for an IP address shape at all — it was matching almost any group of digit-something-digit-something-digit-something-digit.</p>
<pre><code class="language-python">import re
match = re.search(r'\d+\.\d+\.\d+\.\d+', log_line)
</code></pre>
<p>"No error" is not the same as "correct." A script can run cleanly and still be quietly wrong — especially in regex, where an unescaped character doesn't throw an exception, it just silently changes what you're actually matching against.</p>
<hr />
<h2>05 — I Contained an Incident Before Confirming What I Was Containing</h2>
<p>Given an alert about unusual outbound traffic, I immediately jumped to containment — isolating the host — before confirming what the traffic actually was or where it was going.</p>
<pre><code class="language-plaintext">1. Detection &amp; Analysis  → what is this traffic, where is it going, is it actually malicious?
2. THEN Containment       → isolate based on what step 1 actually confirmed
3. Eradication            → remove the confirmed cause
4. Recovery                → restore and verify
</code></pre>
<p>The lab's follow-up question asked me to justify the containment decision with evidence, and I realized I didn't have any yet. Detection and Analysis comes before Containment in the lifecycle for a reason — acting before confirming risks containing the wrong thing entirely.</p>
<p>🔍 <strong>One habit, four contexts:</strong> Containment feels like the responsible, decisive move to make first — but skipping analysis isn't fast response, it's guessing with extra steps. The lifecycle puts confirmation before action for a reason. {% /callout %}</p>
<hr />
<h2>The Bigger Realization</h2>
<blockquote>
<p><em>Course 6 gave me an alert queue and a lifecycle to work through. Course 7 gave me a script editor and a language to automate that lifecycle with. I'd been treating them as unrelated — a detection course and a coding course — until the SIEM struggle showed me they're the same muscle: don't act until you've confirmed what you're actually looking at.</em></p>
</blockquote>
<p>Every mistake this week traced back to that same root cause, and none of them announced themselves. A SIEM query with no hypothesis still returns rows. A backwards rule still saves without complaint. A regex with one missing backslash still runs top to bottom. A containment action still "works," technically, even without evidence behind it. Last week a terminal error stopped me in my tracks immediately. This week, nothing stopped me — I had to go back and check my own reasoning, because the tool never would.</p>
<hr />
<h2>How I Studied This Week</h2>
<p>Instead of trusting that "it ran" meant "it's right," I forced myself to ask a confirming question before treating anything as done:</p>
<table>
<thead>
<tr>
<th>Question I asked</th>
<th>Why it mattered</th>
</tr>
</thead>
<tbody><tr>
<td>What attack behavior am I actually trying to prove happened?</td>
<td>Turned SIEM queries from fishing into investigation</td>
</tr>
<tr>
<td>Which direction does this arrow actually point?</td>
<td>Caught the backwards IDS rule before it shipped</td>
</tr>
<tr>
<td>Does this character mean what I think it means?</td>
<td>Caught the unescaped period regex bug</td>
</tr>
<tr>
<td>Do I have evidence yet, or just an alert?</td>
<td>Stopped premature containment before it became a habit</td>
</tr>
</tbody></table>
<p>I also kept a regex tester open the entire week instead of guessing blind, and pulled up real sample PCAP files in Wireshark outside the guided lab so packet analysis wasn't something I only practiced once inside a walkthrough.</p>
<hr />
<h2>4 Mental Models I Had to Replace</h2>
<p><strong>Misconception 01 — A SIEM is a search engine you throw filters at.</strong> It's an investigation tool — the query should follow a specific hypothesis about attacker behavior, not lead one.</p>
<p><strong>Misconception 02 — An IDS rule reads like a sentence, important part first.</strong> It reads as <code>source -&gt; destination</code>. Direction is the meaning, not decoration.</p>
<p><strong>Misconception 03 — If a regex runs without errors, it's correct.</strong> Regex fails silently. An unescaped character doesn't crash — it just quietly matches the wrong thing.</p>
<p><strong>Misconception 04 — Containment is the responsible first move after an alert.</strong> Containment is a decision that should follow analysis, not replace it. Acting before confirming is guessing, not responding.</p>
<hr />
<h2>Resources That Helped Me</h2>
<table>
<thead>
<tr>
<th>Resource</th>
<th>Why It Helped</th>
</tr>
</thead>
<tbody><tr>
<td><strong><a href="https://www.coursera.org/learn/detection-and-response">Sound the Alarm: Detection and Response (Coursera)</a></strong></td>
<td>The alert queue and mock incidents where the actual mistakes — and the actual learning — happened</td>
</tr>
<tr>
<td><strong><a href="https://www.coursera.org/learn/automate-cybersecurity-tasks-with-python">Automate Cybersecurity Tasks with Python (Coursera)</a></strong></td>
<td>Turned Python from a language into a tool for parsing logs and extracting indicators</td>
</tr>
<tr>
<td><strong><a href="https://www.wireshark.org/">Wireshark</a></strong></td>
<td>Practiced packet analysis on real sample PCAPs outside the guided lab</td>
</tr>
<tr>
<td><strong><a href="https://www.splunk.com/en_us/download.html">Splunk Free Trial</a></strong></td>
<td>Extra SIEM query practice beyond the course's simulated environment</td>
</tr>
<tr>
<td><strong><a href="https://regex101.com/">regex101.com</a></strong></td>
<td>Live regex testing — turned invisible matching mistakes into visible ones instantly</td>
</tr>
<tr>
<td><strong><a href="https://attack.mitre.org/">MITRE ATT&amp;CK Framework</a></strong></td>
<td>Cross-referenced detection concepts against real, documented adversary techniques</td>
</tr>
</tbody></table>
<hr />
<h2>Week 07 Complete.</h2>
<p>Last week was about operating inside a system — commands and queries. This week was about watching that system for trouble, and writing the code to watch it for me. The uncomfortable part wasn't the syntax — it was realizing how many of my mistakes never made a sound.</p>
<p>Four courses down, five total complete. The alert queue doesn't feel like noise anymore, and a broken script doesn't feel like a dead end — it feels like a traceback waiting to be read properly.</p>
<p><strong>Next step:</strong> carry this week's "confirm before you act" instinct into the last stretch of the certificate, and start connecting detection, automation, and analyst judgment into something that looks like an actual SOC workflow instead of separate courses.</p>
<hr />
<p><strong>Let's Connect</strong></p>
<p><em>If you're on a similar journey or have feedback, I'd love to connect!</em></p>
<p>🔗 <strong>LinkedIn:</strong> <a href="https://www.linkedin.com/in/durga-madhav-chandra-vemulapalli-a96143398/">Durga Madhav Chandra</a> 💻 <strong>GitHub:</strong> <a href="https://github.com/DurgaMadhavChandra/cybersecurity-journey">DurgaMadhavChandra</a></p>
<hr />
<p><em>#Cybersecurity #LearningInPublic #BuildInPublic #Python #SIEM #GoogleCybersecurityCertificate #InfoSec #SOCAnalyst #IncidentResponse #DetectionAndResponse</em></p>
]]></content:encoded></item><item><title><![CDATA[From Reading About Systems to Actually Running Them — Week 06: Linux, SQL, and Threat Modeling]]></title><description><![CDATA[This Week in Numbers

🐧 2 Coursera courses completed (Tools of the Trade: Linux and SQL, Assets, Threats, and Vulnerabilities)

⌨️ 1st Week I actually broke something in a terminal instead of just re]]></description><link>https://durgamadhav.hashnode.dev/from-reading-about-systems-to-actually-running-them-week-06-linux-sql-and-threat-modeling</link><guid isPermaLink="true">https://durgamadhav.hashnode.dev/from-reading-about-systems-to-actually-running-them-week-06-linux-sql-and-threat-modeling</guid><category><![CDATA[Cybersecurity #LearningInPublic #BuildInPublic #Linux #SQL #GoogleCybersecurityCertificate #InfoSec #SOCAnalyst #ThreatModeling #VulnerabilityManagement]]></category><dc:creator><![CDATA[Durga Madhav Chandra Vemulapalli]]></dc:creator><pubDate>Sat, 11 Jul 2026 17:01:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1db104cc268013976acd05/b99d8199-4066-464e-bc77-318a63ded585.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2>This Week in Numbers</h2>
<ul>
<li><p>🐧 <strong>2</strong> Coursera courses completed (Tools of the Trade: Linux and SQL, Assets, Threats, and Vulnerabilities)</p>
</li>
<li><p>⌨️ <strong>1st</strong> Week I actually broke something in a terminal instead of just reading about breaking things</p>
</li>
<li><p>🔗 <strong>3</strong> Days spent fighting a single SQL <code>JOIN</code></p>
</li>
<li><p>🗂️ <strong>4</strong> Asset classification tiers I finally learned to apply correctly, not just recite</p>
</li>
<li><p>💡 <strong>1</strong> Realization: hands-on feedback finds the gaps in your understanding faster than reading ever will</p>
</li>
</ul>
<hr />
<h2>Everything Comes Back to Relationships</h2>
<p>Going in, I treated Linux and SQL as two separate, mostly mechanical skills — commands to memorize, syntax to get right. By the end of the week I understood them differently:</p>
<blockquote>
<p><strong>Almost everything this week — file permissions, SQL joins, asset-to-vulnerability mapping — was really the same question asked in different languages: how does this thing relate to that thing?</strong></p>
</blockquote>
<p>A permission relates a user to a file. A <code>JOIN</code> relates one table to another through a shared key. An asset relates to its vulnerabilities through an <code>asset_id</code>. Once that clicked, Course 4 and Course 5 stopped feeling like "computing skills" and "security concepts" bolted together, and started feeling like one continuous skill:</p>
<ul>
<li><p>Who is this user actually allowed to touch? → <strong>Permissions</strong></p>
</li>
<li><p>What's the shared key linking these two tables? → <strong>SQL Joins</strong></p>
</li>
<li><p>Which vulnerabilities actually belong to this asset? → <strong>Asset Mapping</strong></p>
</li>
</ul>
<p>Once that clicked, Course 4 and Course 5 stopped being "a computing skills course" and "a concepts course" bolted together, and started reporting back to the same underlying question.</p>
<hr />
<h2>02 — I Tried to Numeric-Notation My Way Through <code>chmod</code> Without Understanding It</h2>
<p>Working through Course 4's permissions lab, I hit a task asking me to give a script owner read/write/execute, group read/execute, and others nothing. I typed <code>chmod 750 script.sh</code> because I'd memorized "750 is a common permission setting" from a cheat sheet — not because I understood why those three digits meant what they meant.</p>
<p>The lab changed the requirement slightly — group should only get read, not execute — and I froze. I had no idea which digit to change or why, because I'd never actually connected <code>7</code>, <code>5</code>, and <code>0</code> back to <code>rwx</code>, <code>r-x</code>, and <code>---</code>.</p>
<pre><code class="language-plaintext">r = 4 | w = 2 | x = 1
Owner: rwx = 4+2+1 = 7
Group: r-- = 4+0+0 = 4   (what I actually needed, not 5)
Others: --- = 0+0+0 = 0

chmod 740 script.sh
</code></pre>
<p>🔐 <strong>The habit that fixed it:</strong> A memorized number is only useful for the exact question it was memorized for. Rebuilding the permission from <code>r/w/x</code> values up every time was slower at first — but it's the only version of this skill that actually transfers to a scenario the cheat sheet didn't cover. {% /callout %}</p>
<hr />
<h2>03 — I Spent Three Days Fighting a SQL Join, Thinking About the Problem Backwards</h2>
<p>I could write a basic <code>SELECT</code> statement fine. Filter with <code>WHERE</code>, no problem. But the second a lab asked me to pull data from two tables — an assets table and a vulnerabilities table — using a <code>JOIN</code>, I completely stalled. I kept trying to filter my way to the answer instead of relating the tables to each other.</p>
<p>A <code>JOIN</code> isn't a syntax trick — it's a relationship. An <code>asset_id</code> in one table and the same <code>asset_id</code> in another table are literally how a database connects "what device is this" to "what's wrong with it." That's the exact question a security analyst asks every day: which assets have critical vulnerabilities, and how do I find that fast in a database instead of scrolling a spreadsheet.</p>
<p>I stopped trying to memorize <code>JOIN</code> syntax and started drawing the tables out by hand — <code>asset_id</code>, <code>hostname</code>, <code>owner</code> on one side, <code>asset_id</code>, <code>CVE</code>, <code>severity</code> on the other. Once I could see the shared column, the query wrote itself:</p>
<pre><code class="language-sql">SELECT hostname, severity
FROM assets
INNER JOIN vulnerabilities ON assets.asset_id = vulnerabilities.asset_id
WHERE severity = 'Critical';
</code></pre>
<p>That one line taught me more about vulnerability management than the reading did — because I had to think like an analyst to even write it.</p>
<hr />
<h2>04 — I Drew the Classification Line in the Wrong Place</h2>
<p>In Course 5's asset classification activity, I was given a fictional company's internal onboarding guide — useful to new employees, but never meant to leave the building — and I classified it as <strong>Public</strong>. My reasoning was "it's not sensitive data, nobody's harmed if it leaks." That felt airtight right up until I checked it against the answer key.</p>
<p>I'd been classifying assets purely on <em>sensitivity of content</em>, when the actual scheme also depends on <em>intended audience</em>. Public doesn't mean "not embarrassing if leaked" — it means "there's genuinely no restriction on who can see it." An onboarding guide was still written for employees only, which makes it Internal-Only by definition, regardless of how harmless the content feels.</p>
<pre><code class="language-plaintext">Who was this actually written for?        → defines the audience boundary
What happens if that audience expands?     → defines the classification tier
</code></pre>
<p>🔐 <strong>Real-world echo:</strong> I'd been running one test (harm) when the classification scheme actually runs two (harm <em>and</em> intended audience). Skipping the second question is exactly how a low-harm document gets mislabeled Public when it was never meant to leave the org in the first place. {% /callout %}</p>
<hr />
<h2>05 — I Mapped a Spoofing Scenario to the Wrong STRIDE Category</h2>
<p>Course 5's threat modeling walkthrough gave me a scenario: an attacker using a stolen employee badge to enter a restricted server room. I confidently labeled it <strong>Tampering</strong>, since my brain jumped straight to "something physical was altered — access was changed."</p>
<p>Nothing in the scenario involved data or a system being <em>changed</em>. Tampering is about integrity — modifying something that should stay intact. What actually happened was an attacker successfully pretending to be someone they weren't, using stolen credentials to pass as an authorized identity. That's <strong>Spoofing</strong>, which attacks authentication, not integrity.</p>
<pre><code class="language-plaintext">Pretending to be someone else            → Spoofing (Authentication)
Changing data/systems without permission → Tampering (Integrity)
Denying an action you actually took       → Repudiation (Accountability)
Seeing data you shouldn't                  → Information Disclosure (Confidentiality)
Overwhelming a system                       → Denial of Service (Availability)
Gaining access beyond your permission level  → Elevation of Privilege (Authorization)
</code></pre>
<p>One letter of difference decided this one, too — "something happened to access" isn't specific enough to pick a STRIDE category. A stolen badge and a tampered system both <em>feel</em> like access problems, but they violate completely different principles.</p>
<hr />
<h2>The Bigger Realization</h2>
<blockquote>
<p><em>Course 4 gave me the environment security tools actually run in. Course 5 gave me the discipline to ask "what are we protecting, from whom, and how would they get to it." I'd been treating them as unrelated — a technical skills course and a concepts course — until the SQL join struggle showed me they're the same muscle.</em></p>
</blockquote>
<p>Every mix-up this week traced back to the same root cause as last week, just with sharper feedback. A memorized <code>chmod</code> value collapsed the moment the requirement changed slightly. A <code>JOIN</code> refused to click until I stopped filtering and started relating two tables the way an actual analyst would. A classification call felt obviously right until I realized I'd only tested for harm and skipped the audience question. A STRIDE category felt correct purely because it <em>sounded</em> dramatic, not because it matched what was actually violated.</p>
<p>A terminal doesn't care how confident you feel — it errors out or it doesn't. That's a faster, blunter teacher than a quiz question, and I think that's exactly why this week's mistakes stuck better than last week's did.</p>
<hr />
<h2>How I Studied This Week</h2>
<p>Instead of just watching the course labs passively, I rebuilt almost everything from first principles instead of memorizing the shortcut version:</p>
<table>
<thead>
<tr>
<th>Question I asked</th>
<th>Why it mattered</th>
</tr>
</thead>
<tbody><tr>
<td>Could I explain <em>why</em>, not just recall <em>what</em>?</td>
<td>Killed the "memorized the cheat sheet" trap on <code>chmod</code></td>
</tr>
<tr>
<td>What's the shared key relating these two things?</td>
<td>Turned SQL joins from syntax into relationships</td>
</tr>
<tr>
<td>Who was this actually written for?</td>
<td>Fixed the audience-vs-harm gap in asset classification</td>
</tr>
<tr>
<td>What principle was actually violated here?</td>
<td>Stopped STRIDE categories from being picked by vibe</td>
</tr>
</tbody></table>
<p>I also went outside the guided Coursera labs — practicing extra Linux navigation and SQL joins on Linux Journey and SQLBolt, and reading MITRE's own ATT&amp;CK matrix directly instead of relying on the course's summary of adversary tactics.</p>
<hr />
<h2>4 Mental Models I Had to Replace</h2>
<p><strong>Misconception 01 — Numeric permissions are a lookup table.</strong> <code>chmod 750</code> is just <code>r/w/x</code> values added up. Memorize the math, not the number, or the first changed requirement breaks you.</p>
<p><strong>Misconception 02 — A SQL</strong> <code>JOIN</code> <strong>is a syntax problem.</strong> It's a relationship problem. Draw the shared key between two tables before writing a single line of SQL.</p>
<p><strong>Misconception 03 — Asset classification is purely about how sensitive the content is.</strong> It's sensitivity <em>and</em> intended audience. A harmless document can still be Internal-Only if it was never meant to leave the org.</p>
<p><strong>Misconception 04 — A STRIDE category can be picked by how dramatic a scenario feels.</strong> It has to be picked by which specific principle — authentication, integrity, confidentiality, availability, accountability, authorization — was actually violated.</p>
<hr />
<h2>Resources That Helped Me</h2>
<table>
<thead>
<tr>
<th>Resource</th>
<th>Why It Helped</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Tools of the Trade: Linux and SQL (Coursera)</strong></td>
<td>The terminal and SQL sandbox where the actual mistakes — and the actual learning — happened</td>
</tr>
<tr>
<td><strong>Assets, Threats, and Vulnerabilities (Coursera)</strong></td>
<td>Shifted threat actors and malware from "recognize it" to "model it as risk"</td>
</tr>
<tr>
<td><strong>Linux Journey (linuxjourney.com)</strong></td>
<td>Free, interactive extra practice outside the course sandbox</td>
</tr>
<tr>
<td><strong>SQLBolt (sqlbolt.com)</strong></td>
<td>Reinforced <code>SELECT</code>, <code>WHERE</code>, and especially <code>JOIN</code> beyond the guided labs</td>
</tr>
<tr>
<td><strong>MITRE ATT&amp;CK Framework (attack.mitre.org)</strong></td>
<td>Primary source for adversary tactics — read directly instead of trusting the course's summary</td>
</tr>
<tr>
<td><strong>MITRE CVE Database (cve.org)</strong></td>
<td>Cross-referenced real malware-related vulnerability entries</td>
</tr>
</tbody></table>
<hr />
<h2>Week 06 Complete.</h2>
<p>Last week was about understanding the structure the wire operates inside of. This week was about finally operating inside that structure myself — typing the commands, writing the queries, and building the threat model instead of just reading about all three.</p>
<p>Two courses down this week, five total complete. The terminal doesn't feel intimidating anymore, and neither does a blank SQL query window — that alone tells me the hands-on approach is working.</p>
<p><strong>Next step:</strong> carry the relationship-thinking from this week — permissions, joins, asset-to-vulnerability mapping — into detection and response, and start connecting <em>how</em> systems are attacked to <em>how</em> alerts actually get investigated.</p>
<hr />
<p><strong>Let's Connect</strong></p>
<p><em>If you're on a similar journey or have feedback, I'd love to connect!</em></p>
<p>🔗 <strong>LinkedIn:</strong> <a href="https://www.linkedin.com/in/durga-madhav-chandra-vemulapalli-a96143398/">Durga Madhav Chandra</a> 💻 <strong>GitHub:</strong> <a href="https://github.com/DurgaMadhavChandra/cybersecurity-journey">DurgaMadhavChandra</a></p>
<hr />
<p><em>#Cybersecurity #LearningInPublic #BuildInPublic #Linux #SQL #GoogleCybersecurityCertificate #InfoSec #SOCAnalyst #ThreatModeling #VulnerabilityManagement</em></p>
]]></content:encoded></item><item><title><![CDATA[Before You Defend a Network, You Must Understand Why It's Worth Defending — 
Week 05: Foundations, Risk, and Networks
]]></title><description><![CDATA[This Week in Numbers








📚 3
Coursera courses completed (Foundations, Risk Management, Networks)


🧭 8
CISSP security domains mapped


🔁 7
NIST RMF steps memorized — then un-memorized, then rel]]></description><link>https://durgamadhav.hashnode.dev/before-you-defend-a-network-you-must-understand-why-it-s-worth-defending-week-05-foundations-risk-and-networks</link><guid isPermaLink="true">https://durgamadhav.hashnode.dev/before-you-defend-a-network-you-must-understand-why-it-s-worth-defending-week-05-foundations-risk-and-networks</guid><category><![CDATA[Cybersecurity #LearningInPublic #BuildInPublic #NIST #RiskManagement #NetworkSecurity #InfoSec #SOCAnalyst #GoogleCybersecurityCertificate]]></category><dc:creator><![CDATA[Durga Madhav Chandra Vemulapalli]]></dc:creator><pubDate>Sat, 04 Jul 2026 11:46:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1db104cc268013976acd05/5f8dbbbc-4880-4b93-8373-f020e7875fae.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2>This Week in Numbers</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>📚 <strong>3</strong></td>
<td>Coursera courses completed (Foundations, Risk Management, Networks)</td>
</tr>
<tr>
<td>🧭 <strong>8</strong></td>
<td>CISSP security domains mapped</td>
</tr>
<tr>
<td>🔁 <strong>7</strong></td>
<td>NIST RMF steps memorized — then un-memorized, then relearned properly</td>
</tr>
<tr>
<td>⚠️ <strong>5</strong></td>
<td>Times I mixed up a core concept in a practice scenario</td>
</tr>
<tr>
<td>💡 <strong>1</strong></td>
<td>Realization: knowing a definition and knowing how to <em>decide</em> with it are not the same skill</td>
</tr>
</tbody></table>
<hr />
<h2>Everything Comes Back to One Triangle</h2>
<p>Going in, I treated the CIA Triad as a slide you memorize on day one and move past. By the end of the week I understood it differently:</p>
<blockquote>
<p><strong>Confidentiality, Integrity, and Availability aren't three separate rules — they're the only three questions that matter when something goes wrong.</strong></p>
</blockquote>
<p>Every framework, every control, every incident report this week eventually collapsed back into one of these three questions:</p>
<ul>
<li><p>Did the wrong person see this? → <strong>Confidentiality</strong></p>
</li>
<li><p>Was this changed without permission? → <strong>Integrity</strong></p>
</li>
<li><p>Can the right people still get to it? → <strong>Availability</strong></p>
</li>
</ul>
<p>Once that clicked, the eight CISSP domains stopped feeling like a list to memorize and started feeling like eight different departments all reporting back to the same three-word mission statement.</p>
<hr />
<h2>02 — The Day I Learned Risk Isn't a Synonym for "The Bad Thing"</h2>
<p>My first real mix-up came in Course 2. A practice scenario described an unpatched server exposed to the internet, and without thinking, I labeled the server itself as "the risk."</p>
<p>It felt right. It was the thing that was wrong, after all.</p>
<p>Going back to the definitions slowly instead of trusting my gut, the picture separated out:</p>
<pre><code class="language-plaintext">Vulnerability → the unpatched server itself (the weakness)
Threat        → an attacker scanning for exposed services (the actor/event)
Risk          → the potential damage if the two actually meet (the outcome)
</code></pre>
<p>{% callout type="info" %} 🔐 <strong>The habit that fixed it:</strong> I stopped leaving these three definitions stacked as separate bullet points and started rewriting them side by side, in the same scenario, every time. Seeing them stacked separately is exactly what let me blur them together in the first place. {% /callout %}</p>
<hr />
<h2>03 — Reciting a Framework Isn't the Same as Understanding Its Order</h2>
<p>I could say "Prepare, Categorize, Select, Implement, Assess, Authorize, Monitor" from memory without hesitating. Then a quiz asked what comes right after Select, and I confidently answered "Authorize." Wrong.</p>
<p>I'd memorized the NIST Risk Management Framework as seven words in a row, not as a dependency chain. Select picks the controls. Implement deploys them. Assess checks whether they actually work. Only <em>then</em> does Authorize make sense — you can't formally accept risk for a control nobody has verified yet.</p>
<table>
<thead>
<tr>
<th>Step</th>
<th>What it actually depends on</th>
</tr>
</thead>
<tbody><tr>
<td>Select</td>
<td>Categorize being done first</td>
</tr>
<tr>
<td>Implement</td>
<td>The controls Select already chose</td>
</tr>
<tr>
<td>Assess</td>
<td>Controls that have actually been Implemented</td>
</tr>
<tr>
<td>Authorize</td>
<td>An Assess result to sign off on</td>
</tr>
<tr>
<td>Monitor</td>
<td>Everything before it, continuously</td>
</tr>
</tbody></table>
<p>A list feels shuffleable. A pipeline doesn't — and treating RMF like the first is exactly how I got the second wrong.</p>
<hr />
<h2>04 — Not Every Attack Is a Confidentiality Problem</h2>
<p>A Course 2 scenario described a DDoS attack knocking a company's website offline. My brain instantly filed it as "attack → confidentiality," no reading required.</p>
<p>It's not. Nothing in a DDoS scenario touches data being viewed or stolen — the entire point is overwhelming a system so legitimate users can't reach it. That's a textbook <strong>availability</strong> problem.</p>
<pre><code class="language-plaintext">Data seen by the wrong person   → Confidentiality
Data changed without permission → Integrity
Service or data made unreachable → Availability
</code></pre>
<p>{% callout type="info" %} 🔐 <strong>Real-world echo:</strong> Most cybersecurity headlines are about breaches and leaked data, which quietly trained my instinct to jump to "confidentiality" for anything labeled an attack. Assuming every attack targets the same pillar is exactly how you misclassify an incident's severity and send the wrong team down the wrong path first. {% /callout %}</p>
<hr />
<h2>05 — One Letter, One Very Different Job: IDS vs. IPS</h2>
<p>Skimming Course 3's device list, I mentally filed IDS and IPS as basically the same thing — "the tool that stops bad traffic." That assumption walked straight into a wrong answer on a practice question.</p>
<p>Reading each acronym slowly instead of as a pair:</p>
<pre><code class="language-plaintext">IDS = Intrusion Detection System  → watches and alerts. Nothing more.
IPS = Intrusion Prevention System → watches AND actively blocks.
</code></pre>
<table>
<thead>
<tr>
<th></th>
<th>What happens</th>
<th>What the analyst does next</th>
</tr>
</thead>
<tbody><tr>
<td>IDS fires</td>
<td>An alert appears</td>
<td>A human decides and acts</td>
</tr>
<tr>
<td>IPS fires</td>
<td>The system has already blocked it</td>
<td>A human reviews and confirms</td>
</tr>
</tbody></table>
<p>One letter of difference. The entire meaning of "someone needs to respond right now" versus "the system already responded — go confirm it did the right thing" lives inside that one letter.</p>
<hr />
<h2>06 — The Week I Realized I'd Memorized the Map, Not Walked the Terrain</h2>
<p>This was the real struggle of the week, and it didn't show up until I tried to actually <em>use</em> everything I'd learned in one go.</p>
<p>Three courses, one week — CIA Triad, eight domains, NIST CSF and RMF, playbooks, network architecture, hardening. On paper, all of it made sense. Then I sat down to map a simple incident to an actual response process, and I froze. I could recite the triad. I could list the domains. I could explain what a playbook is <em>for</em>. The moment a scenario asked "what's your first step," I hesitated.</p>
<p>That's not a knowledge problem. That's an application problem.</p>
<p>So I started asking one question after every concept: <strong>"If I were the analyst on shift, what would I actually do right now?"</strong> I walked a basic scenario — an unauthorized login attempt on a network device — end to end:</p>
<pre><code class="language-plaintext">Which domain does this fall under?      → Security &amp; Risk Management / IAM
Which control should have caught this?   → Access control / MFA enforcement
What does the playbook say to do first?   → Detection and Analysis phase
Where does this sit in the architecture?   → Access layer, network device
</code></pre>
<p>That single exercise taught me more than the rest of the week combined. The triad stopped being abstract the moment I had to decide, under a fake deadline, that this was an <em>availability</em> concern first (an active login attempt potentially locking out the real device owner) — not a confidentiality one out of habit.</p>
<hr />
<h2>The Bigger Realization</h2>
<blockquote>
<p><em>Foundations gave me vocabulary. Risk management gave me structure. Networking gave me terrain. I'd been studying all three as separate subjects — until one scenario forced me to use them as one continuous way of thinking.</em></p>
</blockquote>
<p>Every mix-up this week traced back to the same root cause: the gap between <strong>defining</strong> something and <strong>deciding</strong> with it. Risk, threat, and vulnerability are easy to define separately and easy to blur under pressure. The RMF steps are easy to recite and easy to reorder by accident. The CIA Triad is easy to quote and easy to misapply on autopilot. IDS and IPS are one letter apart on the page and an entire incident-response decision apart in practice.</p>
<p>An incident doesn't arrive with a label telling you which term, which step, or which pillar applies. You either know how to reach for the right one under pressure, or you don't — and the only way to find out which one you are is to stop reciting and start deciding.</p>
<hr />
<h2>How I Studied This Week</h2>
<p>Instead of just watching the course videos passively, for every named framework or standard, I went and read the primary source directly — not the course's summary of it:</p>
<table>
<thead>
<tr>
<th>Question I asked</th>
<th>Why it mattered</th>
</tr>
</thead>
<tbody><tr>
<td>Is this a definition, or a decision I'd have to make?</td>
<td>Separated "recall" from "application" honestly</td>
</tr>
<tr>
<td>What would I actually do first, on shift?</td>
<td>Turned playbooks from documents into decision trees</td>
</tr>
<tr>
<td>Which CIA pillar does this scenario really hit?</td>
<td>Killed the "attack = confidentiality" autopilot</td>
</tr>
<tr>
<td>What does the primary source say, not just the course summary?</td>
<td>Made frameworks feel like living documents, not slides</td>
</tr>
</tbody></table>
<p>I also completed every portfolio activity properly instead of skimming it: a security audit against a fictional company's controls, a six-phase incident-response walkthrough, a full incident report written around the NIST CSF, and a guided OS-hardening exercise.</p>
<hr />
<h2>5 Mental Models I Had to Replace</h2>
<p><strong>Misconception 01 — Risk means "the thing that's wrong."</strong> Risk is the potential <em>outcome</em> of a vulnerability and a threat meeting — not either one on its own.</p>
<p><strong>Misconception 02 — A seven-step framework is just a list to memorize.</strong> NIST RMF is a dependency chain. Each step needs the output of the one before it; none of them are interchangeable.</p>
<p><strong>Misconception 03 — Every attack is a confidentiality issue.</strong> Attacks target availability and integrity just as often — DDoS is the clearest example, and assuming otherwise misclassifies severity.</p>
<p><strong>Misconception 04 — IDS and IPS are basically the same tool.</strong> One detects and alerts; the other detects and blocks. That distinction changes what an analyst has to do next.</p>
<p><strong>Misconception 05 — Knowing the frameworks means you can use them.</strong> Fluent recall and real understanding are different skills. Only one of them helps when a scenario asks for a decision instead of a definition.</p>
<hr />
<h2>Resources That Helped Me</h2>
<table>
<thead>
<tr>
<th>Resource</th>
<th>Why It Helped</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Google Cybersecurity Certificate — Courses 1–3 (Coursera)</strong></td>
<td>Built the exact order this week needed: foundations, then risk, then networks</td>
</tr>
<tr>
<td><strong>NIST Cybersecurity Framework (nist.gov/cyberframework)</strong></td>
<td>Primary source for CSF — read directly instead of trusting the course's summary</td>
</tr>
<tr>
<td><strong>NIST Risk Management Framework (csrc.nist.gov)</strong></td>
<td>Primary source for the 7-step RMF process</td>
</tr>
<tr>
<td><strong>OWASP Top 10 (owasp.org)</strong></td>
<td>The actual list the course only referenced in passing</td>
</tr>
<tr>
<td><strong>MITRE CVE Database (cve.org)</strong></td>
<td>Looked up real, documented vulnerabilities to make "vulnerability" concrete</td>
</tr>
<tr>
<td><strong>(ISC)² Code of Ethics (isc2.org/ethics)</strong></td>
<td>Primary source for the ethical canons the course builds on</td>
</tr>
</tbody></table>
<hr />
<h2>Week 05 Complete. 🛡️🔐</h2>
<p>Last week was about touching the wire — watching real packets move in Wireshark. This week was about understanding the structure the wire operates inside of: what it's protecting, what could go wrong, and who's allowed to touch it.</p>
<p>A security analyst who only knows the frameworks can't read a packet capture. One who only knows Wireshark can't explain <em>why</em> the organization cares. This week, NIST and OWASP stopped being acronyms to memorize and started being living documents written by people solving the same problems I'm learning to solve.</p>
<p><strong>Next step:</strong> carry the terrain from this week — networks, devices, protocols — into Linux and SQL, and start connecting <em>how</em> systems are attacked to <em>how</em> they're actually investigated.</p>
<hr />
<p><strong>Let's Connect</strong></p>
<p><em>If you're on a similar journey or have feedback, I'd love to connect!</em></p>
<p>🔗 <strong>LinkedIn:</strong> <a href="https://www.linkedin.com/in/durga-madhav-chandra-vemulapalli-a96143398/">Durga Madhav Chandra</a> 💻 <strong>GitHub:</strong> <a href="https://github.com/DurgaMadhavChandra/cybersecurity-journey">DurgaMadhavChandra</a></p>
<hr />
<p><em>#Cybersecurity #LearningInPublic #BuildInPublic #NIST #RiskManagement #NetworkSecurity #InfoSec #SOCAnalyst #GoogleCybersecurityCertificate</em></p>
]]></content:encoded></item><item><title><![CDATA[Networking Taught Me That Every Attack Has an Address — Week 04: Networking Fundamentals]]></title><description><![CDATA[This Week in Numbers



📊
Count



🌐
23 Core networking topics explored


💻
15+ diagnostic commands practiced


⚠️
Real packets captured and analysed


🔐
Countless attacks mapped to specific layer]]></description><link>https://durgamadhav.hashnode.dev/networking-taught-me-that-every-attack-has-an-address-week-04-networking-fundamentals</link><guid isPermaLink="true">https://durgamadhav.hashnode.dev/networking-taught-me-that-every-attack-has-an-address-week-04-networking-fundamentals</guid><category><![CDATA[Networking #Cybersecurity #LearningInPublic #BuildInPublic #NetworkingFundamentals #Wireshark #Nmap #OSIModel #EthicalHacking #InfoSec]]></category><dc:creator><![CDATA[Durga Madhav Chandra Vemulapalli]]></dc:creator><pubDate>Fri, 26 Jun 2026 17:04:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1db104cc268013976acd05/f3669834-98b1-4424-aad0-96f73e73e94b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2>This Week in Numbers</h2>
<table>
<thead>
<tr>
<th>📊</th>
<th>Count</th>
</tr>
</thead>
<tbody><tr>
<td>🌐</td>
<td>23 Core networking topics explored</td>
</tr>
<tr>
<td>💻</td>
<td>15+ diagnostic commands practiced</td>
</tr>
<tr>
<td>⚠️</td>
<td>Real packets captured and analysed</td>
</tr>
<tr>
<td>🔐</td>
<td>Countless attacks mapped to specific layers</td>
</tr>
<tr>
<td>💡</td>
<td>1 mental model completely changed</td>
</tr>
</tbody></table>
<hr />
<h1>Networking Is Really a System of Addresses</h1>
<p>Before this week, networking felt like trivia.</p>
<p>Port 22 is SSH.</p>
<p>Port 443 is HTTPS.</p>
<p>/24 means 254 hosts.</p>
<p>Facts that lived in tables and went nowhere.</p>
<p>Then something clicked.</p>
<p>Every networking concept I studied seemed to answer the same question:</p>
<blockquote>
<p>"Where is this traffic going, and should it be allowed to get there?"</p>
</blockquote>
<p>Which layer is this protocol operating on?</p>
<p>Which device makes this routing decision?</p>
<p>Which rule permits or denies this packet?</p>
<p>Which service is listening on this port, and does it need to be?</p>
<p>Networking stopped feeling like a certification topic and started feeling like the map every attacker and every defender is reading at the same time.</p>
<hr />
<h1>01 — The Moment the OSI Model Stopped Being a Table</h1>
<p>I had memorised the OSI model before.</p>
<p>Seven layers.</p>
<p>Application, Presentation, Session, Transport, Network, Data Link, Physical.</p>
<p>A table to recite on demand and forget immediately after.</p>
<p>Then I opened Wireshark and captured a real DNS query.</p>
<p>I watched it move through the layers in front of me.</p>
<p>Application layer — the query itself.</p>
<p>Transport layer — UDP, port 53.</p>
<p>Network layer — the IP address it was heading to.</p>
<p>Data Link layer — the MAC address of my gateway.</p>
<p>Physical layer — the bytes on the wire.</p>
<p>Every layer I had been memorising in theory was sitting right there in a real packet.</p>
<p>The moment that changed everything was realising the OSI model isn't a memorisation exercise.</p>
<p>It's a map.</p>
<p>Every attack lives somewhere on that map.</p>
<p>DDoS targets Layer 3 and Layer 4.</p>
<p>SQL injection and XSS live at Layer 7.</p>
<p>ARP poisoning happens at Layer 2.</p>
<p>Once I could place an attack on the map, I could immediately ask: what defence belongs at that layer?</p>
<p>That question made the entire week make sense.</p>
<hr />
<h1>02 — Subnetting Was Painful Until the Pattern Clicked</h1>
<p>I won't pretend subnetting was intuitive.</p>
<p>The binary math felt mechanical.</p>
<p>Converting octets, counting host bits, working out broadcast addresses.</p>
<p>I ran through it slowly at first:</p>
<pre><code>192.168.1.0/26
Subnet mask: 255.255.255.192
Host bits: 6
Usable hosts: 2^6 - 2 = 62
</code></pre>
<p>Mechanical. Slow. Uncomfortable.</p>
<p>Then I started doing it faster. And faster. And it clicked.</p>
<p>What actually changed my thinking wasn't the math.</p>
<p>It was the moment I connected subnetting to firewall rules.</p>
<p>Every ACL I'll ever write is in CIDR notation.</p>
<p>Every penetration test scope is defined in CIDR notation.</p>
<p>Every network segmentation strategy — the core defence-in-depth control that limits how far an attacker can move — is built on subnet boundaries.</p>
<p>Misread a boundary and you misconfigure a firewall.</p>
<p>That's not a theory failure. That's a real-world breach waiting to happen.</p>
<p>The math stopped feeling like a chore and started feeling like a language I needed to be fluent in.</p>
<hr />
<h1>03 — I Captured the TCP Handshake and Finally Understood It</h1>
<p>I had read the three-way handshake dozens of times.</p>
<pre><code>SYN → SYN-ACK → ACK
</code></pre>
<p>Simple enough to draw from memory.</p>
<p>But I didn't really understand it until I watched it happen in Wireshark.</p>
<p>I generated traffic with <code>curl</code>, applied a filter, and watched three packets appear in sequence.</p>
<p>Each one was a conversation.</p>
<p>The client saying: <em>I want to connect.</em></p>
<p>The server saying: <em>I hear you, I'm ready.</em></p>
<p>The client saying: <em>Understood. Let's go.</em></p>
<p>What hit me wasn't the handshake itself.</p>
<p>It was what the handshake makes possible.</p>
<p>A SYN flood — one of the oldest denial-of-service attacks — works by sending thousands of SYN packets and never completing the handshake.</p>
<p>The server holds connection state for every half-open session.</p>
<p>Eventually it runs out of room and legitimate connections can't get through.</p>
<p>Seeing the handshake in real traffic made that attack technique instantly, viscerally obvious in a way that reading about it never had.</p>
<hr />
<h1>04 — Port Scanning Taught Me to Read the Network Like a List of Open Doors</h1>
<p>Before this week, Nmap felt like a tool I was supposed to use without fully understanding why.</p>
<p>I ran it against my lab:</p>
<pre><code class="language-bash">nmap -sV 192.168.1.0/24
</code></pre>
<p>What came back wasn't just a list of numbers.</p>
<p>It was a list of decisions someone had made about what to expose.</p>
<p>Port 22 open — SSH is running here.</p>
<p>Port 3389 open — RDP is accessible here.</p>
<p>Port 445 open — SMB is listening here.</p>
<p>Every open port is a service.</p>
<p>Every service has a version.</p>
<p>Every version has known vulnerabilities.</p>
<p>The scan wasn't showing me ports.</p>
<p>It was showing me the attack surface.</p>
<p>That shift in framing — from "port numbers to memorise" to "an inventory of exposure" — changed how I think about reconnaissance entirely.</p>
<hr />
<h1>05 — VLANs Created the Illusion of Separation. Misconfigured Trunking Broke It.</h1>
<p>VLANs made perfect sense on paper.</p>
<p>One physical switch. Multiple isolated networks.</p>
<p>Sales can't talk to Engineering. Engineering can't talk to the Management VLAN.</p>
<p>Clean. Logical. Secure.</p>
<p>Then I learned about VLAN hopping.</p>
<p>A misconfigured trunk port — one that doesn't properly restrict which VLANs are allowed — can let an attacker craft frames that jump between segments.</p>
<p>The physical switch is still one device.</p>
<p>The isolation only holds if the configuration is correct.</p>
<p>That was the moment network segmentation stopped feeling like a guaranteed control and started feeling like a <em>configured</em> control.</p>
<p>Configurations can be wrong.</p>
<p>Wrong configurations are how attackers move through networks that were supposed to stop them.</p>
<hr />
<h1>06 — DNS, DHCP, and NTP Felt Boring Until I Saw What Happens When They're Attacked</h1>
<p>I almost skimmed these sections.</p>
<p>DHCP assigns IP addresses automatically.</p>
<p>DNS resolves names to addresses.</p>
<p>NTP synchronises clocks.</p>
<p>All three felt like infrastructure plumbing. Background noise. Invisible until they fail.</p>
<p>Then I read about rogue DHCP servers.</p>
<p>An attacker on the same network segment can respond to DHCP discovery broadcasts faster than the legitimate server.</p>
<p>The client accepts the first offer it receives.</p>
<p>The attacker's offer points to their own default gateway and their own DNS server.</p>
<p>Every request that client makes now flows through the attacker's machine first.</p>
<p>That's a full man-in-the-middle position — gained without touching the target at all.</p>
<p>Just by answering a broadcast first.</p>
<p>DHCP, DNS, and NTP stopped feeling like boring infrastructure.</p>
<p>They started feeling like the three highest-leverage targets on a local network.</p>
<hr />
<h1>07 — IPv6 Was the Blind Spot I Wasn't Expecting</h1>
<p>Every network topic this week felt like building on something I had vaguely heard of before.</p>
<p>IPv6 was different.</p>
<p>Not because it was harder — but because of what I didn't know I didn't know.</p>
<p>Many networks run dual-stack: both IPv4 and IPv6 simultaneously.</p>
<p>Security teams configure firewall rules for IPv4.</p>
<p>They forget about IPv6.</p>
<p>An attacker who routes their traffic over IPv6 on a network that "only runs IPv4" may bypass every control that was written assuming the old addressing model.</p>
<p>IPv6 also replaced ARP with NDP — the Neighbour Discovery Protocol.</p>
<p>NDP has no built-in authentication.</p>
<p>The same spoofing attacks that work against ARP work against NDP.</p>
<p>The lesson wasn't about IPv6 specifically.</p>
<p>It was about unmonitored protocols.</p>
<p>An unmonitored protocol is an open door.</p>
<p>The lock on the front door doesn't matter if you leave the back window open.</p>
<hr />
<h1>The Cybersecurity Connection</h1>
<p>Every networking topic this week mapped directly to an attack technique.</p>
<p>OSI layers → attacks have a precise location on the model.</p>
<p>TCP handshake → SYN floods exploit the connection state it creates.</p>
<p>Port scanning → open ports are attack surface, not just configuration.</p>
<p>VLANs → VLAN hopping breaks segmentation through misconfiguration.</p>
<p>DHCP/DNS → rogue servers redirect traffic without touching the target.</p>
<p>IPv6 → unmonitored protocols bypass IPv4-only controls.</p>
<p>BGP → route hijacking can silently redirect traffic at internet scale.</p>
<p>One realisation stood out above everything else:</p>
<blockquote>
<p>Attackers don't need to break the network. They need the network to be misconfigured.</p>
</blockquote>
<p>Every switch, router, firewall, and access point operates exactly as designed.</p>
<p>Security comes down to whether those designs were implemented correctly — and whether someone is watching the traffic to notice when they weren't.</p>
<hr />
<h1>How I Studied This Week</h1>
<p>Instead of memorising protocol tables, I tried to ask four questions about everything:</p>
<table>
<thead>
<tr>
<th>Question</th>
<th>Why It Mattered</th>
</tr>
</thead>
<tbody><tr>
<td>What problem does this protocol solve?</td>
<td>Prevents blind memorisation</td>
</tr>
<tr>
<td>What happens at the packet level?</td>
<td>Builds understanding, not just recall</td>
</tr>
<tr>
<td>How could this be misconfigured?</td>
<td>Creates a security mindset</td>
</tr>
<tr>
<td>How would an attacker exploit this?</td>
<td>Connects networking to real threats</td>
</tr>
</tbody></table>
<p>I also ran every command I was reading about:</p>
<p><code>ping</code>, <code>traceroute</code>, <code>netstat</code>, <code>nmap</code>, <code>dig</code>, <code>arp -a</code>.</p>
<p>And I captured the results in Wireshark to see what each one actually looked like on the wire.</p>
<p>Reading about protocols and watching them happen are two completely different experiences.</p>
<hr />
<h1>5 Mental Models I Had to Replace</h1>
<h3>Misconception 01 — Networking is just memorising port numbers</h3>
<p>Ports are a symptom. The real skill is understanding what service is running, why it's exposed, and what an attacker can do with it.</p>
<h3>Misconception 02 — VLANs mean the networks are completely separated</h3>
<p>VLANs are a configuration. Misconfigured trunking collapses that separation entirely.</p>
<h3>Misconception 03 — If my network runs IPv4, I don't need to worry about IPv6</h3>
<p>Dual-stack is the default on modern systems. An unmonitored IPv6 path bypasses IPv4-only security controls.</p>
<h3>Misconception 04 — DHCP, DNS, and NTP are background plumbing</h3>
<p>They are the highest-leverage attack targets on a local network. Compromise any of them and you redirect everything.</p>
<h3>Misconception 05 — Subnetting is a certification topic</h3>
<p>Every firewall rule, every segmentation strategy, and every penetration test scope is written in CIDR notation. Get it wrong and the controls fail silently.</p>
<hr />
<h1>Resources That Helped Me</h1>
<table>
<thead>
<tr>
<th>Resource</th>
<th>Why It Helped</th>
</tr>
</thead>
<tbody><tr>
<td>Professor Messer — CompTIA Network+ N10-008</td>
<td>The most structured free video course I found — covers every topic in the right order with real depth</td>
</tr>
<tr>
<td>Network Chuck — YouTube</td>
<td>Makes abstract networking concepts visual and genuinely memorable</td>
</tr>
<tr>
<td>Wireshark Official Docs</td>
<td>The authoritative reference for filters and dissectors — used constantly while capturing packets</td>
</tr>
<tr>
<td>TryHackMe — Pre-Security</td>
<td>Hands-on labs that forced me to apply concepts rather than just read about them</td>
</tr>
<tr>
<td>Nmap</td>
<td>Ran real port scans against my lab and learned to read the output as attack surface</td>
</tr>
</tbody></table>
<hr />
<h1>Week 04 Complete. 🌐🔐</h1>
<p>This week looked like networking on the surface.</p>
<p>But underneath, it was really about traffic.</p>
<p>Who generates it.</p>
<p>Where it goes.</p>
<p>What happens when it's intercepted, redirected, or forged.</p>
<p>Every protocol.</p>
<p>Every port.</p>
<p>Every subnet boundary.</p>
<p>Every VLAN tag.</p>
<p>All of them taught the same lesson:</p>
<p><strong>The network doesn't know the difference between legitimate traffic and an attack. That's your job.</strong></p>
<p>Next step: Dive deeper into how attacks actually move across these networks — and how defenders detect and stop them.</p>
<hr />
<h2>Let's Connect</h2>
<p>If you're on a similar journey or have feedback, I'd love to connect!</p>
<p>🔗 LinkedIn: <a href="https://www.linkedin.com/in/durga-madhav-chandra-vemulapalli-a96143398/">LinkedIn</a></p>
<p>💻 GitHub: <a href="https://github.com/DurgaMadhavChandra/cybersecurity-journey">GitHub</a></p>
<p>#Networking #Cybersecurity #LearningInPublic #BuildInPublic #NetworkingFundamentals #Wireshark #Nmap #OSIModel #EthicalHacking #InfoSec</p>
]]></content:encoded></item><item><title><![CDATA[Linux Taught Me That Security Is Really About Boundaries — Week 03: Linux Fundamentals
]]></title><description><![CDATA[This Week in Numbers



📊
Count



🐧
7 Core Linux topics explored


💻
50+ commands practiced


⚠️
6 major mistakes documented


🔐
Countless security concepts connected


💡
1 mental model complete]]></description><link>https://durgamadhav.hashnode.dev/linux-taught-me-that-security-is-really-about-boundaries-week-03-linux-fundamentals</link><guid isPermaLink="true">https://durgamadhav.hashnode.dev/linux-taught-me-that-security-is-really-about-boundaries-week-03-linux-fundamentals</guid><category><![CDATA[Linux #Cybersecurity #LearningInPublic #BuildInPublic #LinuxFundamentals #Bash #OpenSource #EthicalHacking #Programming #InfoSec]]></category><dc:creator><![CDATA[Durga Madhav Chandra Vemulapalli]]></dc:creator><pubDate>Fri, 19 Jun 2026 19:56:27 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1db104cc268013976acd05/bd2132cb-4adc-4c1c-b997-de1aca635474.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2>This Week in Numbers</h2>
<table>
<thead>
<tr>
<th>📊</th>
<th>Count</th>
</tr>
</thead>
<tbody><tr>
<td>🐧</td>
<td>7 Core Linux topics explored</td>
</tr>
<tr>
<td>💻</td>
<td>50+ commands practiced</td>
</tr>
<tr>
<td>⚠️</td>
<td>6 major mistakes documented</td>
</tr>
<tr>
<td>🔐</td>
<td>Countless security concepts connected</td>
</tr>
<tr>
<td>💡</td>
<td>1 mental model completely changed</td>
</tr>
</tbody></table>
<hr />
<h1>Linux Is Really a System of Boundaries</h1>
<p>Before this week, Linux commands felt random.</p>
<p><code>ls</code></p>
<p><code>cd</code></p>
<p><code>grep</code></p>
<p><code>chmod</code></p>
<p><code>find</code></p>
<p><code>cron</code></p>
<p>A collection of tools I needed to memorize.</p>
<p>Then something clicked.</p>
<p>Every Linux concept I learned seemed to answer the same question:</p>
<blockquote>
<p>"Who is allowed to do what?"</p>
</blockquote>
<p>Who can read this file?</p>
<p>Who can write to this directory?</p>
<p>Who can execute this program?</p>
<p>Which process owns this resource?</p>
<p>Which user is allowed to run this command?</p>
<p>Linux stopped feeling like a collection of commands and started feeling like a carefully designed security model.</p>
<hr />
<h1>01 — The Day File Permissions Finally Became Real</h1>
<p>I had seen permission numbers before:</p>
<pre><code class="language-bash">chmod 755
chmod 644
chmod 600
</code></pre>
<p>They felt like magic numbers everyone memorized.</p>
<p>Then I generated an SSH key and tried connecting.</p>
<p>Instead of logging in, SSH refused:</p>
<pre><code class="language-text">Permissions 0644 for 'key.pem' are too open.
</code></pre>
<p>At first I thought:</p>
<p><em>"The key is correct. Why won't it work?"</em></p>
<p>Then I realized something important.</p>
<p>A private key isn't private if everyone on the system can read it.</p>
<p>Changing:</p>
<pre><code class="language-bash">chmod 644 key.pem
</code></pre>
<p>to</p>
<pre><code class="language-bash">chmod 600 key.pem
</code></pre>
<p>instantly solved the problem.</p>
<p>That was the moment permissions stopped being theory and became security.</p>
<hr />
<h1>02 — The Most Dangerous Command I Typed This Week</h1>
<p>At some point I ran:</p>
<pre><code class="language-bash">chmod 777
</code></pre>
<p>without fully understanding what I was doing.</p>
<p>It fixed the immediate error.</p>
<p>It also destroyed the security model.</p>
<p>I learned that giving everyone full access isn't solving a permission problem.</p>
<p>It's removing the protection entirely.</p>
<p>The deeper lesson wasn't about <code>chmod</code>.</p>
<p>It was about trust.</p>
<p>Linux forces you to think about trust explicitly.</p>
<p>Every file has an owner.</p>
<p>Every process has permissions.</p>
<p>Every action has consequences.</p>
<p>Cybersecurity begins with understanding those relationships.</p>
<hr />
<h1>03 — grep Changed How I Look at Data</h1>
<p>One of the biggest surprises this week wasn't a security tool.</p>
<p>It was <code>grep</code>.</p>
<p>I used to read logs manually.</p>
<p>Line by line.</p>
<p>Looking for patterns with my eyes.</p>
<p>Then I started combining commands:</p>
<pre><code class="language-bash">grep
cut
sort
uniq
</code></pre>
<p>Suddenly the terminal felt less like a command line and more like a query language.</p>
<p>A few commands could answer questions that would take minutes by hand.</p>
<p>Which IP appears most often?</p>
<p>Which requests target login pages?</p>
<p>Which entries contain specific keywords?</p>
<p>The moment I started piping commands together, Linux felt incredibly powerful.</p>
<hr />
<h1>04 — My Cron Job Taught Me a Lesson About Assumptions</h1>
<p>One of the strangest bugs this week was a cron job that worked perfectly when I ran it manually.</p>
<p>But completely failed when scheduled.</p>
<p>No output.</p>
<p>No errors.</p>
<p>Nothing.</p>
<p>After digging deeper, I discovered cron runs in a very different environment.</p>
<p>The script expected commands to exist in <code>$PATH</code>.</p>
<p>Cron didn't know where they were.</p>
<p>The fix was simple:</p>
<pre><code class="language-bash">/usr/bin/nmap
</code></pre>
<p>instead of</p>
<pre><code class="language-bash">nmap
</code></pre>
<p>But the lesson was much bigger.</p>
<p>Many bugs happen because we assume the environment will look exactly like our own.</p>
<p>Linux taught me to stop assuming and start verifying.</p>
<hr />
<h1>05 — Processes Felt Different After I Learned Signals</h1>
<p>Before this week, killing a process meant:</p>
<pre><code class="language-bash">kill -9 PID
</code></pre>
<p>Problem solved.</p>
<p>Now I understand that processes are conversations.</p>
<p>Signals are messages.</p>
<p><code>SIGTERM</code> asks a process to shut down cleanly.</p>
<p><code>SIGKILL</code> forces it to stop immediately.</p>
<p>The operating system isn't simply destroying programs.</p>
<p>It's coordinating them.</p>
<p>That small shift changed how I think about process management.</p>
<hr />
<h1>06 — Restricted Shells Changed My View of Security Controls</h1>
<p>While working through Bandit challenges, I encountered a restricted shell.</p>
<p>At first I thought something was broken.</p>
<p>Commands were missing.</p>
<p>Navigation was limited.</p>
<p>Everything felt constrained.</p>
<p>Then I realized the restriction was intentional.</p>
<p>Someone had built a boundary.</p>
<p>The challenge wasn't using Linux.</p>
<p>The challenge was understanding the boundary well enough to recognize where it was weak.</p>
<p>That felt incredibly close to real-world cybersecurity.</p>
<p>Most security isn't about breaking systems.</p>
<p>It's about understanding where restrictions exist and how they can be bypassed.</p>
<hr />
<h1>07 — SUID Was My Biggest "Aha!" Moment</h1>
<p>The concept seemed confusing initially.</p>
<p>Then I learned a simple explanation:</p>
<blockquote>
<p>A SUID program runs with the permissions of its owner, not the user executing it.</p>
</blockquote>
<p>That one sentence suddenly made privilege escalation examples make sense.</p>
<p>The interesting part wasn't the command itself.</p>
<p>The interesting part was the trust relationship behind it.</p>
<p>Who owns the program?</p>
<p>What privileges does it inherit?</p>
<p>Can those privileges be abused?</p>
<p>Understanding SUID felt like seeing the first building block of Linux privilege escalation.</p>
<hr />
<h1>The Cybersecurity Connection</h1>
<p>Every Linux topic this week connected directly to security.</p>
<ul>
<li><p>File permissions determine access control.</p>
</li>
<li><p>SSH keys protect authentication.</p>
</li>
<li><p>Processes reveal system activity.</p>
</li>
<li><p>Cron jobs automate tasks and can become attack vectors.</p>
</li>
<li><p>SUID binaries can enable privilege escalation.</p>
</li>
<li><p>Logs provide evidence during investigations.</p>
</li>
<li><p>Restricted shells enforce security boundaries.</p>
</li>
</ul>
<p>One realization stood out above everything else:</p>
<blockquote>
<p>Attackers rarely need to break Linux. They simply look for boundaries that were configured incorrectly.</p>
</blockquote>
<p>The operating system already provides the rules.</p>
<p>Security often comes down to whether those rules were implemented properly.</p>
<hr />
<h1>How I Studied This Week</h1>
<p>Instead of memorizing commands, I tried to answer four questions:</p>
<table>
<thead>
<tr>
<th>Question</th>
<th>Why It Mattered</th>
</tr>
</thead>
<tbody><tr>
<td>What problem does this command solve?</td>
<td>Prevents blind memorization</td>
</tr>
<tr>
<td>What happens behind the scenes?</td>
<td>Builds deeper understanding</td>
</tr>
<tr>
<td>How could this be misconfigured?</td>
<td>Creates a security mindset</td>
</tr>
<tr>
<td>How might an attacker abuse this?</td>
<td>Connects Linux to cybersecurity</td>
</tr>
</tbody></table>
<p>I also spent time breaking things intentionally, reading error messages, debugging permission issues, experimenting with cron jobs, and documenting every mistake.</p>
<p>The mistakes taught me more than the successful commands.</p>
<hr />
<h1>5 Mental Models I Had to Replace</h1>
<h3>Misconception 01 — Linux is just commands</h3>
<p>Linux is really a system of permissions, ownership, and boundaries.</p>
<h3>Misconception 02 — If something doesn't work, use chmod 777</h3>
<p>Most permission problems come from misunderstanding ownership, not insufficient permissions.</p>
<h3>Misconception 03 — Base64 is encryption</h3>
<p>Base64 only changes representation. Anyone can decode it instantly.</p>
<h3>Misconception 04 — Cron behaves exactly like my terminal</h3>
<p>Scheduled tasks run in a different environment and often require explicit paths.</p>
<h3>Misconception 05 — Security starts with hacking tools</h3>
<p>Security starts with understanding how the operating system already controls access.</p>
<hr />
<h1>Resources That Helped Me</h1>
<table>
<thead>
<tr>
<th>Resource</th>
<th>Why It Helped</th>
</tr>
</thead>
<tbody><tr>
<td>Abhishek Veeramalla Linux &amp; DevOps Playlist</td>
<td>Practical Linux concepts with real-world system administration and security context</td>
</tr>
<tr>
<td>Linux Manual Pages</td>
<td>Learning directly from the source</td>
</tr>
<tr>
<td>OverTheWire Bandit</td>
<td>Practical Linux and security exercises</td>
</tr>
<tr>
<td>GTFOBins</td>
<td>Understanding how binaries can be abused</td>
</tr>
<tr>
<td>GitHub Public Notes</td>
<td>Documenting everything I learned</td>
</tr>
</tbody></table>
<hr />
<h1>Week 03 Complete. 🐧🔐</h1>
<p>This week looked like Linux on the surface.</p>
<p>But underneath, it was really about trust, ownership, permissions, and boundaries.</p>
<p>The commands were useful.</p>
<p>The mindset was more valuable.</p>
<p>Every permission bit.</p>
<p>Every process.</p>
<p>Every SUID binary.</p>
<p>Every restricted shell.</p>
<p>All of them taught the same lesson:</p>
<p><strong>Security begins long before exploitation. It begins with understanding the system you're trying to protect.</strong></p>
<p>Next step: Continue building deeper Linux knowledge and start exploring how attackers and defenders interact with these same foundations every day.</p>
<hr />
<h2>Let's Connect</h2>
<p>If you're on a similar journey or have feedback, I'd love to connect!</p>
<p>🔗 LinkedIn: <a href="https://www.linkedin.com/in/durga-madhav-chandra-vemulapalli-a96143398/">LinkedIn</a></p>
<p>💻 GitHub: <a href="https://github.com/DurgaMadhavChandra/cybersecurity-journey">GitHub</a></p>
<p>#Linux #Cybersecurity #LearningInPublic #BuildInPublic #LinuxFundamentals #Bash #OpenSource #EthicalHacking #Programming #InfoSec</p>
]]></content:encoded></item><item><title><![CDATA[Before You Secure, You Must Understand the OS — Week 02: Operating Systems]]></title><description><![CDATA[This Week in Numbers








🖥️ 6
Core topics covered


🧵 7+
LeetCode concurrency problems solved


🔄 5
Mental models replaced


💡 1
Perspective permanently changed



The Operating System Is the ]]></description><link>https://durgamadhav.hashnode.dev/before-you-secure-you-must-understand-the-os-week-02-operating-systems</link><guid isPermaLink="true">https://durgamadhav.hashnode.dev/before-you-secure-you-must-understand-the-os-week-02-operating-systems</guid><category><![CDATA[OperatingSystems Cybersecurity LearningInPublic BuildInPublic Concurrency MemoryManagement Linux Programming SoftwareEngineering]]></category><dc:creator><![CDATA[Durga Madhav Chandra Vemulapalli]]></dc:creator><pubDate>Fri, 12 Jun 2026 21:04:11 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1db104cc268013976acd05/0f827df7-47a4-454f-8423-3da6e9474988.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2>This Week in Numbers</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>🖥️ <strong>6</strong></td>
<td>Core topics covered</td>
</tr>
<tr>
<td>🧵 <strong>7+</strong></td>
<td>LeetCode concurrency problems solved</td>
</tr>
<tr>
<td>🔄 <strong>5</strong></td>
<td>Mental models replaced</td>
</tr>
<tr>
<td>💡 <strong>1</strong></td>
<td>Perspective permanently changed</td>
</tr>
</tbody></table>
<hr />
<h2>The Operating System Is the Manager of Everything</h2>
<p>I used to imagine the OS as software that sits between me and the hardware. A much better way to think about it:</p>
<blockquote>
<p><strong>The Operating System is the manager responsible for sharing the computer's limited resources between thousands of competing tasks simultaneously.</strong></p>
</blockquote>
<p>It decides:</p>
<ul>
<li><p>Which process gets CPU time</p>
</li>
<li><p>Which program gets memory</p>
</li>
<li><p>Which application can access a file</p>
</li>
<li><p>Which device receives input and output</p>
</li>
<li><p>Which requests are allowed to interact with hardware</p>
</li>
</ul>
<p>The deeper I went, the more I realized every topic in OS is just another answer to one question:</p>
<blockquote>
<p><em>"How do we efficiently share limited resources?"</em></p>
</blockquote>
<hr />
<h2>02 — The Day My Mental Model of Programs Broke</h2>
<p>One of my biggest misconceptions: programs simply run until they finish.</p>
<p>Open Chrome → CPU runs Chrome → Chrome finishes → next.</p>
<p>That was my entire model. Then I learned about process states, CPU scheduling, and context switching.</p>
<pre><code class="language-plaintext">NEW → READY → RUNNING → WAITING → READY → TERMINATED
</code></pre>
<p>At first it looked like another diagram to memorize. Then I imagined opening Chrome, VS Code, and Spotify at the same time.</p>
<ul>
<li><p>Who gets the CPU first?</p>
</li>
<li><p>What happens when Spotify waits for network data?</p>
</li>
<li><p>Why doesn't the whole system freeze?</p>
</li>
</ul>
<p>The OS isn't just running programs — it's constantly moving them between states and deciding who gets CPU time next. It stopped feeling magical and started feeling like an incredibly efficient <strong>traffic controller</strong>.</p>
<hr />
<h2>03 — CPU Scheduling Changed How I Think About Performance</h2>
<p>At first, all the algorithms blended together. What finally helped was changing the question I was asking.</p>
<p>Instead of: <em>"How does this algorithm work?"</em></p>
<p>I started asking: <strong>"What problem was this algorithm invented to solve?"</strong></p>
<table>
<thead>
<tr>
<th>Algorithm</th>
<th>The problem it solves</th>
</tr>
</thead>
<tbody><tr>
<td>FCFS</td>
<td>Keeps scheduling as simple as possible</td>
</tr>
<tr>
<td>SJF</td>
<td>Reduces average waiting time</td>
</tr>
<tr>
<td>Priority Scheduling</td>
<td>Ensures important tasks run first</td>
</tr>
<tr>
<td>Round Robin</td>
<td>Makes the system feel fair to all processes</td>
</tr>
<tr>
<td>Multilevel Queue</td>
<td>Separates different categories of work</td>
</tr>
</tbody></table>
<h3>The Convoy Effect — my favorite OS concept this week</h3>
<p>A single long process forces many short processes to wait behind it.</p>
<p>Imagine a supermarket billing counter — one customer with 200 items, ten customers behind with one item each. FCFS is technically fair. Practically, everyone suffers.</p>
<p>{% callout type="info" %} 🔐 <strong>Cybersecurity Connection:</strong> A process monopolizing CPU resources and starving others looks remarkably similar to a Denial of Service attack playing out in slow motion. {% /callout %}</p>
<hr />
<h2>04 — Concurrency Was Much Harder Than I Expected</h2>
<p>When I first heard "concurrency", I thought it simply meant multiple things happen at the same time. That sounded easy. Then I reached the <strong>Critical Section Problem</strong>.</p>
<h3>The Race Condition that changed everything</h3>
<p>I saw an example where two threads both increment the same variable and the final answer is wrong. I asked myself: <em>"How can adding one and adding one not become two?"</em></p>
<pre><code class="language-plaintext">// Thread A and Thread B both increment a shared counter
// Expected: counter = 2. Actual: counter = 1. Here's why:

Thread A reads counter (value: 0)
Thread B reads counter (value: 0)   ← OS switches here
Thread A writes counter = 1
Thread B writes counter = 1         ← overwrites A's work!

// Result: counter = 1, not 2. This is a race condition.
</code></pre>
<p>Once that clicked, mutexes, semaphores, and condition variables stopped looking like complicated theory. They became mechanisms for telling the OS:</p>
<blockquote>
<p><em>"Only one thread should be allowed to touch this shared resource at a time."</em></p>
</blockquote>
<h3>Classical Synchronization Problems — not just textbook questions</h3>
<table>
<thead>
<tr>
<th>Problem</th>
<th>Real-world equivalent</th>
</tr>
</thead>
<tbody><tr>
<td>Producer-Consumer</td>
<td>YouTube livestream: server produces frames, player consumes them, buffer sits between</td>
</tr>
<tr>
<td>Reader-Writer</td>
<td>Database: many users can read simultaneously, but writes need exclusive access</td>
</tr>
<tr>
<td>Dining Philosophers</td>
<td>Preventing deadlocks when multiple threads compete for shared resources</td>
</tr>
</tbody></table>
<p>I implemented solutions for all of these and solved LeetCode Concurrency challenges:</p>
<ul>
<li><p>Print in Order</p>
</li>
<li><p>Print FooBar Alternately</p>
</li>
<li><p>Print Zero Even Odd</p>
</li>
<li><p>Building H₂O</p>
</li>
<li><p>Fizz Buzz Multithreaded</p>
</li>
<li><p>Dining Philosophers</p>
</li>
</ul>
<p>Writing actual synchronization code taught me far more than reading ever could.</p>
<hr />
<h2>05 — Deadlocks Finally Made Sense</h2>
<p>I could memorize the four necessary conditions:</p>
<ol>
<li><p><strong>Mutual Exclusion</strong></p>
</li>
<li><p><strong>Hold and Wait</strong></p>
</li>
<li><p><strong>No Preemption</strong></p>
</li>
<li><p><strong>Circular Wait</strong></p>
</li>
</ol>
<p>But I didn't understand why they mattered until this analogy:</p>
<blockquote>
<p>A group of friends sharing a limited number of bike locks. Each person grabs one lock and waits for a lock someone else already holds. Nobody releases what they have. Nobody moves forward. Everyone waits forever — <strong>that's deadlock.</strong></p>
</blockquote>
<p>The goal of deadlock prevention isn't a clever algorithm — it's deliberately breaking at least one of the four conditions required for deadlock to exist.</p>
<hr />
<h2>06 — Virtual Memory Was My Biggest "Aha!" Moment</h2>
<p>I kept wondering: if my laptop only has limited RAM, how can a program larger than that still run?</p>
<p>The answer came from a simple analogy:</p>
<blockquote>
<p>My study desk is small, so I don't keep every book on it — only what I need right now. The rest sit on a nearby shelf. That's Virtual Memory — <strong>RAM is the desk, secondary storage is the shelf.</strong></p>
</blockquote>
<p>Pages move between RAM and disk depending on what the program currently needs.</p>
<h3>Page Replacement Algorithms</h3>
<table>
<thead>
<tr>
<th>Algorithm</th>
<th>How I remember it</th>
</tr>
</thead>
<tbody><tr>
<td>FIFO</td>
<td>"Who came first?"</td>
</tr>
<tr>
<td>LRU</td>
<td>"Who have I ignored the longest?"</td>
</tr>
<tr>
<td>LFU</td>
<td>"Who have I barely used?"</td>
</tr>
<tr>
<td>Optimal</td>
<td>"If I could see the future, who wouldn't I need again?"</td>
</tr>
</tbody></table>
<p>Then I discovered <strong>Thrashing</strong> — where excessive page swapping causes the system to spend more time moving memory around than actually executing useful work. Another reminder that OS design is always about balancing trade-offs.</p>
<hr />
<h2>07 — Why System Calls Matter More Than I Thought</h2>
<p>At first I didn't understand why applications need system calls at all. If my program wants to create a file, why can't it simply write to the disk directly?</p>
<p>Imagine the consequences of unrestricted hardware access:</p>
<ul>
<li><p>Multiple applications could overwrite the same resource simultaneously</p>
</li>
<li><p>Normal programs could accidentally modify kernel memory</p>
</li>
<li><p>Malware could directly manipulate hardware without any restriction</p>
</li>
</ul>
<p>{% callout type="info" %} 🔐 <strong>Cybersecurity Connection:</strong> System calls are one of the first security boundaries between user applications and the OS kernel. Many EDR and endpoint security tools monitor system calls for exactly this reason. Security begins with good boundaries. {% /callout %}</p>
<hr />
<h2>The Cybersecurity Connection</h2>
<p>One of the reasons I wanted to study OS early is that almost every security topic depends on it. This week connected many ideas together:</p>
<ul>
<li><p><strong>Process isolation</strong> helps contain malicious software</p>
</li>
<li><p><strong>Memory management</strong> is the foundation for understanding buffer overflow attacks</p>
</li>
<li><p><strong>Race conditions</strong> can become real-world exploitable vulnerabilities</p>
</li>
<li><p><strong>Deadlocks</strong> and synchronization issues affect system reliability at scale</p>
</li>
<li><p><strong>Malware</strong> often manipulates processes, threads, and permissions — not breaking the OS, but using it</p>
</li>
</ul>
<p>The realization that changed everything:</p>
<blockquote>
<p><em>"Attackers don't always break the operating system. They often use the operating system exactly as it was designed — just not how it was intended to be used."</em></p>
</blockquote>
<hr />
<h2>How I Studied This Week</h2>
<p>Instead of memorizing definitions, for every topic I forced myself to answer four questions:</p>
<table>
<thead>
<tr>
<th>Question</th>
<th>Why it mattered</th>
</tr>
</thead>
<tbody><tr>
<td>Why does this concept exist?</td>
<td>Grounded understanding, not surface recall</td>
</tr>
<tr>
<td>What problem was it trying to solve?</td>
<td>Made algorithms feel inevitable, not arbitrary</td>
</tr>
<tr>
<td>Where would I see this in the real world?</td>
<td>Killed the "when will I use this?" feeling</td>
</tr>
<tr>
<td>How could this matter in cybersecurity?</td>
<td>Kept everything connected to the bigger goal</td>
</tr>
</tbody></table>
<p>I also drew process state diagrams, simulated scheduling algorithms by hand, wrote small C programs, and implemented multithreading problems in C++. Building small examples taught me far more than passively watching videos ever could.</p>
<hr />
<h2>5 Mental Models I Had to Replace</h2>
<p><strong>Misconception 01 — Programs run one after another</strong> The OS constantly switches between hundreds of processes in milliseconds. Nothing "simply runs until it finishes" without interruption.</p>
<p><strong>Misconception 02 — Concurrency means everything happens together</strong> Concurrency means multiple things are in progress — not necessarily simultaneously. The interleaving creates subtle bugs like race conditions that are hard to reproduce.</p>
<p><strong>Misconception 03 — A program must fully load into RAM before running</strong> Virtual memory and demand paging mean only the needed pages load into RAM. Programs can be larger than physical memory and still execute fine.</p>
<p><strong>Misconception 04 — Scheduling algorithms are just interview formulas</strong> Each algorithm was invented to solve a specific real problem. Understanding that makes them memorable and meaningful — not arbitrary patterns to memorize.</p>
<p><strong>Misconception 05 — Attackers "break" the operating system</strong> Most attacks use the OS exactly as designed — manipulating process permissions, exploiting race conditions, or abusing memory layout. Understanding the design is what reveals the vulnerabilities.</p>
<hr />
<h2>Resources That Helped Me</h2>
<table>
<thead>
<tr>
<th>Resource</th>
<th>Why It Helped</th>
</tr>
</thead>
<tbody><tr>
<td><strong>OS Full Course — Love Babbar (CodeHelp)</strong></td>
<td>Complete roadmap from OS fundamentals to advanced concurrency and memory management</td>
</tr>
<tr>
<td><strong>OSTEP</strong></td>
<td>Operating Systems: Three Easy Pieces — the gold standard free OS textbook</td>
</tr>
<tr>
<td><strong>GeeksforGeeks OS</strong></td>
<td>CPU Scheduling, Memory Management, and Synchronization articles for revision</td>
</tr>
<tr>
<td><strong>GitHub (Public Notes)</strong></td>
<td>Complete notes, experiments, diagrams, code, and weekly reflections — building in public</td>
</tr>
</tbody></table>
<hr />
<h2>Week 02 Complete. ⚙️🔐</h2>
<p>Cybersecurity doesn't begin with hacking tools or exploit development.</p>
<p>It begins with understanding the OS that every application, process, and attack ultimately depends on.</p>
<p><strong>Next step:</strong> Build on these foundations and continue exploring the layers that make modern computer systems work.</p>
<hr />
<p><strong>Let's Connect</strong></p>
<p><em>If you're on a similar journey or have feedback, I'd love to connect!</em></p>
<p>🔗 <strong>LinkedIn:</strong> [Durga Madhav Chandra](<a href="https://www.linkedin.com/in/durga-madhav-chandra-vemulapalli-a96143398/">https://www.linkedin.com/in/durga-madhav-chandra-vemulapalli-a96143398/</a>) 💻 <strong>GitHub:</strong> [DurgaMadhavChandra](<a href="https://github.com/DurgaMadhavChandra/cybersecurity-journey">https://github.com/DurgaMadhavChandra/cybersecurity-journey</a>)</p>
<hr />
<p><em>#OperatingSystems #Cybersecurity #LearningInPublic #BuildInPublic #Concurrency #MemoryManagement #Linux #Programming #SoftwareEngineering</em></p>
]]></content:encoded></item><item><title><![CDATA[Before You Hack, You Must Think — Week 01: Computing Fundamentals]]></title><description><![CDATA[The Beginning
Most people starting in cybersecurity want to jump straight to Kali Linux, run Nmap, and feel like Mr. Robot within the first week. I almost did the same. Then I found CS50 and something]]></description><link>https://durgamadhav.hashnode.dev/before-you-hack-you-must-think-week-01-computing-fundamentals</link><guid isPermaLink="true">https://durgamadhav.hashnode.dev/before-you-hack-you-must-think-week-01-computing-fundamentals</guid><category><![CDATA[Cybersecurity #CS50 #C Programming #Algorithms #Beginners]]></category><dc:creator><![CDATA[Durga Madhav Chandra Vemulapalli]]></dc:creator><pubDate>Fri, 05 Jun 2026 07:34:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a1db104cc268013976acd05/92b0b3ce-68ec-4d8f-835d-00ce666f51cc.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<hr />
<h2>The Beginning</h2>
<p>Most people starting in cybersecurity want to jump straight to Kali Linux, run Nmap, and feel like Mr. Robot within the first week. I almost did the same. Then I found CS50 and something stopped me in my tracks.</p>
<p>David Malan didn't open a code editor for the first hour of Week 0. He talked about <em>thinking</em>. About decomposing problems. About patterns and abstraction. I was frustrated — when do we actually code?</p>
<blockquote>
<p>"Programming is not about memorizing syntax. It is about learning how to think and solve problems."</p>
</blockquote>
<p>That frustration turned into the most important mindset shift of my journey. This week wasn't just about learning C or algorithms — it was about rewiring how I approach every problem.</p>
<p><strong>This week in numbers:</strong></p>
<ul>
<li><p>4 topics covered</p>
</li>
<li><p>5 real bugs faced and fixed</p>
</li>
<li><p>182 lines of C written</p>
</li>
<li><p>1 mindset completely shifted</p>
</li>
</ul>
<hr />
<h2>01 — Computational Thinking</h2>
<p><em>The OS your brain runs before writing any code</em></p>
<p>Computational thinking is a structured problem-solving approach built on four pillars. Every program ever written — from a login form to a threat detection system — starts here.</p>
<p>Every computer program follows: <strong>Input → Process → Output</strong></p>
<table>
<thead>
<tr>
<th>Pillar</th>
<th>What It Means</th>
<th>Security Example</th>
</tr>
</thead>
<tbody><tr>
<td>Decomposition</td>
<td>Break big problems into smaller parts</td>
<td>Recon → Scan → Exploit → Persist</td>
</tr>
<tr>
<td>Pattern Recognition</td>
<td>Find repeating structures in data</td>
<td>Spotting anomalous login patterns</td>
</tr>
<tr>
<td>Abstraction</td>
<td>Focus only on what matters</td>
<td>Log parsing strips irrelevant fields</td>
</tr>
<tr>
<td>Algorithm Design</td>
<td>Step-by-step solution design</td>
<td>Incident response runbooks</td>
</tr>
</tbody></table>
<p>The moment this clicked for me was when I applied decomposition to a cyberattack. A penetration test isn't chaos — it's a structured sequence of steps. That structure IS computational thinking.</p>
<p><strong>🔐 Cybersecurity Connection</strong></p>
<p>Analyzing attacks step by step (Recon → Scan → Exploit) is decomposition in practice. Detecting patterns in suspicious logins is pattern recognition. Building port scanners applies algorithm design. This isn't just theory — it's the mental framework of every security engineer.</p>
<p><strong>My observation:</strong> Most beginners treat cybersecurity as a toolkit problem. They ask "which tools should I know?" instead of "how should I think?" Tools change. Thinking doesn't.</p>
<hr />
<h2>02 — Algorithms</h2>
<p><em>Why "fast enough" is never fast enough at scale</em></p>
<p>An algorithm is a deterministic, step-by-step set of instructions to solve a problem. But not all solutions are equal — the difference between O(n) and O(log n) isn't academic. It's the difference between a SIEM that works and one that crashes under real traffic.</p>
<p><strong>Big O — Slowest to Fastest:</strong></p>
<pre><code class="language-plaintext">O(n²)      → Bubble Sort, Selection Sort
O(n log n) → Merge Sort
O(n)       → Linear Search
O(log n)   → Binary Search
O(1)       → Hash Table lookup
</code></pre>
<p><strong>The number that changed my perspective:</strong> Searching 1,000 elements — Linear Search takes 1,000 checks. Binary Search takes ~10. At a million log entries, that's the difference between real-time detection and a system that can't keep up with threats.</p>
<table>
<thead>
<tr>
<th>Sort</th>
<th>Best Case</th>
<th>Worst Case</th>
<th>Verdict</th>
</tr>
</thead>
<tbody><tr>
<td>Bubble Sort</td>
<td>Ω(n)</td>
<td>O(n²)</td>
<td>Too slow at scale</td>
</tr>
<tr>
<td>Selection Sort</td>
<td>Ω(n²)</td>
<td>O(n²)</td>
<td>Predictably bad</td>
</tr>
<tr>
<td>Merge Sort</td>
<td>Ω(n log n)</td>
<td>O(n log n)</td>
<td>Production grade</td>
</tr>
</tbody></table>
<p><strong>🔐 Cybersecurity Connection</strong></p>
<p>Cybersecurity tools search through millions of log entries every second. A SIEM using Linear Search on 1 million logs would be painfully slow. Hash Tables and Binary Search are what make threat detection operate at machine speed. Algorithm choice IS security architecture.</p>
<hr />
<h2>03 — Data Structures</h2>
<p><em>The containers that determine how fast your code thinks</em></p>
<p>If algorithms are strategies, data structures are the storage systems those strategies operate on. Choosing the wrong one doesn't just slow your program — in a real-world security context, it can mean missing an attack entirely.</p>
<table>
<thead>
<tr>
<th>Data Structure</th>
<th>Principle</th>
<th>Cybersecurity Use</th>
</tr>
</thead>
<tbody><tr>
<td>Queue</td>
<td>FIFO</td>
<td>SOC alert triage — first alert in, first investigated</td>
</tr>
<tr>
<td>Stack</td>
<td>LIFO</td>
<td>Call stack analysis in malware reverse engineering</td>
</tr>
<tr>
<td>Hash Table</td>
<td>O(1) avg lookup</td>
<td>Password databases and malware signature matching</td>
</tr>
<tr>
<td>Trie</td>
<td>O(1) search</td>
<td>DNS lookup and threat intelligence platforms</td>
</tr>
<tr>
<td>Tree</td>
<td>Hierarchical</td>
<td>File system analysis and attack path mapping</td>
</tr>
<tr>
<td>Linked List</td>
<td>Dynamic size</td>
<td>Dynamic packet queues and log chains</td>
</tr>
</tbody></table>
<p><strong>Complexity at a glance:</strong></p>
<table>
<thead>
<tr>
<th>Data Structure</th>
<th>Search</th>
<th>Insert</th>
</tr>
</thead>
<tbody><tr>
<td>Array</td>
<td>O(1)</td>
<td>O(n)</td>
</tr>
<tr>
<td>Linked List</td>
<td>O(n)</td>
<td>O(1)</td>
</tr>
<tr>
<td>Binary Search Tree</td>
<td>O(log n)</td>
<td>O(log n)</td>
</tr>
<tr>
<td>Hash Table</td>
<td>O(1) avg</td>
<td>O(1) avg</td>
</tr>
</tbody></table>
<p>Hash Tables felt like magic until I understood collisions. A poorly designed hash function with predictable collisions is a security vulnerability, not just a performance problem.</p>
<p><strong>My observation:</strong> I kept asking "why not just use arrays for everything?" The answer became clear when I hit the resizing problem. Security systems deal with unpredictable data volumes — a DDoS can spike log entries 1000x in seconds. Rigid structures break. Dynamic ones adapt.</p>
<hr />
<h2>04 — C Language</h2>
<p><em>Where most vulnerabilities in history were born</em></p>
<p>C was intimidating. No auto-complete, no safety net, no garbage collector. My first program had four compilation errors before it printed "hello, world." But there's a reason I chose to start here.</p>
<p>Most real-world vulnerabilities — buffer overflows, format string attacks, use-after-free bugs — are C problems. Learning C isn't just learning to program. It's learning where attacks are born.</p>
<p><strong>Binary Search — my Week 01 final version:</strong></p>
<pre><code class="language-c">// This took 3 attempts and a paper trace to get right
// The off-by-one errors are where buffer overflows come from

int binary_search(int arr[], int size, int target) {
    int left = 0;
    int right = size - 1;  // Bug 1 was: right = size

    while (left &lt;= right) {
        int mid = (left + right) / 2;
        if (arr[mid] == target) return mid;
        else if (arr[mid] &lt; target) left = mid + 1;  // Bug 2: was mid
        else right = mid - 1;                        // Bug 3: was mid
    }
    return -1;
}
</code></pre>
<p><strong>Stack with overflow protection:</strong></p>
<pre><code class="language-c">// My original push() failed silently on overflow.
// Silent failures = undetected breaches in production.

#define MAX 5
int stack[MAX];
int top = -1;

void push(int value) {
    if (top == MAX - 1) {
        printf("Stack Overflow — cannot push %d\n", value);
        return;
    }
    stack[++top] = value;
}
</code></pre>
<blockquote>
<p>⚠️ The frustration of learning C is exactly what attackers exploit when developers rush. Off-by-one errors aren't just bugs — they are the most common source of buffer overflow vulnerabilities in history.</p>
</blockquote>
<hr />
<h2>5 Times I Got Completely Stuck</h2>
<p>I'm documenting every mistake because struggling is how understanding actually forms.</p>
<hr />
<h3>Bug 1 — I Thought Programming Was Just About Writing Code</h3>
<p>I opened VS Code immediately on Day 1. CS50 Week 0 stopped me cold. David Malan spent an hour on <em>thinking</em>, not coding. I was frustrated.</p>
<p>Then came the phone book example — ripping it in half to prove Binary Search. I paused the video. Applied decomposition to a penetration test on paper. Suddenly the theory had a body.</p>
<p><strong>Fix:</strong> Spent an entire session on computational thinking with zero code. Just pen and paper.</p>
<p><strong>Insight:</strong> Skipping computational thinking means writing programs that solve the wrong problems. Security professionals think like attackers before they open a terminal.</p>
<hr />
<h3>Bug 2 — Binary Search: 3 Bugs Before It Worked</h3>
<p>My broken code:</p>
<pre><code class="language-c">int right = size;        // Bug — should be size - 1
left = mid;              // Bug — causes infinite loop
right = mid;             // Bug — causes infinite loop
</code></pre>
<p>Traced through manually on paper with <code>[2, 4, 6, 8, 10]</code>, target = 6. Spotted every issue.</p>
<p><strong>Fix:</strong> <code>right = size - 1</code> · <code>left = mid + 1</code> · <code>right = mid - 1</code></p>
<p><strong>Insight:</strong> Off-by-one errors are how buffer overflows happen. Writing one byte past an array boundary is literally how attackers take control of systems.</p>
<hr />
<h3>Bug 3 — Stack Overflow: Silent Failure Was the Real Bug</h3>
<p>My <code>push()</code> silently did nothing when the stack was full. No error, no warning. Added debug <code>printf</code> and saw the same <code>top</code> value repeating endlessly.</p>
<p><strong>Fix:</strong> Check overflow condition first, print an error, then return. Never fail silently.</p>
<p><strong>Insight:</strong> Silent failures are how security breaches go undetected for months. Error handling isn't defensive programming — it's incident response infrastructure.</p>
<hr />
<h3>Bug 4 — Queue vs Stack: FIFO and LIFO Kept Switching in My Head</h3>
<p>Stopped trying to memorize the terms. Mapped them to real things:</p>
<ul>
<li><p><strong>Queue</strong> = SOC alert triage. First alert in, first investigated.</p>
</li>
<li><p><strong>Stack</strong> = Browser back button. Last visited, first to return.</p>
</li>
</ul>
<p><strong>Insight:</strong> In a real SOC, if alerts were processed as a stack, older critical incidents would be permanently buried. Data structure choice has operational consequences.</p>
<hr />
<h3>Bug 5 — C Felt Like Driving Without Power Steering</h3>
<p>Four errors before "hello, world." Missing <code>#include &lt;cs50.h&gt;</code>. Forgot semicolons. Used <code>string</code> without knowing it's a CS50 typedef for <code>char *</code>.</p>
<p><strong>Three rules I now follow in C:</strong></p>
<ol>
<li><p>Always write includes first</p>
</li>
<li><p>End every statement with a semicolon</p>
</li>
<li><p>Check the CS50 manual before using any function</p>
</li>
</ol>
<p><strong>Insight:</strong> Every developer who rushes in C is writing tomorrow's CVE. Slow, careful C code is the foundation of secure systems.</p>
<hr />
<h2>Weekly Reflection</h2>
<p>Looking back, my biggest struggle wasn't any specific error. It was slowing down enough to think before coding. Every bug had the same root cause — I assumed I understood something before I actually did.</p>
<p>The fix was always the same: go back to basics, trace through manually, visualize it. That pattern — assume, fail, trace, fix — is exactly how penetration testers work.</p>
<p>I didn't just learn computing fundamentals this week. <strong>I learned how to debug my own thinking.</strong> That's the skill that scales.</p>
<p>Week 01 is committed to my GitHub. Every note, every bug, every line of C — building in public.</p>
<p><strong>Up next → Week 02: Operating Systems and Linux Fundamentals</strong></p>
<hr />
<h2>Resources I Used</h2>
<table>
<thead>
<tr>
<th>Resource</th>
<th>Why It Helped</th>
</tr>
</thead>
<tbody><tr>
<td><a href="https://cs50.harvard.edu/x">CS50x</a></td>
<td>The course that started everything. Week 0 alone rewired how I think.</td>
</tr>
<tr>
<td><a href="https://visualgo.net">VisuAlgo</a></td>
<td>Watching Binary Search animate live made it click instantly.</td>
</tr>
<tr>
<td><a href="https://bigocheatsheet.com">Big O Cheat Sheet</a></td>
<td>My daily reference. Every algorithm complexity in one place.</td>
</tr>
<tr>
<td><a href="https://manual.cs50.io">CS50 Manual Pages</a></td>
<td>Go-to reference for every C function.</td>
</tr>
</tbody></table>
<hr />
<h2>Let's Connect</h2>
<p>If you're on a similar journey or have feedback, I'd love to connect!</p>
<ul>
<li><p>🔗 LinkedIn: <a href="https://www.linkedin.com/in/durga-madhav-chandra-vemulapalli-a96143398/">Durga Madhav Chandra</a></p>
</li>
<li><p>💻 GitHub: <a href="https://github.com/DurgaMadhavChandra/cybersecurity-journey">DurgaMadhavChandra</a></p>
</li>
</ul>
<hr />
<p>#Cybersecurity #CS50 #Programming #CLang #Algorithms #DataStructures #ComputerScience #LearnToCode #CyberSecurityAwareness #EthicalHacking #100DaysOfCode #OpenSource #TechLearning #Beginners #ComputationalThinking #SoftwareDevelopment #SecurityEngineer #BuildingInPublic #CodingJourney #Linux</p>
]]></content:encoded></item></channel></rss>