<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Posts on buildTogether</title>
    <link>https://me.webbhome.net/posts/</link>
    <description>Recent content in Posts on buildTogether</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 27 Oct 2025 02:44:52 +0000</lastBuildDate><atom:link href="https://me.webbhome.net/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Detecting Impacket with Elastic Security</title>
      <link>https://me.webbhome.net/posts/detecting_impacket/</link>
      <pubDate>Mon, 27 Oct 2025 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/detecting_impacket/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Familiarity with Elasticsearch ESQL, General Threat Knowledge&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Impacket is a suite of tools that enables threat actors to remotely execute commands. Written in Python, it crafts network packets that allow interaction with popular Windows network protocols found in corporate environments, like SMB and WMI. Threat intelligence evidences continuous usage of the tool by threat actors, providing an execution technique and has been observed deploying ransomware; Impacket actually reached the 2nd most prevalent threat in Red Canary&amp;rsquo;s 2023 threat report. Threat actors likely favour it because Impacket enables programmatic interaction with devices and easy integration with other items in their nefarious toolkit.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Detecting dMSA abuse</title>
      <link>https://me.webbhome.net/posts/detecting_dmsa_abuse/</link>
      <pubDate>Sun, 25 May 2025 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/detecting_dmsa_abuse/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Familiarity with KQL&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Full Credit goes to &lt;a href=&#34;https://www.akamai.com/blog?author=yuval-gordon&#34;&gt;Yuval Gordon&lt;/a&gt; at Akamai for discovery of this. This post is a summarisation and an extension of their initial article: &lt;a href=&#34;https://www.akamai.com/blog/security-research/abusing-dmsa-for-privilege-escalation-in-active-directory#domination&#34;&gt;BadSuccessor: Abusing dMSA to Escalate Privileges in Active Directory&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows Server 2025 was released last year. With it, came a brand new account type: &lt;a href=&#34;https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/manage/delegated-managed-service-accounts/delegated-managed-service-accounts-overview&#34;&gt;Delegated Managed Service Accounts&lt;/a&gt;, dMSA. dMSA accounts are designed as a more secure approach to service accounts with the headlining features being self-rotating password management and the ability to lock access down to specific computers within Active Directory.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Using a VPS to expose public services with iptables</title>
      <link>https://me.webbhome.net/posts/iptablessnat/</link>
      <pubDate>Mon, 28 Apr 2025 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/iptablessnat/</guid>
      <description>&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Linux, iptables (&lt;em&gt;Implied medium knowledge in both&lt;/em&gt;)&lt;/p&gt;
&lt;h2 id=&#34;why&#34;&gt;Why?&lt;/h2&gt;
&lt;p&gt;Unfortunately some ISP (Internet Service Provider)s do not delegate every customer a public IP address. In these situations an ISP will typically rely on &lt;a href=&#34;https://en.wikipedia.org/wiki/Carrier-grade_NAT&#34;&gt;Carrier Grade NAT (CGNAT)&lt;/a&gt; to place multiple customers under one public IP that the customer has no control over. This can have the advantage of the ISP needing less public address space, but typically comes at the cost of the customer not being able to host public services or having issues with NAT (Network Address Translation).&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Looking for COM Hijacking with Splunk and Sysmon</title>
      <link>https://me.webbhome.net/posts/splunk_com_hijacking/</link>
      <pubDate>Mon, 31 Mar 2025 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/splunk_com_hijacking/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Splunk&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I will admit there wasn&amp;rsquo;t much I could do to make this a prettier title. Today&amp;rsquo;s content might be niche; it has involved me using Splunk (which I am still relatively new to) and is actually a &amp;rsquo;transposition&amp;rsquo; of a query I&amp;rsquo;ve done fairly quickly within KQL.&lt;/p&gt;
