<?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 Caladan</title>
    <link>https://droogy.tech/post/</link>
    <description>Recent content in Posts on Caladan</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 03 Aug 2022 04:10:59 +0000</lastBuildDate><atom:link href="https://droogy.tech/post/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How to Create a MISP Feed from a Greynoise Trend</title>
      <link>https://droogy.tech/post/gntrendsandmisp/</link>
      <pubDate>Wed, 03 Aug 2022 04:10:59 +0000</pubDate>
      
      <guid>https://droogy.tech/post/gntrendsandmisp/</guid>
      <description>Introduction GreyNoise Trends are a feature offered on the platform which allows us to track IPs associated with a particular activity, exploit, or tool. These trends can also be benign or malicious. GreyNoise recently created a feature allowing users to utilize dynamic blocklists based on a particular trend.
For example, let&amp;rsquo;s say I wanted to track the latest exploit, CVE-2022-26138 (Hardcoded Confluence Password). As long GreyNoise has already created a tag for this CVE (which they have), I can access a URL that contains a list of IPs associated with this activity in a rolling 24-hour window.</description>
      <content>&lt;h1 id=&#34;introduction&#34;&gt;Introduction&lt;/h1&gt;
&lt;p&gt;GreyNoise Trends are a feature offered on the platform which allows us to track IPs associated with a particular activity, exploit, or tool. These trends can also be benign or malicious. GreyNoise recently created a feature allowing users to utilize dynamic blocklists based on a particular trend.&lt;/p&gt;
&lt;p&gt;For example, let&amp;rsquo;s say I wanted to track the latest exploit, CVE-2022-26138 (Hardcoded Confluence Password). As long GreyNoise has already created a tag for this CVE (which they have), I can access a URL that contains a list of IPs associated with this activity in a rolling 24-hour window.&lt;/p&gt;
&lt;p&gt;These URLs containing the blocklists are meant to be utilized by firewalls which can proactively block these IPs in real-time, but MISP is also able to automate collections from remote URLs.&lt;/p&gt;
&lt;h1 id=&#34;getting-unique-greynoise-trend-url&#34;&gt;Getting Unique GreyNoise Trend URL&lt;/h1&gt;
&lt;p&gt;Before we create our feed in MISP, we first need to retrieve the URL for the GreyNoise trend that also utilizes a unique key for our account (not the same as your API key).&lt;/p&gt;
&lt;p&gt;Go to the &lt;a href=&#34;https://viz.greynoise.io/trends&#34;&gt;GreyNoise Trends page&lt;/a&gt; and choose a tag that you are interested in, for this tutorial we&amp;rsquo;ll use the vulnerability we referenced before (CVE-2022-26138), which can be found &lt;a href=&#34;https://viz.greynoise.io/tag/atlassian-questions-for-confluence-hardcoded-password-attempt&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once you&amp;rsquo;re on the page for the tag you just need to click &amp;ldquo;Block at Firewall&amp;rdquo;, and we&amp;rsquo;ll get a panel that contains our unique URL. Copy this URL because you will need it for the next part.
&lt;img src=&#34;https://droogy.tech/img/gn_trends_3.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;creating-the-feed-in-misp&#34;&gt;Creating the Feed in MISP&lt;/h1&gt;
&lt;p&gt;First, we&amp;rsquo;re going to log into MISP and go to create a new feed; Sync Actions -&amp;gt; List Feeds -&amp;gt; Add Feed.&lt;br&gt;
&lt;img src=&#34;https://droogy.tech/img/gn_trends_4.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Now, we just need to add our configuration details to the new feed. Feel free to fill it out however you like but I&amp;rsquo;ll provide a template below:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Enabled = Y
Caching enabled = Y
Lookup visible = Y
Name = &amp;quot;Greynoise: Exploiting Confluence Hardcoded Credentials&amp;quot;
Provider = &amp;quot;Greynoise&amp;quot;
Input Source = &amp;quot;Network&amp;quot;
URL = &amp;quot;https://api.greynoise.io/v3/tags/18ac439f-c0b6-4d98-afcf-24de74d9b169/ips?format=txt&amp;amp;token=&amp;lt;unique key&amp;gt;&amp;quot;
Source Format = &amp;quot;Freetext Parsed Feed&amp;quot;
Creator organisation = &amp;quot;&amp;lt;Select your default MISP org&amp;gt;&amp;quot;
Target Event = &amp;quot;Fixed Event&amp;quot;
Target Event ID = &amp;lt;Leave Blank&amp;gt;
Auto Publish = Y
Delta Merse = Y
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Once you&amp;rsquo;re happy with the feed configuration, now we will want to cache the feed; this will initiate a pull for all IoCs from our blocklist and also create the event where all of this data will live in MISP.&lt;br&gt;
&lt;img src=&#34;https://droogy.tech/img/gn_trends_2.png&#34; alt=&#34;&#34;&gt;&lt;br&gt;
Give it a minute and you should see the new event is created and slowly populating with IoCs! Assuming you have automation set up on the MISP server, this event will be refreshed regularly.&lt;br&gt;
&lt;img src=&#34;https://droogy.tech/img/gn_trends_1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Find a tag on GreyNoise you are interested in.&lt;/li&gt;
&lt;li&gt;Get  unique URL blocklist from the Trends page corresponding to the tag you&amp;rsquo;ve chosen.&lt;/li&gt;
&lt;li&gt;Configure a new free-text feed in MISP using the URL you retrieved before.&lt;/li&gt;
&lt;li&gt;Cache feed for initial pull (or wait for your automation).&lt;/li&gt;
&lt;/ol&gt;
</content>
    </item>
    
    <item>
      <title>Malware Analysis Tips: Analyzing an Emotet Maldoc</title>
      <link>https://droogy.tech/post/emotetanalysistips/</link>
      <pubDate>Mon, 14 Mar 2022 22:22:44 +0000</pubDate>
      
      <guid>https://droogy.tech/post/emotetanalysistips/</guid>
      <description>Overview I came across a new Emotet campaign at work that was inevitably caught by our mail filter, but thought this was a good opportunity to learn more about extracting IoCs from these maldocs.
