<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Michael Edie</title><link>https://blog.edie.io/</link><description>Recent content on Michael Edie</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 20 May 2025 22:58:14 +0000</lastBuildDate><atom:link href="https://blog.edie.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Decoding OWA Ids in On-Prem Exchange</title><link>https://blog.edie.io/2025/05/20/decoding-owa-ids-in-on-prem-exchange/</link><pubDate>Tue, 20 May 2025 22:58:14 +0000</pubDate><guid>https://blog.edie.io/2025/05/20/decoding-owa-ids-in-on-prem-exchange/</guid><description>&lt;p&gt;If you’ve analyzed Outlook Web Access (OWA) logs in an on-premises Exchange environment, you’ve likely run into strange Base64-encoded strings embedded in GetFileAttachment HTTP requests. At first glance, decoding one of these strings might yield a GUID-like result—encouraging, but ultimately not actionable on its own. What’s buried deeper, though, is far more useful: a MAPI EntryId.&lt;/p&gt;
&lt;nav class="toc-a" aria-label="Table of Contents"&gt;
 &lt;div class="toc-a-head"&gt;
 &lt;span class="toc-a-chevron"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="toc-a-label"&gt;Table of Contents&lt;/span&gt;
 &lt;/div&gt;
 &lt;ul class="toc-a-list"&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#understanding-the-getfileattachment-request" data-id="understanding-the-getfileattachment-request"&gt;01&amp;nbsp;&amp;nbsp;Understanding the GetFileAttachment Request&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#locating-the-pr_entryid-in-hex" data-id="locating-the-pr_entryid-in-hex"&gt;02&amp;nbsp;&amp;nbsp;Locating the PR_ENTRYID in Hex&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#understanding-the-first-43-bytes" data-id="understanding-the-first-43-bytes"&gt;03&amp;nbsp;&amp;nbsp;Understanding the First 43 Bytes&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#extracting-the-pr_entryid" data-id="extracting-the-pr_entryid"&gt;04&amp;nbsp;&amp;nbsp;Extracting the PR_ENTRYID&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#locating-the-message-in-mfcmapi" data-id="locating-the-message-in-mfcmapi"&gt;05&amp;nbsp;&amp;nbsp;Locating the Message in MFCMAPI&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#wrapping-up" data-id="wrapping-up"&gt;06&amp;nbsp;&amp;nbsp;Wrapping Up&lt;/a&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;div class="toc-a-progress"&gt;
 &lt;div class="toc-a-progress-fill"&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/nav&gt;

&lt;p&gt;With the right decoding and inspection techniques, you can extract the PR_ENTRYID—a native Exchange identifier that precisely maps to the email in question. This capability becomes especially valuable in environments where mailbox auditing is unavailable or incomplete. In such cases, decoding the Id parameter from OWA requests may be the only way to determine what an attacker actually accessed.&lt;/p&gt;</description></item><item><title>Background &amp; Experience</title><link>https://blog.edie.io/about/bio/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate><guid>https://blog.edie.io/about/bio/</guid><description/></item><item><title>Honeypot Diaries: SSH Authorized Keys</title><link>https://blog.edie.io/2023/04/16/honeypot-diaries-ssh-authorized-keys/</link><pubDate>Sun, 16 Apr 2023 14:57:27 +0000</pubDate><guid>https://blog.edie.io/2023/04/16/honeypot-diaries-ssh-authorized-keys/</guid><description>&lt;p&gt;One of the many reasons I decided to deploy honeypots is to be able to observe attacker tactics, techniques, and procedures (TTPs). This blog post will share a frequently used tactic that attackers use to keep access once they have compromised one of my distributed honeypots. You may benefit from the rest of this content if you use or manage systems that allow remote access using a Secure Shell (&lt;a href="https://en.wikipedia.org/wiki/Secure_Shell"&gt;SSH&lt;/a&gt;) client.&lt;/p&gt;</description></item><item><title>Migrating Splunk Storage to S3 SmartStore</title><link>https://blog.edie.io/2023/04/01/migrating-splunk-storage-to-s3-smartstore/</link><pubDate>Sat, 01 Apr 2023 03:53:24 +0000</pubDate><guid>https://blog.edie.io/2023/04/01/migrating-splunk-storage-to-s3-smartstore/</guid><description>&lt;p&gt;&lt;a href="https://www.splunk.com/en_us/products/splunk-enterprise.html"&gt;Splunk&lt;/a&gt; is a software technology that allows you to index, search, analyze, and visualize data at scale. I use it to ingest logs from my honeypots, homelab, and other projects. Initially, I had Splunk running in a local virtual machine where everything was fine except for the downtime, so I rapidly migrated it to an Amazon Web Services (&lt;a href="https://aws.amazon.com/"&gt;AWS&lt;/a&gt;) Elastic Compute Cloud (&lt;a href="https://en.wikipedia.org/wiki/Amazon_Elastic_Compute_Cloud"&gt;EC2&lt;/a&gt;) instance. Migrating to the cloud was also a forcing function to increase my knowledge of AWS. I learned a lot daily about the ecosystem; &lt;a href="https://docs.aws.amazon.com/whitepapers/latest/how-aws-pricing-works/aws-cost-optimization.html"&gt;cost optimization&lt;/a&gt; was one of those beautiful lessons. A short guide follows on how I transitioned an existing Splunk deployment to S3 &lt;a href="https://docs.splunk.com/Documentation/Splunk/9.0.4/Indexer/AboutSmartStore"&gt;SmartStore&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Managing Password Hygiene</title><link>https://blog.edie.io/2023/03/01/managing-password-hygiene/</link><pubDate>Wed, 01 Mar 2023 04:16:00 +0000</pubDate><guid>https://blog.edie.io/2023/03/01/managing-password-hygiene/</guid><description>&lt;p&gt;According to a study by &lt;a href="https://nordpass.com/most-common-passwords-list/"&gt;NordPass&lt;/a&gt;, the average user with an online presence has about 80-100 passwords. This explains to some degree why individuals tend to use easy passwords. Just take a moment to think about how many passwords you have. What&amp;rsquo;s the current state of your password hygiene? Do you use the same password to log into more than one account? Do you share passwords?&lt;/p&gt;
&lt;nav class="toc-a" aria-label="Table of Contents"&gt;
 &lt;div class="toc-a-head"&gt;
 &lt;span class="toc-a-chevron"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="toc-a-label"&gt;Table of Contents&lt;/span&gt;
 &lt;/div&gt;
 &lt;ul class="toc-a-list"&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#password-complexity" data-id="password-complexity"&gt;01&amp;nbsp;&amp;nbsp;Password Complexity&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#password-recycling" data-id="password-recycling"&gt;02&amp;nbsp;&amp;nbsp;Password Recycling&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#password-exposure" data-id="password-exposure"&gt;03&amp;nbsp;&amp;nbsp;Password Exposure&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#password-management" data-id="password-management"&gt;04&amp;nbsp;&amp;nbsp;Password Management&lt;/a&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;div class="toc-a-progress"&gt;
 &lt;div class="toc-a-progress-fill"&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/nav&gt;

&lt;h2 id="password-complexity"&gt;Password Complexity&lt;/h2&gt;
&lt;p&gt;When I think about password hygiene, three things come to mind, password complexity, password recycling, and password exposure. The National Institute of Science and Technology (&lt;a href="https://pages.nist.gov/800-63-3/sp800-63b.html"&gt;NIST&lt;/a&gt;) has said that particular attention should be given to password length over complexity since people tend to choose passwords that meet complexity requirements but are easy to guess. For example, &amp;rsquo; &lt;strong&gt;P@ssw0rd123&lt;/strong&gt;&amp;rsquo; seems secure but has &lt;a href="https://www.theverge.com/2017/8/7/16107966/password-tips-bill-burr-regrets-advice-nits-cybersecurity"&gt;predictable&lt;/a&gt; attributes that make it much easier to crack.&lt;/p&gt;</description></item><item><title>Email Spam: Forgotten Bitcoin</title><link>https://blog.edie.io/2023/01/20/email-spam-forgotten-bitcoin/</link><pubDate>Fri, 20 Jan 2023 01:20:24 +0000</pubDate><guid>https://blog.edie.io/2023/01/20/email-spam-forgotten-bitcoin/</guid><description>&lt;p&gt;This is the first installment of a spam email series where I investigate what happens when you click on those links we security professionals keep telling you not to click on. I hope it provides some value to someone and keeps one less person from falling prey to these ever-prevalent schemes.&lt;/p&gt;
&lt;nav class="toc-a" aria-label="Table of Contents"&gt;
 &lt;div class="toc-a-head"&gt;
 &lt;span class="toc-a-chevron"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="toc-a-label"&gt;Table of Contents&lt;/span&gt;
 &lt;/div&gt;
 &lt;ul class="toc-a-list"&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#the-beginning" data-id="the-beginning"&gt;01&amp;nbsp;&amp;nbsp;The Beginning&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#psuedo-authentication" data-id="psuedo-authentication"&gt;02&amp;nbsp;&amp;nbsp;Psuedo Authentication&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#chatbot-integration" data-id="chatbot-integration"&gt;03&amp;nbsp;&amp;nbsp;Chatbot Integration&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#bitcoin-withdrawal" data-id="bitcoin-withdrawal"&gt;04&amp;nbsp;&amp;nbsp;Bitcoin Withdrawal&lt;/a&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;div class="toc-a-progress"&gt;
 &lt;div class="toc-a-progress-fill"&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/nav&gt;