&lt;p&gt;First and foremost, this post assumes you have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Splunk instance&lt;/li&gt;
&lt;li&gt;Sysmon ingestion to Splunk&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A massive thanks to Hurricane Labs who has written a fantastic guide on &lt;a href=&#34;https://hurricanelabs.com/splunk-tutorials/splunking-with-sysmon-series-part-1-the-setup/.&#34;&gt;how to get Sysmon logs into Splunk&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Threat Hunting for AppData Installations</title>
      <link>https://me.webbhome.net/posts/appdata_installs/</link>
      <pubDate>Mon, 17 Feb 2025 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/appdata_installs/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Medium understanding of KQL concepts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Microsoft Sentinel, Defender for Endpoint&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This posts assumes that you have Defender for Plan 2 to log AdvancedHunting events.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Has it ever occurred to you when installing software why you didn&amp;rsquo;t get prompted for administrator privileges? Many people live under a guise that to install software, they &amp;rsquo;need&amp;rsquo; a privileged account. This isn&amp;rsquo;t always the case. In fact, one of the worlds most popular browsers, Google Chrome (and therefore most of it&amp;rsquo;s Chromium brothers) do not need any special privileges to install.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Scroll Height in Javascript</title>
      <link>https://me.webbhome.net/posts/scrollheight/</link>
      <pubDate>Sun, 16 Feb 2025 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/scrollheight/</guid>
      <description>&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Javascript&lt;/p&gt;
&lt;p&gt;Today I learnt that on some browsers you can scroll to the end of a HTML element and Javascript can report the .scrollTop to within 0.5 of the true height of the element. I discovered this when chasing down a bug with infinite list scrolling, where it would randomly stop. Clocked it would only stop when the current scroll height ended in .5. I suspect this is something to do with rounding errors for high DPI displays.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Detecting &#39;Paste and Run&#39; malware with KQL</title>
      <link>https://me.webbhome.net/posts/paste_and_run_malware/</link>
      <pubDate>Sat, 11 Jan 2025 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/paste_and_run_malware/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Medium understanding of KQL concepts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Microsoft Sentinel, Defender for Endpoint&lt;/p&gt;
&lt;p&gt;Paste and run malware slowly started gaining prevalence towards the end of 2024. It often convinces users to use the &amp;lsquo;Run&amp;rsquo; prompt (Windows + R) key and copies a malicious command to the clipboard for them to paste and run. It&amp;rsquo;s a simple; easy to distribute via multiple methods and with the rise of generative A.I, unchallenging to generate something that looks convincing:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Threat Hunt: Detecting abuse of refresh tokens obtained from Intune</title>
      <link>https://me.webbhome.net/posts/intune_access_refresh/</link>
      <pubDate>Wed, 25 Dec 2024 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/intune_access_refresh/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Strong understanding of KQL concepts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Microsoft Sentinel&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATED WITH REFINED DETECTION BELOW&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m reading a lot of chatter on using the Intune Company Portal to get a hashtag Entra ID refresh token and then bypassing Conditional Access to run other Entra attack tools. I tested a POC &lt;a href=&#34;https://github.com/zh54321/PoCEntraDeviceComplianceBypass&#34;&gt;POCEntraDeviceComplianceBypass&lt;/a&gt; and used the Intune token to retrieve another one. Here&amp;rsquo;s a very rough KQL detection below where we look for Intune and something else in a 10 minute window:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Detecting Atypical Travel with KQL and Sentinel</title>
      <link>https://me.webbhome.net/posts/atypical_travel_kql/</link>
      <pubDate>Sun, 17 Nov 2024 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/atypical_travel_kql/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Strong understanding of KQL concepts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Microsoft Sentinel&lt;/p&gt;
&lt;p&gt;Recently, there has been a dramatic shift in needing to protect the identity when organisations evaluate their biggest cybersecurity risk. Increasing popularity in capabilities like SSO (Single Sign-On) now mean one compromised account will grant an attacker access into many systems and allow them to laterally move across a technology stack. Notably throughout my SOC investigations in 2024, the majority of email-based phishing attacks that evade detection filters leveraged a 3rd party compromised account, exploiting the fact that two companies have an existing trust and relationship with one another.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Sentinel Workspace Function for &#39;sudo&#39; commands</title>
      <link>https://me.webbhome.net/posts/sentinel_wkspc_sudo_funct/</link>
      <pubDate>Sun, 27 Oct 2024 18:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/sentinel_wkspc_sudo_funct/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Minimal&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Sentinel&lt;/p&gt;
&lt;p&gt;Today&amp;rsquo;s post is going to be basic, but hopefully you will get the idea of how you can incorporate using Workspace Functions in your every-day workflows. The primary reason of having Worksapce Functions is that they allow you build queries and then save them in a manner that can easily be re-called in the KQL editor. This can be great for logs which require complex parsing or queries to make them more useful.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Monitoring Proxmox Hosts with Defender</title>
      <link>https://me.webbhome.net/posts/promox_monitoring_defender/</link>
      <pubDate>Sun, 01 Sep 2024 18:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/promox_monitoring_defender/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Minimal&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Defender for Endpoint, Proxmox&lt;/p&gt;
