<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sanketh Subhas</title>
    <description>The latest articles on DEV Community by Sanketh Subhas (@sanketh_subhas_24).</description>
    <link>https://dev.to/sanketh_subhas_24</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3804970%2F0b5d0310-ab1c-4467-8dd8-d70023914f1c.png</url>
      <title>DEV Community: Sanketh Subhas</title>
      <link>https://dev.to/sanketh_subhas_24</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sanketh_subhas_24"/>
    <language>en</language>
    <item>
      <title>I Built a Honeypot That Profiles Attackers and Maps Their Behavior to MITRE ATT&amp;CK</title>
      <dc:creator>Sanketh Subhas</dc:creator>
      <pubDate>Wed, 11 Mar 2026 02:46:59 +0000</pubDate>
      <link>https://dev.to/sanketh_subhas_24/i-built-a-honeypot-that-profiles-attackers-and-maps-their-behavior-to-mitre-attck-1n89</link>
      <guid>https://dev.to/sanketh_subhas_24/i-built-a-honeypot-that-profiles-attackers-and-maps-their-behavior-to-mitre-attck-1n89</guid>
      <description>&lt;p&gt;Most security tools are defensive. They sit at the perimeter, wait for something bad to happen, and try to block it. A honeypot flips that logic entirely. Instead of blocking attackers, you invite them in, watch everything they do, and walk away with intelligence.&lt;br&gt;
I wanted to understand what real attacker behavior looks like before it reaches production systems, so I built a Python-based honeypot that simulates SSH, HTTP, and FTP services, captures everything that touches those services, and generates a structured attacker intelligence report with every event mapped to MITRE ATT&amp;amp;CK.&lt;br&gt;
Here is how I built it and what I learned.&lt;/p&gt;

&lt;p&gt;The Problem with Passive Defense&lt;br&gt;
Security teams spend most of their time defending known attack surfaces. Firewalls, IDS rules, SIEM alerts. The problem is that all of those tools respond to attacks. They do not teach you how attackers think, what credentials they try first, which vulnerabilities they probe before going deeper, or how a brute force attempt transitions into a web shell attempt.&lt;br&gt;
Honeypots answer those questions. They are decoys with no legitimate users, so every connection is suspicious by definition. There is no noise to filter. Everything logged is an attack.&lt;br&gt;
The gap I saw in most beginner honeypot setups is that they stop at logging. You get an IP address and a timestamp. I wanted something that went further: credential capture, behavioral pattern detection, attack type classification, and automatic MITRE ATT&amp;amp;CK mapping so the output was actually useful to a SOC analyst.&lt;/p&gt;

&lt;p&gt;What I Built&lt;br&gt;
The system runs three fake services simultaneously using Python's standard library only. No external dependencies, just socket, threading, json, re, and collections.&lt;br&gt;
SSH on port 2222 accepts any connection and logs every username and password combination attempted. It never grants access. It just listens, captures, and flags IPs that exceed a brute force threshold.&lt;br&gt;
HTTP on port 8080 handles incoming web requests and scans each one for attack signatures: SQL injection strings, web shell upload attempts, directory traversal patterns, admin panel probes, and general vulnerability scanning behavior.&lt;br&gt;
FTP on port 2121 captures login attempts, flags anonymous login attempts, and detects default credential usage.&lt;br&gt;
Every single event, regardless of service, gets mapped to a MITRE ATT&amp;amp;CK technique in real time. SSH brute force maps to T1110. Port scanning maps to T1046. SQL injection maps to T1190. Web shell attempts map to T1505.003. The full mapping table covers nine attack patterns across all three services.&lt;/p&gt;

&lt;p&gt;The Intelligence Report&lt;br&gt;
Logging raw events is useful. Summarizing them into an intelligence report is what makes a honeypot operationally valuable.&lt;br&gt;
After a session ends, either via Ctrl+C on a live run or automatically after a simulation, the tool generates a report that shows:&lt;/p&gt;

&lt;p&gt;Total events and unique attacker IPs&lt;br&gt;
Brute force IP flags&lt;br&gt;
Event breakdown by service, visualized as bar charts in the terminal&lt;br&gt;
Top attacker IPs with their specific attack types listed&lt;br&gt;
MITRE ATT&amp;amp;CK technique frequency across the session&lt;br&gt;
Unique credential combinations attempted, with default credential flagging&lt;/p&gt;

&lt;p&gt;The JSON logs that feed this report are structured to be SIEM-ready. They can pipe directly into Splunk, Elastic, or Microsoft Sentinel without transformation.&lt;/p&gt;

&lt;h1&gt;
  
  
  Here is a sample of what a session report looks like:
&lt;/h1&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  HONEYPOT ATTACKER INTELLIGENCE REPORT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;=================================================================&lt;br&gt;
  Total Events    : 31&lt;br&gt;
  Unique Attackers: 7&lt;br&gt;
  Brute Force IPs : 2&lt;/p&gt;

&lt;p&gt;EVENTS BY SERVICE&lt;br&gt;
  SSH      ████████████████ 16&lt;br&gt;
  HTTP     ████████████ 12&lt;br&gt;
  FTP      ███ 3&lt;/p&gt;

&lt;p&gt;TOP ATTACKER IPs&lt;br&gt;
  45.33.32.156    10 events | sql_injection, web_shell_attempt, database_probe&lt;br&gt;
  203.0.113.42     9 events | ssh_login_attempt, port_scan [BRUTE FORCE]&lt;/p&gt;

&lt;p&gt;MITRE ATT&amp;amp;CK TECHNIQUES OBSERVED&lt;br&gt;
  T1110     Brute Force                          9x&lt;br&gt;
  T1046     Network Service Scanning             8x&lt;br&gt;
  T1190     Exploit Public-Facing Application    3x&lt;br&gt;
  T1505.003 Web Shell                            1x&lt;/p&gt;

&lt;p&gt;CREDENTIALS ATTEMPTED (11 unique)&lt;br&gt;
  admin    : admin   [DEFAULT CRED]&lt;br&gt;
  root     : password&lt;br&gt;
  pi       : raspberry&lt;/p&gt;