&lt;p&gt;Like most of you, I logged into my email, which I have done many times over the years, and saw a strange email that caught my attention. The email purports that I had forgotten about &lt;strong&gt;$21,000 worth of &lt;a href="https://bitcoin.org/en/faq"&gt;Bitcoin&lt;/a&gt; (BTC)&lt;/strong&gt; in an account, and I had &lt;strong&gt;8 hours to withdraw&lt;/strong&gt;, or the balance would be forfeited.&lt;/p&gt;</description></item><item><title>Detecting Default Meterpreter HTTPS Listeners</title><link>https://blog.edie.io/2022/07/31/detecting-default-meterpreter-https-listeners/</link><pubDate>Sun, 31 Jul 2022 01:19:12 +0000</pubDate><guid>https://blog.edie.io/2022/07/31/detecting-default-meterpreter-https-listeners/</guid><description>&lt;p&gt;&lt;a href="https://docs.metasploit.com/docs/using-metasploit/advanced/meterpreter/meterpreter.html"&gt;Meterpreter&lt;/a&gt; is an advanced payload within the well-known &lt;a href="https://docs.rapid7.com/metasploit/"&gt;Metasploit Framework&lt;/a&gt; (MSF).&lt;/p&gt;
&lt;nav class="toc-a" aria-label="Table of Contents"&gt;
 &lt;div class="toc-a-head"&gt;
 &lt;span class="toc-a-chevron"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="toc-a-label"&gt;Table of Contents&lt;/span&gt;
 &lt;/div&gt;
 &lt;ul class="toc-a-list"&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#setting-up-the-https-listener" data-id="setting-up-the-https-listener"&gt;01&amp;nbsp;&amp;nbsp;Setting up the HTTPS Listener&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#querying-the-tls-certificate" data-id="querying-the-tls-certificate"&gt;02&amp;nbsp;&amp;nbsp;Querying the TLS Certificate&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#https-inspection" data-id="https-inspection"&gt;03&amp;nbsp;&amp;nbsp;HTTPS Inspection&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#fingerprinting" data-id="fingerprinting"&gt;04&amp;nbsp;&amp;nbsp;Fingerprinting&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#detection" data-id="detection"&gt;05&amp;nbsp;&amp;nbsp;Detection&lt;/a&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;div class="toc-a-progress"&gt;
 &lt;div class="toc-a-progress-fill"&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/nav&gt;

&lt;p&gt;We will look specifically at the &lt;strong&gt;reverse_https&lt;/strong&gt; payload and see how we can detect the listener in our environment. I always tell my junior analysts to make sure they can detect the low-hanging fruit. For instance, most tools such as Metasploit and &lt;a href="https://www.cobaltstrike.com/"&gt;Cobalt Strike&lt;/a&gt; are very powerful, but they all come with moderately dynamic defaults that can be fingerprinted.&lt;/p&gt;</description></item><item><title>Honeypot Diaries: Masscan</title><link>https://blog.edie.io/2022/06/06/honeypot-diaries-masscan/</link><pubDate>Mon, 06 Jun 2022 03:57:51 +0000</pubDate><guid>https://blog.edie.io/2022/06/06/honeypot-diaries-masscan/</guid><description>&lt;p&gt;This blog post is the second installment of a series I want to use to cover lessons learned and interesting observations from my honeypots. These honeypots are geographically dispersed and have been running for a few years. Hopefully, this and future posts will add some value for someone.&lt;/p&gt;


&lt;h2 id="observations"&gt;Observations&lt;/h2&gt;
&lt;p&gt;While looking over some of my honeypot logs, I observed the download of an open-source port scanner named &lt;a href="https://github.com/robertdavidgraham/masscan"&gt;masscan&lt;/a&gt;. In the documentation for this tool, the author claims it can scan the entire internet in less than five minutes. I can see the appeal for attackers, and naturally, the logs show evidence of the attacker attempting to use masscan to find other targets of opportunity.&lt;/p&gt;</description></item><item><title>Setup and Securing Winlogbeat</title><link>https://blog.edie.io/2022/02/21/setup-and-securing-winlogbeat/</link><pubDate>Mon, 21 Feb 2022 18:30:00 +0000</pubDate><guid>https://blog.edie.io/2022/02/21/setup-and-securing-winlogbeat/</guid><description>&lt;p&gt;&lt;a href="https://www.elastic.co/guide/en/beats/winlogbeat/current/_winlogbeat_overview.html"&gt;Winlogbeat&lt;/a&gt; is a lightweight open-source Windows agent that uses the Windows API to ship different event logs to &lt;a href="https://www.elastic.co/guide/en/logstash/current/introduction.html"&gt;Logstash&lt;/a&gt; or &lt;a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/elasticsearch-intro.html"&gt;Elasticsearch&lt;/a&gt;. I have been a Splunk user for quite some time, but I have started to also leverage the Elastic Stack at work and in my home lab. This post is for my reference and anyone trying to configure winlogbeat as securely as possible.&lt;/p&gt;
&lt;nav class="toc-a" aria-label="Table of Contents"&gt;
 &lt;div class="toc-a-head"&gt;
 &lt;span class="toc-a-chevron"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="toc-a-label"&gt;Table of Contents&lt;/span&gt;
 &lt;/div&gt;
 &lt;ul class="toc-a-list"&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#create-winlogbeat-roles" data-id="create-winlogbeat-roles"&gt;01&amp;nbsp;&amp;nbsp;Create Winlogbeat Roles&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#create-endpoint-api-key-s" data-id="create-endpoint-api-key-s"&gt;02&amp;nbsp;&amp;nbsp;Create Endpoint API Key(s)&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#create-winlogbeat-admin-user" data-id="create-winlogbeat-admin-user"&gt;03&amp;nbsp;&amp;nbsp;Create Winlogbeat Admin User&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#add-ca-to-windows-certificate-store" data-id="add-ca-to-windows-certificate-store"&gt;04&amp;nbsp;&amp;nbsp;Add CA to Windows Certificate Store&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#modify-default-winlogbeat-configuration" data-id="modify-default-winlogbeat-configuration"&gt;05&amp;nbsp;&amp;nbsp;Modify Default Winlogbeat Configuration&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#starting-the-winlogbeat-service" data-id="starting-the-winlogbeat-service"&gt;06&amp;nbsp;&amp;nbsp;Starting the Winlogbeat Service&lt;/a&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;div class="toc-a-progress"&gt;
 &lt;div class="toc-a-progress-fill"&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/nav&gt;