&lt;p&gt;Those who have come across my LinkedIn are aware that I&amp;rsquo;m a bit of a Proxmox fan. Proxmox typically runs on top of Debian and so this allows for plenty of tinkering&amp;hellip; including installing Defender for Endpoint. While I would generally discourage this in a production environment without plenty of testing, there are some events in my homelab that I believe are useful to monitor. Using the below KQL, either as threat hunts or analytical rules, should provide some indication that somebody is performing a series of high-profile activities on your PVE environment.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>[Threat Hunt] &#39;Recalling&#39; suspicious activity</title>
      <link>https://me.webbhome.net/posts/defender_recall_threathunt/</link>
      <pubDate>Fri, 07 Jun 2024 18:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/defender_recall_threathunt/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Minimal&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Defender for Endpoint, Windows 11, Microsoft Recall&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;: Microsoft has since provided updates that Recall will use more modern security methods, such as Windows Hello just-in-time decryption. Users will not be able to use Recall without a user AND admin initiated action.&lt;/p&gt;
&lt;p&gt;Those in the security space will be well aware of Microsoft&amp;rsquo;s recent announcement for Recall. The tool, soon to be released for new Snapdragon based PC&amp;rsquo;s, takes regular screenshots of user activity.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>[Threat hunt] Detecting Possible USB Data Exfiltration</title>
      <link>https://me.webbhome.net/posts/dlp_usb_exfiltration/</link>
      <pubDate>Sun, 02 Jun 2024 18:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/dlp_usb_exfiltration/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Minimal&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Defender for Endpoint&lt;/p&gt;
&lt;p&gt;EDR continues to be the Swiss Army Knife of an analyst, collecting valuable telemetry on an immense scale. Today we&amp;rsquo;re going to use Defender&amp;rsquo;s telemetry and the power of KQL to look for a commonly overlooked risk; insider threat.&lt;/p&gt;
&lt;p&gt;Today&amp;rsquo;s query uses two main components of Defender&amp;rsquo;s telemetry to detect if somebody is exfiltrating by physical USB media. The tables used to achieve this:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>[Threat hunt] GitHub File Downloads</title>
      <link>https://me.webbhome.net/posts/github_threathunt/</link>
      <pubDate>Thu, 02 May 2024 18:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/github_threathunt/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Minimal&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Defender for Endpoint&lt;/p&gt;
&lt;p&gt;Seems once again that GitHub is under fire for it&amp;rsquo;s ability to distribute malware. This time a researcher had found that you could make it looks like legitimate files where being hosted by the repository owner, by uploading it to Github in this story &lt;a href=&#34;https://www.bleepingcomputer.com/news/security/github-comments-abused-to-push-malware-via-microsoft-repo-urls/&#34;&gt;story&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can see Defender inspect files downloaded from GitHub as a start. Generally, software directly downloaded from GitHub won&amp;rsquo;t be used in corporate environments and so this can be considered suspicious. Unfortunately, I still can&amp;rsquo;t find a way to track the actual download URL back to the original GitHub repository, as the download link is randomised.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>[Threat hunt] Curl Version</title>
      <link>https://me.webbhome.net/posts/curl_threahunt/</link>
      <pubDate>Sun, 08 Oct 2023 18:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/curl_threahunt/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Minimal&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Ansible&lt;/p&gt;
&lt;p&gt;Curl, a popular Linux command line tool for interacting with the web was determined to contain a critical vulnerability this week. It&amp;rsquo;s wide array of supported web protocols means this software is commonplace (especially with developers) with many Linux distributions including it as default. &lt;a href=&#34;https://blog.qualys.com/vulnerabilities-threat-research/2023/10/05/curl-8-4-0-proactively-identifying-potential-vulnerable-assets#what-are-curl-vulnerabilities-cve-2023-38545-cve-2023-38546&#34;&gt;QualysLink&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As such, it&amp;rsquo;s time to start identifying which systems have the curl package and their versions. Those making use of the popular Linux management tool, Ansible, can use the below playbook.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Sending syslog through the Azure Monitor Agent</title>
      <link>https://me.webbhome.net/posts/syslog_ama/</link>
      <pubDate>Sun, 13 Aug 2023 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/syslog_ama/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Familiarity with Sentinel and Azure Arc&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Linux derivative (this example uses Debian)&lt;/p&gt;
