<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Suspicious Bytes</title><link>/en/</link><description>Recent content on Suspicious Bytes</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 08 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Writing Your First Sigma Rule</title><link>/en/posts/writing-your-first-sigma-rule/</link><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><guid>/en/posts/writing-your-first-sigma-rule/</guid><description>&lt;p&gt;Sigma is to log detections what YARA is to files: a generic, vendor-neutral way to
describe &lt;em&gt;what&lt;/em&gt; you want to detect, which you then convert into the query language
your SIEM actually speaks.&lt;/p&gt;
&lt;h2 id="why-a-portable-format"&gt;Why a portable format?&lt;/h2&gt;
&lt;p&gt;Detections written directly in one query language are stuck there forever. Sigma
lets you write once and compile to many backends:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One rule, many targets (Splunk, Elastic, Sentinel, …)&lt;/li&gt;
&lt;li&gt;Reviewable in pull requests like any other code&lt;/li&gt;
&lt;li&gt;Shareable with the community without leaking your stack&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;A detection you cannot test, version, and review is a liability, not an asset.&lt;/p&gt;</description></item><item><title>Detecting Lateral Movement</title><link>/en/posts/detecting-lateral-movement/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/detecting-lateral-movement/</guid><description>&lt;p&gt;Once an attacker has a foothold, the interesting part begins: moving from the
first host toward whatever they actually came for. That east-west movement leaves
traces if you know which events to join.&lt;/p&gt;
&lt;h2 id="signals-worth-joining"&gt;Signals worth joining&lt;/h2&gt;
&lt;p&gt;Lateral movement rarely shows up as a single smoking-gun event. It emerges from
correlation:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Network logon events (&lt;code&gt;4624&lt;/code&gt; type 3) from unusual sources&lt;/li&gt;
&lt;li&gt;Service or scheduled-task creation on the destination&lt;/li&gt;
&lt;li&gt;Remote process creation shortly after&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;Correlate across hosts, not just within one. A single &lt;code&gt;4624&lt;/code&gt; is noise; a chain
of them following an account around the estate is a story.&lt;/p&gt;</description></item><item><title>Anatomy of a Phishing Incident</title><link>/en/posts/anatomy-of-a-phishing-incident/</link><pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/anatomy-of-a-phishing-incident/</guid><description>&lt;p&gt;Most intrusions still start with someone clicking a link. This is a sanitised
walk-through of a credential-phishing case and the timeline that mattered.&lt;/p&gt;
&lt;h2 id="the-timeline"&gt;The timeline&lt;/h2&gt;
&lt;p&gt;Incident response lives and dies by an accurate timeline. Reconstruct it before
you theorise:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;08:42&lt;/strong&gt; — user reports a &amp;ldquo;mailbox full&amp;rdquo; email&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;08:55&lt;/strong&gt; — same template seen by twelve other recipients&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09:10&lt;/strong&gt; — one set of credentials submitted to the fake portal&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;09:13&lt;/strong&gt; — successful logon from a foreign ASN&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;The goal of triage is not to find everything. It is to answer one question fast:
did anything actually succeed?&lt;/p&gt;</description></item><item><title>Triaging Suspicious PowerShell</title><link>/en/posts/triaging-suspicious-powershell/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/triaging-suspicious-powershell/</guid><description>&lt;p&gt;An encoded PowerShell command in your process logs is not automatically malicious,
but it always deserves a closer look. Here is how to triage one calmly.&lt;/p&gt;
&lt;h2 id="what-raises-the-flag"&gt;What raises the flag&lt;/h2&gt;
&lt;p&gt;Certain flag combinations are unusual for a legitimate script and common for
tradecraft:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-EncodedCommand&lt;/code&gt; (base64 payloads)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-WindowStyle Hidden&lt;/code&gt; and &lt;code&gt;-NonInteractive&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-ExecutionPolicy Bypass&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Decoding a payload is reading, not running. Decode in an isolated environment and
never paste an unknown command back into a live shell.&lt;/p&gt;</description></item><item><title>OSINT for Beginners</title><link>/en/posts/osint-for-beginners/</link><pubDate>Sun, 03 May 2026 00:00:00 +0000</pubDate><guid>/en/posts/osint-for-beginners/</guid><description>&lt;p&gt;Open-source intelligence is the practice of collecting information from publicly
available sources — and a surprising amount of an organisation&amp;rsquo;s footprint is
sitting in plain sight.&lt;/p&gt;
&lt;h2 id="where-to-start"&gt;Where to start&lt;/h2&gt;
&lt;p&gt;Begin with the passive sources that never touch the target directly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Public DNS and WHOIS records&lt;/li&gt;
&lt;li&gt;Certificate transparency logs&lt;/li&gt;
&lt;li&gt;Cached pages and archives&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;The goal of OSINT is not to break in. It is to understand a footprint using only
what someone has already published.&lt;/p&gt;</description></item><item><title>Building a Threat Actor Profile</title><link>/en/posts/building-a-threat-actor-profile/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate><guid>/en/posts/building-a-threat-actor-profile/</guid><description>&lt;p&gt;Cyber threat intelligence is only useful when it changes a decision. A good actor
profile turns scattered observations into something a defender can act on this
week, not just read.&lt;/p&gt;
&lt;h2 id="structure-beats-prose"&gt;Structure beats prose&lt;/h2&gt;
&lt;p&gt;A profile that reads like a story is hard to operationalise. Capture it as
structured fields instead:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aliases and overlapping clusters&lt;/li&gt;
&lt;li&gt;Targeted sectors and regions&lt;/li&gt;
&lt;li&gt;Observed techniques (mapped to ATT&amp;amp;CK)&lt;/li&gt;
&lt;li&gt;Known infrastructure patterns&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Intelligence without a confidence level is just a rumour with good formatting.
State what you know, how well you know it, and how you&amp;rsquo;d be proven wrong.&lt;/p&gt;</description></item><item><title>Getting started with Threat Hunting with a minimal approach</title><link>/en/posts/starting-with-threathunting/</link><pubDate>Sat, 27 Sep 2025 00:00:00 +0000</pubDate><guid>/en/posts/starting-with-threathunting/</guid><description>&lt;h2 id="start-hunting-today"&gt;Start Hunting Today!&lt;/h2&gt;
&lt;p&gt;Threat hunting doesn&amp;rsquo;t require enterprise tools. You can simply start with what you already have.&lt;/p&gt;
&lt;h3 id="minimum-requirements"&gt;Minimum Requirements&lt;/h3&gt;
&lt;p&gt;Start with things you probably already have. Work from there, and then think about improving and growing.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Centralized logging&lt;/strong&gt; (Sysmon, firewall, proxy logs)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query capability&lt;/strong&gt; (ELK, Splunk, or even grep)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Baseline knowledge&lt;/strong&gt; of your network&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2-4 hours per week&lt;/strong&gt; of dedicated hunting time&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Baselining is the hardest part for beginners, so start small. Pick one thing you can describe as &amp;ldquo;normal&amp;rdquo; (which hosts talk to the internet, which accounts run as admin, what runs at startup) and write it down. That single baseline becomes the yardstick for your first hunts.&lt;/p&gt;</description></item></channel></rss>