&lt;p&gt;Download and install winlogbeat on a Windows endpoint. I would try to keep the same version of winlogbeat as the rest of the Elastic Stack running in your environment. For instance, if your Logstash or Elasticsearch is version 7.16 then make sure you download version 7.16 of winlogbeat.&lt;/p&gt;</description></item><item><title>Ingesting PCAP Files with Zeek and Splunk</title><link>https://blog.edie.io/2022/02/01/ingesting-pcap-files-with-zeek-and-splunk/</link><pubDate>Tue, 01 Feb 2022 02:32:32 +0000</pubDate><guid>https://blog.edie.io/2022/02/01/ingesting-pcap-files-with-zeek-and-splunk/</guid><description>&lt;p&gt;Whenever I want to analyze a relatively small packet capture (&lt;a href="https://www.ietf.org/id/draft-ietf-opsawg-pcap-00.html"&gt;PCAP&lt;/a&gt;), I load it up in &lt;a href="https://www.wireshark.org/"&gt;Wireshark&lt;/a&gt; and get the job done. However, this process does not scale and becomes a problem with large-sized pcap files. Even if you split, let&amp;rsquo;s say, a 25 terabyte PCAP up into smaller chunks, can you imagine how long it would take using just Wireshark for analysis?&lt;/p&gt;
&lt;nav class="toc-a" aria-label="Table of Contents"&gt;
 &lt;div class="toc-a-head"&gt;
 &lt;span class="toc-a-chevron"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="toc-a-label"&gt;Table of Contents&lt;/span&gt;
 &lt;/div&gt;
 &lt;ul class="toc-a-list"&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#getting-started" data-id="getting-started"&gt;01&amp;nbsp;&amp;nbsp;Getting Started&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#splunk-uf-configuration" data-id="splunk-uf-configuration"&gt;02&amp;nbsp;&amp;nbsp;Splunk UF Configuration&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#reading-a-single-pcap-with-zeek" data-id="reading-a-single-pcap-with-zeek"&gt;03&amp;nbsp;&amp;nbsp;Reading a Single PCAP with Zeek&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#splitting-large-pcap-files" data-id="splitting-large-pcap-files"&gt;04&amp;nbsp;&amp;nbsp;Splitting Large PCAP files&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#reading-multiple-pcap-files-with-zeek" data-id="reading-multiple-pcap-files-with-zeek"&gt;05&amp;nbsp;&amp;nbsp;Reading Multiple PCAP Files with Zeek&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#splunk-indexer-configuration" data-id="splunk-indexer-configuration"&gt;06&amp;nbsp;&amp;nbsp;Splunk Indexer Configuration&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#carving-vs-ingesting-large-pcap-files" data-id="carving-vs-ingesting-large-pcap-files"&gt;07&amp;nbsp;&amp;nbsp;Carving vs Ingesting Large PCAP Files&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#bonus-using-security-onion-for-pcap-ingest" data-id="bonus-using-security-onion-for-pcap-ingest"&gt;08&amp;nbsp;&amp;nbsp;Bonus: Using Security Onion for PCAP Ingest&lt;/a&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;div class="toc-a-progress"&gt;
 &lt;div class="toc-a-progress-fill"&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/nav&gt;

&lt;p&gt;This blog post will look at a simple data pipeline to read and ingest pcap files into a Security Incident and Event Management (SIEM) platform using &lt;a href="https://zeek.org/"&gt;Zeek&lt;/a&gt; and &lt;a href="https://www.splunk.com/"&gt;Splunk&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Cryptocurrency Pump &amp; Dumps</title><link>https://blog.edie.io/2021/07/22/cryptocurrency-pump-dumps/</link><pubDate>Thu, 22 Jul 2021 02:30:58 +0000</pubDate><guid>https://blog.edie.io/2021/07/22/cryptocurrency-pump-dumps/</guid><description>&lt;p&gt;Cryptocurrencies like &lt;a href="https://bitcoin.org/en/"&gt;Bitcoin&lt;/a&gt; and &lt;a href="https://coinmarketcap.com/currencies/dogecoin/"&gt;Dogecoin&lt;/a&gt; have seen greater adoption by retail and institutional investors over the last year. I&amp;rsquo;m not going to get into the reasons for this, but the ubiquitous stories of crypto millionaires add to the fear of missing out (FOMO).&lt;/p&gt;
&lt;p&gt;I use discord for a subset of my online collaboration, and that includes following some cryptocurrency groups. One day, I received a &lt;a href="https://www.dictionary.com/browse/dm"&gt;DM&lt;/a&gt; with an invite to a cryptocurrency pump group that promises early notification for when and which coin to buy. The idea is that the group organizers regularly coordinate pumps, which is done by convincing a massive group of people to buy simultaneously or in a relatively short period. This action increases the price of the selected cryptocurrency and should allow me and anyone else in the group to sell at a hopefully significant profit. Sounds good, right?&lt;/p&gt;</description></item><item><title>Better Secure Shell (SSH)</title><link>https://blog.edie.io/2021/02/01/better-secure-shell-ssh/</link><pubDate>Mon, 01 Feb 2021 04:21:00 +0000</pubDate><guid>https://blog.edie.io/2021/02/01/better-secure-shell-ssh/</guid><description>&lt;p&gt;I highly recommend using SSH &lt;a href="https://www.ssh.com/ssh/public-key-authentication"&gt;Public Key Authentication&lt;/a&gt; and a customized SSH client &lt;a href="https://www.ssh.com/ssh/config/"&gt;configuration &lt;/a&gt;to ease your everyday SSH workflows. I have more than 10 servers that I manage on a daily basis and using a password for each one would be tedious. Using the same password for all of them is definitely not recommended and is a risky decision. This post will be updated as I incorporate new and relevant changes to my setup.&lt;/p&gt;</description></item><item><title>Detecting Tor communication</title><link>https://blog.edie.io/2020/12/31/detecting-tor-communication/</link><pubDate>Thu, 31 Dec 2020 19:01:00 +0000</pubDate><guid>https://blog.edie.io/2020/12/31/detecting-tor-communication/</guid><description>&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Tor_(anonymity_network)"&gt;Tor&lt;/a&gt; (The Onion Router) is an internet communication network built on privacy and anonymity. Much of the attention that Tor receives comes from the malicious segment of users that leverage the Tor network to conduct attacks while concealing their location. This negative association and challenge in attribution have led most organizations to &lt;a href="https://us-cert.cisa.gov/ncas/alerts/aa20-183a"&gt;block&lt;/a&gt; traffic coming from the Tor network.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Tor-logo-2011-flat.svg/1200px-Tor-logo-2011-flat.svg.png" alt="Tor (anonymity network) - Wikipedia" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="https://rules.emergingthreats.net/open/suricata-5.0/rules/"&gt;Proofpoint Emerging Threats&lt;/a&gt; has many security feeds and intrusion detection system (IDS) signatures that help defenders detect cyber threats. We will be utilizing the Tor IDS alert &lt;a href="https://rules.emergingthreats.net/open/suricata-5.0/rules/tor.rules"&gt;rules&lt;/a&gt; provided by Emerging Threats (ET) for this blog post.&lt;/p&gt;</description></item><item><title>Using DoD Root Certificates with Git</title><link>https://blog.edie.io/2020/11/16/using-dod-root-certificates-with-git/</link><pubDate>Mon, 16 Nov 2020 20:51:23 +0000</pubDate><guid>https://blog.edie.io/2020/11/16/using-dod-root-certificates-with-git/</guid><description>&lt;p&gt;&lt;img src="https://i.imgur.com/S2gMm.png" alt="DoD root certificate icon" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Git"&gt;Git&lt;/a&gt; clients perform certificate verification whenever you interact with a remote repository over &lt;a href="https://en.wikipedia.org/wiki/Transport_Layer_Security"&gt;TLS&lt;/a&gt;. Since the Department of Defense (DoD) certificates are not in most mainstream operating systems, the validation fails. The quick and insecure solution is to disable certificate verification globally.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git config --global http.sslVerify false&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Or you can also use the -c option, which allows you to pass a configuration parameter.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git -c http.sslVerify=false clone https://git.redacted.mil/dod/project-repo.git&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Disabling certificate validation globally is the most insecure course of action and should be avoided. The second quick fix limits the risk to the cloned repository. Both choices are not best practices, and you should configure git to use the DoD root certificates.&lt;/p&gt;</description></item><item><title>Honeypot Diaries: Dota Malware</title><link>https://blog.edie.io/2020/11/01/honeypot-diaries-dota-malware/</link><pubDate>Sun, 01 Nov 2020 03:58:44 +0000</pubDate><guid>https://blog.edie.io/2020/11/01/honeypot-diaries-dota-malware/</guid><description>&lt;p&gt;A &lt;a href="https://en.wikipedia.org/wiki/Honeypot_(computing)"&gt;honeypot&lt;/a&gt; is a form of deception technology used to observe threat actor tactics, techniques, and procedures (TTP). I have deployed a customized version of the &lt;a href="https://cowrie.readthedocs.io/en/latest/README.html"&gt;Cowrie&lt;/a&gt; honeypot in several regions, and I have one at home to capture residential IP space activity. The Honeypot Diaries will be a recurring series that I will use to share interesting and notable things I see happening with my honeypot network.&lt;/p&gt;