&lt;p&gt;There is a high chance that if you&amp;rsquo;ve setup a Linux server to syslog into Sentinel in the past 12 months, that you&amp;rsquo;ve installed the Log Analytics Agent to send data to Sentinel. Come August 2024, the log analytics agent (or MMA) will be retired and it is important to start thinking about a migration plan now. More information can be found &lt;a href=&#34;https://azure.microsoft.com/en-us/updates/were-retiring-the-log-analytics-agent-in-azure-monitor-on-31-august-2024/&#34;&gt;here&lt;/a&gt;. This is a quick blog post on what I learnt while migrating my Sentinel syslog feed from MMA to Azure Monitor Agent.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Always use absolute paths in scripts</title>
      <link>https://me.webbhome.net/posts/use_full_oaths_scripts/</link>
      <pubDate>Sat, 10 Jun 2023 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/use_full_oaths_scripts/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Low&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;ve arrived on this site, you&amp;rsquo;ve probably fallen guilty to writing scripts without using absolute paths. Why not? After all, it&amp;rsquo;s far easier to just type &lt;code&gt;uname&lt;/code&gt; in your shell scripts instead of &lt;code&gt;/usr/bin/uname&lt;/code&gt;. Today&amp;rsquo;s post will highlight why this is poor secure coding practice, and how it could potentially lead to exploitation as a result.&lt;/p&gt;
&lt;h2 id=&#34;path-poisoning&#34;&gt;Path poisoning&lt;/h2&gt;
&lt;p&gt;To understand how attackers can exploit this coding laziness, we first need a bit of background into how most shells use a path. Take the scenario where your script includes a common linux command like &lt;code&gt;uname&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Using KQL anomaly detection to help surface suspicious logins</title>
      <link>https://me.webbhome.net/posts/kql_anomaly_ssh_session/</link>
      <pubDate>Thu, 16 Mar 2023 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/kql_anomaly_ssh_session/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Strong understanding of KQL concepts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Microsoft Sentinel&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This posts assumes that you have the &lt;code&gt;Syslog&lt;/code&gt; table enabled in your Sentinel Workspace.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In &lt;a href=&#34;../posts/kql_ssh_lateral_movement/&#34;&gt;previous blog posts&lt;/a&gt; we&amp;rsquo;ve gone through detecting suspicious credential usage via more traditional &amp;lsquo;factual&amp;rsquo; query rules. Purely factual query rules, that don&amp;rsquo;t account for if the detected behavior is &lt;em&gt;anomalous&lt;/em&gt;, usually present the following problems for SOC operations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The query will often require a lot of tuning for &amp;lsquo;known behaviors&amp;rsquo; and can be time consuming to identify correct tuning parameters&lt;/li&gt;
&lt;li&gt;Factual rules can commonly give little context into if the events detected are &lt;em&gt;normal&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Today, we&amp;rsquo;ll introduce native KQL anomaly detection algorithms to help detect suspicious increases in user session behavior, indicating potentially compromised accounts. Anomaly detection is great for this as any malicious behavior should always cause a deviation from the &amp;rsquo;normal&amp;rsquo; baseline of behavior. We just need to write a query to pick up on it. Today we&amp;rsquo;ll be doing that against Linux Syslog data. If you want to just skip to the the fully query, click &lt;a href=&#34;../posts/kql_anomaly_ssh_session/#finished-query&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Using Automated Responses and Playbooks to enrich Sentinel incidents</title>
      <link>https://me.webbhome.net/posts/kql_enrichment_from_incident/</link>
      <pubDate>Sun, 20 Nov 2022 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/kql_enrichment_from_incident/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Strong Sentinel Knowledge&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Microsoft Sentinel, Microsoft Azure Portal; &lt;strong&gt;ideally with GA access&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id=&#34;introduction&#34;&gt;Introduction&lt;/h1&gt;
&lt;p&gt;Investigating incidents take time. This is because an analyst has to gather a reasonable about of information before they can make an informed decision on if an alert is actually a threat. This begs the question: if an analyst does the same series of steps for every investigation, how can we make the workflow more efficient? This is something Microsoft wants you to do with Automated Responses.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Detecting successful SSH bruteforce attempts in Sentinel</title>
      <link>https://me.webbhome.net/posts/kql_ssh_lateral_movement/</link>
      <pubDate>Sun, 16 Oct 2022 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/kql_ssh_lateral_movement/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Familiarity with Sentinel&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Microsoft Sentinel&lt;/p&gt;