&lt;p&gt;Demo Mode&lt;br&gt;
One thing I built specifically for testing and demonstrations is a --simulate flag. Running python3 honeypot.py --simulate --report generates a full simulated attack session without needing live internet traffic or exposed ports. It runs through SSH brute force, HTTP probing, FTP anonymous login attempts, and port scanning behavior, then generates the full report.&lt;br&gt;
This means anyone cloning the repo can see exactly what the tool does in under 30 seconds without any infrastructure setup.&lt;/p&gt;

&lt;p&gt;What This Looks Like in Practice&lt;br&gt;
Deploy this on an AWS EC2 instance or DigitalOcean droplet with the ports exposed to the internet. Within hours, you will see real traffic. Bots and automated scanners hit open ports constantly. What you capture tells you a lot:&lt;/p&gt;

&lt;p&gt;The most commonly attempted SSH credentials globally are still admin:admin, root:password, and pi:raspberry. Default credential hygiene matters.&lt;br&gt;
HTTP scanners probe for /admin, /wp-login, /.env, and SQL injection strings before any human has looked at your site.&lt;br&gt;
Brute force attempts rarely come from a single IP. Distributed credential stuffing is the norm.&lt;/p&gt;

&lt;p&gt;All of that becomes structured threat intelligence when it runs through this tool.&lt;/p&gt;

&lt;p&gt;Technical Design Decisions&lt;br&gt;
A few choices I made deliberately:&lt;br&gt;
Standard library only. No pip installs, no dependency conflicts, no version issues. The tool runs on any Python 3 environment out of the box.&lt;br&gt;
Threading per service. Each fake service runs on its own thread so SSH, HTTP, and FTP capture simultaneously without blocking each other.&lt;br&gt;
Threshold-based brute force detection. Rather than flagging every failed login, the tool tracks attempt counts per IP and raises a brute force flag only after a configurable threshold is crossed. This mirrors how real SOC alert rules work.&lt;br&gt;
ATT&amp;amp;CK mapping at the event level. Instead of tagging sessions with a technique at the end, each individual event carries its ATT&amp;amp;CK technique ID as it is logged. This makes the data immediately usable for threat hunting queries.&lt;/p&gt;

&lt;p&gt;Takeaways&lt;br&gt;
Building this project reinforced something I keep coming back to: defenders who understand how attackers operate are better at their jobs. A honeypot is not just a trap. It is a training dataset for your threat model.&lt;br&gt;
The credential lists alone are valuable. Seeing T1046 show up before T1190 in a session tells you that the attacker scanned for services before attempting exploitation. That sequencing is exactly what ATT&amp;amp;CK is designed to capture.&lt;br&gt;
If you are building out a SOC capability or studying for a blue team role, I would strongly recommend deploying a honeypot, even a simple one, and spending time reading the logs. The patterns you see will show up again in your SIEM.&lt;/p&gt;

&lt;p&gt;Links&lt;br&gt;
GitHub: honeypot-attacker-intelligence&lt;br&gt;
Portfolio: sankethsubhas.pages.dev&lt;br&gt;
Questions or feedback? Drop them in the comments. If you have deployed a honeypot and captured interesting traffic patterns, I would like to hear what you saw.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>blueteam</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How I Built a MITRE ATT&amp;CK Threat Mapping Dashboard in Python</title>
      <dc:creator>Sanketh Subhas</dc:creator>
      <pubDate>Mon, 09 Mar 2026 17:24:04 +0000</pubDate>
      <link>https://dev.to/sanketh_subhas_24/how-i-built-a-mitre-attck-threat-mapping-dashboard-in-python-3opc</link>
      <guid>https://dev.to/sanketh_subhas_24/how-i-built-a-mitre-attck-threat-mapping-dashboard-in-python-3opc</guid>
      <description>&lt;p&gt;Mapping attack indicators to adversary techniques  without any external libraries&lt;/p&gt;

&lt;p&gt;When I started studying for SOC analyst roles, I kept running into the same gap: I could identify that something was malicious, but I couldn't systematically connect it to where it sat in an attacker's kill chain. That's exactly what MITRE ATT&amp;amp;CK solves and exactly why I built this tool.&lt;/p&gt;

&lt;p&gt;The Problem&lt;br&gt;
Security logs are noisy. A single incident can generate hundreds of events failed logins, encoded PowerShell commands, outbound beacons, lateral movement attempts. The challenge isn't detecting that something happened. It's answering what stage of the attack is this? How severe? What else might be coming next?&lt;br&gt;
That's the job of ATT&amp;amp;CK mapping. And doing it manually during an incident is slow and error-prone.&lt;/p&gt;

&lt;p&gt;What I Built&lt;br&gt;
The MITRE ATT&amp;amp;CK Threat Mapping Dashboard is a Python CLI tool that takes any input a log file, raw text, or a built-in attack scenario  and maps it to MITRE ATT&amp;amp;CK tactics and techniques automatically.&lt;br&gt;
Here's what it produces:&lt;/p&gt;

&lt;p&gt;Kill chain visualization : a live view of which of the 14 ATT&amp;amp;CK tactics are active&lt;br&gt;
35+ technique mappings across all tactic stages&lt;br&gt;
Severity ratings — CRITICAL / HIGH / MEDIUM / LOW per technique&lt;br&gt;
JSON export — machine-readable output for SIEM integration (Splunk, Elastic, Sentinel)&lt;/p&gt;

&lt;p&gt;And the entire thing runs on Python's standard library — re, json, argparse, collections. No pip installs. No dependencies. Just clone and run.&lt;/p&gt;

&lt;p&gt;How It Works&lt;br&gt;
The core of the tool is a technique signature database. Each ATT&amp;amp;CK technique (T-number, name, tactic, severity, description) is paired with a set of regex patterns — keywords and indicators that suggest that technique is present.&lt;br&gt;
When you pass input to the tool, it runs every signature against the text and returns matches with their tactic context and severity.&lt;br&gt;
pythonpython3 mitre_mapper.py --scenario ransomware&lt;br&gt;
python3 mitre_mapper.py --file /var/log/auth.log&lt;br&gt;
python3 mitre_mapper.py --text "mimikatz powershell encoded cobalt strike"&lt;br&gt;
python3 mitre_mapper.py --scenario apt --output report.json&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
The kill chain output makes it immediately clear which attack stages are active:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;▶  Credential Access        ██ T1110, T1003&lt;br&gt;
▶  Lateral Movement         █  T1021&lt;br&gt;
▶  Command and Control      █  T1071&lt;br&gt;
▶  Impact                   █  T1486&lt;br&gt;
A blank stage means no indicators detected. A filled stage means something matched — and you can drill into exactly what.&lt;/p&gt;

