<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Shadow Engineering</title>
    <link>https://shadow.engineering/posts/</link>
    <description>Recent content in Posts on Shadow Engineering</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>© 2026 </copyright>
    <lastBuildDate>Sat, 03 Dec 2022 02:49:03 +0000</lastBuildDate><atom:link href="https://shadow.engineering/posts/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Jupyter Notebooks and Pandas for Security Analysis</title>
      <link>https://shadow.engineering/posts/security_analytics_with_pandas/</link>
      <pubDate>Sat, 03 Dec 2022 02:49:03 +0000</pubDate>
      
      <guid>https://shadow.engineering/posts/security_analytics_with_pandas/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;Jupyter Notebooks&#xA;    &lt;div id=&#34;jupyter-notebooks&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#jupyter-notebooks&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Jupyter Notebooks are an interactive way to run python commands alongside documenting with rich text. This means we can methodically execute code, track actions undertaken, and recreate events. While the original intent was mainly directed at data scientists, as you can imagine, this is pretty appealing to security analysts.&lt;/p&gt;&#xA;&lt;p&gt;It doesn&amp;rsquo;t matter whether you&amp;rsquo;re a threat hunter, or a forensic analysis - collecting artefacts from multiple sources, and correlating them is a pretty common process. Jupyter notebooks allow us to do this, record the results and potentially manipulate our data to extrapolate additional information.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>SOC Automation with Inspector Gadget</title>
      <link>https://shadow.engineering/posts/next_time_gadget/</link>
      <pubDate>Sat, 28 May 2022 11:30:03 +0000</pubDate>
      
      <guid>https://shadow.engineering/posts/next_time_gadget/</guid>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;auto&#34;&#xA;    alt=&#34;Inspector Gadget&#34;&#xA;    width=&#34;600&#34;&#xA;    height=&#34;500&#34;&#xA;    src=&#34;https://shadow.engineering/posts/next_time_gadget/inspectorgadget.png&#34;&#xA;    srcset=&#34;https://shadow.engineering/posts/next_time_gadget/inspectorgadget.png 800w, https://shadow.engineering/posts/next_time_gadget/inspectorgadget.png 1280w&#34;&#xA;    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;&#xA;    data-zoom-src=&#34;https://shadow.engineering/posts/next_time_gadget/inspectorgadget.png&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/0x706972686f/inspectorgadget&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Inspector Gadget&lt;/a&gt; is a tool to help SOCs scale and automate augmention of alerts. Whether that&amp;rsquo;s through an analyst leveraging Inspector Gadget directly, or through a Security Orchestration, Automation and Response (SOAR) platform.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s a proxy API endpoint, that can communicate to other API endpoints. This means that given a particular Indicator of Attack (IOA), it can connect to multiple API endpoints for third party services to provide more information and context around it, and help make a better assessment to the validity or malicious nature of it.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s built upon FastAPI and httpx, meaning it&amp;rsquo;s designed with parallelism in mind, then thanks to Celery/Redis it can scale to meet your demands while still maintaining that quick response. Even the core library that maps indicator types to third party API endpoints (&lt;a href=&#34;https://github.com/0x706972686f/ioclib&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ioclib&lt;/a&gt;) is built with asynchronous actions for speed.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Cloud Run Website with GCP</title>
      <link>https://shadow.engineering/posts/cloud_run_website_with_gcp/</link>
      <pubDate>Sat, 23 Apr 2022 11:30:03 +0000</pubDate>
      
      <guid>https://shadow.engineering/posts/cloud_run_website_with_gcp/</guid>
      <description>&lt;p&gt;As I outlined in &lt;a href=&#34;https://shadow.engineering/posts/iterations_of_this_site/&#34; title=&#34;Iterations of this Site&#34;&gt;Iterations of this Site&lt;/a&gt;, a time had come when I wanted to repurpose this domain, and use it to share some of the knowledge I had gained from experimentation and projects I had worked on.&lt;/p&gt;&#xA;&lt;p&gt;A common approach that a lot of people recommend is using a static site generator like &lt;a href=&#34;https://jekyllrb.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jekyll&lt;/a&gt; or &lt;a href=&#34;https://gohugo.io/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Hugo&lt;/a&gt;, pushing that to a &lt;a href=&#34;https://pages.github.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;GitHub Pages&lt;/a&gt; repository and then using &lt;a href=&#34;https://workers.cloudflare.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Cloudflare Workers&lt;/a&gt; to mask that behind a domain name of your choosing.&lt;/p&gt;&#xA;&lt;p&gt;I really liked the approach, and it made some vast improvements over my previous methodology. But it would mean that a lot of the little easter eggs I had developed over the years would be lost.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Iterations of this Site</title>
      <link>https://shadow.engineering/posts/iterations_of_this_site/</link>
      <pubDate>Sat, 23 Apr 2022 11:30:03 +0000</pubDate>
      
      <guid>https://shadow.engineering/posts/iterations_of_this_site/</guid>
      <description>&lt;p&gt;In 2018 I applied for a position at Google, to start the day long series of interviews I got asked one simple question:&lt;/p&gt;&#xA;&lt;blockquote&gt;&lt;p&gt;How would you create a secure web page?&lt;/p&gt;&#xA;&lt;/blockquote&gt;&lt;p&gt;I responded at first about securing the host, implementing SELinux, putting SSH on a high port with a certificate, sticking it behind a WAF. I had started to go into detail about the CI/CD pipeline when I was interrupted by the interviewer asking if I had heard of things such as HSTS and HKPI. I confessed that I hadn&amp;rsquo;t, and knew there must have been a whole world of things that I simply hadn&amp;rsquo;t had exposure to, so I took a mental note to go away, build myself a website and to try and experiment.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Diagnosing Difficult Network Issues</title>
      <link>https://shadow.engineering/posts/diagnosing_difficult_network_issues/</link>
      <pubDate>Mon, 07 Mar 2022 11:30:03 +0000</pubDate>
      
      <guid>https://shadow.engineering/posts/diagnosing_difficult_network_issues/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;Background&#xA;    &lt;div id=&#34;background&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#background&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This is the story of a case I worked a long time ago. At the time I was working in an infrastructure development team. We had a VMWare vCenter 5.5 cluster that started as a prototype, but soon became mission critical (as is the way for those systems sometime). Other than overutilising the hardware with random VMs it had been functioning seemlessly with no issues for a long time, and then developed an interesting fault. The vCenter cluster would disconnect from the storage multiple times an hour.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Easter Eggs</title>
      <link>https://shadow.engineering/posts/easter_eggs/</link>
      <pubDate>Tue, 23 Nov 2021 17:00:00 +1000</pubDate>
      
      <guid>https://shadow.engineering/posts/easter_eggs/</guid>
      <description>&lt;p&gt;As I outlined in &lt;a href=&#34;https://shadow.engineering/posts/iterations_of_this_site/&#34; title=&#34;iterations of this site&#34;&gt;Iterations of this Site&lt;/a&gt;, this website has been a project for me to learn and experiment. As a part of that I&amp;rsquo;ve included 10 easter eggs littered around the site in various places, they&amp;rsquo;re not overly complex, but they provide a chance for others to learn about some of the different elements of the site like I have in building it.&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;ve uncovered all 10 of them, I&amp;rsquo;d love for you to let me know, send me a message to my &lt;a href=&#34;https://twitter.com/0x706972686f&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;twitter&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;For those keen on a bigger challenge, I provide the below. Some bafoon has attempted to encrypt a super sensitive file, but it appears they&amp;rsquo;ve done it in the worst way possible!&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Building my first Keyboard</title>
      <link>https://shadow.engineering/posts/building_my_first_keyboard/</link>
      <pubDate>Tue, 09 Nov 2021 11:30:03 +0000</pubDate>
      
      <guid>https://shadow.engineering/posts/building_my_first_keyboard/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;Background&#xA;    &lt;div id=&#34;background&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#background&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Like many I had grown up with an old IBM keyboard growing up. I&amp;rsquo;ve always appreciated a good keyboard and throughout the years I&amp;rsquo;ve used many brands: logitech, Razer, and Ducky to name a few. So I can&amp;rsquo;t necessarily remember how I discovered the world of custom mechanical keyboards, it could have been that I stumbled onto &lt;a href=&#34;https://old.reddit.com/r/MechanicalKeyboards/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;r/MechanicalKeyboards&lt;/a&gt; or I&amp;rsquo;d found a set of keycaps that peaked my interest.&lt;/p&gt;&#xA;&lt;p&gt;Never the less in October 2019 I discovered GeekHack, a great source for all sorts of custom keyboard components. Specifically this thread on &lt;a href=&#34;https://geekhack.org/index.php?topic=102772.0&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;GMK Dracula&lt;/a&gt; caught my eye. I loved the set, and was a huge fan of the &lt;a href=&#34;https://draculatheme.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Dracula&lt;/a&gt; (if you haven&amp;rsquo;t realised from this site alone).&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Project Chaos</title>
      <link>https://shadow.engineering/posts/project_chaos/</link>
      <pubDate>Sun, 04 Apr 2021 11:30:03 +0000</pubDate>
      
      <guid>https://shadow.engineering/posts/project_chaos/</guid>
      <description>&lt;p&gt;Meet Scarlett Reynolds, a new starting ICT Sales Representative, for a small technology start up named Eigar Technologies, that&amp;rsquo;s based in Sydney, Australia.&#xA;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;auto&#34;&#xA;    alt=&#34;Scarlett&#34;&#xA;    width=&#34;768&#34;&#xA;    height=&#34;768&#34;&#xA;    src=&#34;https://shadow.engineering/posts/project_chaos/scarlett.jpg&#34;&#xA;    srcset=&#34;https://shadow.engineering/posts/project_chaos/scarlett.jpg 800w, https://shadow.engineering/posts/project_chaos/scarlett.jpg 1280w&#34;&#xA;    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;&#xA;    data-zoom-src=&#34;https://shadow.engineering/posts/project_chaos/scarlett.jpg&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;She studied at Arthur Phillip High School in Parramatta, before graduating in a double degree in IT and Business from UTS in 2013. She&amp;rsquo;s a virgo and her first car was a &amp;lsquo;96 Corolla, and she doesn&amp;rsquo;t exist.&lt;/p&gt;&#xA;&lt;p&gt;Neither does Eigar Technologies. In fact, the name Eigar Technologies is a portmanteau of &lt;a href=&#34;https://en.wikipedia.org/wiki/Eiger&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Eiger&lt;/a&gt;, a mountain in the Swiss Alps, and &lt;a href=&#34;https://en.wikipedia.org/wiki/EICAR_test_file&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;EICAR&lt;/a&gt;, the test file associated with Antivirus program validation.&#xA;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;auto&#34;&#xA;    alt=&#34;Logo and Signature&#34;&#xA;    width=&#34;600&#34;&#xA;    height=&#34;150&#34;&#xA;    src=&#34;https://shadow.engineering/posts/project_chaos/sig.gif&#34;&#xA;    srcset=&#34;https://shadow.engineering/posts/project_chaos/sig.gif 800w, https://shadow.engineering/posts/project_chaos/sig.gif 1280w&#34;&#xA;    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;&#xA;    data-zoom-src=&#34;https://shadow.engineering/posts/project_chaos/sig.gif&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Python Debugging with Decorators</title>
      <link>https://shadow.engineering/posts/python_debugging_with_decorators/</link>
      <pubDate>Fri, 06 Nov 2020 11:30:03 +0000</pubDate>
      
      <guid>https://shadow.engineering/posts/python_debugging_with_decorators/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;Decorators&#xA;    &lt;div id=&#34;decorators&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#decorators&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Often times while writing python code you may encounter a logical error, one that won&amp;rsquo;t be caught in compilation or execution, but rather during run time. Perhaps something didn&amp;rsquo;t execute or return as expected, or maybe a function executed and returned the anticipated result, but took an astounding long time to do it.&lt;/p&gt;&#xA;&lt;p&gt;Test driven development will catch these kind of issues as we work, but traditionally a lot of people will just throw a whole lot of  &lt;code&gt;print&lt;/code&gt; statements throughout their code. This could create more issues that we&amp;rsquo;re fixing.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Chaos Analyst</title>
      <link>https://shadow.engineering/posts/chaos_analyst/</link>
      <pubDate>Sat, 01 Feb 2020 00:00:00 +1000</pubDate>
      
      <guid>https://shadow.engineering/posts/chaos_analyst/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;Abstract&#xA;    &lt;div id=&#34;abstract&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#abstract&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;As organisations look to new methodologies to increase, test, and verify resiliency of infrastructure and applications,&#xA;so can SOCs look to new methodologies to validate integrity of logging, tools, platforms, analysis and re-enforce forensic&#xA;tradecraft, as they incorporate automation tools into their arsenals. Chaos Analyst is a new methodology for SOCs which&#xA;looks at implementing scenarios that force analysts to overcome obstacles that impact their ability to address alerts, or&#xA;in more advanced scenarios, validate potentially compromised logs and data. This can be incorporated into red team&#xA;activity to mimic more sophisticated attackers and manipulation, improving the ability of response, the tradecraft and&#xA;preparedness of the SOC in detecting and preventing actors from compromising all elements of the business.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Adventures from the Other Side of Phishing</title>
      <link>https://shadow.engineering/posts/teach_a_man_to_phish/</link>
      <pubDate>Tue, 01 Oct 2019 00:00:00 +1000</pubDate>
      
      <guid>https://shadow.engineering/posts/teach_a_man_to_phish/</guid>
      <description>&lt;h2 class=&#34;relative group&#34;&gt;Background&#xA;    &lt;div id=&#34;background&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#background&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;auto&#34;&#xA;    alt=&#34;Phish Site&#34;&#xA;    width=&#34;968&#34;&#xA;    height=&#34;530&#34;&#xA;    src=&#34;https://shadow.engineering/posts/teach_a_man_to_phish/image1_hu_1bfab189d9c752e4.png&#34;&#xA;    srcset=&#34;https://shadow.engineering/posts/teach_a_man_to_phish/image1_hu_1bfab189d9c752e4.png 800w, https://shadow.engineering/posts/teach_a_man_to_phish/image1.png 1280w&#34;&#xA;    sizes=&#34;(min-width: 768px) 50vw, 65vw&#34;&#xA;    data-zoom-src=&#34;https://shadow.engineering/posts/teach_a_man_to_phish/image1.png&#34;&gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;I know it may be hard to believe, but this poor looking website above is not the legitimate NAB website, it’s a poor mockery of a NABs internet banking portal based off a phishing kit we’ve seen. How do I know this? Because I made it.&lt;/p&gt;&#xA;&lt;p&gt;It stemmed from a weird need, we often need to showcase our phishing capability to seniors in the bank and as a good educational piece to students and employees. Depending on who we’re showcasing to we’re either demonstrating how we respond and manage the risk to customers, or educating users for simple things they can identify to determine the legitimacy. It also helps to showcase the other side of the phishers themselves; a lot of people don’t seem to realise what’s being gathered.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Electric Blue - Lessons from a blue team securing Azure</title>
      <link>https://shadow.engineering/posts/electric_blue/</link>
      <pubDate>Sun, 07 Apr 2019 17:00:00 +1000</pubDate>
      
      <guid>https://shadow.engineering/posts/electric_blue/</guid>
      <description>&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/S-MZRZg-pGo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;p&gt;At the end of 2018, NAB built out it&amp;rsquo;s extensive cloud environment. As a security analyst who had not had a lot of exposure to cloud environments, it provided new challenges and lessons and I wanted to share that with the world. Thanks to Crikeycon and NAB for letting me share those lessons.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Slides:&lt;/strong&gt; &lt;a href=&#34;https://shadow.engineering/posts/electric_blue/electricblue.pdf&#34; &gt;PDF&lt;/a&gt; | &lt;a href=&#34;https://shadow.engineering/posts/electric_blue/electricblue.pptx&#34; &gt;PPXT&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