&lt;p&gt;When an attacker gains foothold in your network, which hopefully they never do, it is common they try to immediately see what they have access to. One technique is credential access where an attacker will bruteforce a system in order to find a successful username and password combination. This behavior is typically noisy and many security platforms have detections for this behavior but mass failed authentication doesn&amp;rsquo;t just mean a bruteforce is occurring and can sometimes occur due to misconfiguration. In order to reduce alert fatigue, what an analyst really wants to know is if an attacker has gained access to the system as a result of a bruteforce. Today, we&amp;rsquo;re going to explore how we can detect that behavior via SSH logs within the Sentinel platform.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Configure a Syslog server using Rsyslog</title>
      <link>https://me.webbhome.net/posts/setup_rsyslog_server/</link>
      <pubDate>Thu, 25 Aug 2022 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/setup_rsyslog_server/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Comfortable in a Linux shell&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Linux derivative (this example uses Debian)&lt;/p&gt;
&lt;p&gt;Syslog is a common transport for sending application or security logs over a network. It&amp;rsquo;s more than likely that you want to aggregate all these syslog feeds into a central location so you can manage them effectively. Commonly this is done for security operations so that these feeds can be passed onto a platform such as a SIEM to identify suspicious behaviors within logs.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Show a dynamic loading message with VueJS reactivity on your components</title>
      <link>https://me.webbhome.net/posts/loading_msg_vuejs/</link>
      <pubDate>Thu, 11 Aug 2022 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/loading_msg_vuejs/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;A few hours of VueJS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; VueJS&lt;/p&gt;
&lt;p&gt;When you have a page or component that loads dynamic data (such as from an API), it&amp;rsquo;s important to communicate to the end user that the your page is busy loading content. It can also be used as a protection mechanism for making sure users can&amp;rsquo;t do actions until you&amp;rsquo;re ready. For example, if you have a component which updates user details, you first want to ensure that you&amp;rsquo;ve loaded the user details into the page before allowing them the opportunity to submit any updates.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>OpenMediaVault - Update existing users home location after data migration</title>
      <link>https://me.webbhome.net/posts/move_home_folder_omv/</link>
      <pubDate>Mon, 30 May 2022 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/move_home_folder_omv/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Low&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; OpenMediaVault (6.0)&lt;/p&gt;
&lt;p&gt;OpenMediaVault is a powerful NAS application which allows users to make files available on the network. In my use case, I have used it for some time and needed to migrate data from one drive to another. However, upon migration, despite changing the home folder location within the GUI, the underlying Linux system will not automatically update the location of user&amp;rsquo;s home folders.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Creating banner notifications in Javascript </title>
      <link>https://me.webbhome.net/posts/makenotification_javascript/</link>
      <pubDate>Wed, 16 Feb 2022 18:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/makenotification_javascript/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Moderate&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Javascript&lt;/p&gt;
&lt;p&gt;I recently found myself in the Azure portal where there&amp;rsquo;s an informative dialog which tells you when a change has been made and then disappears. This led me to wonder how I could write my own version in Javascript. This post is going to be fairly fast paced as it will require you to have basic knowledge of Javascript but don&amp;rsquo;t worry, you should be able to get away with copy and pasting code listed below and then customizing afterwards.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Control and monitor systemd services from Ansible</title>
      <link>https://me.webbhome.net/posts/ansible_systemd/</link>
      <pubDate>Mon, 07 Feb 2022 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/ansible_systemd/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Moderate&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Ansible&lt;/p&gt;
&lt;p&gt;Ansible is a fantastic way to run remote commands in a scaleable manner, such as commands for health check monitoring. One of the things you may wish to monitor is systemd services. Unless you&amp;rsquo;re a real hipster, the chances are that if you&amp;rsquo;re running Linux, your services are managed by systemd.&lt;/p&gt;
&lt;h2 id=&#34;the-code&#34;&gt;The code&lt;/h2&gt;
&lt;p&gt;Lets take a look at how we can manage systemd services in Ansible, through an Ansible task:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Python: optimise reading key values in Python dictionaries</title>
      <link>https://me.webbhome.net/posts/optimise_dict_keyvalues/</link>
      <pubDate>Wed, 12 Jan 2022 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/optimise_dict_keyvalues/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Moderate&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Python&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;#the-results&#34;&gt;Skip To Results&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Working with Python dictionaries doesn&amp;rsquo;t have to boring! For those who are new here, dictionary objects store their data in [key,value] pairs. Getting data from a dictionary is fairly simple and most tutorials will show you something like:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;my_dict={&amp;#34;mykey&amp;#34;:&amp;#34;myvalue&amp;#34;}