&lt;p&gt;While looking through my honeypot logs in Splunk, I noticed thousands of downloaded files with the name up.txt so I drilled down into one of the events where I saw some interesting activity. We will take a look at some of the things I saw below. Keep in mind that brute-force SSH password guessing is how almost all of the attacks gain entry to the honeypot network.&lt;/p&gt;</description></item><item><title>Blue Team Tactics: Honey Tokens Pt. III</title><link>https://blog.edie.io/2020/10/01/blue-team-tactics-honey-tokens-pt.-iii/</link><pubDate>Thu, 01 Oct 2020 00:30:00 +0000</pubDate><guid>https://blog.edie.io/2020/10/01/blue-team-tactics-honey-tokens-pt.-iii/</guid><description>&lt;p&gt;This is the final part of a multipart blog post, read part &lt;a href="https://blog.edie.io/2020/05/31/blue-team-tactics-honey-tokens-pt-i/"&gt;one&lt;/a&gt; and &lt;a href="https://blog.edie.io/2020/08/31/blue-team-tactics-honey-tokens-pt-ii/"&gt;two&lt;/a&gt; then continue here.&lt;/p&gt;
&lt;nav class="toc-a" aria-label="Table of Contents"&gt;
 &lt;div class="toc-a-head"&gt;
 &lt;span class="toc-a-chevron"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="toc-a-label"&gt;Table of Contents&lt;/span&gt;
 &lt;/div&gt;
 &lt;ul class="toc-a-list"&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#viewing-audit-logs-in-windows-event-viewer" data-id="viewing-audit-logs-in-windows-event-viewer"&gt;01&amp;nbsp;&amp;nbsp;Viewing Audit Logs in Windows Event Viewer&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#viewing-audit-logs-using-powershell" data-id="viewing-audit-logs-using-powershell"&gt;02&amp;nbsp;&amp;nbsp;Viewing Audit Logs Using PowerShell&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#deploying-splunk-universal-forwarders-via-gpo" data-id="deploying-splunk-universal-forwarders-via-gpo"&gt;03&amp;nbsp;&amp;nbsp;Deploying Splunk Universal Forwarders via GPO&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#configuring-splunk-uf-to-ship-logs" data-id="configuring-splunk-uf-to-ship-logs"&gt;04&amp;nbsp;&amp;nbsp;Configuring Splunk UF to Ship Logs&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#shipping-audit-logs-from-a-windows-event-collector-wec" data-id="shipping-audit-logs-from-a-windows-event-collector-wec"&gt;05&amp;nbsp;&amp;nbsp;Shipping audit logs from a Windows Event Collector (WEC)&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#viewing-audit-logs-in-splunk-web" data-id="viewing-audit-logs-in-splunk-web"&gt;06&amp;nbsp;&amp;nbsp;Viewing audit logs in Splunk Web&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#conclusion" data-id="conclusion"&gt;07&amp;nbsp;&amp;nbsp;Conclusion&lt;/a&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;div class="toc-a-progress"&gt;
 &lt;div class="toc-a-progress-fill"&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/nav&gt;

&lt;p&gt;In part 2, we simulated adversary interaction with our deployed tokens and then leveraged Windows Event Viewer to assess the generated artifacts. What follows will be several options for getting the audit logs from the endpoints to a centralized medium for analysis.&lt;/p&gt;</description></item><item><title>Blue Team Tactics: Honey Tokens Pt. II</title><link>https://blog.edie.io/2020/09/01/blue-team-tactics-honey-tokens-pt.-ii/</link><pubDate>Tue, 01 Sep 2020 03:49:24 +0000</pubDate><guid>https://blog.edie.io/2020/09/01/blue-team-tactics-honey-tokens-pt.-ii/</guid><description>&lt;p&gt;This is a multipart blog post, read &lt;a href="https://blog.edie.io/2020/05/31/blue-team-tactics-honey-tokens-pt-i/"&gt;part one&lt;/a&gt; and then continue here.&lt;/p&gt;
&lt;nav class="toc-a" aria-label="Table of Contents"&gt;
 &lt;div class="toc-a-head"&gt;
 &lt;span class="toc-a-chevron"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="toc-a-label"&gt;Table of Contents&lt;/span&gt;
 &lt;/div&gt;
 &lt;ul class="toc-a-list"&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#deploying-honey-tokens-using-powershell-posh" data-id="deploying-honey-tokens-using-powershell-posh"&gt;01&amp;nbsp;&amp;nbsp;Deploying honey tokens using PowerShell (PoSh)&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#validating-audit-settings-on-remote-systems" data-id="validating-audit-settings-on-remote-systems"&gt;02&amp;nbsp;&amp;nbsp;Validating audit settings on remote systems&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#test-audit-event-generation" data-id="test-audit-event-generation"&gt;03&amp;nbsp;&amp;nbsp;Test Audit Event Generation&lt;/a&gt;
 &lt;ul&gt;
 &lt;li class="h3"&gt;&lt;a href="#powershell-remoting" data-id="powershell-remoting"&gt;PowerShell Remoting&lt;/a&gt;&lt;/li&gt;
 &lt;li class="h3"&gt;&lt;a href="#remote-desktop" data-id="remote-desktop"&gt;Remote Desktop&lt;/a&gt;&lt;/li&gt;
 &lt;li class="h3"&gt;&lt;a href="#simulated-memory-resident-malware" data-id="simulated-memory-resident-malware"&gt;Simulated Memory Resident Malware&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;div class="toc-a-progress"&gt;
 &lt;div class="toc-a-progress-fill"&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/nav&gt;

&lt;p&gt;We enabled filesystem auditing, created our audit template, and staged our honey tokens for deployment in part one. In part two, we will deploy the honey tokens and identify various methods for monitoring adversary interaction.&lt;/p&gt;</description></item><item><title>Load Balancing a Splunk Search Head Cluster</title><link>https://blog.edie.io/2020/07/31/load-balancing-a-splunk-search-head-cluster/</link><pubDate>Fri, 31 Jul 2020 02:34:00 +0000</pubDate><guid>https://blog.edie.io/2020/07/31/load-balancing-a-splunk-search-head-cluster/</guid><description>&lt;p&gt;A Splunk &lt;a href="https://docs.splunk.com/Splexicon:Searchhead"&gt;Search Head&lt;/a&gt; (SH) enables an analyst to query a Splunk Indexer for data in a distributed configuration. A Search Heads group that shares knowledge objects and settings is known collectively as a Search Head Cluster (&lt;a href="https://docs.splunk.com/Splexicon:Searchheadcluster"&gt;SHC&lt;/a&gt;). Deploying a SHC provides high availability (HA) and many other benefits to your users. However, as you scale out your Search Heads, updating DNS, and providing the list of available servers to your users is not ideal. We need a way to provide a single landing point while abstracting the details from your users.&lt;/p&gt;</description></item><item><title>FreeIPA integration with Splunk</title><link>https://blog.edie.io/2020/06/30/freeipa-integration-with-splunk/</link><pubDate>Tue, 30 Jun 2020 20:42:00 +0000</pubDate><guid>https://blog.edie.io/2020/06/30/freeipa-integration-with-splunk/</guid><description>&lt;p&gt;&lt;a href="https://www.splunk.com/"&gt;Splunk&lt;/a&gt; has built-in user authentication; however, if you have multiple deployments or a clustered environment, it makes sense to utilize centralized user management. &lt;a href="https://www.freeipa.org/page/Main_Page"&gt;FreeIPA&lt;/a&gt; provides a solution similar to a Domain Controller in an Active Directory (AD) environment. Setting up FreeIPA is outside the scope of this document, and we will instead focus on how to integrate Splunk user authentication with an existing FreeIPA environment.&lt;/p&gt;
&lt;nav class="toc-a" aria-label="Table of Contents"&gt;
 &lt;div class="toc-a-head"&gt;
 &lt;span class="toc-a-chevron"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="toc-a-label"&gt;Table of Contents&lt;/span&gt;
 &lt;/div&gt;
 &lt;ul class="toc-a-list"&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#create-binddn-user-for-splunk-instance" data-id="create-binddn-user-for-splunk-instance"&gt;01&amp;nbsp;&amp;nbsp;Create bindDN user for Splunk Instance&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#configure-ldap-settings-in-splunk-web-ui" data-id="configure-ldap-settings-in-splunk-web-ui"&gt;02&amp;nbsp;&amp;nbsp;Configure LDAP settings in Splunk Web UI&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#configure-user-mapping" data-id="configure-user-mapping"&gt;03&amp;nbsp;&amp;nbsp;Configure User Mapping&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#configure-ldap-using-splunk-app" data-id="configure-ldap-using-splunk-app"&gt;04&amp;nbsp;&amp;nbsp;Configure LDAP using Splunk App&lt;/a&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;div class="toc-a-progress"&gt;
 &lt;div class="toc-a-progress-fill"&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/nav&gt;