The Sample    Attribute Value     SHA1 814b9961fbb5a75a00ca05591ac5a60d503bea22   Filename INFO_405261.xlsm   Sender mark.amarilla@abbraza[.]com.ph   Date Received March 14th, 2022    Analysis Upon opening the Excel document, you see a familiar banner urging users to allow macros - the banner is actually a static photo seen below by the context menu options.</description>
      <content>&lt;h3 id=&#34;overview&#34;&gt;Overview&lt;/h3&gt;
&lt;p&gt;I came across a new Emotet campaign at work that was inevitably caught by our mail filter, but thought this was a good opportunity to learn more about extracting IoCs from these maldocs.&lt;/p&gt;
&lt;h3 id=&#34;the-sample&#34;&gt;The Sample&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Attribute&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SHA1&lt;/td&gt;
&lt;td&gt;814b9961fbb5a75a00ca05591ac5a60d503bea22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Filename&lt;/td&gt;
&lt;td&gt;INFO_405261.xlsm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sender&lt;/td&gt;
&lt;td&gt;mark.amarilla@abbraza[.]com.ph&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Date Received&lt;/td&gt;
&lt;td&gt;March 14th, 2022&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;analysis&#34;&gt;Analysis&lt;/h3&gt;
&lt;p&gt;Upon opening the Excel document, you see a familiar banner urging users to allow macros - the banner is actually a static photo seen below by the context menu options.&lt;br&gt;
&lt;img src=&#34;https://droogy.tech/img/EmotetAnalysis_3.png&#34; alt=&#34;&#34;&gt;&lt;br&gt;
Now something is a little fishy with this document, the gridlines look off - select a cell and you unveil some hidden text.&lt;br&gt;
&lt;img src=&#34;https://droogy.tech/img/EmotetAnalysis_2.png&#34; alt=&#34;&#34;&gt;&lt;br&gt;
Next, you&amp;rsquo;ll want to grab all of these strings easily - use a simple trick to extract them from the maldoc; change the extension to &lt;code&gt;.zip&lt;/code&gt;, unzip the maldoc and &lt;code&gt;cat&lt;/code&gt; the shared strings table for some quick Cyber-Cheffin&amp;rsquo;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;cp INFO_405261.xlsm zipped.zip
unzip -d unzipped/ zipped.zip
cat unzipped/xl/sharedStrings.xml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Copy the file from stdout and paste into Cyber Chef so we can quickly replace unwanted characters - this could easily be done with &lt;code&gt;sed&lt;/code&gt; or &lt;code&gt;tr&lt;/code&gt; as well.&lt;br&gt;
&lt;img src=&#34;https://droogy.tech/img/EmotetAnalysis_1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Now enjoy the fresh IoCs!&lt;/p&gt;
&lt;h3 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Hopefully learned a quick trick to extract strings and manually grab IoCs from an Excel file  without even needing Excel to do so!&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t even begin to go into analyzing the actual maldoc execution chain and seeing what else it tries to load and possibly drop onto disk - all which of course leads to more IoCs! I leave that up to the audience.&lt;/p&gt;
&lt;h3 id=&#34;technical-appendix&#34;&gt;Technical Appendix&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Table of IoCs&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SHA1&lt;/td&gt;
&lt;td&gt;814b9961fbb5a75a00ca05591ac5a60d503bea22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Filename&lt;/td&gt;
&lt;td&gt;INFO_405261.xlsm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL&lt;/td&gt;
&lt;td&gt;hxxp://schemas[.]openxmlformats[.]org/spreadsheetml/2006/main&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL&lt;/td&gt;
&lt;td&gt;hxxps://aservon[.]com/css/DhaDF9VHoru7/&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL&lt;/td&gt;
&lt;td&gt;hxxps://www[.]hih7[.]com/wp-admin/nX8WbaRCZVyVXi/&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL&lt;/td&gt;
&lt;td&gt;hxxps://afrivac[.]org/css/sZqqu3mYVHFK/&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL&lt;/td&gt;
&lt;td&gt;hxxps://a-u-s[.]it/qLoyJJFV0q6Z2i/&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL&lt;/td&gt;
&lt;td&gt;hxxps://actwell[.]fr/logs/g2xyR/&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL&lt;/td&gt;
&lt;td&gt;hxxps://www[.]activ-shoes[.]ro/wp-includes/7Ob1hpWvAnpR2fK4/&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL&lt;/td&gt;
&lt;td&gt;hxxps://getlivetext[.]com/wp-admin/6ZsANn00/&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</content>
    </item>
    
    <item>
      <title>Zettelkasten For The Lazy</title>
      <link>https://droogy.tech/post/lazyzettelkasten/</link>
      <pubDate>Sat, 23 Oct 2021 06:33:31 +0000</pubDate>
      
      <guid>https://droogy.tech/post/lazyzettelkasten/</guid>
      <description>Index  What is Zettelkasten? How it works Use Case TL;DR Further Reading  What is Zettelkasten? Before we can dive into note-taking methodology, a little background on the particular method we pursue here is helpful for context. Zettelkasten is a German word translating to &amp;ldquo;note box&amp;rdquo;. This was a system of note-taking pioneered by Niklas Luhmann - who essentially had a particular way of storing and taking notes which involved small index cards and a large chest with many drawers to store the notes in.</description>
      <content>&lt;h3 id=&#34;index&#34;&gt;Index&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#what-is-zettelkasten&#34; title=&#34;What is Zettelkasten?&#34;&gt;What is Zettelkasten?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#so-how-does-it-work&#34; title=&#34;So how does it work?&#34;&gt;How it works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#example-workflow&#34; title=&#34;Example Workflow&#34;&gt;Use Case&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tldr&#34; title=&#34;TL;DR&#34;&gt;TL;DR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#further-reading&#34; title=&#34;Further Reading&#34;&gt;Further Reading&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;what-is-zettelkasten&#34;&gt;What is Zettelkasten?&lt;/h3&gt;