#to get the value of &amp;#34;mykey&amp;#34; you&amp;#39;d do the following
value=my_dict[&amp;#34;mykey&amp;#34;]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The above only works if you know that the key named &amp;ldquo;mykey&amp;rdquo; is in your dictionary. If you tried to request a key which wasn&amp;rsquo;t present in the dictionary, you&amp;rsquo;d get something that looked like the following:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Configure custom index patterns in Filebeat</title>
      <link>https://me.webbhome.net/posts/configure_custom_index_logstash/</link>
      <pubDate>Sat, 01 Jan 2022 02:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/configure_custom_index_logstash/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Little&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Elasticsearch, Logstash&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re running Elasticsearch, there are many ways to get data in. One popular option is Filebeat.&lt;/p&gt;
&lt;p&gt;By default, Filebeat will submit logs to an index which contains the phrase &amp;lsquo;Filebeat&amp;rsquo; and also includes the verion number. Similar to:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;../posts_res/configure_custom_index_logstash/index.png#center&#34; alt=&#34;list&#34;  /&gt;

&lt;em&gt;Screenshot of Kibana (Data -&amp;gt; Index Management)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The default behaviour is that Filebeat will create an index name specified in the config if it doesn&amp;rsquo;t exist, so we don&amp;rsquo;t need to worry about manually creating the index in Elastcisearch!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Kibana &amp; Elastic: index and pattern creation</title>
      <link>https://me.webbhome.net/posts/create_kibana_indexpattern_api/</link>
      <pubDate>Sat, 01 Jan 2022 00:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/create_kibana_indexpattern_api/</guid>
      <description>&lt;p&gt;&lt;em&gt;Knowledge Required:&lt;/em&gt; &lt;strong&gt;Moderate&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tools required:&lt;/em&gt; Elasticsearch, Kibana, curl&lt;/p&gt;
&lt;p&gt;Before you can search documents in Kibana, there are a couple of things you&amp;rsquo;ll need to get going. One of those is telling Kibana which data it should run your search against. As a quick recap, Kibana requires a backend collection of data to search and this is done through Elasticsearch. Architecturally, this usually looks something like:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[ElasticSearch:9200] &amp;lt;-----&amp;gt; [Kibana:5601]
&lt;/code&gt;&lt;/pr</description>
    </item>
    
    <item>
      <title>Sending HTML forms in the background with JavaScript</title>
      <link>https://me.webbhome.net/posts/send_htmlform_background/</link>
      <pubDate>Thu, 30 Dec 2021 18:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/send_htmlform_background/</guid>
      <description>&lt;p&gt;Typically when you have a HTML form, the objective is to send data to a seperate page to handle the form contents. By default, you&amp;rsquo;ll get redirected to the destination page which isn&amp;rsquo;t always helpful. Analytics tracking or file uploads may wish to occur in the background without redirecting the user. We can have this behaviour with some help from JavaScript!&lt;/p&gt;
&lt;h2 id=&#34;setting-up-a-form&#34;&gt;Setting up a form:&lt;/h2&gt;
&lt;p&gt;When you set up a form, you&amp;rsquo;ll probably have something which looks a bit like this:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>$(cat about_me.md)</title>
      <link>https://me.webbhome.net/posts/about_me/</link>
      <pubDate>Wed, 29 Dec 2021 18:44:52 +0000</pubDate>
      
      <guid>https://me.webbhome.net/posts/about_me/</guid>
      <description>&lt;h1 id=&#34;who-am-i&#34;&gt;Who am I?&lt;/h1&gt;
&lt;p&gt;I spend my personal time engineering and my professional time in Cybersecurity. College introduced me to coding with visual basic and ever since then, I&amp;rsquo;ve learnt from building things, so it&amp;rsquo;s how I spent most of my time. I am motivated by overcoming a new technical challenge and I hope that shows by the range of tools you&amp;rsquo;ll see me use in my current (and future!) posts.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