&lt;h2 id="create-binddn-user-for-splunk-instance"&gt;Create bindDN user for Splunk Instance&lt;/h2&gt;
&lt;p&gt;The Splunk server needs a FreeIPA system account (bindDN) to perform LDAP queries and validate user authentication requests. The web UI does not allow configuration of system accounts, so we have to create it from the command line.&lt;/p&gt;</description></item><item><title>Blue Team Tactics: Honey Tokens Pt. I</title><link>https://blog.edie.io/2020/06/01/blue-team-tactics-honey-tokens-pt.-i/</link><pubDate>Mon, 01 Jun 2020 03:15:00 +0000</pubDate><guid>https://blog.edie.io/2020/06/01/blue-team-tactics-honey-tokens-pt.-i/</guid><description>&lt;p&gt;If you are defending an enterprise network, you should be using some form of &lt;a href="https://en.wikipedia.org/wiki/Honeytoken"&gt;honey token&lt;/a&gt; or canary, which is just something you place in your environment that no one should access. If any interaction is detected, it is usually an indicator of unauthorized activity. Using pseudo domain accounts as honey tokens usually illuminate the risk bubble for network owners, therefore I recommend using pseudo files with windows file auditing turned on and configured.&lt;/p&gt;</description></item><item><title>DIY IP Threat Feed</title><link>https://blog.edie.io/2020/04/30/diy-ip-threat-feed/</link><pubDate>Thu, 30 Apr 2020 21:46:05 +0000</pubDate><guid>https://blog.edie.io/2020/04/30/diy-ip-threat-feed/</guid><description>&lt;p&gt;A threat feed is a collection of actionable information about threats that allows for mitigating harmful events. This blog post is concerned with developing an IP based threat feed or blacklist. We will look at how to gather, aggregate, enrich, and extract threat data for consumption.&lt;/p&gt;
&lt;nav class="toc-a" aria-label="Table of Contents"&gt;
 &lt;div class="toc-a-head"&gt;
 &lt;span class="toc-a-chevron"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="toc-a-label"&gt;Table of Contents&lt;/span&gt;
 &lt;/div&gt;
 &lt;ul class="toc-a-list"&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#gathering-the-threat-data" data-id="gathering-the-threat-data"&gt;01&amp;nbsp;&amp;nbsp;Gathering the threat data&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#aggregation-of-the-threat-data" data-id="aggregation-of-the-threat-data"&gt;02&amp;nbsp;&amp;nbsp;Aggregation of the threat data&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#data-enrichment" data-id="data-enrichment"&gt;03&amp;nbsp;&amp;nbsp;Data Enrichment&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#extraction" data-id="extraction"&gt;04&amp;nbsp;&amp;nbsp;Extraction&lt;/a&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;div class="toc-a-progress"&gt;
 &lt;div class="toc-a-progress-fill"&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/nav&gt;

&lt;h2 id="gathering-the-threat-data"&gt;Gathering the threat data&lt;/h2&gt;
&lt;p&gt;I have several servers in the US, Europe, and Asia running modified versions of &lt;a href="https://github.com/cowrie/cowrie"&gt;cowrie&lt;/a&gt;, a medium interaction honey pot. These honey pots allow ssh access by accepting logins based on a random number of guesses for each attacker. The configuration setting is below:&lt;/p&gt;</description></item><item><title>Deploying Splunk Universal Forwarders via GPO</title><link>https://blog.edie.io/2020/03/28/deploying-splunk-universal-forwarders-via-gpo/</link><pubDate>Sat, 28 Mar 2020 20:11:04 +0000</pubDate><guid>https://blog.edie.io/2020/03/28/deploying-splunk-universal-forwarders-via-gpo/</guid><description>&lt;p&gt;When you want to get security event data from your Windows endpoints, there exists a myriad of ways to achieve that objective. Here I am going to outline how to deploy the Splunk Universal Forwarder (UF) using a Group Policy Object (GPO). From there, you can configure the agents using a &lt;a href="https://docs.splunk.com/Splexicon:Deploymentserver"&gt;deployment server&lt;/a&gt; to ship the logs to a Splunk Indexer.&lt;/p&gt;
&lt;p&gt;These are the general steps we will need to perform to complete this task:&lt;/p&gt;</description></item><item><title>A Tale of an MSBuild In-Line Task</title><link>https://blog.edie.io/2020/02/26/a-tale-of-an-msbuild-in-line-task/</link><pubDate>Wed, 26 Feb 2020 23:22:56 +0000</pubDate><guid>https://blog.edie.io/2020/02/26/a-tale-of-an-msbuild-in-line-task/</guid><description>&lt;p&gt;I analyzed a suspicious file found during an Incident Response (IR) that turned out to be an &lt;a href="https://docs.microsoft.com/en-us/visualstudio/msbuild/walkthrough-creating-an-inline-task?view=vs-2019"&gt;in-line MSBuild task&lt;/a&gt;. The file had a byte array with an extremely long sequence of bytes. My first thought was that it was a binary of some sort. I extracted the bytes and wrote a few lines of C Sharp to convert it back to a binary.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://media.edie.io/2020/02/image.png" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;The image above is a screenshot of a portion of the MSBuild task file. The byte sequence spanned thousands of lines. If you look at the &lt;strong&gt;byte[] buf&lt;/strong&gt; variable assignment, the byte sequence &lt;strong&gt;0x4d 0x5a&lt;/strong&gt; represents the Magic Number for the &lt;a href="https://en.wikipedia.org/wiki/List_of_file_signatures"&gt;Microsoft Portable Executable&lt;/a&gt; (PE) format.&lt;/p&gt;</description></item><item><title>Stack Smashing at Home</title><link>https://blog.edie.io/2020/01/19/stack-smashing-at-home/</link><pubDate>Sun, 19 Jan 2020 00:35:23 +0000</pubDate><guid>https://blog.edie.io/2020/01/19/stack-smashing-at-home/</guid><description>&lt;p&gt;There are various wargaming sites such as &lt;a href="http://smashthestack.org/wargames.html"&gt;SmashTheStack&lt;/a&gt;, &lt;a href="https://overthewire.org/wargames/"&gt;OverTheWire,&lt;/a&gt; and &lt;a href="https://io.netgarage.org/"&gt;IO Wargame&lt;/a&gt; that provide a platform for users to legally exploit real world software vulnerabilities. Source code is provided with a few of the challenges, which you can copy to a local research machine instead of working remotely. Keep in mind that the sites hosting these challenges have disabled most if not all of the compiler and kernel protections, so when you compile the source code at home you may have unintended results.&lt;/p&gt;</description></item><item><title>Ansible User Account Provisioning</title><link>https://blog.edie.io/2019/12/20/ansible-user-account-provisioning/</link><pubDate>Fri, 20 Dec 2019 03:21:28 +0000</pubDate><guid>https://blog.edie.io/2019/12/20/ansible-user-account-provisioning/</guid><description>&lt;p&gt;Whenever I stand up a new Linux machine, I always find myself doing the same four things:&lt;/p&gt;
&lt;nav class="toc-a" aria-label="Table of Contents"&gt;
 &lt;div class="toc-a-head"&gt;
 &lt;span class="toc-a-chevron"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="toc-a-label"&gt;Table of Contents&lt;/span&gt;
 &lt;/div&gt;
 &lt;ul class="toc-a-list"&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#step-1" data-id="step-1"&gt;01&amp;nbsp;&amp;nbsp;Step 1:&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#step-2" data-id="step-2"&gt;02&amp;nbsp;&amp;nbsp;Step 2:&lt;/a&gt;
 &lt;/li&gt;
 &lt;li class="h2"&gt;
 &lt;a href="#step-3" data-id="step-3"&gt;03&amp;nbsp;&amp;nbsp;Step 3:&lt;/a&gt;
 &lt;/li&gt;
 &lt;/ul&gt;
 &lt;div class="toc-a-progress"&gt;
 &lt;div class="toc-a-progress-fill"&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/nav&gt;