&lt;p&gt;Before we can dive into note-taking methodology, a little background on the particular method we pursue here is helpful for context. Zettelkasten is a German word translating to &amp;ldquo;note box&amp;rdquo;. This was a system of note-taking pioneered by Niklas Luhmann - who essentially had a particular way of storing and taking notes which involved small index cards and a large chest with many drawers to store the notes in.&lt;/p&gt;
&lt;p&gt;This is good to know but largely unimportant given that this original system was only applicable for &lt;em&gt;physical&lt;/em&gt; note-taking. Thankfully we are in the 21st century and don&amp;rsquo;t need to lug around a chest full of notes and have to paw through stacks to find tidbits that mattered to us.&lt;/p&gt;
&lt;p&gt;I will try to explain my system in a way that is tool-agnostic, given that there are several ongoing holy wars amongst the best note-taking application (my take is, who gives a damn - shut up and write).&lt;/p&gt;
&lt;h3 id=&#34;so-how-does-it-work&#34;&gt;So how does it work?&lt;/h3&gt;
&lt;p&gt;The most infuriating part about my research into Zettelkasten was, you ask 10 different people how they implement it and you&amp;rsquo;ll get 10 different answers, most involving some Byzantine structure and spartan-like discipline that I&amp;rsquo;ll never muster for note-taking.&lt;/p&gt;
&lt;p&gt;Although I am ultimately contributing to the noise a bit, I&amp;rsquo;ve managed to develop a system that scales well and also doesn&amp;rsquo;t require a Type-A personality.
The key takeaways from it are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Take notes everyday. Period.&lt;/li&gt;
&lt;li&gt;No screenshots. A picture&amp;rsquo;s worth a thousand words so don&amp;rsquo;t take the shortcut. Also gets messy for storage and archival purposes.&lt;/li&gt;
&lt;li&gt;Avoid keeping multiple notebooks.&lt;/li&gt;
&lt;li&gt;Your note-taking application of choice must always be open and ready.&lt;/li&gt;
&lt;li&gt;Use cross-references.&lt;/li&gt;
&lt;li&gt;Use citations.&lt;/li&gt;
&lt;li&gt;5 different types of notes:
&lt;ul&gt;
&lt;li&gt;Daily: Archive for processed temporary notes&lt;/li&gt;
&lt;li&gt;Source: The information backbone, contains notes with citations, tags, and cross-references&lt;/li&gt;
&lt;li&gt;Permanent: An atomic note without outside citation&lt;/li&gt;
&lt;li&gt;Project: Independent study, labs, CTFs, courses - will be turned into Source and Permanent notes&lt;/li&gt;
&lt;li&gt;Temporary: Notes taken daily that will be processed and possibly turned into Source/Permanent notes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;example-workflow&#34;&gt;Example workflow&lt;/h3&gt;
&lt;p&gt;So as I glossed over before, there are 5 types of notes that I utilize on a daily basis to form my knowledge base. I&amp;rsquo;ll go over a typical day of note-taking and how each note type is used.&lt;/p&gt;
&lt;p&gt;First things, I leave my editor open to my &lt;strong&gt;Temporary&lt;/strong&gt; note for that day. &lt;em&gt;Everything&lt;/em&gt; gets dumped into the Temporary note, my to-do lists, articles I&amp;rsquo;m reading, ideas, etc. The point is to keep these notes as frictionless as possible so I keep writing.&lt;/p&gt;
&lt;p&gt;So, let&amp;rsquo;s say I come across an interesting article on Detection Engineering - I&amp;rsquo;ll read this article and glean the important bits and throw them into my Temporary note. Now I&amp;rsquo;ll do a deeper dive on Detection Engineering in a &lt;strong&gt;Source&lt;/strong&gt; note.&lt;/p&gt;
&lt;p&gt;The subsequent Source note I create should first have a cross-reference added pointing to the Temporary note that spawned it. Then, I&amp;rsquo;ll find some other sources on Detection Engineering and pull out interesting parts and dump them into the Source note with citations.&lt;/p&gt;
&lt;p&gt;Next, this same idea can tie into a &lt;strong&gt;Project&lt;/strong&gt; note, for example a long-standing &amp;ldquo;Threat Hunting&amp;rdquo; project can now add the &amp;ldquo;Detection Engineering&amp;rdquo; Source note as a cross-reference.&lt;/p&gt;
&lt;p&gt;After I feel like I&amp;rsquo;ve confidently explored the topic well enough and filled out the Source note, I can then begin filling out a &lt;em&gt;Permanent&lt;/em&gt; note. The Permanent note is meant to be atomic (containing a single idea) and shouldn&amp;rsquo;t contain citations to outside sources. It is supposed to be the ultimate synthesized representation of our knowledge on the topic, essentially how we would explain the topic to someone if we didn&amp;rsquo;t have Google by our side.&lt;/p&gt;
&lt;p&gt;Note how all of these additional notes were created from a single idea in a Temporary note, this is how a Temporary note gets processed. Once the day is done, if you are diligent and processed the Temporary note for that day - the Temporary note for that day gets archived in the &lt;strong&gt;Daily&lt;/strong&gt; notes silo.&lt;/p&gt;
&lt;h3 id=&#34;tldr&#34;&gt;TL;DR&lt;/h3&gt;
&lt;p&gt;Take notes everyday about any media you consume.&lt;/p&gt;
&lt;p&gt;Dump those free-flowing notes into a daily Temporary note. Process the Temporary notes - which cascades out into Projects, Permanent and Source notes.&lt;/p&gt;
&lt;p&gt;Add references throughout all the notes so you can follow your train-of-thought, this is key. Once the Temporary note for the day is processed, archive it in the Daily notes silo.&lt;/p&gt;
&lt;p&gt;We strive to create Permanent notes, they are the culmination of our knowledge. How better can you assess your knowledge of something than sitting down and writing 4-6 sentences about it without Googling anything?&lt;/p&gt;
&lt;p&gt;Note that I didn&amp;rsquo;t get into folder structures and indexing, that is another holy war I don&amp;rsquo;t feel like starting, all I will say is that the 5 note types should be separated in their own silo.&lt;/p&gt;
&lt;p&gt;As your Source notes grow, you will naturally find the need for folder categories and indexing in order to quickly get the information needed. I leave that up to the reader.&lt;/p&gt;
&lt;p&gt;The maddening beauty of Zettelkasten is how everyone has their own implentation, hopefully this serves as a starting point (or endpoint for lazy people like me) for those looking to try out a new note-taking method.&lt;/p&gt;
&lt;p&gt;Thanks for reading folks, feel free to reach out with any questions or comments!&lt;/p&gt;
&lt;h3 id=&#34;further-reading&#34;&gt;Further Reading&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://forum.obsidian.md/t/simple-zettelkasten-guide/3054&#34;&gt;Obsidian Forum: Simple Zettelkasten Guide&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://zenkit.com/en/blog/a-beginners-guide-to-the-zettelkasten-method/&#34;&gt;Zenkit: A Beginners Guide to Zettelkasten&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://leananki.com/zettelkasten-method-smart-notes/&#34;&gt;Smart Notes&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Intro To Go - A Naive TCP Port Scanner</title>
      <link>https://droogy.tech/post/slowgo/</link>
      <pubDate>Mon, 24 May 2021 13:50:22 +0000</pubDate>
      
      <guid>https://droogy.tech/post/slowgo/</guid>
      <description>Intro  So over the weekend I picked up a copy of Black Hat Go by Tom Steele and have been following along. I have a little experience with Python and Bash, so Go wasn&amp;rsquo;t terribly hard to jump into but definitely different as I have zero experience with C or other similar languages.