&lt;p&gt;ATT&amp;amp;CK Coverage&lt;br&gt;
The tool covers all 14 Enterprise ATT&amp;amp;CK tactics:&lt;br&gt;
TacticSample TechniquesInitial AccessPhishing, Valid Accounts, Remote ServicesExecutionPowerShell, Scheduled Tasks, User ExecutionPersistenceAutostart, Web Shells, Account CreationCredential AccessMimikatz, Brute Force, MITMLateral MovementEternalBlue, SMB, Remote ServicesImpactRansomware, Data Destruction, Service Stop&lt;br&gt;
...and 9 more tactics with full technique coverage.&lt;/p&gt;

&lt;p&gt;The Three Built-in Scenarios&lt;br&gt;
I added three pre-built attack scenarios so you can see the tool in action without needing a live log file:&lt;br&gt;
Ransomware — maps credential dumping, encryption, C2 beaconing, and lateral movement. Produces 10 technique matches across 9 tactics.&lt;br&gt;
APT (Advanced Persistent Threat) — simulates a nation-state style intrusion with reconnaissance, spearphishing, privilege escalation, and long-term persistence.&lt;br&gt;
Web Attack — covers SQL injection, web shell deployment, reverse shell activity, and data exfiltration via HTTP.&lt;br&gt;
Each scenario is designed to reflect real-world attack patterns documented in MITRE's threat actor profiles.&lt;/p&gt;

&lt;p&gt;Why This Matters for SOC Work&lt;br&gt;
This project directly mirrors what analysts do during triage:&lt;br&gt;
Threat hunting — you paste a suspicious log snippet and immediately see which ATT&amp;amp;CK techniques are present, instead of manually cross-referencing the framework.&lt;br&gt;
Incident response — when an incident is active, the kill chain view tells you what stage the attacker is at and what's likely coming next.&lt;br&gt;
SOC triage — severity ratings (CRITICAL down to LOW) let you prioritize which detections need immediate attention vs. monitoring.&lt;br&gt;
Purple team exercises — red team operators can map their own activity to ATT&amp;amp;CK and hand it to blue team as a detection coverage checklist.&lt;br&gt;
SIEM integration — the JSON export flag (--output report.json) produces structured output that feeds directly into Splunk, Elastic, or Sentinel pipelines.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;br&gt;
Building this forced me to actually read the ATT&amp;amp;CK framework in depth — not just know it exists, but understand how tactics relate to each other sequentially, how techniques nest under tactics, and how real-world indicators map to T-numbers.&lt;br&gt;
The regex-based approach also taught me something practical: most ATT&amp;amp;CK indicators in logs aren't subtle. mimikatz, encoded command, your files have been encrypted — attackers leave fingerprints. The skill is knowing where to look and what it means when you find it.&lt;/p&gt;

&lt;p&gt;Try It Yourself&lt;br&gt;
GitHub: github.com/SankethSubhas/mitre-attack-threat-mapper&lt;br&gt;
bashgit clone &lt;a href="https://github.com/SankethSubhas/mitre-attack-threat-mapper.git" rel="noopener noreferrer"&gt;https://github.com/SankethSubhas/mitre-attack-threat-mapper.git&lt;/a&gt;&lt;br&gt;
cd mitre-attack-threat-mapper&lt;br&gt;
python3 mitre_mapper.py --scenario apt&lt;br&gt;
All 8 of my open-source cybersecurity tools are on my portfolio at sankethsubhas.pages.dev&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>python</category>
      <category>security</category>
      <category>career</category>
    </item>
    <item>
      <title>How I Built a Python Network Scanner That Thinks Like an Attacker</title>
      <dc:creator>Sanketh Subhas</dc:creator>
      <pubDate>Sun, 08 Mar 2026 23:09:01 +0000</pubDate>
      <link>https://dev.to/sanketh_subhas_24/how-i-built-a-python-network-scanner-that-thinks-like-an-attacker-550n</link>
      <guid>https://dev.to/sanketh_subhas_24/how-i-built-a-python-network-scanner-that-thinks-like-an-attacker-550n</guid>
      <description>&lt;p&gt;Open ports are open doors. Here's how I built a tool that finds them, scores the risk, and maps every finding to MITRE ATT&amp;amp;CK  with zero external dependencies.&lt;br&gt;
The Problem&lt;br&gt;
Every network has blind spots.&lt;br&gt;
Firewall rules get misconfigured. Services get spun up and forgotten. A developer opens port 3389 for "just a quick test" and never closes it. Six months later, a ransomware group finds it.&lt;br&gt;
The scary part? These exposures are trivially easy to find if you know where to look.&lt;br&gt;
So I built a tool that looks.&lt;/p&gt;

&lt;p&gt;What the Tool Does&lt;br&gt;
The Network Scanner &amp;amp; Vulnerability Reporter is a Python-based tool that:&lt;/p&gt;

&lt;p&gt;Scans a target IP or entire CIDR range for open ports&lt;br&gt;
Identifies what service is running on each port&lt;br&gt;
Checks each service against a built-in vulnerability database&lt;br&gt;
Maps every finding to a MITRE ATT&amp;amp;CK technique&lt;br&gt;
Calculates an overall risk score from 0–100&lt;br&gt;
Generates a full report with remediation guidance&lt;br&gt;
Exports JSON for SIEM or ticketing system integration&lt;/p&gt;

&lt;p&gt;Zero external dependencies. Pure Python standard library only.&lt;/p&gt;

&lt;p&gt;Why I Built It This Way&lt;br&gt;
Most vulnerability scanners are black boxes. You run Nessus, get a PDF, and hand it to someone else to interpret.&lt;br&gt;
I wanted to understand what's actually happening under the hood what a scanner is really asking, what the responses mean, and how to turn raw port data into something actionable.&lt;br&gt;
This tool is my answer to that question.&lt;/p&gt;