&lt;ol&gt;
&lt;li&gt;Creating my main user account&lt;/li&gt;
&lt;li&gt;Creating an ansible user account&lt;/li&gt;
&lt;li&gt;Configuring sudoers&lt;/li&gt;
&lt;li&gt;Copying over SSH Public Keys.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Definitely, not something that evokes fun. I have tried various automation tools, but ansible has found a very special place in my toolkit.&lt;/p&gt;
&lt;p&gt;For readers not familiar with ansible, it is a very powerful agent-less automation tool for all the things. There is a great primer [here][1]. This blog post is not a deep dive or an intro to ansible tutorial, I am only demonstrating how I initially provision the systems in my HomeLab (On-Prem) and in the Cloud.&lt;/p&gt;</description></item><item><title>Replacing the Default Splunk Web SSL Certificate</title><link>https://blog.edie.io/2019/11/06/replacing-the-default-splunk-web-ssl-certificate/</link><pubDate>Wed, 06 Nov 2019 23:14:39 +0000</pubDate><guid>https://blog.edie.io/2019/11/06/replacing-the-default-splunk-web-ssl-certificate/</guid><description>&lt;p&gt;This post goes over how to sign a SplunkWeb Certificate Signing Request (CSR) using my Root CA in &lt;a href="https://www.pfsense.org/"&gt;pfSense&lt;/a&gt;. I do not cover creating the Root CA.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: &lt;em&gt;Create the directory for the certificates&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;splunk@siem:~$ mkdir /opt/splunk/etc/auth/certs&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: &lt;em&gt;Generate the private key and temporary password&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;splunk@siem:&lt;del&gt;$ cd /opt/splunk/etc/auth/certs
splunk@siem:&lt;/del&gt;$ splunk cmd openssl genrsa -des3 -out SplunkWebPrivate.key 4096
Generating RSA private key, 4096 bit long modulus
Enter pass phrase for SplunkWebPrivate.key: (put something you will remember. we will remove it in the next step)&lt;/pre&gt;&lt;/p&gt;</description></item><item><title>Working with Raw LVM Disk Images</title><link>https://blog.edie.io/2019/08/18/working-with-raw-lvm-disk-images/</link><pubDate>Sun, 18 Aug 2019 20:11:17 +0000</pubDate><guid>https://blog.edie.io/2019/08/18/working-with-raw-lvm-disk-images/</guid><description>&lt;p&gt;Mounting disk images on Linux is fairly straight forward, however an image with a Logical Volume Manager (&lt;a href="https://www.digitalocean.com/community/tutorials/an-introduction-to-lvm-concepts-terminology-and-operations"&gt;LVM&lt;/a&gt;) partition requires a little more attention. The first thing I do is find out some information about the image(s):&lt;/p&gt;
&lt;p&gt;root@box:# fdisk -l -o Device,Type,Size disk.img&lt;/p&gt;
&lt;p&gt;Device Type Size
disk.img1 Linux 1G
disk.img2 Linux LVM 952.9G
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;-l lists the partition table and -o outputs the columns specified. This particular image has two partitions one of which is an LVM parition. In order to access this space we need to mount the image. I chose to use &lt;a href="http://storaged.org/doc/udisks2-api/latest/udisksctl.1.html"&gt;udiskctl&lt;/a&gt;, but you are free to use your own method:&lt;/p&gt;</description></item><item><title>Slackware LVM over LUKS</title><link>https://blog.edie.io/2019/06/16/slackware-lvm-over-luks/</link><pubDate>Sun, 16 Jun 2019 22:44:16 +0000</pubDate><guid>https://blog.edie.io/2019/06/16/slackware-lvm-over-luks/</guid><description>&lt;p&gt;This is mostly a post to document my process of setting up Full Disk Encryption (FDE) using the Linux Unified Key Setup (&lt;a href="https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup"&gt;LUKS&lt;/a&gt;) and the Logical Volume Manager (&lt;a href="https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)"&gt;LVM&lt;/a&gt;). Most major distributions already enable this process at installation, however Slackware does not and it must be done by hand. I am going to use an &lt;em&gt;unencrypted&lt;/em&gt; boot partition. My boot manager does not currently support booting a LUKS container. Sometime in the future I will consider a rebuild of my laptop using grub2, which has support for LUKS and LVM.&lt;/p&gt;</description></item><item><title>Using NetworkManager with DNSMasq and Slackware</title><link>https://blog.edie.io/2019/06/02/using-networkmanager-with-dnsmasq-and-slackware/</link><pubDate>Sun, 02 Jun 2019 18:26:13 +0000</pubDate><guid>https://blog.edie.io/2019/06/02/using-networkmanager-with-dnsmasq-and-slackware/</guid><description>&lt;p&gt;dnsmasq on Slackware 14.2 is compiled without &lt;a href="https://www.freedesktop.org/wiki/Software/dbus/"&gt;D-Bus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;lab$ dnsmasq -v | grep options
Compile time options: IPv6 GNU-getopt no-DBus i18n no-IDN DHCP DHCPv6 &lt;snip&gt; &amp;hellip;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The logs show NetworkManager trying to start dnsmasq, but failing:&lt;/p&gt;
&lt;p&gt;dnsmasq[4466]: DBus not available: set HAVE_DBUS in src/config.h
dnsmasq[4466]: FAILED to start up
NetworkManager[3101]: &lt;warn&gt; dnsmasq exited with error: Configuration problem (1)
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;After downloading the source files and SlackBuild resources from a &lt;a href="https://mirrors.slackware.com/mirrorlist/"&gt;Slackware Mirror,&lt;/a&gt; validate the GPG  signature using the provided .asc file. Below are the contents of a directory after I assembled all the required pieces.&lt;/p&gt;</description></item><item><title>Migrating and Upgrading Apache Guacamole to Docker</title><link>https://blog.edie.io/2019/03/21/migrating-and-upgrading-apache-guacamole-to-docker/</link><pubDate>Thu, 21 Mar 2019 06:23:50 +0000</pubDate><guid>https://blog.edie.io/2019/03/21/migrating-and-upgrading-apache-guacamole-to-docker/</guid><description>&lt;p&gt;&lt;img src="https://media.edie.io/2019/03/apache-guacamole-logo.jpg" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPDATED&lt;/strong&gt;: I have created an &lt;a href="https://github.com/tankmek/guacamole-docker-compose"&gt;all-in-one&lt;/a&gt; (AIO) version that includes nginx using TLS.&lt;/p&gt;
&lt;p&gt;Apache &lt;a href="https://guacamole.apache.org/"&gt;Guacamole&lt;/a&gt; is a client-less remote desktop gateway. I use it in order to access my lab when traditional methods are not available. Guacamole does not use agents or fancy plugins, you only need an &lt;a href="https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5"&gt;HTML5&lt;/a&gt; supported browser and you can access your desktop or server in the cloud.&lt;/p&gt;
&lt;p&gt;I started with version 0.9.14 of Guacamole. When version 1.0 was released, I decided to move away from &lt;a href="https://chasewright.com/"&gt;Chase Wright&amp;rsquo;s&lt;/a&gt; all-in-one &lt;a href="https://github.com/MysticRyuujin/guac-install"&gt;script&lt;/a&gt; and roll my own micro-services docker setup. This blog post covers the steps I took to deploy a containerized guacamole setup.&lt;/p&gt;</description></item><item><title>AutoFS with DHCP Classless Static Route Option</title><link>https://blog.edie.io/2019/03/07/autofs-with-dhcp-classless-static-route-option/</link><pubDate>Thu, 07 Mar 2019 21:12:42 +0000</pubDate><guid>https://blog.edie.io/2019/03/07/autofs-with-dhcp-classless-static-route-option/</guid><description>&lt;p&gt;My FreeNAS server is a virtual machine (VM) on my Dell r710 server. I mount my NFS and CIFS Shares using AutoFS and configure my static routes to the NAS using the DHCP Server on my pfSense Appliance.&lt;/p&gt;
&lt;p&gt;AutoFS is software that uses the automounter of the Linux kernel to dynamically mount file systems on demand. When not in use they are unmounted, freeing up resources.&lt;/p&gt;
&lt;p&gt;Slackware Linux comes with autofs installed so I only need to configure it for my use case. The first order of business is to verify the &lt;a href="https://www.systutorials.com/docs/linux/man/5-auto.master/"&gt;Master Map File&lt;/a&gt; located at /etc/auto.master has acceptable defaults properly configured.&lt;/p&gt;</description></item><item><title>Using Physical Security Keys with Slackware Linux</title><link>https://blog.edie.io/2018/10/30/using-physical-security-keys-with-slackware-linux/</link><pubDate>Tue, 30 Oct 2018 04:12:08 +0000</pubDate><guid>https://blog.edie.io/2018/10/30/using-physical-security-keys-with-slackware-linux/</guid><description>&lt;p&gt;Most people are aware of the various computer data &lt;a href="https://en.wikipedia.org/wiki/List_of_data_breaches"&gt;breach&lt;/a&gt; incidents and password &lt;a href="https://www.troyhunt.com/introducing-306-million-freely-downloadable-pwned-passwords/"&gt;dumps&lt;/a&gt; that have occurred over the last few years. You can even visit Have I Been Pwned (&lt;a href="https://haveibeenpwned.com/"&gt;HIBP&lt;/a&gt;) to find out if your email address is included among over five billion compromised accounts. Think about that for a second, we have a plethora of data dumps with email addresses, usernames, passwords and other personally identifiable information (PII) circling the internet and yet a greater percentage of folks are still satisfied with only a username and password.&lt;/p&gt;</description></item><item><title>Using OpenSSL and pfSense to sign a Subordinate Windows Enterprise Certificate Authority</title><link>https://blog.edie.io/2018/10/18/using-openssl-and-pfsense-to-sign-a-subordinate-windows-enterprise-certificate-authority/</link><pubDate>Thu, 18 Oct 2018 22:23:01 +0000</pubDate><guid>https://blog.edie.io/2018/10/18/using-openssl-and-pfsense-to-sign-a-subordinate-windows-enterprise-certificate-authority/</guid><description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; &lt;em&gt;A Root CA trusted by Active Directory should not be trivialized. Make sure you know what you are doing when working with PKI. Take the time to study the technology before implementing it in production environments. There hasn&amp;rsquo;t been any extensive testing of this setup, so your mileage may vary.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I have a &lt;a href="https://www.pfsense.org/"&gt;pfSense&lt;/a&gt; Security Gateway Appliance that I use heavily in my home network. One of the features that I have taken advantage of is the ability to create a Certificate Authority (CA) and issue certificates.&lt;/p&gt;</description></item><item><title>Handcrafting Linux Shellcode</title><link>https://blog.edie.io/2018/07/28/handcrafting-linux-shellcode/</link><pubDate>Sat, 28 Jul 2018 02:26:16 +0000</pubDate><guid>https://blog.edie.io/2018/07/28/handcrafting-linux-shellcode/</guid><description>&lt;p&gt;Crafting your own shellcode requires getting muddy with low level programming. One does not simply write machine code from memory. This blog post is my attempt at providing a template and tutorial of the shellcode creation process for a 32-bit Linux machine.&lt;/p&gt;
&lt;p&gt;The first step we will take is to write the task we want our shellcode to perform in a high level language:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;unistd.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;egg&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;egg&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;/bin/cat&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;egg&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;flag.txt&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;egg&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;execve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;egg&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="n"&gt;egg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then statically compile the source and check to make sure it works as expected.&lt;/p&gt;</description></item><item><title>Mounting NFS Shares in Windows Using Identity Mapping</title><link>https://blog.edie.io/2018/06/16/mounting-nfs-shares-in-windows-using-identity-mapping/</link><pubDate>Sat, 16 Jun 2018 23:57:05 +0000</pubDate><guid>https://blog.edie.io/2018/06/16/mounting-nfs-shares-in-windows-using-identity-mapping/</guid><description>&lt;p&gt;Before we begin let us enable Services for NFS and both Sub Features.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://media.edie.io/2018/06/nfsPAFSS1.jpg"&gt;&lt;img src="https://media.edie.io/2018/06/nfsPAFSS1.jpg" alt="" loading="lazy" decoding="async"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The typical way you will see an NFS share mounted in Windows involves mounting the remote file system using the anonymous (anon) user:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mount -o anon \\192.168.28.155\mnt\NAS0\media G:&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will give you read only access based on the configured permissions of the NFS Share.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://media.edie.io/2018/06/nfsMountSS1.jpg"&gt;&lt;img src="https://media.edie.io/2018/06/nfsMountSS1.jpg" alt="" loading="lazy" decoding="async"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;div class="callout callout--note" data-callout="note"&gt;
 &lt;div class="callout__header"&gt;
 &lt;svg width="13" height="13" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"&gt;&lt;circle cx="8" cy="8" r="6"/&gt;&lt;line x1="8" y1="7" x2="8" y2="11"/&gt;&lt;circle cx="8" cy="5" r=".6" fill="currentColor" stroke="none"/&gt;&lt;/svg&gt;
 &lt;span class="callout__label"&gt;Note&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="callout__body"&gt;The UID/GID value is -2 and locking=yes&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If you want read/write access then you have to add two DWORD Registry Keys with the UID and GID of the Unix user that owns the share.