So why choose Go to learn?
 It&amp;rsquo;s minimalist as hell (the language spec is only 50 pages) Concurrency is a big part of Go (unfortunately I won&amp;rsquo;t be utilizing that feature in this project) Go can cross-compile static binaries!</description>
      <content>&lt;hr&gt;
&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;So over the weekend I picked up a copy of &lt;em&gt;Black Hat Go&lt;/em&gt; by Tom Steele and have been following along. I have a little experience with Python and Bash, so Go wasn&amp;rsquo;t terribly hard to jump into but definitely different as I have zero experience with C or other similar languages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So why choose Go to learn?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It&amp;rsquo;s minimalist as hell (the language spec is only 50 pages)&lt;/li&gt;
&lt;li&gt;Concurrency is a big part of Go (unfortunately I won&amp;rsquo;t be utilizing that feature in this project)&lt;/li&gt;
&lt;li&gt;Go can cross-compile static binaries!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Naive Approach&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Whenever learning a new programming language or concept, I find the &amp;ldquo;naive&amp;rdquo; approach works well. Instead of trying to implement the &amp;ldquo;best&amp;rdquo; approach to a problem, simply implement the first one that comes to mind and build off of that. I like taking a project-oriented approach to learning so I decided to build a &amp;ldquo;naive&amp;rdquo; TCP port-scanner utilizing what I&amp;rsquo;ve learned so far with Go.&lt;/p&gt;
&lt;h2 id=&#34;the-code&#34;&gt;The Code&lt;/h2&gt;
&lt;p&gt;The repo can be found &lt;a href=&#34;https://github.com/Droogy/SlowGo&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;package&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;

&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; (
	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bufio&amp;#34;&lt;/span&gt;
	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;
	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;net&amp;#34;&lt;/span&gt;
	&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;os&amp;#34;&lt;/span&gt;
)