&lt;p&gt;The Technical Architecture&lt;br&gt;
Port Scanning — Multithreaded TCP&lt;br&gt;
The scanner uses socket and concurrent.futures.ThreadPoolExecutor to send TCP connection attempts across 29 common ports simultaneously. Multithreading keeps the scan fast even on full CIDR ranges.&lt;br&gt;
pythonwith ThreadPoolExecutor(max_workers=50) as executor:&lt;br&gt;
    futures = {executor.submit(scan_port, ip, port): port for port in ports}&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Each connection either succeeds (port open) or times out (closed/filtered). No raw packets, no root required.

**Service Identification**

Open ports get mapped to known service names via a static dictionary — port 22 becomes SSH, port 445 becomes SMB, port 3389 becomes RDP, and so on across 29 services.

**Vulnerability Matching**

Each identified service is checked against a built-in vulnerability database. This isn't CVE scanning it's risk pattern matching. Port 23 open? That's Telnet — cleartext protocol, CRITICAL risk. Port 27017 open? That's MongoDB — likely unauthenticated access.

The database covers the services that actually show up in breach reports: SMB (EternalBlue), RDP (ransomware entry), Redis (no-auth data exposure), Elasticsearch (unauthenticated access), and more.

**MITRE ATT&amp;amp;CK Mapping**

Every vulnerability finding gets tagged with the relevant ATT&amp;amp;CK technique:

- RDP exposed → T1076 (Remote Desktop Protocol)
- SMB exposed → T1210 (Exploitation of Remote Services)
- Telnet open → T1040 (Network Sniffing)

This transforms raw scan output into adversary-aligned intelligence — exactly the framing a SOC or threat intel team needs.

**Risk Scoring**

The tool calculates a composite risk score 0–100 based on the severity and count of findings:

| Score | Rating |
|-------|--------|
| 70–100 | 🔴 CRITICAL |
| 45–69 | 🟠 HIGH |
| 20–44 | 🟡 MEDIUM |
| 0–19 | 🟢 LOW |



**Sample Output**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;=================================================================&lt;/p&gt;

&lt;h1&gt;
  
  
  NETWORK SCANNER &amp;amp; VULNERABILITY REPORTER
&lt;/h1&gt;

&lt;p&gt;Target     : 192.168.1.1&lt;br&gt;
Open Ports : 4  |  Vulnerabilities: 6&lt;br&gt;
Risk Score : 85/100 [██████████████████████████████████░░░░░░]&lt;/p&gt;

&lt;h1&gt;
  
  
  Rating     : 🔴 CRITICAL RISK
&lt;/h1&gt;

&lt;p&gt;⚠️ VULNERABILITIES (6)&lt;/p&gt;

&lt;p&gt;[CRITICAL] RDP Exposed to Internet (Port 3389)&lt;br&gt;
  MITRE ATT&amp;amp;CK : T1076 — Remote Desktop Protocol&lt;br&gt;
  Remediation  : Restrict RDP to VPN only, enable NLA, use MFA&lt;/p&gt;

&lt;p&gt;[CRITICAL] SMB Port Exposed (Port 445)&lt;br&gt;
  MITRE ATT&amp;amp;CK : T1210 — Exploitation of Remote Services&lt;br&gt;
  Remediation  : Block SMB at firewall, apply MS17-010 patch&lt;/p&gt;

&lt;p&gt;Real-World Relevance&lt;br&gt;
This maps directly to what security teams actually do:&lt;br&gt;
Attack surface mapping — finding exposed services before attackers do is the first step in any vulnerability management program.&lt;br&gt;
Risk prioritization — not every open port is equal. This tool scores and ranks so the most dangerous exposures get fixed first.&lt;br&gt;
SIEM integration — the JSON export can feed directly into Splunk, Elastic, or any ticketing system like ServiceNow.&lt;br&gt;
Compliance support — regular network scans are a control requirement under NIST CSF, CIS Controls, and ISO 27001. This tool produces the evidence.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;br&gt;
Building this taught me things no certification course covers:&lt;br&gt;
Multithreading changes everything. A single-threaded scanner on a /24 range would take minutes. With 50 concurrent threads, it's seconds. Understanding thread pool sizing and timeout tuning is a real skill.&lt;br&gt;
The vulnerability database is the hardest part. Writing port-scanning logic is straightforward. Deciding which services are risky, why, and how to explain it to a non-technical stakeholder — that's the GRC thinking that makes a security tool actually useful.&lt;br&gt;
MITRE ATT&amp;amp;CK is a communication framework. Mapping findings to ATT&amp;amp;CK techniques isn't just for show. It lets you speak the same language as threat intel teams, red teams, and incident responders. A finding labeled "T1210 — Exploitation of Remote Services" means something specific and actionable to anyone in the security space.&lt;/p&gt;

&lt;p&gt;Try It Yourself&lt;br&gt;
bashgit clone &lt;a href="https://github.com/SankethSubhas/network-scanner-vulnerability-reporter.git" rel="noopener noreferrer"&gt;https://github.com/SankethSubhas/network-scanner-vulnerability-reporter.git&lt;/a&gt;&lt;br&gt;
cd network-scanner-vulnerability-reporter&lt;/p&gt;

&lt;h1&gt;
  
  
  Scan a single host (use scanme.nmap.org for legal testing)
&lt;/h1&gt;

&lt;p&gt;python3 network_scanner.py scanme.nmap.org&lt;/p&gt;

&lt;h1&gt;
  
  
  Scan a network range
&lt;/h1&gt;

&lt;p&gt;python3 network_scanner.py 192.168.1.0/24&lt;/p&gt;

&lt;h1&gt;
  
  
  Export JSON report
&lt;/h1&gt;

&lt;p&gt;python3 network_scanner.py 192.168.1.1 --output report.json&lt;br&gt;
Only scan systems you own or have explicit written permission to test.&lt;/p&gt;

&lt;p&gt;Links&lt;/p&gt;

