<?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>Honeypot on ErrorZap</title><link>https://errorzap.com/tags/honeypot/</link><description>Recent content in Honeypot on ErrorZap</description><image><title>ErrorZap</title><url>https://errorzap.com/og.png</url><link>https://errorzap.com/og.png</link></image><generator>Hugo</generator><language>en-US</language><copyright>ErrorZap</copyright><lastBuildDate>Mon, 10 Aug 2026 00:00:00 -0600</lastBuildDate><atom:link href="https://errorzap.com/tags/honeypot/index.xml" rel="self" type="application/rss+xml"/><item><title>I Put One Disposable IP on the Internet. Five Hours Later, Mirai Showed Up.</title><link>https://errorzap.com/posts/one-disposable-ip-five-hours-honeypot/</link><pubDate>Mon, 10 Aug 2026 00:00:00 -0600</pubDate><guid>https://errorzap.com/posts/one-disposable-ip-five-hours-honeypot/</guid><description>What an isolated interactive honeypot recorded during its first five hours on a fresh public IP.</description><content:encoded><![CDATA[<p>I put a brand-new public IP on the internet and made it look interesting.</p>
<p>Not <em>actually</em> interesting. The server held no customer information, useful credentials, production software, or access to anything I operate. It was a dedicated throwaway cloud VM on a disposable network, surrounded by controls intended to keep whatever arrived from going anywhere else.</p>
<p>But from the outside, it looked like a target.</p>
<p>Then I waited.</p>
<p>After roughly five hours, the honeypot had recorded <strong>191 sessions, 4,535 events, and 2,322 commands</strong>. Bots reached 90 simulated successful logins. They generated 146 malware download events, attempted to use the SSH service as a tunnel, and delivered two files independently detected as Mirai variants.</p>
<p>Nothing escaped. No new outbound connection succeeded.</p>
<p><img alt="Dark security infographic summarizing the first five hours: 191 sessions, 4,535 Cowrie events, 2,322 commands, 90 simulated logins, 146 download events, two Mirai variants, and zero outbound connections." loading="lazy" src="/posts/one-disposable-ip-five-hours-honeypot/five-hour-overview.png"></p>
<h2 id="the-five-hour-scoreboard">The five-hour scoreboard</h2>
<p>The interactive SSH honeypot accounted for the richest activity, but it was not the only service being tested. The surrounding simulations recorded another <strong>1,049 probes</strong>:</p>
<table>
	<thead>
			<tr>
					<th>Simulated service</th>
					<th style="text-align: right">Probes</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>MySQL</td>
					<td style="text-align: right">995</td>
			</tr>
			<tr>
					<td>HTTP</td>
					<td style="text-align: right">30</td>
			</tr>
			<tr>
					<td>Redis</td>
					<td style="text-align: right">13</td>
			</tr>
			<tr>
					<td>FTP</td>
					<td style="text-align: right">6</td>
			</tr>
			<tr>
					<td>Other</td>
					<td style="text-align: right">5</td>
			</tr>
	</tbody>
</table>
<p>About 95 percent of that traffic targeted the fake MySQL service. The imbalance is a useful reminder that opportunistic scanning is not evenly distributed; automated campaigns concentrate on whatever their current playbook expects to monetize.</p>
<p><img alt="Service attack mix showing 1,049 probes: 995 MySQL, 30 HTTP, 13 Redis, six FTP, and five other events." loading="lazy" src="/posts/one-disposable-ip-five-hours-honeypot/service-attack-mix.png"></p>
<h2 id="they-did-not-stop-at-the-login-prompt">They did not stop at the login prompt</h2>
<p>A simple port scan is background noise. The revealing part began after the honeypot pretended to accept credentials.</p>
<p>The most active session issued <strong>297 commands</strong>. Rather than downloading one ready-made executable, the bot used hundreds of shell commands to assemble multi-architecture payload data byte by byte inside the simulated filesystem. It then attempted to mark the result executable and launch it.</p>
<p>That is a lot of work for a machine that never existed in the form the attacker imagined.</p>
<p>Another campaign tested writable locations and tried several delivery methods: HTTP, TFTP, and FTP. One captured shell script inspected <code>/proc</code> and killed processes whose executables were marked <code>(deleted)</code>. That behavior is consistent with malware cleaning up stale processes or removing competing infections before taking over the host.</p>
<p>Across the run, the system recorded <strong>75 captured download events and 71 failed attempts</strong>.</p>
<p><img alt="Bot playbook infographic showing 297 commands in one session, payload delivery over HTTP, TFTP, and FTP, two Mirai variants, an SSH tunnel attempt, and zero escapes." loading="lazy" src="/posts/one-disposable-ip-five-hours-honeypot/bot-playbook.png"></p>
<h2 id="mirai-is-still-very-much-alive">Mirai is still very much alive</h2>
<p>Two captured artifacts were independently identified by Microsoft Defender as:</p>
<ul>
<li><code>Backdoor:Linux/Mirai.FX!MTB</code></li>
<li><code>Backdoor:Linux/Mirai.GZ!MTB</code></li>
</ul>
<p>Neither payload executed. Extracted inspection copies were quarantined, while the original evidence was retained separately for later analysis.</p>
<p>The credential spray around these sessions was heavily focused on routers, cameras, optical network terminals, and other embedded devices. Generic <code>admin/admin</code> appeared most often, surrounded by vendor-style default credentials that have been circulating in botnet dictionaries for years.</p>
<p>The internet keeps inventing new technology. Its malware, apparently, enjoys the classics.</p>
<h2 id="the-weirdest-request-make-my-fake-server-a-proxy">The weirdest request: make my fake server a proxy</h2>
<p>One visitor attempted to use the simulated SSH service as a tunnel to <code>dns.google</code> over TLS. The honeypot recorded the forwarding request and its TLS fingerprint, then discarded the forwarded traffic.</p>
<p>That attempt matters because it shows a goal beyond simply infecting the host. A compromised SSH server can also become infrastructure: a proxy, a relay, a place to conceal the origin of the next connection, or a stepping stone toward another target.</p>
<p>The fake server played along just far enough to reveal the intention. It never provided the tunnel.</p>
<h2 id="the-containment-mattered-more-than-the-bait">The containment mattered more than the bait</h2>
<p>This was not attached to my home network, business environment, or a customer system. It used a fresh public IP and a dedicated disposable VM with no agents, tunnels, trusted keys, reusable credentials, or links to other services.</p>
<p>The exposed services were simulations. Forwarding and new outbound connections were blocked. The system could record what an attacker tried without giving that attacker a useful machine to operate.</p>
<p>That boundary is the difference between observing hostile behavior and accidentally donating infrastructure to it.</p>
<h2 id="what-five-hours-taught-me">What five hours taught me</h2>
<p>The surprise was not that attackers eventually found an exposed server. The surprise was how quickly the activity progressed from broad probing to simulated logins, malware delivery, process cleanup, multi-architecture payload assembly, and attempted tunneling.</p>
<p>Nobody was sitting at a keyboard admiring the target. Most of this was automated infrastructure working through an old, efficient routine:</p>
<ol>
<li>Find something exposed.</li>
<li>Try default credentials.</li>
<li>Determine what tools and writable paths exist.</li>
<li>Deliver a payload using whatever protocol works.</li>
<li>Remove competition.</li>
<li>Turn the host into part of something larger.</li>
</ol>
<p>One disposable IP was enough to watch the whole playbook unfold.</p>
<p>The internet does not knock politely. It starts trying <code>admin/admin</code> immediately.</p>
]]></content:encoded></item></channel></rss>