Launch an administrative PowerShell Terminal.&lt;/p&gt;</description></item><item><title>Tracking SSH Brute-force Logins with Splunk</title><link>https://blog.edie.io/2018/06/13/tracking-ssh-brute-force-logins-with-splunk/</link><pubDate>Wed, 13 Jun 2018 00:22:59 +0000</pubDate><guid>https://blog.edie.io/2018/06/13/tracking-ssh-brute-force-logins-with-splunk/</guid><description>&lt;p&gt;If you manage servers with &lt;a href="https://en.wikipedia.org/wiki/OpenSSH"&gt;OpenSSH&lt;/a&gt; access, you have no doubt been subject to the barrage of ssh brute-force attempts that occurs across the internet. Some administrators deal with this by either changing the default port (security by obscurity), utilizing public keys, threshold blocking, or white-listing source IP addresses among other things. AWS has security groups that lets you do this easily. However, if you are among those who have to allow public access from anywhere on the default port, you can at least monitor these attempts for trends or setup a SSH Honeypot and do all the sweet things. I decided to try the former using Splunk.&lt;/p&gt;</description></item><item><title>Raspberry Pi Centralized Log Server</title><link>https://blog.edie.io/2018/05/13/raspberry-pi-centralized-log-server/</link><pubDate>Sun, 13 May 2018 20:53:17 +0000</pubDate><guid>https://blog.edie.io/2018/05/13/raspberry-pi-centralized-log-server/</guid><description>&lt;p&gt;Setting up a Pi to be a centralized log store is amazingly simple. If you are using &lt;a href="https://www.raspberrypi.org/documentation/raspbian/"&gt;Raspbian&lt;/a&gt; it comes with &lt;a href="https://www.rsyslog.com/"&gt;rsyslog&lt;/a&gt; installed by default, so all that’s left is to setup the config and tailor log rotation.&lt;/p&gt;
&lt;p&gt;First, you should create a directory under /var/log for all the remote logs.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo mkdir /var/log/central&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then edit the configuration for rsyslog, which can be found in /etc/rsyslog.conf&lt;br&gt;
Find and uncomment the following line(s):&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You may see a different set of configuration options on newer versions of rsyslog&lt;/p&gt;</description></item><item><title>ELF Binary Disassembly</title><link>https://blog.edie.io/2018/03/26/elf-binary-disassembly/</link><pubDate>Mon, 26 Mar 2018 13:03:56 +0000</pubDate><guid>https://blog.edie.io/2018/03/26/elf-binary-disassembly/</guid><description>&lt;p&gt;Let us take a tour through a disassembly dump of an ELF binary and see if we can reverse engineer it. The following output is a result of:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mech@dev:$ gcc -o distut distut.c
mech@dev:$ objdump -d distut|grep main&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;push %ebp // 0x55 
mov %esp,%ebp // 0x89 0xe5 
sub $0x14,%esp // 0x83 0xec 0x14
movl $0x1,0xfffffff8(%ebp) // 0xc7 0x45 0xf8 0x01 0x00 0x00 0x00
movl $0x7a68,0xfffffff4(%ebp) // 0xc7 0x45 0xf4 0x68 0x7a 0x00 0x00
cmpl $0xa,0xfffffff8(%ebp) // 0x83 0x7d 0xf8 0x0a
jne 0x80484d0 &amp;lt;main+32&amp;gt; // 0x75 0x06
jmp 0x8048570 &amp;lt;main+192&amp;gt; // 0xe9 0xa1 0x00 0x00 0x00
nop // 0x90
add $0xfffffff4,%esp // 0x83 0xc4 0xf4
push $0x8048600 // 0x68 0x00 0x86 0x04 0x08
call 0x80483b0 

 // 0xe8 0xd3 0xfe 0xff 0xff 