&lt;p&gt;🔗 GitHub: network-scanner-vulnerability-reporter&lt;br&gt;
🌐 Portfolio: sankethsubhas.pages.dev&lt;br&gt;
💼 LinkedIn: linkedin.com/in/sanketh-subhas&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>python</category>
      <category>networking</category>
      <category>security</category>
    </item>
    <item>
      <title>How I Built a Phishing Email Analyzer That Scores Risk 0–100</title>
      <dc:creator>Sanketh Subhas</dc:creator>
      <pubDate>Sun, 08 Mar 2026 01:20:56 +0000</pubDate>
      <link>https://dev.to/sanketh_subhas_24/how-i-built-a-phishing-email-analyzer-that-scores-risk-0-100-k66</link>
      <guid>https://dev.to/sanketh_subhas_24/how-i-built-a-phishing-email-analyzer-that-scores-risk-0-100-k66</guid>
      <description>&lt;p&gt;A hands-on walkthrough of email header analysis, SPF/DKIM/DMARC validation, and phishing detection using pure Python&lt;/p&gt;

&lt;p&gt;Introduction&lt;br&gt;
Phishing is still the number one initial access vector in cyberattacks. According to virtually every major threat report, over 90% of successful breaches start with a phishing email. Yet most people — and even some security teams — still rely on gut feeling to decide if an email is suspicious.&lt;br&gt;
I wanted to change that. So I built a Python tool that analyzes raw email files, checks every technical indicator, and produces a scored risk verdict from 0 to 100. No gut feeling required.&lt;br&gt;
This article walks through exactly how it works, what it checks, and why those checks matter.&lt;/p&gt;

&lt;p&gt;What Does the Tool Actually Do?&lt;br&gt;
The Phishing Email Analyzer takes a raw .eml email file as input and runs it through a series of checks across four categories:&lt;/p&gt;

&lt;p&gt;Header analysis (From, Reply-To, Return-Path mismatches)&lt;br&gt;
Authentication validation (SPF, DKIM, DMARC)&lt;br&gt;
Content analysis (urgency keywords, credential requests, suspicious links)&lt;br&gt;
Attachment analysis (double extensions, executable disguises)&lt;/p&gt;

&lt;p&gt;Each indicator adds points to a risk score. At the end, the tool returns a color-coded verdict:&lt;/p&gt;

&lt;p&gt;0–30: Likely Legitimate&lt;br&gt;
31–60: Suspicious&lt;br&gt;
61–80: High Risk&lt;br&gt;
81–100: Critical — High Probability Phishing&lt;/p&gt;

&lt;p&gt;The Technical Foundation: What is an .eml File?&lt;br&gt;
An .eml file is the raw format of an email. It contains everything — headers, body, attachments — all in plain text. Every email client can export emails in this format, which makes it perfect for forensic analysis.&lt;br&gt;
Python's built-in email library can parse .eml files natively, which means the entire tool runs with no external dependencies beyond the standard library.&lt;/p&gt;

&lt;p&gt;The Checks — And Why They Matter&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Header Mismatch Detection
Legitimate emails have consistent headers. The From address, Reply-To address, and Return-Path should all point to the same domain. When they don't — that's a red flag.
Attackers frequently use a display name like "PayPal Security" while the actual sending address is &lt;a href="mailto:noreply@paypa1-security.xyz"&gt;noreply@paypa1-security.xyz&lt;/a&gt;. The tool extracts all three headers and flags any domain mismatch immediately.&lt;/li&gt;
&lt;li&gt;SPF, DKIM, and DMARC Validation
These three protocols are the backbone of email authentication:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;SPF (Sender Policy Framework) — verifies that the sending server is authorized to send on behalf of the domain&lt;br&gt;
DKIM (DomainKeys Identified Mail) — verifies that the email content hasn't been tampered with in transit using a cryptographic signature&lt;br&gt;
DMARC — ties SPF and DKIM together and tells receiving servers what to do if either check fails&lt;/p&gt;

&lt;p&gt;The tool checks the Authentication-Results header — which is added by the receiving mail server — for pass/fail status on all three. A legitimate email from a major organization will almost always pass all three. A phishing email often fails one or more.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;URL and Link Analysis
The tool extracts every URL from the email body and checks for:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;URL shorteners (bit.ly, tinyurl, etc.) — used to hide the real destination&lt;br&gt;
Suspicious TLDs (.xyz, .tk, .ml) — popular with attackers because they are cheap or free&lt;br&gt;
IP addresses used directly in links — no legitimate organization sends links like &lt;a href="http://185.220.101.34/login" rel="noopener noreferrer"&gt;http://185.220.101.34/login&lt;/a&gt;&lt;br&gt;
Lookalike domains — domains that visually resemble trusted brands (paypa1.com, amaz0n.net)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Urgency and Credential Request Keywords
Phishing emails almost universally use psychological pressure. The tool scans the email body for phrases like "your account will be suspended," "verify immediately," "click here to confirm your password," and similar patterns. Each match increases the risk score.&lt;/li&gt;
&lt;li&gt;Attachment Analysis
Malicious attachments often disguise themselves using double extensions — invoice.pdf.exe looks like a PDF but executes as a program. The tool checks every attachment filename for this pattern and flags executable file types hidden behind document extensions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Running It&lt;br&gt;
The tool is simple to use. Download a suspicious email as a .eml file and run:&lt;br&gt;
python3 phishing_analyzer.py suspicious_email.eml&lt;br&gt;
The output shows every check with a pass/fail result and explains why each indicator matters, followed by the final risk score and verdict.&lt;/p&gt;

&lt;p&gt;Test Results&lt;br&gt;
I included two sample emails in the repository to demonstrate the contrast:&lt;br&gt;
The phishing sample — a fake PayPal security alert — scored 100/100. It triggered 13 indicators including a From/Reply-To domain mismatch, failed SPF, URL shorteners, urgency keywords, and a credential request.&lt;br&gt;
The legitimate sample — a standard professional email — scored 0/100. Every header was consistent, no suspicious URLs, no urgency language.&lt;br&gt;
The contrast makes the tool's value immediately clear.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;br&gt;
Building this tool gave me a much deeper understanding of why email authentication protocols exist and how attackers work around them. Most phishing emails don't try to bypass SPF or DKIM — they just rely on the fact that most people never check those headers manually. Automating those checks removes the human error factor entirely.&lt;br&gt;
It also reinforced something important about SOC work: the difference between a trained analyst and a beginner is often just knowing what to look for. This tool encodes that knowledge into a repeatable process.&lt;/p&gt;