&lt;span style=&#34;color:#66d9ef&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;() {
	&lt;span style=&#34;color:#75715e&#34;&gt;// open our file for reading
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;file&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Open&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ports.conf&amp;#34;&lt;/span&gt;)

	&lt;span style=&#34;color:#75715e&#34;&gt;// create a scanner object that reads the file we opened before
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;	&lt;span style=&#34;color:#75715e&#34;&gt;// by default, NewScanner splits on newlines
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;scanner&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;bufio&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;NewScanner&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;file&lt;/span&gt;)

	&lt;span style=&#34;color:#75715e&#34;&gt;// we need to initialize an empty slice here for text in order
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;	&lt;span style=&#34;color:#75715e&#34;&gt;// for the append function on line 25 to work
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;text&lt;/span&gt; []&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;

	&lt;span style=&#34;color:#75715e&#34;&gt;// read in the file line by line, save it to &amp;#34;text&amp;#34; and close the file
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;	&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;scanner&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Scan&lt;/span&gt;() {
		&lt;span style=&#34;color:#a6e22e&#34;&gt;text&lt;/span&gt; = append(&lt;span style=&#34;color:#a6e22e&#34;&gt;text&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;scanner&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Text&lt;/span&gt;())
	}
	&lt;span style=&#34;color:#a6e22e&#34;&gt;file&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Close&lt;/span&gt;()
	&lt;span style=&#34;color:#75715e&#34;&gt;// os.Args[1] parses argv
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;	&lt;span style=&#34;color:#a6e22e&#34;&gt;TARGET&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Args&lt;/span&gt;[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
	&lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The target is %s&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TARGET&lt;/span&gt;)
	&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;openPorts&lt;/span&gt; []&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;
	&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;port&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;range&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;text&lt;/span&gt; {
		&lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\r\nCurrently scanning: %s:%s&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TARGET&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;port&lt;/span&gt;)
		&lt;span style=&#34;color:#a6e22e&#34;&gt;address&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;TARGET&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;:&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;port&lt;/span&gt;
		&lt;span style=&#34;color:#a6e22e&#34;&gt;conn&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;net&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Dial&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;tcp&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;address&lt;/span&gt;)
		&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; {
			&lt;span style=&#34;color:#75715e&#34;&gt;//port is either filtered or closed
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;			&lt;span style=&#34;color:#66d9ef&#34;&gt;continue&lt;/span&gt;
		}
		&lt;span style=&#34;color:#a6e22e&#34;&gt;conn&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Close&lt;/span&gt;()
		&lt;span style=&#34;color:#a6e22e&#34;&gt;openPorts&lt;/span&gt; = append(&lt;span style=&#34;color:#a6e22e&#34;&gt;openPorts&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;port&lt;/span&gt;)
		&lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\r\n[*]Port %s is open!\n&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;port&lt;/span&gt;)
	}
	&lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\nThe ports open for %s are %s&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TARGET&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;openPorts&lt;/span&gt;)
}

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;breaking-down-the-code&#34;&gt;Breaking Down The Code&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;file&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Open&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ports.conf&amp;#34;&lt;/span&gt;)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;ports.conf will be our config file, simply fill it up with newline separated ports we want to TCP scan&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;scanner&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;bufio&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;NewScanner&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;file&lt;/span&gt;)
&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;text&lt;/span&gt; []&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;
 &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;scanner&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Scan&lt;/span&gt;() {
	&lt;span style=&#34;color:#a6e22e&#34;&gt;text&lt;/span&gt; = append(&lt;span style=&#34;color:#a6e22e&#34;&gt;text&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;scanner&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Text&lt;/span&gt;())
}
&lt;span style=&#34;color:#a6e22e&#34;&gt;file&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Close&lt;/span&gt;()
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;this bit reads our ports file and stores the result as an array in a variable called text&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;TARGET&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;os&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Args&lt;/span&gt;[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]
&lt;span style=&#34;color:#a6e22e&#34;&gt;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Printf&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The target is %s&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;TARGET&lt;/span&gt;)
&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;openPorts&lt;/span&gt; []&lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;initialize our target as a constant that is read as a command line argument&lt;/li&gt;
&lt;li&gt;e.g &lt;code&gt;./scan scanme.nmap.org&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;also declare a string array we&amp;rsquo;ll use to store open ports we find&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;_&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;port&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;range&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;text&lt;/span&gt; {
	&lt;span style=&#34;color:#a6e22e&#34;&gt;address&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;TARGET&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;:&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;port&lt;/span&gt;
	&lt;span style=&#34;color:#a6e22e&#34;&gt;conn&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;net&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Dial&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;tcp&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;address&lt;/span&gt;)
	&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; {
		&lt;span style=&#34;color:#75715e&#34;&gt;//port is either filtered or closed
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;		&lt;span style=&#34;color:#66d9ef&#34;&gt;continue&lt;/span&gt;
	}
	&lt;span style=&#34;color:#a6e22e&#34;&gt;conn&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Close&lt;/span&gt;()
	&lt;span style=&#34;color:#a6e22e&#34;&gt;openPorts&lt;/span&gt; = append(&lt;span style=&#34;color:#a6e22e&#34;&gt;openPorts&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;port&lt;/span&gt;)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;finally, we get to the meaty part of the scanner, the actual scanning routine that utilizes the built-in &lt;code&gt;net&lt;/code&gt; package that golang provides&lt;/li&gt;
&lt;li&gt;&amp;ldquo;err&amp;rdquo; lets us know if the port is filtered or closed&lt;/li&gt;
&lt;li&gt;each open port we find gets appended to openPorts, the array we declared earlier&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;This is a really bad and slow TCP port scanner, there&amp;rsquo;s many things I would improve upon like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;making use of concurrency&lt;/li&gt;
&lt;li&gt;scan top 100 ports by default&lt;/li&gt;
&lt;li&gt;read multiple hosts&lt;/li&gt;
&lt;li&gt;different type of scans (half-open, UDP, Xmas, etc..)&lt;/li&gt;
&lt;li&gt;improving user UI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These features will come in the next iteration!&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>TraceLabs Search Party Write-up</title>
      <link>https://droogy.tech/post/tracelabs/</link>
      <pubDate>Tue, 30 Mar 2021 16:37:57 +0000</pubDate>
      
      <guid>https://droogy.tech/post/tracelabs/</guid>
      <description>DISCLAIMER: Please use the following techniques for good. Don’t be evil 🙂
Search Party CTF is an initiative by TraceLabs which is a gamified OSINT investigation involving real, active missing persons cases. Once the CTF begins you’re given a few different cases with the relevant background information and a short brief. You get points for finding things like e-mail addresses, home addresses, friends and family, etc. The point is to emulate what investigators actually do by casting a very wide net and going through the evidence piecemeal.</description>
      <content>&lt;p&gt;&lt;strong&gt;DISCLAIMER: Please use the following techniques for good. Don’t be evil&lt;/strong&gt; 🙂&lt;/p&gt;
&lt;p&gt;Search Party CTF is an initiative by TraceLabs which is a gamified OSINT investigation involving real, active missing persons cases. Once the CTF begins you’re given a few different cases with the relevant background information and a short brief. You get points for finding things like e-mail addresses, home addresses, friends and family, etc. The point is to emulate what investigators actually do by casting a very wide net and going through the evidence piecemeal. I wanted to give a short write-up detailing one technique I was able to pull off which gave me the suspects vehicle information which includes; make, model, and year. While this technique is somewhat useless for professionals given the private records at their disposal, it is still very useful for the amateur sleuth.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PRE-REQUISITES&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So, first things first, we need some basic information on our suspect before we can get their vehicle information. You didn’t think we could just type in someone’s name and get that information right? Err, actually, that’s pretty close to it. So the main mechanism we will be &lt;del&gt;abusing&lt;/del&gt;  utilizing is a simple auto insurance quote from Progressive.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/tracelabs1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;We need a ZIP code first!&lt;/p&gt;
&lt;p&gt;The zip code is easy enough since we already know the suspect is the victim’s parent and lived in the same city where the crime occurred. Next, we have a crucial piece of information leaked from a news article detailing where the victim was last seen.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/tracelabs2.png&#34; alt=&#34;&#34;&gt;
&lt;em&gt;Names, ages, and locations have been changed.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Now, we can pivot on this piece of information and use it against the results of some people search engines like whitepages.com or truepeoplesearch.com, which often have erroneous or outright wrong results.&lt;/p&gt;
&lt;p&gt;So after some digging around on the people search sites and a few Google dorks later, we see an address matching the block number and neighborhood for the suspect. While this isn’t 100% accurate it’s still a pretty good indicator that the record in question may be accurate.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/tracelabs3.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;With this information we have all we need to pull down the vehicle records. After we enter the zip code on the Progressive page we visited earlier, it will prompt us for further information.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/tracelabs4.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;The name and birthdate literally do not matter at all – at least on Progressive’s website – the only thing that matters is the address being accurate. After we enter the correct information we finally get our payoff!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RESULTS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/tracelabs5.png&#34; alt=&#34;&#34;&gt;
&lt;em&gt;What do you think Batman drives when his car is in the shop?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;And there we go! Police and other agencies are usually not too keen (for good reasons) on releasing this sort of information publicly but it can greatly aid investigators who lack the private resources that a LEO has. Cheers and happy hunting!&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Creating a Windows Defender Rule for Spotify Connect Traffic</title>
      <link>https://droogy.tech/post/create_defender_rule/</link>
      <pubDate>Sun, 17 Jan 2021 19:29:07 +0000</pubDate>
      
      <guid>https://droogy.tech/post/create_defender_rule/</guid>
      <description>Quick post today about cleaning up your network traffic and nipping unnecessary broadcast traffic in the bud. I look at my Security Onion logs maybe once a day when I have time and I couldn’t help but always notice this particular log showing Spotify sending packets to broadcast quite often.
Taking a further look at the logs, I can see the packet data decoded which confirms this is Spotify sending UDP packets from my host to broadcast.</description>
      <content>&lt;p&gt;Quick post today about cleaning up your network traffic and nipping unnecessary broadcast traffic in the bud. I look at my Security Onion logs maybe once a day when I have time and I couldn’t help but always notice this particular log showing Spotify sending packets to broadcast quite often.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/windows_defender1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Taking a further look at the logs, I can see the packet data decoded which confirms this is Spotify sending UDP packets from my host to broadcast.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/windows_defender2.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Now the Spotify Connect protocol is pretty cool and allow inter-connectivity between devices both running Spotify. Meaning I can play and control my song selection on my phone via my PC and vice versa. But is this something I need? Nope. So let’s create a quick Defender Firewall rule to block this functionality and clean up my Security Onion logs. First we are going to bring up the Firewall MMC snap-in and create a new Custom Outbound Rule.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/windows_defender3.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Spotify has a weird default service path inside the User\AppData folder so hunt Spotify.exe down and add it to our rule.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/windows_defender4.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;In my case, the ephemeral port was 57612 for both local and remote port. Given the transient nature of ephemeral ports this could change but a quick Google search shows that this port is standard for Spotify Connect. So, we know that the protocol type is UDP and the port is 57612 – let’s further improve the rule on the next screen.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/windows_defender5.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;On the next prompt we can define the scope – this host is inside VLAN10 so I left the default ‘Any IP address’ since I don’t have to worry about other hosts on the subnet. Adjust accordingly for your own network.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/windows_defender6.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;On the next screen, we are going to naturally block this unwanted connection.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/windows_defender7.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Next we’re going to apply this rule to all profiles, mileage may vary depending on any given person’s needs/usage.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/windows_defender8.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Finally, we just name the sucker and let it rip!&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/windows_defender9.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Looking at my Security Onion logs, they are now just a little bit cleaner and I don’t have to weed through those broadcast alerts anymore!&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>How to Write a Script</title>
      <link>https://droogy.tech/post/how2writeascript/</link>
      <pubDate>Sun, 17 Jan 2021 01:15:08 +0000</pubDate>
      
      <guid>https://droogy.tech/post/how2writeascript/</guid>
      <description>Greetings! Today I will be sharing my general script writing process and how they can improve your workflow. Below is the script I created which I&amp;rsquo;ll be using to go over how I approach creating scripts to help my pentesting workflow.
#!/bin/bash # AutoEnum by Droogy # # AutoEnum is a simple service scanner built around nmap # printf &amp;#39;gimme target: &amp;#39; read target nmap -p- -T4 $target -oN portscan # read portscan file output and turn into CSV formatted ports for nmap cat portscan | grep open | cut -d &amp;#39;/&amp;#39; -f 1 | \ tr &amp;#39;\n&amp;#39; , &amp;gt; ports.</description>
      <content>&lt;p&gt;Greetings! Today I will be sharing my general script writing process and how they can improve your workflow. Below is the script I created which I&amp;rsquo;ll be using to go over how I approach creating scripts to help my pentesting workflow.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# AutoEnum by Droogy&lt;/span&gt;
#
&lt;span style=&#34;color:#75715e&#34;&gt;# AutoEnum is a simple service scanner built around nmap&lt;/span&gt;
#
printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;gimme target: &amp;#39;&lt;/span&gt;
read target
nmap -p- -T4 $target -oN portscan

&lt;span style=&#34;color:#75715e&#34;&gt;# read portscan file output and turn into CSV formatted ports for nmap&lt;/span&gt;
cat portscan | grep open | cut -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt; -f &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;tr &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt; , &amp;gt; ports.txt

&lt;span style=&#34;color:#75715e&#34;&gt;# read file into variable&lt;/span&gt;
ports&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;&amp;lt;ports.txt&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;

&lt;span style=&#34;color:#75715e&#34;&gt;# script categories&lt;/span&gt;
&lt;span style=&#34;color:#75715e&#34;&gt;# auth, broadcast, brute, default. discovery, dos, exploit&lt;/span&gt; 
&lt;span style=&#34;color:#75715e&#34;&gt;# external, fuzzer, intrusive, malware, safe, version, and vuln&lt;/span&gt;
&lt;span style=&#34;color:#75715e&#34;&gt;# should prob throw in UDP at some point&lt;/span&gt;
&lt;span style=&#34;color:#75715e&#34;&gt;# -sU -top-ports 250&lt;/span&gt;

&lt;span style=&#34;color:#75715e&#34;&gt;# finalized nmap scan to run against discovered ports&lt;/span&gt;
nmap -A -v -p$ports --script&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;discovery,vuln,brute&lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--version-all $target -oN initial.log
clear
cat initial.log | grep tcp
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So this script was developed while I was pursuing the eJPT certification and doing a lot of TryHackMe/VulnHub/HackTheBox/Hera boxes which naturally involves a TON of scanning and enumeration. This gets quite repetitive so I developed a script to make this process a bit easier.&lt;/p&gt;
&lt;p&gt;I chose Bash as the language because it&amp;rsquo;s simple, readable, and super portable across Linux distros. I&amp;rsquo;m barely a competent programmer so if I can get an Nmap parser done in less than ten lines of bash imagine what you could do!&lt;/p&gt;
&lt;p&gt;To begin with, we need to clearly define our problem, which makes coding much easier as we can break up our large problem into smaller ones. Some people like to use pseudo-code, but honestly any sort of pre-planning for a program/script works. The problem I need to solve can roughly be broken up into the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I need a full portscan on a target&lt;/li&gt;
&lt;li&gt;parse those ports into a variable/file&lt;/li&gt;
&lt;li&gt;Format them in a way that works with nmap&lt;/li&gt;
&lt;li&gt;feed the ports back into nmap and re-enumerate the discovered ports, this time with script/service scanning&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;Let&amp;rsquo;s break the code into chunks and take a look at what each one does.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;printf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;gimme target: &amp;#39;&lt;/span&gt;
read target
nmap -p- -T4 $target -oN portscan
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is pretty self explanatory, the script prompts the user for input, reads that into a variable and then runs a full portscan against that target and saves output into a file called “portscan”.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;cat portscan | grep open | cut -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt; -f &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;tr &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt; , &amp;gt; ports.txt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Next up is an ugly little bit which formats our portscan results into a CSV formatted list of ports which we will need to feed back into Nmap in our next step. Let&amp;rsquo;s break up the code further and see what each bit does.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cat portscan&lt;/code&gt; – reads the portscan results&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep open&lt;/code&gt; – searches for the word “open”, which would be on the same line as the port we need to grab&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cut -d &#39;/&#39; -f 1&lt;/code&gt; – separates strings by the delimiter which is ‘/&amp;rsquo; in our case and then the -f switch selects the first field, which is the port itself with no extra text&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tr &#39;\n&#39; , &amp;gt; ports.txt&lt;/code&gt; – finally, the translate (tr) command replaces all new lines with commas – thus creating a list of CSV formatted ports which can be fed into Nmap!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To conclude, the above chunk of code turns a file this&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/how2writescript1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Into this: &lt;code&gt;21,22,80&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Next, since Nmap doesn&amp;rsquo;t exactly allow for reading a file with a list of ports, we will export the previous CSV list of ports into a variable with this neat bash trick.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ports=$(&amp;lt;ports.txt)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Finally, the last part is pretty self-explanatory, we start a comprehensive Nmap scan utilizing the open ports we found and then output these results to the terminal as show below.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;nmap -A -v -p$ports --script&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;discovery,vuln,brute &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--version-all $target -oN initial.log ;
clear;
cat initial.log | grep tcp;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/how2writescript2.png&#34; alt=&#34;&#34;&gt;
&lt;em&gt;final output&lt;/em&gt;&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>Security Onion for the Home</title>
      <link>https://droogy.tech/post/securityonion/</link>
      <pubDate>Mon, 11 Jan 2021 16:16:33 +0000</pubDate>
      
      <guid>https://droogy.tech/post/securityonion/</guid>
      <description>Network Configuration  Quick note, you will need a SPAN port or some sort of network tap in order to properly monitor your network which is a feature most managed switches will have. In my case I&amp;rsquo;m using a TL-SG108E switch which manages 3 separate VLANs; VLAN1 is for my network appliances, VLAN10 contains about 10 IoT devices and a WAP, VLAN20 is for my personal workstations. VLANs work nicely in the SOC as I can quickly identify assets by their subnet.</description>
      <content>&lt;h2 id=&#34;network-configuration&#34;&gt;Network Configuration&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;Quick note, you will need a SPAN port or some sort of network tap in order to properly monitor your network which is a feature most managed switches will have. In my case I&amp;rsquo;m using a TL-SG108E switch which manages 3 separate VLANs; VLAN1 is for my network appliances, VLAN10 contains about 10 IoT devices and a WAP, VLAN20 is for my personal workstations. VLANs work nicely in the SOC as I can quickly identify assets by their subnet.&lt;/p&gt;
&lt;h2 id=&#34;the-install&#34;&gt;The Install&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;So this is a fairly straight-forward post about my experience installing Security Onion on a Dell Optiplex 960 and hunting down my very first false-positive! To start with, the Optiplex has fairly low specs; 2 cores and 8GBs RAM (maxed out). I installed a Gigabit PCIe Ethernet card, thankfully the PC already had one so I just needed one extra.&lt;/p&gt;
&lt;p&gt;After I made a bootable USB via Etcher I just had to install it, which proved a little annoying as the anaconda installer froze twice and the first time the anaconda installer worked as intended it failed at the last step of installation after about 45 minutes. Probably has to do with the low specs.&lt;/p&gt;
&lt;h2 id=&#34;the-hunt&#34;&gt;The Hunt&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;Shortly after firing up Security Onion, running &lt;code&gt;so-allow&lt;/code&gt; from the Security Onion console and adding my private IP to the analyst role I was able to browse the SOC from my workstation in a separate VLAN, cool! Except I was quickly greeted with this log entry which is a bit worrisome.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/sec_onion_home1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;“???” is a seemingly random IP which resolves to somewhere in Romania…crap.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I quickly regained composure and figured it was some sort of relay my VPN uses, so let&amp;rsquo;s quickly verify this. First thing I want to do is resolve this IP, so I fire up nslookup, change my server to my Pi-Hole (192.168.1.2), and enter the IP address in question and get this result.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/sec_onion_home2.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;A quick Google search for dataclub.info is pretty reassuring, seems to be a hosting provider which backs up my initial hypothesis for this being related to my VPN. We can further prove this with &lt;code&gt;tracert&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://droogy.tech/img/sec_onion_home3.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;Sure enough, the first hop is in the same Class A private address space as my network adapter for my VPN. Mystery solved!&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>How I Get My News</title>
      <link>https://droogy.tech/post/how_i_get_my_news/</link>
      <pubDate>Thu, 07 Jan 2021 19:07:41 +0000</pubDate>
      
      <guid>https://droogy.tech/post/how_i_get_my_news/</guid>
      <description>Intro  How do you consume your news? Podcasts? TV? Radio? Online publications?
All of these are fine and dandy for most people who might consume less than a dozen sources of news – but what about someone who follows hundreds of blogs/news organizations? If I spent everyday visiting blogs (that may not even be updated yet) and other various news sites to read their news and stay informed, I would literally have no time left in my day.</description>
      <content>&lt;h2 id=&#34;intro&#34;&gt;Intro&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;How do you consume your news? Podcasts? TV? Radio? Online publications?&lt;/p&gt;
&lt;p&gt;All of these are fine and dandy for most people who might consume less than a dozen sources of news – but what about someone who follows hundreds of blogs/news organizations? If I spent everyday visiting blogs (that may not even be updated yet) and other various news sites to read their news and stay informed, I would literally have no time left in my day. Thus enters RSS.&lt;/p&gt;
&lt;h3 id=&#34;what-is-rss&#34;&gt;What is RSS?&lt;/h3&gt;
&lt;hr&gt;
&lt;p&gt;RSS is a protocol that allows for the transmission and aggregation of web content. Doesn’t really sound ground-breaking, so what does that mean for us? Let’s say XYZ News has an RSS feed, you just copy the link of the RSS feed and you simply import it to your RSS reader. XYZ News publishes a new post and it automatically gets transmitted over RSS into a neat text document in my RSS reader. Instead of checking hundreds of sources for news, I simply open up my RSS reader and all of my news is there.&lt;/p&gt;
&lt;h3 id=&#34;which-rss-reader-to-choose&#34;&gt;Which RSS reader to choose?&lt;/h3&gt;
&lt;hr&gt;
&lt;p&gt;Now the question of choosing an RSS reader was actually tough and rather annoying for such a simple protocol. Most RSS readers seemed insanely bloated and outdated (looking at you Thunderbird). I also wanted something open-source for Windows (so no Newsflow). So after a lot of messing around with various readers on my Windows host and giving up on running a reader on Windows altogether, I decided this is a perfect task for my Pi server which also serves DNS.&lt;/p&gt;
&lt;h3 id=&#34;miniflux&#34;&gt;Miniflux&lt;/h3&gt;
&lt;hr&gt;
&lt;p&gt;For this task I chose &lt;strong&gt;Miniflux&lt;/strong&gt;, which would run as a service on my Pi and be accessible over my LAN. Side note here, I also use a PIA VPN so make sure you enable split-tunneling to reach your RSS server over LAN. You have to configure a new user for miniflux on the server which is simple enough. I had to add a line to the &lt;code&gt;/etc/miniflux.conf&lt;/code&gt; file to bind the service to a different port and then restart the service. After that, I can now browse to my Pi’s local IP while connected to my VPN and have all my news in one source!&lt;/p&gt;
&lt;h2 id=&#34;further-readingreference&#34;&gt;Further Reading/Reference&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://miniflux.app/docs/configuration.html&#34;&gt;https://miniflux.app/docs/configuration.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://miniflux.app/docs/installation.html&#34;&gt;https://miniflux.app/docs/installation.html&lt;/a&gt;&lt;/p&gt;
</content>
    </item>
    
  </channel>
</rss>