add $0x10,%esp // 0x83 0xc4 0x10
add $0xfffffffc,%esp // 0x83 0xc4 0xfc
mov 0x8049768,%eax // 0xa1 0x68 0x97 0x04 0x08
push %eax // 0x50
push $0x8 // 0x6a 0x08
lea 0xffffffec(%ebp),%eax // 0x8d 0x45 0xec
push %eax // 0x50 
call 0x8048380 &amp;lt;fgets&amp;gt; // 0xe8 0x8c 0xfe 0xff 0xff
add $0x10,%esp // 0x83 0xc4 0x10
add $0xfffffffc,%esp // 0x83 0xc4 0xfc
push $0x0 // 0x6a 0x00
push $0x0 // 0x6a 0x00
lea 0xffffffec(%ebp),%eax // 0x8d 0x45 0xec
push %eax // 0x50
call 0x8048390 &amp;lt;strtol&amp;gt; // 0xe8 0x89 0xfe 0xff 0xff 0xff
add $0x10,%esp // 0x83 0xc4 0x10
mov %eax,%eax // 0x89 0xc0
mov %eax,0xfffffffc(%ebp) // 0x89 0x45 0xfc
mov 0xfffffffc(%ebp),%eax // 0x8b 0x45 0xfc
cmp 0xfffffff4(%ebp),%eax // 0x3b 0x45 0xf4
jne 0x8048538 &amp;lt;main+136&amp;gt; // 0x75 0x21
add $0xfffffff8,%esp // 0x83 0xc4 0xf8
mov 0xfffffff8(%ebp),%eax // 0x8b 0x45 0xf8
push %eax // 0x50
push $0x8048620 // 0x68 0x20 0x86 0x04 0x08
call 0x80483b0 

 // 0xe8 0x88 0xfe 0xff 0xff
add $0x10,%esp // 0x83 0xc4 0x10
add $0xfffffff4,%esp // 0x83 0xc4 0xf4
push $0x0 // 0x6a 0x00
call 0x80483c0 &amp;lt;exit&amp;gt; // 0xe8 0x8b 0xfe 0xff 0xff
add $0x10,%esp // 0x83 0xc4 0x10
mov 0xfffffffc(%ebp),%eax // 0x8b 0x45 0xfc
cmp 0xfffffff4(%ebp),%eax // 0x3b 0x45 0xf4
jle 0x8048550 &amp;lt;main+160&amp;gt; // 0x7e 0x10
add $0xfffffff4,%esp // 0x83 0xc4 0xf4
call 0x80483b0 

 // 0xe8 0x63 0xfe 0xff 0xff
add $0x10,%esp // 0x83 0xc4 0x10
mov 0xfffffffc(%ebp),%eax // 0x8b 0x45 0xfc
cmp 0xfffffff4(%ebp),%eax // 0x3b 0x45 0xf4
jge 0x8048568 &amp;lt;main+184&amp;gt; // 0x7d 0x10
add $0xfffffff4,%esp // 0x83 0xc4 0xf4
push $0x804864a // 0x68 0x4a 0x86 0x04 0x08
call 0x80483b0 

 // 0xe8 0x4b 0xfe 0xff 0xff
add $0x10,%esp // 0x83 0xc4 0x10
incl 0xfffffff8(%ebp) // 0xff 0x45 0xf8
jmp 0x80484c4 &amp;lt;main+20&amp;gt; // 0xe9 0x54 0xff 0xff
xor %eax,%eax // 0x31 0xc0 
jmp 0x8048574 &amp;lt;main+196&amp;gt; // 0xeb 0x00
leave // 0xc9
ret // 0xc3
nop // 0x90
nop // 0x90 
nop // 0x90&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The reader is assumed to be familiar with the above output. I have removed the memory addresses so each line can fit on a 80 character wide screen. The assembly dump is in &lt;a href="http://csiflabs.cs.ucdavis.edu/~ssdavis/50/att-syntax.htm"&gt;AT&amp;amp;T syntax&lt;/a&gt;. For more in depth information on each of the opcodes see the references at the end of this tutorial.&lt;/p&gt;</description></item><item><title>IBM M1015 9220-8i cross-flashed to LSI 9211-8i IT mode</title><link>https://blog.edie.io/2018/03/23/ibm-m1015-9220-8i-cross-flashed-to-lsi-9211-8i-it-mode/</link><pubDate>Fri, 23 Mar 2018 02:31:41 +0000</pubDate><guid>https://blog.edie.io/2018/03/23/ibm-m1015-9220-8i-cross-flashed-to-lsi-9211-8i-it-mode/</guid><description>&lt;p&gt;Flashing a raid card to a different firmware takes about five minutes, however if you have never done it before, the research process can be an order of magnitude higher. I spent about a day parsing all the blogs, forum posts, and subreddits that discuss flashing the LSI9211 HBA firmware to IT mode on compatible cards.&lt;/p&gt;
&lt;p&gt;The process is simple:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BIOS Mode:&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;megarec -writesbr 0 sbrempty.bin
megarec -cleanflash 0

sas2flsh -o -f 2118it.bin -b mptsas2.rom
sas2flsh -o -sasadd 500605B0xxxxxxxx (x = numbers for SAS address)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;UEFI Mode:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Scams in the Crypto Coin Space</title><link>https://blog.edie.io/2018/02/27/scams-in-the-crypto-coin-space/</link><pubDate>Tue, 27 Feb 2018 14:30:44 +0000</pubDate><guid>https://blog.edie.io/2018/02/27/scams-in-the-crypto-coin-space/</guid><description>&lt;p&gt;If you are involved with crypto currency you are bound to be exposed to a scam or two at some point, much like the Nigerian scams that prey on fiat money.&lt;/p&gt;
&lt;p&gt;I was looking at my twitter feed and noticed the &lt;a href="https://www.binance.com/"&gt;Binance&lt;/a&gt; weekly report.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://media.edie.io/2018/02/binawkrp.png" alt="binawkrp" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;The interesting thing I noticed in the reply section was an apparent Ethereum give away.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://media.edie.io/2018/02/fakebinance.png" alt="fakebinance" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;Now if you are a cautious individual you will immediately notice that the &amp;ldquo;verified&amp;rdquo; mark is missing and the twitter handle is different, which should immediately set off alarms.
Unfortunately, most people don&amp;rsquo;t catch these tells. This Social Engineering attack also uses several fake accounts that remark about how awesome it was to receive 5 ether, which is about $4,000 depending on the day.&lt;/p&gt;</description></item><item><title>Running an Authoritative DNS Server</title><link>https://blog.edie.io/2018/02/19/running-an-authoritative-dns-server/</link><pubDate>Mon, 19 Feb 2018 05:24:14 +0000</pubDate><guid>https://blog.edie.io/2018/02/19/running-an-authoritative-dns-server/</guid><description>&lt;p&gt;I have been running my own Domain Name Server for several years. Some people argue the merits of doing such a thing when you can just put it in the &amp;ldquo;cloud&amp;rdquo;, but I enjoy managing DNS with all the flexibility and enrichment it brings.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://media.edie.io/2018/02/fbsd1.png" alt="fbsd1" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;I run Bind version 9 in a FreeBSD Jail and it serves as the authoritative nameserver for about six different domains. I use &lt;a href="https://dns.he.net/"&gt;Hurricane Electric&lt;/a&gt; and &lt;a href="https://www.buddyns.com"&gt;BuddyNS&lt;/a&gt; as secondaries.&lt;/p&gt;</description></item><item><title>Michael Edie (tankmek)</title><link>https://blog.edie.io/2017/12/03/michael-edie-tankmek/</link><pubDate>Sun, 03 Dec 2017 20:50:50 +0000</pubDate><guid>https://blog.edie.io/2017/12/03/michael-edie-tankmek/</guid><description>&lt;p&gt;So I figured it was about time I started my foray into the blog-o-sphere. Hold your beer while I get organized and squeeze content out to the masses.&lt;/p&gt;</description></item><item><title>About</title><link>https://blog.edie.io/about/</link><pubDate>Sun, 03 Dec 2017 15:50:52 +0000</pubDate><guid>https://blog.edie.io/about/</guid><description>&lt;p&gt;[&lt;a href="https://blog.edie.io/certifications/"&gt;Certifications&lt;/a&gt; | Homelab]&lt;/p&gt;
&lt;p&gt;Michael Edie is a senior Digital Forensics and Incident Response (DFIR) consultant specializing in enterprise-scale investigations, threat hunting, and coordinated incident leadership across complex environments. A former U.S. Army Warrant Officer (170A), he served as a technical lead on a Cyber Protection Team conducting incident response and hunt missions before transitioning fully into cybersecurity.&lt;/p&gt;
&lt;p&gt;Michael’s background includes enterprise security engineering, detection strategy design, and hands-on forensic investigations across Windows, Linux, and hybrid cloud environments. He operates at the intersection of deep technical analysis and executive-level incident coordination, known for methodical execution under pressure.&lt;/p&gt;</description></item><item><title>Talks</title><link>https://blog.edie.io/talks/</link><pubDate>Fri, 01 Jan 2016 00:00:00 +0000</pubDate><guid>https://blog.edie.io/talks/</guid><description/></item></channel></rss>