&lt;p&gt;Try It Yourself&lt;br&gt;
The full source code, sample emails, and README are available on GitHub:&lt;br&gt;
GitHub: &lt;a href="https://github.com/SankethSubhas/phishing-email-analyzer" rel="noopener noreferrer"&gt;https://github.com/SankethSubhas/phishing-email-analyzer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sanketh Subhas is a Cybersecurity Analyst with 3.5+ years of experience in SOC operations, GRC, and threat detection.&lt;br&gt;
Portfolio: sankethsubhas.pages.dev | GitHub: github.com/SankethSubhas&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>python</category>
      <category>security</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How I Built a SQL-Driven User Access Review &amp; Compliance Audit</title>
      <dc:creator>Sanketh Subhas</dc:creator>
      <pubDate>Fri, 06 Mar 2026 18:32:45 +0000</pubDate>
      <link>https://dev.to/sanketh_subhas_24/how-i-built-a-sql-driven-user-access-review-compliance-audit-21p7</link>
      <guid>https://dev.to/sanketh_subhas_24/how-i-built-a-sql-driven-user-access-review-compliance-audit-21p7</guid>
      <description>&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;One of the most common findings in a compliance audit is simple: the wrong people still have access to systems they shouldn't. Terminated employees. Sales reps with admin rights. Accounts that haven't been touched in months.&lt;br&gt;
This is exactly what a GRC Analyst is hired to catch and in this project, I built a SQL-based User Access Review (UAR) to simulate a real audit workflow.&lt;/p&gt;

&lt;p&gt;The Scenario&lt;br&gt;
Imagine you're a GRC Analyst at a mid-sized company. The IAM (Identity and Access Management) policy says:&lt;/p&gt;

&lt;p&gt;Terminated employees must have database access revoked within 24 hours&lt;br&gt;
Only IT and DevOps staff can hold Admin privileges (Principle of Least Privilege)&lt;br&gt;
Any account inactive for 90+ days is considered stale and must be disabled&lt;/p&gt;

&lt;p&gt;Your job: write SQL audit queries to find every policy violation.&lt;/p&gt;

&lt;p&gt;Step 1 — Building the Mock Database&lt;br&gt;
I created a simple user_access table with intentional policy violations baked in:&lt;br&gt;
sqlCREATE TABLE user_access (&lt;br&gt;
    user_id INT,&lt;br&gt;
    name VARCHAR(50),&lt;br&gt;
    department VARCHAR(50),&lt;br&gt;
    role VARCHAR(20),&lt;br&gt;
    status VARCHAR(10),&lt;br&gt;
    last_login DATE,&lt;br&gt;
    termination_date DATE&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO user_access VALUES (101, 'Alice Smith', 'IT', 'Admin', 'Active', '2026-02-01', NULL);&lt;br&gt;
INSERT INTO user_access VALUES (102, 'Bob Jones', 'Sales', 'Admin', 'Active', '2026-01-15', NULL);&lt;br&gt;
INSERT INTO user_access VALUES (103, 'Charlie Brown', 'HR', 'User', 'Terminated', '2025-12-01', '2025-12-05');&lt;br&gt;
INSERT INTO user_access VALUES (104, 'David Wilson', 'Marketing', 'User', 'Active', '2025-08-20', NULL);&lt;br&gt;
Three violations are hiding in plain sight — can you spot them?&lt;/p&gt;

&lt;p&gt;Step 2 — The Audit Queries&lt;br&gt;
Audit 1: Zombie Accounts — Terminated employees still with active access&lt;br&gt;
sqlSELECT name, department, termination_date &lt;br&gt;
FROM user_access &lt;br&gt;
WHERE status = 'Terminated' AND termination_date IS NOT NULL;&lt;br&gt;
Finding: Charlie Brown (HR) was terminated on Dec 5, 2025 — access never revoked. High Risk.&lt;/p&gt;

&lt;p&gt;Audit 2: Privilege Escalation Check — Non-IT/DevOps users with Admin rights&lt;br&gt;
sqlSELECT name, department, role &lt;br&gt;
FROM user_access &lt;br&gt;
WHERE role = 'Admin' AND department NOT IN ('IT', 'DevOps');&lt;br&gt;
Finding: Bob Jones (Sales) has Admin privileges. Violates Principle of Least Privilege. Medium Risk.&lt;/p&gt;

&lt;p&gt;Audit 3: Stale Account Detection — No login in 90+ days&lt;br&gt;
sqlSELECT name, department, last_login,&lt;br&gt;
       JULIANDAY('now') - JULIANDAY(last_login) AS days_inactive&lt;br&gt;
FROM user_access&lt;br&gt;
WHERE status = 'Active' &lt;br&gt;
AND JULIANDAY('now') - JULIANDAY(last_login) &amp;gt; 90;&lt;br&gt;
Finding: David Wilson (Marketing) hasn't logged in since August 2025 — over 180 days inactive. Medium Risk.&lt;/p&gt;

&lt;p&gt;Step 3 — The GRC Executive Summary&lt;br&gt;
This is what separates a security project from a GRC project. The code is just the tool. The report is the deliverable.&lt;/p&gt;

&lt;p&gt;Audit Finding Report — Q1 2026&lt;br&gt;
Finding 1 (High Risk): One terminated employee (Charlie Brown, HR) retains active database access 90+ days post-termination. Immediate remediation required.&lt;br&gt;
Finding 2 (Medium Risk): One active employee (Bob Jones, Sales) holds Admin privileges without business justification. Violates Principle of Least Privilege.&lt;br&gt;
Finding 3 (Medium Risk): One active account (David Wilson, Marketing) has been inactive for 180+ days. Account should be disabled pending review.&lt;br&gt;
Recommendation: Implement an automated trigger between the HR system and the database to disable accounts within 24 hours of termination. Conduct quarterly access reviews for all Admin-level users.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;br&gt;
This project taught me how GRC work actually flows in practice — you don't just find vulnerabilities, you document them, assign risk levels, and recommend remediations that a business can act on. The SQL is almost secondary. The report is the real output.&lt;br&gt;
If you're breaking into GRC, I'd strongly recommend building something like this. It's concrete, demonstrable, and directly mirrors what compliance teams do every day.&lt;/p&gt;

&lt;p&gt;Links&lt;/p&gt;

&lt;p&gt;🔗 GitHub: github.com/SankethSubhas/sql-user-access-review&lt;br&gt;
🌐 Portfolio: sankethsubhas.pages.dev&lt;/p&gt;

&lt;p&gt;This is part of my open-source cybersecurity portfolio — 8 projects built to demonstrate real GRC and SOC skills.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>career</category>
      <category>grc</category>
      <category>opentowork</category>
    </item>
    <item>
      <title>I Built a CIS Benchmark Compliance Checker That Works on Both macOS and Linux</title>
      <dc:creator>Sanketh Subhas</dc:creator>
      <pubDate>Thu, 05 Mar 2026 20:25:43 +0000</pubDate>
      <link>https://dev.to/sanketh_subhas_24/i-built-a-cis-benchmark-compliance-checker-that-works-on-both-macos-and-linux-43nk</link>
      <guid>https://dev.to/sanketh_subhas_24/i-built-a-cis-benchmark-compliance-checker-that-works-on-both-macos-and-linux-43nk</guid>
      <description>&lt;p&gt;Security hardening is one of those things everyone talks about but few actually implement consistently. The CIS Benchmarks exist for a reasonthey’re the gold standard for OS-level security configuration. So I built a tool that actually checks your system against them, automatically, on both macOS and Linux.&lt;/p&gt;

&lt;p&gt;What it does&lt;/p&gt;

&lt;p&gt;The CIS Benchmark Compliance Checker audits your system configuration against CIS Level 1 controls the baseline hardening standards used by enterprises, government agencies, and security teams worldwide. It runs locally, requires no agent, and outputs a clean compliance report.&lt;/p&gt;

&lt;p&gt;It checks for:&lt;/p&gt;

&lt;p&gt;Password policy enforcement (minimum length, complexity, expiry)&lt;br&gt;
SSH hardening (root login disabled, protocol version, idle timeout)&lt;br&gt;
Firewall status (pf on macOS, ufw/iptables on Linux)&lt;br&gt;
Audit logging (auditd on Linux, audit framework on macOS)&lt;br&gt;
World-writable file detection&lt;br&gt;
Core dump restrictions&lt;br&gt;
Unnecessary service enumeration&lt;br&gt;
Why cross-platform matters&lt;/p&gt;

&lt;p&gt;Most compliance scripts are written for one OS and abandoned. Security teams in the real world manage mixed fleets developers on macOS, servers on Ubuntu or RHEL. This tool detects the OS at runtime and applies the correct benchmark checks automatically. One script, two platforms, zero manual switching.&lt;/p&gt;

&lt;p&gt;How it works&lt;/p&gt;

&lt;p&gt;The tool uses Python’s subprocess module to run native OS commands — defaults read, sysctl, launchctl, systemctl, ss, auditctl — and parses the output against expected CIS-compliant values. Each check returns PASS, FAIL, or WARNING, and the final report includes a compliance percentage score.&lt;/p&gt;

&lt;p&gt;python&lt;/p&gt;

&lt;p&gt;def check_ssh_root_login():&lt;br&gt;
    result = subprocess.run(['sshd', '-T'], capture_output=True, text=True)&lt;br&gt;
    if 'permitrootlogin no' in result.stdout.lower():&lt;br&gt;
        return "PASS"&lt;br&gt;
    return "FAIL"&lt;br&gt;
The report is exported as a structured text file, organized by control category — ready to drop into a GRC audit trail or a SOC ticket.&lt;/p&gt;

&lt;p&gt;MITRE ATT&amp;amp;CK mapping&lt;/p&gt;

&lt;p&gt;Each control maps back to ATT&amp;amp;CK techniques:&lt;/p&gt;

&lt;p&gt;SSH hardening → T1021.004 (Remote Services: SSH)&lt;br&gt;
Audit logging → T1562.002 (Disable Windows Event Logging — Linux equivalent)&lt;br&gt;
World-writable files → T1222 (File and Directory Permissions Modification)&lt;/p&gt;

&lt;p&gt;What I learned&lt;/p&gt;

&lt;p&gt;macOS and Linux look similar on the surface but behave very differently at the syscall and config level. launchctl vs systemctl, pf vs ufw, defaults vs /etc/ — mapping equivalent controls across both took real research. That gap is exactly why most compliance tools are single-platform.&lt;/p&gt;

&lt;p&gt;Try it yourself&lt;/p&gt;

&lt;p&gt;GitHub: github.com/SankethSubhas/cis-benchmark-compliance-checker&lt;/p&gt;

&lt;p&gt;Run it, check your score, and see how hardened your system actually is.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>python</category>
      <category>security</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I Built a Log Analyzer That Detects Cyberattacks — Here’s How It Works</title>
      <dc:creator>Sanketh Subhas</dc:creator>
      <pubDate>Wed, 04 Mar 2026 20:10:19 +0000</pubDate>
      <link>https://dev.to/sanketh_subhas_24/i-built-a-log-analyzer-that-detects-cyberattacks-heres-how-it-works-2hl7</link>
      <guid>https://dev.to/sanketh_subhas_24/i-built-a-log-analyzer-that-detects-cyberattacks-heres-how-it-works-2hl7</guid>
      <description>&lt;p&gt;A hands-on deep dive into log analysis, threat detection, and MITRE ATT&amp;amp;CK mapping using pure Python&lt;/p&gt;

&lt;p&gt;Every cyberattack leaves a trail. Whether it’s a brute force attempt against an SSH server, a SQL injection probe against a web application, or a port scan mapping your network — the evidence is always there, buried in log files.&lt;/p&gt;

&lt;p&gt;The problem is that log files are enormous. A busy web server can generate millions of log entries per day. Finding the needle in that haystack manually is impossible — which is exactly why Security Information and Event Management (SIEM) tools like Splunk, Microsoft Sentinel, and IBM QRadar exist.&lt;/p&gt;

&lt;p&gt;But here’s the thing: most cybersecurity professionals use these tools without truly understanding the detection logic underneath. I wanted to change that for myself — so I built a log analyzer from scratch using nothing but Python.&lt;/p&gt;

&lt;p&gt;What Are Log Files?&lt;br&gt;
Before we get into the code, let’s understand what we’re working with.&lt;/p&gt;

&lt;p&gt;Apache Access Logs record every HTTP request to a web server. Each line looks like this:&lt;/p&gt;

&lt;p&gt;192.168.1.100 — — [01/Mar/2026:10:23:45 +0000] “GET /admin HTTP/1.1” 404 512&lt;/p&gt;

&lt;p&gt;This tells us: the IP address that made the request, the timestamp, what they requested (/admin), the HTTP method (GET), and the response code (404 = not found).&lt;/p&gt;

&lt;p&gt;Windows Authentication Logs (Security Event Log) record every login attempt on a Windows system. Event ID 4625 means a failed login. If you see hundreds of Event ID 4625 from the same IP in a short time period — that’s a brute force attack.&lt;/p&gt;

&lt;p&gt;The Three Attacks We Detect&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Brute Force — MITRE ATT&amp;amp;CK T1110&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Brute force attacks involve repeatedly trying username/password combinations until one works. The detection logic is simple: if the same IP address fails to authenticate more than 5 times within a short window, flag it.&lt;/p&gt;

&lt;p&gt;if failed_attempts[ip] &amp;gt; BRUTE_FORCE_THRESHOLD:&lt;br&gt;
findings.append({&lt;br&gt;
‘type’: ‘Brute Force’,&lt;br&gt;
‘technique’: ‘T1110’,&lt;br&gt;
‘severity’: ‘CRITICAL’,&lt;br&gt;
‘ip’: ip,&lt;br&gt;
‘count’: failed_attempts[ip]&lt;br&gt;
})&lt;/p&gt;

&lt;p&gt;This is exactly how enterprise SIEMs work — correlation rules that trigger when a threshold is exceeded.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;SQL Injection — MITRE ATT&amp;amp;CK T1190&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;SQL injection attacks try to manipulate database queries through web form inputs or URL parameters. Common signatures include keywords like UNION SELECT, DROP TABLE, OR 1=1, and — (SQL comment).&lt;/p&gt;

&lt;p&gt;Become a Medium member&lt;br&gt;
SQL_PATTERNS = [&lt;br&gt;
r”union\s+select”, r”drop\s+table”,&lt;br&gt;
r”or\s+1\s*=\s*1", r” — \s*$”,&lt;br&gt;
r”exec\s*(“, r”xp_cmdshell”&lt;br&gt;
]&lt;/p&gt;

&lt;p&gt;We scan the request URL in each log line for these patterns using Python’s re (regular expressions) module.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Port Scanning — MITRE ATT&amp;amp;CK T1046&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A port scan is when an attacker probes a target to discover which ports are open — gathering intelligence before launching an actual attack. The signature is many requests to different endpoints from the same IP in rapid succession, often resulting in many 404 responses.&lt;/p&gt;

&lt;p&gt;MITRE ATT&amp;amp;CK Mapping&lt;br&gt;
What makes this tool more than just a log parser is the ATT&amp;amp;CK mapping. Every detected threat is tagged with its MITRE technique ID:&lt;/p&gt;

&lt;p&gt;Detection | ATT&amp;amp;CK ID | Tactic&lt;br&gt;
Brute Force | T1110 | Credential Access&lt;br&gt;
SQL Injection | T1190 | Initial Access&lt;br&gt;
Port Scan | T1046 | Discovery&lt;br&gt;
Dir Traversal | T1083 | Discovery&lt;/p&gt;

&lt;p&gt;This context matters enormously in a SOC environment. Knowing that an alert maps to T1110 (Credential Access) tells an analyst that an attacker is trying to gain access — very different from T1046 (Discovery), which suggests they’re still in the reconnaissance phase.&lt;/p&gt;

&lt;p&gt;The Output&lt;br&gt;
The tool outputs a color-coded terminal report:&lt;/p&gt;

&lt;p&gt;[CRITICAL] Brute Force Attack Detected&lt;br&gt;
IP: 192.168.1.100 | Attempts: 47 | Technique: T1110&lt;br&gt;
Recommendation: Block IP, enable account lockout policy&lt;/p&gt;

&lt;p&gt;[HIGH] SQL Injection Attempt&lt;br&gt;
IP: 10.0.0.55 | Payload: UNION SELECT * FROM users | Technique: T1190&lt;br&gt;
Recommendation: Enable WAF, review input validation&lt;/p&gt;

&lt;p&gt;And a JSON export that can be ingested directly into a SIEM platform.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;br&gt;
Building this tool taught me something that no certification course did: detection is about context, not just signatures.&lt;/p&gt;

&lt;p&gt;A single failed login is normal. Fifty failed logins from the same IP in 30 seconds is an attack. The difference is context — and building the logic to establish that context from raw log data is a fundamental skill every SOC analyst needs.&lt;/p&gt;

&lt;p&gt;Try It Yourself&lt;br&gt;
Full source code on GitHub:&lt;br&gt;
github.com/SankethSubhas/log-analyzer-threat-detector&lt;br&gt;
Requirements: Python 3 only. No pip install needed.&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/SankethSubhas/log-analyzer-threat-detector" rel="noopener noreferrer"&gt;https://github.com/SankethSubhas/log-analyzer-threat-detector&lt;/a&gt;&lt;br&gt;
cd log-analyzer-threat-detector&lt;br&gt;
python3 log_analyzer.py — file sample_auth.log&lt;/p&gt;

&lt;p&gt;Sanketh Subhas is a Cybersecurity Analyst with 3.5+ years of experience in SOC operations, GRC, and threat detection.&lt;br&gt;
Portfolio: sankethsubhas.pages.dev | GitHub: github.com/SankethSubhas&lt;/p&gt;

&lt;p&gt;Cybersecurity&lt;br&gt;
Python&lt;br&gt;
Blue Team&lt;br&gt;
Mitre Attack&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>python</category>
      <category>security</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
