<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>NETRESEC Network Security Blog</title>
    <atom:link href="https://www.netresec.com/rss.ashx" rel="self" type="application/rss+xml" />
    <link>https://www.netresec.com/?page=Blog</link>
    <description>Network Security Monitoring and Network Forensics</description>
    <lastBuildDate>Wed, 27 May 2026 09:15:00 GMT</lastBuildDate>
    <language>en</language>
    <sy:updatePeriod>daily</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <generator>NETRESEC RSS Engine</generator>
    <copyright>2010-2023</copyright>
    <category>posts</category>
    <ttl>1440</ttl>
    <image>
      <url>https://media.netresec.com/images/Netresec_N_144x144.png</url>
      <title>NETRESEC Network Security Blog</title>
      <link>https://www.netresec.com/?page=Blog</link>
    </image>
    <item>
      <title>CapLoader 2.1.0 Released</title>
      <link>https://www.netresec.com/?page=Blog&amp;month=2026-05&amp;post=CapLoader-2-1-0-Released</link>
      <pubDate>Wed, 27 May 2026 09:15:00 GMT</pubDate>
      <dc:creator>Erik Hjelmvik</dc:creator>
      <enclosure url="https://media.netresec.com/images/CapLoader_2-1-0-0_TLS-and-QUIC_1050x926.png" type="image/png" />
      <category>CapLoader</category>
      <category>JA3</category>
      <category>JA4</category>
      <category>TLS</category>
      <category>QUIC</category>
      <category>RFC9849</category>
      <category>RFC8086</category>
      <category>RFC8926</category>
      <category>Encrypted Client Hello</category>
      <category>post-quantum</category>
      <category>OSINT</category>
      <category>encapsulation</category>
      <category>decapsulation</category>
      <category>Rösti</category>
      <category>ScanMalware</category>
      <category>GRE</category>
      <category>q13d0311h3_55b375c5d22e_5a1f323ef56d</category>
      <category>t13d1516h2_8daaf6152771_02713d6af862</category>
      <category>t13d1517h2_8daaf6152771_b0da82dd1658</category>
      <category>t13d1515h2_8daaf6152771_f37e75b10bcc</category>
      <category>t13d1516h2_8daaf6152771_9b887d9acb53</category>
      <guid>https://www.netresec.com/?page=Blog&amp;month=2026-05&amp;post=CapLoader-2-1-0-Released</guid>
      <description>CapLoader has been updated to version 2.1.0. The new release comes with better JA3/JA4 extraction and integration of additional threat-intel and OSINT services. We have also added support for more encapsulation protocols. TLS Client Hello Reassembly TLS handshakes no longer reliably fit in a single[...]</description>
      <content:encoded>&lt;img src="https://media.netresec.com/images/CL_2-1-0_770x770.webp" alt="CapLoader 2.1.0" width="770" height="770" style="float: right; max-width: 50%; height:auto" /&gt;&lt;p&gt;&lt;a href="https://www.netresec.com/?page=CapLoader"&gt;CapLoader&lt;/a&gt; has been updated to version 2.1.0. The new release comes with better JA3/JA4 extraction and integration of additional threat-intel and OSINT services. We have also added support for more encapsulation protocols.
	  &lt;/p&gt;&lt;p&gt;&lt;b&gt;TLS Client Hello Reassembly&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
		TLS handshakes no longer reliably fit in a single packet. Modern TLS features, like &lt;a href="https://datatracker.ietf.org/doc/draft-ietf-tls-ecdhe-mlkem/"&gt;post-quantum key exchanges&lt;/a&gt; and &lt;a href="https://datatracker.ietf.org/doc/html/rfc9849"&gt;Encrypted Client Hello&lt;/a&gt; (ECH), often expand handshake sizes across multiple TCP segments. The same trend appears in QUIC traffic, where TLS handshakes now often are too large to fit in a single UDP packet.
	  &lt;/p&gt;&lt;p&gt;
		As a result, packet‑analysis tools that parse live traffic or PCAP files (like CapLoader) must cache partial TLS handshakes and reassemble them to recover the complete TLS ClientHello messages. &lt;a href="https://www.netresec.com/?page=NetworkMiner"&gt;NetworkMiner&lt;/a&gt; and &lt;a href="https://flowcarp.com/"&gt;FlowCarp&lt;/a&gt; already perform TLS handshake reassembly; CapLoader now supports it as well. This enables CapLoader to extract metadata from large TLS handshakes, including SNI hostnames, JA3 hashes and JA4 fingerprints.
	  &lt;/p&gt;&lt;img src="https://media.netresec.com/images/CapLoader_2-1-0-0_TLS-and-QUIC_1050x926.png" alt="TLS and QUIC sessions in CapLoader 2.1.0.0" width="1050" height="926" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;
		The screenshot above shows CapLoader displaying information extracted from PCAP files that contain TLS and QUIC traffic with multi‑segment TLS 1.3 handshakes. The visible JA4 fingerprints for the client handshakes are:
		&lt;ul&gt;&lt;li&gt;q13d0311h3_55b375c5d22e_5a1f323ef56d − HTTP/3 w/ ECH&lt;/li&gt;&lt;li&gt;t13d1516h2_8daaf6152771_02713d6af862 − HTTP/2 w/ ECH&lt;/li&gt;&lt;li&gt;t13d1517h2_8daaf6152771_b0da82dd1658 − HTTP/2 w/ ECH&lt;/li&gt;&lt;li&gt;t13d1515h2_8daaf6152771_f37e75b10bcc − HTTP/2&lt;/li&gt;&lt;li&gt;t13d1516h2_8daaf6152771_9b887d9acb53 − HTTP/2&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;
		All these handshakes support post-quantum key agreements with a 1216 byte X25519MLKEM768 key. The first three listed JA4 fingerprints also use ECH.
	  &lt;/p&gt;&lt;img src="https://www.netresec.com/images/JA4_t13i010400_0f2cb44170f4_5c4c70b73fa0_518x136.webp" width="518" height="136" alt="JA4 fingerprint t13i010400_0f2cb44170f4_5c4c70b73fa0_518x136" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;&lt;b&gt;Threat Intel and OSINT&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://www.netresec.com/?page=CapLoader"&gt;CapLoader&lt;/a&gt; now matches network traffic against indicators of compromise (IOCs) from &lt;a href="https://infosec.exchange/@viql"&gt;Johannes Bader&lt;/a&gt;'s open source threat intelligence platform &lt;a href="https://rosti.dev/"&gt;Rösti&lt;/a&gt;. An alert is raised whenever the analysed traffic matches any of the following IOC types on Rösti:
		&lt;ul&gt;&lt;li&gt;domain&lt;/li&gt;&lt;li&gt;domain:port&lt;/li&gt;&lt;li&gt;IP&lt;/li&gt;&lt;li&gt;IP:port&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;
		When a match occurs, CapLoader raises an alert on the flow/service and includes the matching IOC type and value.
		Rösti aggregates IOCs from public feeds, researchers, and threat‑intel providers (including IOCs published on this blog).
	  &lt;/p&gt;&lt;p&gt;
		We have also extended the OSINT lookup shortcuts in CapLoader to include the following websites:
		&lt;ul&gt;&lt;li&gt;&lt;a href="https://bgp.tools"&gt;BGP.Tools&lt;/a&gt; (IP lookup)&lt;/li&gt;&lt;li&gt;&lt;a href="https://ipinfo.io"&gt;IPinfo&lt;/a&gt; (IP lookup)&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.netify.ai"&gt;Netify&lt;/a&gt; (IP lookup)&lt;/li&gt;&lt;li&gt;&lt;a href="https://scanmalware.com"&gt;ScanMalware&lt;/a&gt; (domain, IP and ASN lookups)&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;
		Right-click a flow/service/host/alert in &lt;a href="https://www.netresec.com/?page=CapLoader"&gt;CapLoader&lt;/a&gt; and select "Lookup [domain/IP/ASN] at...", which opens the chosen OSINT site in a browser tab with info about the domain/IP/ASN.
	  &lt;/p&gt;&lt;p&gt;&lt;b&gt;Encapsulated Protocols&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
		CapLoader already decapsulates &lt;a href="https://datatracker.ietf.org/doc/html/rfc2784"&gt;GRE&lt;/a&gt;, &lt;a href="https://datatracker.ietf.org/doc/html/rfc7348"&gt;VXLAN&lt;/a&gt;, &lt;a href="https://datatracker.ietf.org/doc/html/rfc5415"&gt;CapWap&lt;/a&gt;, &lt;a href="https://www.rfc-editor.org/rfc/rfc4380.html"&gt;Teredo&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/GPRS_Tunnelling_Protocol#GTP-U_-_GTP_user_data_tunneling"&gt;GTP-U&lt;/a&gt;, &lt;a href="https://wiki.mikrotik.com/wiki/Manual:Tools/Packet_Sniffer"&gt;TZSP&lt;/a&gt; as well as &lt;a href="https://datatracker.ietf.org/doc/html/rfc1853"&gt;IP-in-IP&lt;/a&gt;.
	  &lt;/p&gt;&lt;img src="https://media.netresec.com/images/Decapsulate_all-the-things_1336x1000.webp" alt="Decapsulate all the things" width="1336" height="1000" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;
		With this release we add support for extracting traffic from the following encapsulation protocols:
		&lt;ul&gt;&lt;li&gt;Aruba GRE encapsulated WiFi&lt;/li&gt;&lt;li&gt;Geneve (&lt;a href="https://datatracker.ietf.org/doc/html/rfc8926"&gt;RFC 8926&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;GRE in UDP (&lt;a href="https://datatracker.ietf.org/doc/html/rfc8086"&gt;RFC 8086&lt;/a&gt;) to ports 4754 and 4755&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Improved Protocol Detection&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
		The precision of &lt;a href="https://www.netresec.com/?page=CapLoader"&gt;CapLoader&lt;/a&gt;'s built-in port independent protocol identification has been improved and several additional protocols can now be detected, including &lt;a href="https://www.gsocket.io/"&gt;GSocket&lt;/a&gt;, Hioles, &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/elf.mirai"&gt;Mirai&lt;/a&gt;, &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.pulsar_rat"&gt;Pulsar RAT&lt;/a&gt;, &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.pure_rat"&gt;PureRAT&lt;/a&gt;, &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.svcstealer"&gt;SVCStealer&lt;/a&gt; and &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.xenorat"&gt;XenoRAT&lt;/a&gt;.
	  &lt;/p&gt;</content:encoded>
    </item>
    <item>
      <title>PolarProxy 2.0 Released</title>
      <link>https://www.netresec.com/?page=Blog&amp;month=2026-05&amp;post=PolarProxy-2-0-Released</link>
      <pubDate>Mon, 18 May 2026 07:01:00 GMT</pubDate>
      <dc:creator>Erik Hjelmvik</dc:creator>
      <category>PolarProxy</category>
      <category>systemd</category>
      <category>docker</category>
      <category>cutoff</category>
      <guid>https://www.netresec.com/?page=Blog&amp;month=2026-05&amp;post=PolarProxy-2-0-Released</guid>
      <description>A new major release of PolarProxy is out with a self-contained single-file binary, expanded platform support (musl/ARM), and improved container and service plumbing. PolarProxy is a transparent TLS/SSL inspection proxy built for incident responders, malware analysts and security researchers. It decr[...]</description>
      <content:encoded>&lt;img src="https://media.netresec.com/images/PolarProxy_2-0_2000x2000.webp" alt="PolarProxy 2.0" width="2000" height="2000" style="float: right; max-width: 50%; height:auto" /&gt;&lt;p&gt;A new major release of &lt;a href="https://www.netresec.com/?page=PolarProxy"&gt;PolarProxy&lt;/a&gt; is out  with a self-contained single-file binary, expanded platform support (musl/ARM), and improved container and service plumbing.&lt;/p&gt;&lt;p&gt;
	  PolarProxy is a transparent TLS/SSL inspection proxy built for incident responders, malware analysts and security researchers. It decrypts and re‑encrypts TLS traffic and writes decrypted sessions to PCAP for analysis in Wireshark or an IDS.
	&lt;/p&gt;&lt;p&gt;&lt;b&gt;What's new&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Packaged as a self-contained, single-file binary for easier installation and management.&lt;/li&gt;&lt;li&gt;Improved HTTP proxy server: support for unencrypted HTTP traffic with &lt;span style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; word-break: break-all" x-ms-format-detection="none"&gt;--nontls allow&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Upgraded runtime: migrated from .NET 8 to .NET 10.&lt;/li&gt;&lt;li&gt;More supported platforms: Linux musl (Alpine) builds for ARM and ARM64 architectures added.&lt;/li&gt;&lt;li&gt;Simplified container deployment: Dockerfile and docker-compose.yml included with all musl/Alpine releases.&lt;/li&gt;&lt;li&gt;Service installer for Linux: systemd unit (polarproxy.service) and install script included in non-musl Linux releases.&lt;/li&gt;&lt;li&gt;
			New runtime flags:
			&lt;ul&gt;&lt;li&gt;&lt;span style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; word-break: break-all" x-ms-format-detection="none"&gt;--tlstimeout &amp;lt;seconds&amp;gt;&lt;/span&gt; — sets a TLS handshake/authentication timeout.&lt;/li&gt;&lt;li&gt;&lt;span style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; word-break: break-all" x-ms-format-detection="none"&gt;--cutoff &amp;lt;bytes&amp;gt;&lt;/span&gt; — limits PCAP output to the specified number of bytes per flow.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;Why this release matters&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Self-contained single binary simplifies deployment and maintenance. This is a breaking change, at least for container/pod deployments, so make sure to validate your deployment before rolling out the new 2.0 release to production.&lt;/li&gt;&lt;li&gt;The .NET 10 upgrade brings improved runtime performance and security updates.&lt;/li&gt;&lt;li&gt;Better container support with musl/Alpine build for ARM and ARM64 in addition to existing x64 builds, and simplified container deployments with included config files.&lt;/li&gt;&lt;li&gt;The new timeout for TLS handshakes improves error handling of connections to broken TLS middleboxes and extremely slow web servers.&lt;/li&gt;&lt;li&gt;The flow cutoff CLI option enables users to prevent large downloads from filling up disk volumes. This setting also limits the per-flow size of decrypted traffic that is made available through &lt;a href="https://netresec.com/?b=228fddf"&gt;PCAP-over-IP&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;Quick start for Linux (regular user)&lt;/b&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;
		  Download the appropriate tar archive for your platform (see &lt;a href="https://www.netresec.com/?page=PolarProxy"&gt;download links&lt;/a&gt;).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;
		  Create directory:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;mkdir ~/PolarProxy&lt;/div&gt;&lt;/li&gt;&lt;li&gt;
		  Change directory:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;cd ~/PolarProxy/&lt;/div&gt;&lt;/li&gt;&lt;li&gt;
		  Extract the archive:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;tar -xzf ~/Downloads/PolarProxy_2.0.0_linux-x64.tar.gz&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Create log directory:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;sudo mkdir -p /var/log/polarproxy&lt;/div&gt;&lt;/li&gt;&lt;li&gt;
		  Change log dir owner:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;sudo chown "$USER" /var/log/polarproxy&lt;/div&gt;&lt;/li&gt;&lt;li&gt;
		  Start PolarProxy:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;./PolarProxy -p 10443,80,443 --socks 1080 --httpconnect 8080 --nontls allow --certhttp 10080 -x /var/log/polarproxy/polarproxy.cer -f /var/log/polarproxy/proxyflows.log --pcapoverip 0.0.0.0:57012 -o /var/log/polarproxy/ -v&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;b&gt;Quick start for Linux with systemd&lt;/b&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Download the appropriate tar archive for your platform (see &lt;a href="https://www.netresec.com/?page=PolarProxy"&gt;download links&lt;/a&gt;).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Create and change into a new temp directory:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;cd $(mktemp -d)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;
		  Extract the archive:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;tar -xzf ~/Downloads/PolarProxy_2.0.0_linux-x64.tar.gz&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Run install script:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;sudo ./install-polarproxy-service.sh&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Show service status:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;systemctl status polarproxy.service&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Show logs:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;sudo journalctl -t polarproxy&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;
		The install script creates a system user “polarproxy”, a systemd service called “polarproxy.service”, and then starts that service. You are, of course, free to modify the installation script and polarproxy.service file if you want a different configuration.
	&lt;/p&gt;&lt;p&gt;&lt;b&gt;Quick start for Alpine Docker&lt;/b&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;
		  Download the appropriate Linux musl archive for your platform (see &lt;a href="https://www.netresec.com/?page=PolarProxy"&gt;download links&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Create and change into a new temp directory:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;cd $(mktemp -d)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Extract:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;tar -xzf ~/Downloads/PolarProxy_2.0.0_linux-musl-x64.tar.gz&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Deploy to docker:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;sudo docker compose up -d --build&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Show container status:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;sudo docker ps --filter "name=polarproxy"&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Show logs:&lt;br /&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;sudo docker logs polarproxy&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;
		The docker-compose.yml will create a container named “polarproxy” with a non-root user called “polarproxy” without a password.
	  &lt;/p&gt;&lt;p&gt;&lt;b&gt;Listening services in quick start examples&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
		All three quick start deployments above expose the following TCP ports:
	  &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New';"&gt;10443&lt;/span&gt; — Transparent TLS proxy&lt;/li&gt;&lt;li&gt;&lt;span style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New';"&gt; 1080&lt;/span&gt; — SOCKS server
		&lt;/li&gt;&lt;li&gt;&lt;span style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New';"&gt; 8080&lt;/span&gt; — HTTP Proxy server
		&lt;/li&gt;&lt;li&gt;&lt;span style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New';"&gt;10080&lt;/span&gt; — Web server hosting the root CA certificate
		&lt;/li&gt;&lt;li&gt;&lt;span style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New';"&gt;57012&lt;/span&gt; — &lt;a href="https://netresec.com/?b=228fddf"&gt;PCAP-over-IP&lt;/a&gt; server providing decrypted traffic&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
		A port forwarding (DNAT) firewall rule must be configured, which redirects TCP 443 traffic to the transparent TLS proxy, in order to run PolarProxy as a transparent TLS proxy that intercepts outgoing TLS traffic.
		See the Routing Option alternatives on the &lt;a href="https://www.netresec.com/?page=PolarProxy"&gt;official PolarProxy page&lt;/a&gt; for more details.
	  &lt;/p&gt;&lt;p&gt;
		Decrypted traffic from all proxy services is accessible through the &lt;a href="https://netresec.com/?b=228fddf"&gt;PCAP-over-IP&lt;/a&gt; service on TCP port 57012. They are also written to PCAP files in /var/log/polarproxy/.
	  &lt;/p&gt;&lt;p&gt;&lt;b&gt;Test your deployment&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
		Download PolarProxy’s root CA certificate:
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
		curl -L -o /tmp/polarproxy.cer http://localhost:10080
	  &lt;/div&gt;&lt;p&gt;
		Convert to PEM format:
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
		openssl x509 -inform DER -in /tmp/polarproxy.cer -out /tmp/pp.crt
	  &lt;/div&gt;&lt;p&gt;
		Monitor decrypted traffic via &lt;a href="https://netresec.com/?b=228fddf"&gt;PCAP-over-IP&lt;/a&gt; in one terminal/shell:
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
		nc 127.0.0.1 57012 | tcpdump -Anr -
	  &lt;/div&gt;&lt;p&gt;
		Test transparent proxy in another terminal/shell:
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
  	  curl --cacert /tmp/pp.crt --connect-to www.netresec.com:443:127.0.0.1:10443 https://www.netresec.com/
	  &lt;/div&gt;&lt;p&gt;
		Test SOCKS proxy:
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
		curl --cacert /tmp/pp.crt --socks5 127.0.0.1 https://www.netresec.com/
	  &lt;/div&gt;&lt;p&gt;
		Test HTTP proxy:
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
		curl --cacert /tmp/pp.crt --proxy 127.0.0.1:8080 https://www.netresec.com/
	  &lt;/div&gt;&lt;p&gt;&lt;b&gt;Downloads and docs&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
		See the &lt;a href="https://www.netresec.com/?page=PolarProxy"&gt;PolarProxy product page&lt;/a&gt; for downloads, full command-line options, sample configurations etc.
	  &lt;/p&gt;&lt;img src="https://www.netresec.com/images/PolarProxy-flow-chart_TLS-added-and-removed_680x234.png" alt="TLS added and removed here" width="680" height="234" style="max-width: 100%; height: auto;" /&gt;&lt;p&gt;Feel free to &lt;a href="https://www.netresec.com/?page=AboutNetresec"&gt;share feedback or report bugs&lt;/a&gt; about PolarProxy.&lt;/p&gt;</content:encoded>
    </item>
    <item>
      <title>Remcos Alerts from FlowCarp in EveBox</title>
      <link>https://www.netresec.com/?page=Blog&amp;month=2026-05&amp;post=Remcos-Alerts-from-FlowCarp-in-EveBox</link>
      <pubDate>Fri, 08 May 2026 11:49:00 GMT</pubDate>
      <dc:creator>Erik Hjelmvik</dc:creator>
      <enclosure url="https://media.netresec.com/images/pcap-FlowCarp-json-EveBox_3000x1500.webp" type="image/webp" />
      <category>FlowCarp</category>
      <category>EveBox</category>
      <category>Remcos</category>
      <category>a85be79f7b569f1df5e6087b69deb493</category>
      <category>t13i010400_0f2cb44170f4_5c4c70b73fa0</category>
      <category>t13i010400_0f2cb44170f4_1b583af8cc09</category>
      <category>Eve JSON</category>
      <guid>https://www.netresec.com/?page=Blog&amp;month=2026-05&amp;post=Remcos-Alerts-from-FlowCarp-in-EveBox</guid>
      <description>There is a wonderful little web-based alert and event front-end called EveBox, which renders Eve JSON formatted data to a web UI. This blog post demonstrates how EveBox can be used to show alert and flow information that FlowCarp has extracted from a Remcos malware infection. Remcos RAT The starting[...]</description>
      <content:encoded>&lt;p&gt;
		There is a wonderful little web-based alert and event front-end called EveBox, which renders Eve JSON formatted data to a web UI. This blog post demonstrates how EveBox can be used to show alert and flow information that FlowCarp has extracted from a Remcos malware infection.
	  &lt;/p&gt;&lt;img src="https://media.netresec.com/images/pcap-FlowCarp-json-EveBox_3000x1500.webp" alt="pcap to FlowCarp to json to EveBox" width="3000" height="1500" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;&lt;b&gt;Remcos RAT&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
		The starting point of my analysis will be a PCAP file with network traffic from a &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.remcos"&gt;Remcos RAT&lt;/a&gt; infection, which &lt;a href="https://infosec.exchange/@malware_traffic"&gt;Brad Duncan&lt;/a&gt; has &lt;a href="https://malware-traffic-analysis.net/2026/03/12/index.html"&gt;published on Malware-Traffic-Analysis.net&lt;/a&gt;. The password scheme for the zip file containing the PCAP can be found &lt;a href="https://malware-traffic-analysis.net/about.html"&gt;here&lt;/a&gt;, in case you'd like to follow along and perform the same analysis steps yourself. All commands and examples in this blog post can be run in both Linux and Windows.
	  &lt;/p&gt;&lt;p&gt;
		JSON formatted alerts and flow data can be extracted from the PCAP file with &lt;a href="https://flowcarp.com/"&gt;FlowCarp&lt;/a&gt; like this:
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
		flowcarp --input 2026-03-12-SmartApeSG-ClickFix-activity-for-Remcos-RAT.pcap --format EveJson --output -
	  &lt;/div&gt;&lt;p&gt;
		But the free community license of &lt;a href="https://flowcarp.com/"&gt;FlowCarp&lt;/a&gt; doesn't include a protocol model for Remcos, which is why this command will generate flow events but no alerts about detected Remcos malware traffic. I will therefore submit the pcap file to the free FlowCarp demo server instead, which has a &lt;a href="https://www.netresec.com/?page=FlowCarp"&gt;commercial license&lt;/a&gt; that can identify over 600 protocols. No registration or API key is required to use this demo server (as long as users behave − please behave).
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
		curl --data-binary @2026-03-12-SmartApeSG-ClickFix-activity-for-Remcos-RAT.pcap -o remcos-eve.json https://demo.flowcarp.com
	  &lt;/div&gt;&lt;p&gt;
		The downloaded remcos-eve.json file uses the &lt;a href="https://docs.suricata.io/en/latest/output/eve/eve-json-format.html"&gt;Suricata Eve JSON format&lt;/a&gt;, so &lt;a href="https://jqlang.org/"&gt;jq&lt;/a&gt; queries typically used to process Suricata eve.json log files can be used to parse and filter the JSON output from FlowCarp as well.
	  &lt;/p&gt;&lt;ul style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #cccccc; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;&lt;li style="color: #ffffff;"&gt;jq -c 'select(.event_type=="alert")|[.dest_ip, .dest_port, .proto, .alert.signature]' &amp;lt; remcos-eve.json&lt;/li&gt;&lt;li&gt;["193.178.170.155",443,"TCP","MALWARE protocol detected: TLS, Remcos"]&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
		This FlowCarp alert indicates that the PCAP file contains TLS-encrypted Remcos traffic, which means that FlowCarp has performed a so-called sub-protocol match to detect the protocol inside of TLS without decrypting the TLS layer. A quick way to verify if this traffic is Remcos in TLS is to check the JA3 hash or JA4 fingerprint of the client's TLS handshake.
	  &lt;/p&gt;&lt;ul style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #cccccc; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;&lt;li style="color: #ffffff;"&gt;tshark -r 2026-03-12-SmartApeSG-ClickFix-activity-for-Remcos-RAT.pcap -Y "ip.dst == 193.178.170.155 and tls.handshake" -T fields -e tls.handshake.ja3 -e tls.handshake.ja4&lt;/li&gt;&lt;li&gt;a85be79f7b569f1df5e6087b69deb493	t13i010400_0f2cb44170f4_5c4c70b73fa0&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
		This nicely matches what we expect to see from TLS encrypted Remcos traffic. For reference these are the JA3 and JA4 fingerprints typically associated with Remcos:
	  &lt;/p&gt;&lt;ul&gt;&lt;li&gt;JA3: a85be79f7b569f1df5e6087b69deb493&lt;/li&gt;&lt;li&gt;JA4: t13i010400_0f2cb44170f4_5c4c70b73fa0&lt;/li&gt;&lt;li&gt;JA4: t13i010400_0f2cb44170f4_1b583af8cc09&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
		There is always a risk of false positives associated with JA3 or JA4 fingerprints, so a rule of thumb is to not blindly trust JA3/JA4 based alerts without having additional indicators of compromise. FlowCarp performs a much deeper identification of sub-TLS protocols than JA3/JA4, but there's still a false positive risk associated with detection of encrypted malware traffic — so make sure to verify alerts like this with other types of data sources, such as event logs from the infected device or OSINT information about the suspected C2 server. For this alert we can see that &lt;a href="https://x.com/DonPasci" rel="nofollow"&gt;@DonPasci&lt;/a&gt; has reported &lt;a href="https://threatfox.abuse.ch/ioc/1740873/"&gt;193.178.170.155:443&lt;/a&gt; to ThreatFox as being a Remcos C2 server.
	  &lt;/p&gt;&lt;p&gt;&lt;b&gt;EveBox&lt;/b&gt;&lt;/p&gt;&lt;p&gt;

		EveBox is a web-based front-end for Suricata "EVE" alerts and events, created by &lt;a href="https://infosec.exchange/@ish"&gt;Jason Ish&lt;/a&gt;. The EveBox source code lives on &lt;a href="https://github.com/jasonish/evebox"&gt;GitHub&lt;/a&gt; and pre-built EveBox binaries for Linux and Windows are available on &lt;a href="https://evebox.org/"&gt;evebox.org&lt;/a&gt;.
	  &lt;/p&gt;&lt;p&gt;
		This evebox command will fire up a browser and render information about the flows and alerts in the Eve JSON file from FlowCarp:
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
		evebox oneshot remcos-eve.json
	  &lt;/div&gt;&lt;img src="https://media.netresec.com/images/Remcos-events-from-FlowCarp-in-EveBox_1122x1405.png" alt="Remcos events from FlowCarp in EveBox" width="1122" height="1405" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;
		The flows and alerts are displayed in reverse order, so that the most recent events are on top. The Remcos alert stands out in red and immediately catches your eye. Let's change Event Type from "All" to "Alert" just to make sure there are no other alerts.
	  &lt;/p&gt;&lt;img src="https://media.netresec.com/images/Remcos-alert-from-FlowCarp-in-EveBox_1148x648.png" alt="Remcos alert from FlowCarp in EveBox" width="1148" height="648" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;
		Looks like this was the only alert in this JSON file.
	  &lt;/p&gt;&lt;p&gt;
		EveBox is built for Suricata, but it's really nice that it can be used out-of-the-box to read FlowCarp's JSON logs as well. For reference, let's also see what it looks like when we run the same PCAP file through &lt;a href="https://suricata.io/" rel="nofollow"&gt;Suricata&lt;/a&gt; and import eve.json into EveBox.
	  &lt;/p&gt;&lt;img src="https://media.netresec.com/images/Remcos-events-from-Suricata-in-EveBox_1148x1405.png" alt="Remcos events from Suricata in EveBox" width="1148" height="1405" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;
		I'm happy to see that Suricata also alerts on the same TCP session as &lt;a href="https://flowcarp.com/"&gt;FlowCarp&lt;/a&gt;. This alert was raised by the Emerging Threats signature ID 2036594, which triggers whenever the JA3 hash of a TLS handshake is a85be79f7b569f1df5e6087b69deb493.
	  &lt;/p&gt;</content:encoded>
    </item>
    <item>
      <title>FlowCarp Identifies Protocols</title>
      <link>https://www.netresec.com/?page=Blog&amp;month=2026-05&amp;post=FlowCarp-Identifies-Protocols</link>
      <pubDate>Mon, 04 May 2026 14:53:00 GMT</pubDate>
      <dc:creator>Erik Hjelmvik</dc:creator>
      <enclosure url="https://media.netresec.com/images/tria-ge_260504-hkcr6adt5x_1147x1051.webp" type="image/webp" />
      <category>FlowCarp</category>
      <category>Mirai</category>
      <category>protocol identification</category>
      <category>Triage</category>
      <category>pcap-broker</category>
      <category>tcpdump</category>
      <guid>https://www.netresec.com/?page=Blog&amp;month=2026-05&amp;post=FlowCarp-Identifies-Protocols</guid>
      <description>I am thrilled to announce the release of a brand new tool called FlowCarp! FlowCarp is a simple command line tool that performs a very complicated task. It identifies the application layer protocol in network traffic without relying on port numbers, static signatures or code that tries to parse the[...]</description>
      <content:encoded>&lt;img src="https://media.netresec.com/images/FlowCarp_2000x2000.webp" alt="FlowCarp logo" width="2000" height="2000" style="float: right; margin-left: 10px; max-width: 40%; height:auto" /&gt;&lt;p&gt;
		I am thrilled to announce the release of a brand new tool called FlowCarp!
	  &lt;/p&gt;&lt;p&gt;&lt;a href="https://flowcarp.com/"&gt;FlowCarp&lt;/a&gt; is a simple command line tool that performs a very complicated task. It identifies the application layer protocol in network traffic without relying on port numbers, static signatures or code that tries to parse the application layer protocols. Instead, FlowCarp simply computes some statistical measurements on the traffic it sees and compares those measurements to models of known protocols. This allows FlowCarp to identify even proprietary and undocumented protocols, including malware C2 protocols.
	  &lt;/p&gt;&lt;p&gt;&lt;b&gt;FlowCarp Demo Service&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
		There’s a demo FlowCarp web service running on demo.flowcarp.com, which accepts PCAP or PcapNG data via HTTP POST requests. The demo service returns a data structure, which follows the &lt;a href="https://docs.suricata.io/en/latest/output/eve/eve-json-format.html"&gt;Suricata Eve JSON&lt;/a&gt; format, containing flows and alerts. I’d like to stress, however, that the returned flow and alert data is generated by FlowCarp and NOT by Suricata. The Suricata Eve JSON format supports pretty much everything we look for in a good flow and alert output format, which is why we decided to use their format instead of inventing yet another JSON based log format.
	  &lt;/p&gt;&lt;p&gt;
		Let’s give the FlowCarp demo server a spin to see what it can do! I’ll start by downloading the PcapNG file from a suspected &lt;a href="https://tria.ge/260504-hkcr6adt5x"&gt;Mirai sample execution&lt;/a&gt; on Recorded Future’s Triage sandbox.
	  &lt;/p&gt;&lt;img src="https://media.netresec.com/images/tria-ge_260504-hkcr6adt5x_1147x1051.webp" alt="260504-hkcr6adt5x on Tria.ge" width="1147" height="1051" style="max-width: 98%; height:auto; style: clear: both;" /&gt;&lt;p&gt;
		I’ve saved the capture file from Triage locally as “260504-hkcr6adt5x-behavioral1.pcapng”. This file can now be submitted to the FlowCarp demo service like this:
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
		curl --data-binary @260504-hkcr6adt5x-behavioral1.pcapng -o mirai-eve.json https://demo.flowcarp.com
	  &lt;/div&gt;&lt;p&gt;
		The generated mirai-eve.json file should now contain information about the flows and alerts that FlowCarp has found in the pcapng file. Let’s check which unique services that were contacted in the sandbox execution of this malware sample. I’m using jq to filter on event_type “flow” to show connection information instead of alerts.
	  &lt;/p&gt;&lt;ul style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #cccccc; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;&lt;li style="color: #ffffff;"&gt;jq -c 'select(.event_type=="flow")|[.dest_ip, .dest_port, .proto, .app_proto]' &amp;lt; mirai-eve.json | sort -u&lt;/li&gt;&lt;li&gt;["107.189.17.70",80,"TCP","Mirai"]&lt;/li&gt;&lt;li&gt;["107.189.17.70",80,"TCP",null]&lt;/li&gt;&lt;li&gt;["1.1.1.1",53,"UDP","DNS"]&lt;/li&gt;&lt;li&gt;["185.125.188.61",443,"TCP","DNS"]&lt;/li&gt;&lt;li&gt;["185.125.188.62",443,"TCP","DNS"]&lt;/li&gt;&lt;li&gt;["224.0.0.251",5353,"UDP","DNS"]&lt;/li&gt;&lt;li&gt;["44.219.148.160",443,"TCP","TLS"]&lt;/li&gt;&lt;li&gt;["84.17.50.24",443,"TCP","DNS"]&lt;/li&gt;&lt;li&gt;["84.17.50.8",443,"TCP","TLS"]&lt;/li&gt;&lt;li&gt;["8.8.8.8",53,"UDP","BACnet"]&lt;/li&gt;&lt;li&gt;["8.8.8.8",53,"UDP","DNS"]&lt;/li&gt;&lt;li&gt;["8.8.8.8",53,"UDP","GTPv2"]&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
		Alright, let’s see if any of those connections generated an alert:
	  &lt;/p&gt;&lt;ul style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #cccccc; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;&lt;li style="color: #ffffff;"&gt;jq -r -c 'select(.event_type=="alert")|[.dest_ip, .dest_port, .proto, .alert.signature]' &amp;lt; mirai-eve.json | sort -u&lt;/li&gt;&lt;li&gt;["107.189.17.70",80,"TCP","MALWARE protocol detected: Mirai"]&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
		FlowCarp tells us that the malware implant is using the Mirai C2 protocol to connect to a C2 server on TCP 107.189.17.70:80.
	  &lt;/p&gt;&lt;p&gt;&lt;b&gt;Running FlowCarp Locally&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
		You can, of course, run FlowCarp locally on your own computer or in a container/pod instead of using the demo service. There are pre-compiled binaries of FlowCarp available for download on &lt;a href="https://flowcarp.com/"&gt;flowcarp.com&lt;/a&gt; for most platforms.
	  &lt;/p&gt;&lt;p&gt;
		Let’s re-analyze the Mirai pcapng file, which was sent to the online demo service, but this time FlowCarp will run locally.
	  &lt;/p&gt;&lt;ul style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #cccccc; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;&lt;li style="color: #ffffff;"&gt;./flowcarp --input 260504-hkcr6adt5x-behavioral1.pcapng --output - 2&amp;gt;/dev/null | cut -d, -f 2,3,4 | sort -u&lt;/li&gt;&lt;li&gt;107.189.17.70:80, TCP&lt;/li&gt;&lt;li&gt;107.189.17.70:80, TCP, Mirai&lt;/li&gt;&lt;li&gt;1.1.1.1:53, UDP, DNS&lt;/li&gt;&lt;li&gt;185.125.188.61:443, TCP, DNS&lt;/li&gt;&lt;li&gt;185.125.188.62:443, TCP, DNS&lt;/li&gt;&lt;li&gt;224.0.0.251:5353, UDP, DNS&lt;/li&gt;&lt;li&gt;44.219.148.160:443, TCP, TLS&lt;/li&gt;&lt;li&gt;84.17.50.24:443, TCP, DNS&lt;/li&gt;&lt;li&gt;84.17.50.8:443, TCP, TLS&lt;/li&gt;&lt;li&gt;8.8.8.8:53, UDP, DNS&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
		I let FlowCarp use its CSV output format instead of Eve JSON here, which is why cut was used to filter the output instead of jq. Nevertheless, the results are pretty much the same as before; FlowCarp detects Mirai traffic to 107.189.17.70:80.
	  &lt;/p&gt;&lt;p&gt;
		You can try sending this same capture file to an IDS of your choice to see what alerts you get. Chances are that you might not get any alert for the Mirai traffic, since it is rather tricky to create good signatures for the Mirai C2 protocol. FlowCarp, on the other hand, doesn’t need any signatures to detect a protocol. All that is needed to build detection in FlowCarp is some example traffic of the protocol you’d like to identify. This unique feature is what makes FlowCarp so fantastic!
	  &lt;/p&gt;&lt;p&gt;&lt;b&gt;Real-Time Protocol Identification&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
		FlowCarp is designed to run fast and use little resources, so that it can be used for local real-time analysis of network traffic. My general recommendation would be to run FlowCarp as a systemd service or to put it in a container or pod, but if you just want to test its real-time abilities then I suggest that you run this command:
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
		tcpdump -U -w - | flowcarp --input - --realtime --preview --output -
	  &lt;/div&gt;&lt;p&gt;
		FlowCarp will then read real-time PCAP data from standard input and print flow information – with identified application protocols – to standard output.
	  &lt;/p&gt;&lt;p&gt;
		FlowCarp can also read real-time packet data through &lt;a href="https://netresec.com/?b=228fddf"&gt;PCAP-over-IP&lt;/a&gt;, which allows us to utilize services like Fox-IT’s &lt;a href="https://github.com/fox-it/pcap-broker"&gt;pcap-broker&lt;/a&gt;. You can start a pcap-broker listener like this:
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
		./pcap-broker -listen 127.0.0.1:57012 -cmd "sudo tcpdump -i eth0 -U -w -"
	  &lt;/div&gt;&lt;p&gt;
		FlowCarp can then access a real-time packet stream from the pcap-broker:
	  &lt;/p&gt;&lt;div style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #ffffff; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;
		./flowcarp --input tcpconnect:127.0.0.1:57012 --realtime --preview --output -
	  &lt;/div&gt;&lt;p&gt;
		I hope you'll find &lt;a href="https://flowcarp.com/"&gt;FlowCarp&lt;/a&gt; useful!
	  &lt;/p&gt;</content:encoded>
    </item>
    <item>
      <title>CISA mixup of IOC domains</title>
      <link>https://www.netresec.com/?page=Blog&amp;month=2026-02&amp;post=CISA-mixup-of-IOC-domains</link>
      <pubDate>Thu, 26 Feb 2026 09:35:00 GMT</pubDate>
      <dc:creator>Erik Hjelmvik</dc:creator>
      <enclosure url="https://media.netresec.com/images/accesscan-glize_2048x887.webp" type="image/webp" />
      <category>Dynu</category>
      <category>CISA</category>
      <category>IOC</category>
      <category>GTIG</category>
      <category>Mandiant</category>
      <category>glize</category>
      <category>accesscam</category>
      <category>accesscan</category>
      <guid>https://www.netresec.com/?page=Blog&amp;month=2026-02&amp;post=CISA-mixup-of-IOC-domains</guid>
      <description>Googles Threat Intelligence Group (GTIG) and Mandiants recent Disrupting the GRIDTIDE Global Cyber Espionage Campaign report is great and it has lots of good Indicators of Compromise (IOC). Many of these IOCs had already been shared by CISA last year as part of their Alert AA25-141A titled Russian G[...]</description>
      <content:encoded>&lt;p&gt;
				Google's Threat Intelligence Group (GTIG) and Mandiant's recent &lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/disrupting-gridtide-global-espionage-campaign/"&gt;Disrupting the GRIDTIDE Global Cyber Espionage Campaign&lt;/a&gt; report is great and it has lots of good Indicators of Compromise (IOC). Many of these IOCs had already been shared by CISA last year as part of their &lt;a href="https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-141a"&gt;Alert AA25-141A&lt;/a&gt; titled "Russian GRU Targeting Western Logistics Entities and Technology Companies".
				The IOC overlap between these two reports is surprisingly big, provided that the GTIG report covers a Chinese espionage group while the CISA report covers the Russian GRU unit 26165 (aka APT28 / Fancy Bear).
			&lt;/p&gt;&lt;p&gt;
				But some of the domain names in CISA's report from last year are strange. For example, the domain name "accesscan[.]org" doesn't seem to ever have been registered. The GTIG report, however, contains the very similar domain "accesscam[.]org". This accesscam domain is registered to the dynamic DNS provider Dynu Systems, whose services are often &lt;a href="https://threatfox.abuse.ch/asn/398019/"&gt;abused&lt;/a&gt; by malicious actors. Is it possible that there are typos in the IOCs published by CISA? I think so.
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/accesscan-glize_2048x887.webp" width="2048" height="887" alt="accesscan glize spelling mistakes" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;
				Another odd domain in CISA's AA25-141A is "glize[.]com", which I suspect is a typo from either "giize[.]com" or "gleeze[.]com". The two latter domains are listed in the GTIG report and both of them also belong to the dynamic DNS provider Dynu Systems. The domain listed in CISA's alert, on the other hand, appears to be a legit website (&lt;a href="https://web.archive.org/web/20241007094326/https://glize.com/"&gt;archived page from 2024&lt;/a&gt;) from the marketing company &lt;a href="https://www.facebook.com/glizecom"&gt;Glize&lt;/a&gt; in Malta.
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/glize_520x337.png" alt="Screenshot of Glize's website from 2024" width="520" height="337" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;Glize's website seems to have disappeared sometime in 2025.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update 2026-02-27&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
				The IOC list published by CISA originates from cybersecurity advisory &lt;a href="https://media.defense.gov/2025/May/21/2003719846/-1/-1/0/CSA_RUSSIAN_GRU_TARGET_LOGISTICS.PDF"&gt;157019-25&lt;/a&gt; / &lt;a href="https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Cyber-Security/GRU_Western_Logistics.pdf?__blob=publicationFile&amp;amp;v=3"&gt;PP-25-2107&lt;/a&gt;, which was created as a joint effort by the following 21 organizations:
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/gru-paper-authors-2_1690x720.webp" alt="authors of joint cybersecurity advisory Russian GRU Targeting Western Logistics Entities and Technology Companies" width="1690" height="720" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;ul&gt;&lt;li&gt;United States National Security Agency (NSA)&lt;/li&gt;&lt;li&gt;United States Federal Bureau of Investigation (FBI)&lt;/li&gt;&lt;li&gt;United Kingdom National Cyber Security Centre (NCSC-UK)&lt;/li&gt;&lt;li&gt;Germany Federal Intelligence Service (BND)&lt;/li&gt;&lt;li&gt;Germany Federal Office for Information Security (BSI)&lt;/li&gt;&lt;li&gt;Germany Federal Office for the Protection of the Constitution (BfV)&lt;/li&gt;&lt;li&gt;Czech Republic Military Intelligence (VZ)&lt;/li&gt;&lt;li&gt;Czech Republic National Cyber and Information Security Agency (NÚKIB)&lt;/li&gt;&lt;li&gt;Czech Republic Security Information Service (BIS)&lt;/li&gt;&lt;li&gt;Poland Internal Security Agency (ABW)&lt;/li&gt;&lt;li&gt;Poland Military Counterintelligence Service (SKW)&lt;/li&gt;&lt;li&gt;United States Cybersecurity and Infrastructure Security Agency (CISA)&lt;/li&gt;&lt;li&gt;United States Department of Defense Cyber Crime Center (DC3)&lt;/li&gt;&lt;li&gt;United States Cyber Command (USCYBERCOM)&lt;/li&gt;&lt;li&gt;Australian Signals Directorate’s Australian Cyber Security Centre (ASD’s ACSC)&lt;/li&gt;&lt;li&gt;Canadian Centre for Cyber Security (CCCS)&lt;/li&gt;&lt;li&gt;Danish Defence Intelligence Service (DDIS)&lt;/li&gt;&lt;li&gt;Estonian Foreign Intelligence Service (EFIS)&lt;/li&gt;&lt;li&gt;Estonian National Cyber Security Centre (NCSC-EE)&lt;/li&gt;&lt;li&gt;French Cybersecurity Agency (ANSSI)&lt;/li&gt;&lt;li&gt;Netherlands Defence Intelligence and Security Service (MIVD)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;It is therefore unclear which organization(s) reported the erroneous IOCs as well as who were responsible for verifying them before publication.&lt;/p&gt;&lt;p&gt;In summary, these are the incorrect and correct IOC domains:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Incorrect IOC: &lt;del&gt;*.accesscan[.]org&lt;/del&gt; (not registered)&lt;/li&gt;&lt;li&gt;Correct IOC: *.accesscam[.]org (registered by Dynu Systems)&lt;/li&gt;&lt;li&gt;Incorrect IOC: &lt;del&gt;*.glize[.]com&lt;/del&gt; (legitimate website, now closed)&lt;/li&gt;&lt;li&gt;Correct IOC: *.giize[.]com (registered by Dynu Systems)&lt;/li&gt;&lt;li&gt;Correct IOC: *.gleeze[.]com (registered by Dynu Systems)&lt;/li&gt;&lt;/ul&gt;</content:encoded>
    </item>
    <item>
      <title>njRAT runs MassLogger</title>
      <link>https://www.netresec.com/?page=Blog&amp;month=2026-02&amp;post=njRAT-runs-MassLogger</link>
      <pubDate>Mon, 02 Feb 2026 19:39:00 GMT</pubDate>
      <dc:creator>Erik Hjelmvik</dc:creator>
      <enclosure url="https://media.netresec.com/images/NetworkMinerProfessional_3-1_njRAT_images_523x582.webp" type="image/webp" />
      <category>njRAT</category>
      <category>NetworkMiner Professional</category>
      <category>malware-traffic-analysis.net</category>
      <category>MassLogger</category>
      <guid>https://www.netresec.com/?page=Blog&amp;month=2026-02&amp;post=njRAT-runs-MassLogger</guid>
      <description>njRAT is a remote access trojan that has been around for more than 10 years and still remains one of the most popular RATs among criminal threat actors. This blog post demonstrates how NetworkMiner Professional can be used to decode the njRAT C2 traffic to extract artifacts like screenshots, command[...]</description>
      <content:encoded>&lt;img src="https://media.netresec.com/images/njRAT-purple_2000x1323.webp" alt="njRAT" width="2000" height="1323" style="float: right; margin-left: 5px; max-width: 50%; height:auto" /&gt;&lt;p&gt;
				njRAT is a remote access trojan that has been around for more than 10 years and still remains one of the most popular RATs among criminal threat actors. This blog post demonstrates how &lt;a href="https://www.netresec.com/?page=BuyNetworkMiner"&gt;NetworkMiner Professional&lt;/a&gt; can be used to decode the njRAT C2 traffic to extract artifacts like screenshots, commands and transferred files.
			&lt;/p&gt;&lt;p&gt;
				A PCAP file with njRAT traffic was &lt;a href="https://malware-traffic-analysis.net/2026/01/29/index.html"&gt;published on malware-traffic-analysis.net&lt;/a&gt; last week. After loading this PCAP file, NetworkMiner Professional reveals that the attacker downloaded full resolution screenshots of the victim’s screen.
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/NetworkMinerProfessional_3-1_njRAT_images_523x582.webp" alt="Overview of screenshots sent to C2 server" width="523" height="582" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;&lt;i&gt;Image: Overview of screenshots sent to C2 server&lt;/i&gt;&lt;/p&gt;&lt;img src="https://media.netresec.com/images/njRAT_Desktop_260129030346.jpg" alt="Screenshot extracted from njRAT traffic by NetworkMiner" width="820" height="460" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;&lt;i&gt;Image: Screenshot extracted from njRAT traffic by NetworkMiner&lt;/i&gt;&lt;/p&gt;&lt;p&gt;The file “New Purchase Order and Specifications.exe” in this screenshot is the njRAT binary that was used to infect the PC.&lt;/p&gt;&lt;p&gt;
				A list of njRAT commands sent from the C2 server to the victim can be viewed on NetworkMiner’s Parameters tab by filtering for ”njRAT server command”.
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/NetworkMinerProfessional_3-1_Parameters_njRAT_523x479.webp" alt="njRAT commands" width="523" height="479" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;
				The following njRAT commands are present here:
				&lt;ul&gt;&lt;li&gt;CAP = take screenshot&lt;/li&gt;&lt;li&gt;inv = invoke (run) a plugin (dll)&lt;/li&gt;&lt;li&gt;rn = run a tool (executable)&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;
				Additional njRAT commands can be found in our writeup for the &lt;a href="https://netresec.com/?b=2541a39"&gt;Decoding njRAT traffic with NetworkMiner video&lt;/a&gt;, which we published last year.
			&lt;/p&gt;&lt;p&gt;&lt;b&gt;njRAT File Transfers&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
				The “inv” and “rn” commands both transfer and execute additional code on the victim machine. The “inv” command typically transfers a DLL file that is used as a plugin, while the “rn” commands sends an executable file. These DLL and EXE files are transferred in gzip compressed format, which is why NetworkMiner extracts them as .gz files.
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/NetworkMinerProfessional_3-1_Files_njRAT_516x296.webp" alt="njRAT files extracted from PCAP" width="516" height="296" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;&lt;i&gt;Image: Gzip compressed files extracted from njRAT traffic&lt;/i&gt;&lt;/p&gt;&lt;p&gt;
				This oneliner command lists the internal/original file names and corresponding MD5 hashes of the gzip compressed executables sent to the victim PC:
			&lt;/p&gt;&lt;ul style="list-style: none; font-family: Consolas, 'Lucida Console', Monaco, 'Courier New'; background-color: #111111; color: #cccccc; border: 1px solid #999999; padding: 6px; margin: 4px; word-break: break-all" x-ms-format-detection="none"&gt;&lt;li style="color: #ffffff;"&gt;for f in njRAT-rn*.gz; do echo $f; gunzip -c $f | exiftool - | grep Original; gunzip -c $f | md5sum; done&lt;/li&gt;&lt;li&gt;njRAT-rn-260129030403.gz&lt;/li&gt;&lt;li&gt;Original File Name              : Stub.exe&lt;/li&gt;&lt;li&gt;ca819e936f6b913e2b80e9e4766b8e79  -&lt;/li&gt;&lt;li&gt;njRAT-rn-260129030433.gz&lt;/li&gt;&lt;li&gt;Original File Name              : Stub.exe&lt;/li&gt;&lt;li&gt;e422a4ce321be1ed989008d74ddb6351  -&lt;/li&gt;&lt;li&gt;njRAT-rn-260129030451.gz&lt;/li&gt;&lt;li&gt;Original File Name              : CloudServices.exe&lt;/li&gt;&lt;li&gt;fcbb7c0c68afa04139caa55efe580ff5  -&lt;/li&gt;&lt;li&gt;njRAT-rn-260129031041.gz&lt;/li&gt;&lt;li&gt;Original File Name              : Stub.exe&lt;/li&gt;&lt;li&gt;0ae3798c16075a9042c5dbb18bd10a5c  -&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
				The MD5 hashes of the files inside the gzip compressed streams can also be seen on the Parameters tab in NetworkMiner.
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/NetworkMinerProfessional_3-1_Parameters_njRAT_md5_516x296.webp" alt="njRAT file MD5 hashes" width="516" height="296" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;&lt;b&gt;MassLogger&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
				The “CloudServices.exe” executable is a known credential stealer called MassLogger. This particular &lt;a href="https://bazaar.abuse.ch/sample/ea32ac24bd8dbac770beec79fa78d790a6156ceb5ff28d2bdba9b1f28a8b4628/"&gt;MassLogger sample&lt;/a&gt; is hard coded to exfiltrate data in an email to kingsnakeresult@mcnzxz[.]com. The email is sent through the SMTP server cphost14.qhoster[.]net. See the execution of this sample &lt;a href="https://tria.ge/260129-qpr2msg16c"&gt;on Triage&lt;/a&gt; for additional details regarding the MassLogger payload in CloudServices.exe.
			&lt;/p&gt;&lt;p&gt;&lt;b&gt;IOC List&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
				njRAT (splitter = "|Ghost|")
				&lt;ul&gt;&lt;li&gt;58f1a46dba84d31257f1e0f8c92c59ec = njRAT sample&lt;/li&gt;&lt;li&gt;104.248.130.195:7492 = njRAT C2 server&lt;/li&gt;&lt;li&gt;burhanalassad.duckdns[.]org:7492 = njRAT C2 server&lt;/li&gt;&lt;li&gt;801a5d1e272399ca14ff7d6da60315ef = sc2.dll&lt;/li&gt;&lt;li&gt;ca819e936f6b913e2b80e9e4766b8e79 = Stub.exe&lt;/li&gt;&lt;li&gt;e422a4ce321be1ed989008d74ddb6351 = Stub.exe&lt;/li&gt;&lt;li&gt;fcbb7c0c68afa04139caa55efe580ff5 = CloudServices.exe&lt;/li&gt;&lt;li&gt;0ae3798c16075a9042c5dbb18bd10a5c = Stub.exe&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;
				MassLogger
				&lt;ul&gt;&lt;li&gt;fcbb7c0c68afa04139caa55efe580ff5&lt;/li&gt;&lt;li&gt;kingsnakeresult@mcnzxz[.]com&lt;/li&gt;&lt;li&gt;cphost14.qhoster.net:587&lt;/li&gt;&lt;li&gt;78.110.166.82:587&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;</content:encoded>
    </item>
    <item>
      <title>Decoding malware C2 with CyberChef</title>
      <link>https://www.netresec.com/?page=Blog&amp;month=2026-01&amp;post=Decoding-malware-C2-with-CyberChef</link>
      <pubDate>Tue, 20 Jan 2026 12:10:00 GMT</pubDate>
      <dc:creator>Erik Hjelmvik</dc:creator>
      <enclosure url="https://media.netresec.com/videos/CyberChef-XOR_1280x672.mp4" type="video/mp4" />
      <category>Netresec</category>
      <category>CyberChef</category>
      <category>XOR</category>
      <category>PCAP</category>
      <category>CapLoader</category>
      <category>key007</category>
      <category>PowerShell</category>
      <category>GhostWeaver</category>
      <category>MintsLoader</category>
      <category>finger</category>
      <category>Video</category>
      <category>videotutorial</category>
      <guid>https://www.netresec.com/?page=Blog&amp;month=2026-01&amp;post=Decoding-malware-C2-with-CyberChef</guid>
      <description>This video tutorial demonstrates how malware XOR encrypted and obfuscated C2 traffic can be decoded with CyberChef. The analyzed PCAP files can be downloaded from malware-traffic-analysis.net. CyberChef recipe to decode the reverse shell traffic to 103.27.157.146:4444: From_Hex(Auto) XOR({option:Hex[...]</description>
      <content:encoded>&lt;p&gt;
				This video tutorial demonstrates how malware XOR encrypted and obfuscated C2 traffic can be decoded with &lt;a href="https://github.com/gchq/CyberChef"&gt;CyberChef&lt;/a&gt;.
			&lt;/p&gt;&lt;video width="1280" height="672" controls="true" poster="https://media.netresec.com/images/CyberChef-XOR_1280x672.png" clip="CyberChef-XOR_1280x672" style="clear: both; max-width: 100%; height:auto"&gt;&lt;source src="https://media.netresec.com/videos/CyberChef-XOR_1280x672.mp4" type="video/mp4" /&gt;&lt;source src="https://media.netresec.com/videos/CyberChef-XOR_1280x672.webm" type="video/webm" /&gt;&lt;/video&gt;&lt;p&gt;
				The analyzed PCAP files can be downloaded from &lt;a href="https://malware-traffic-analysis.net/2026/01/08/index.html"&gt;malware-traffic-analysis.net&lt;/a&gt;.
			&lt;/p&gt;&lt;p&gt;CyberChef recipe to decode the reverse shell traffic to 103.27.157.146:4444:&lt;/p&gt;&lt;div style="background-color: #dff0d8; border: 2px solid #b3dba2; padding: 10px; margin: 10px;"&gt;
				From_Hex('Auto')&lt;br /&gt;
				XOR({'option':'Hex','string':'62'},'Standard',false)&lt;br /&gt;
				Find_/_Replace({'option':'Regex','string':'\\r'},'',true,false,true,false)&lt;br /&gt;
				From_HTML_Entity()
			&lt;/div&gt;&lt;p&gt;Decoded data from first "key007" reverse shell session to 103.27.157.146:4444:&lt;/p&gt;&lt;div style="font-family: 'Lucida Console', Consolas, Monaco, 'Courier New'; background-color: #000000; color: #eeeeee; border: 1px solid #999999; padding: 10px; margin: 10px; word-break: break-all; overflow: auto; max-width: 100%" x-ms-format-detection="none"&gt;
				key007&lt;br /&gt;
				Authentication successful&lt;br /&gt;
				furtheringthemagic.com&lt;br /&gt;
				net group "domain computers" /domain&lt;br /&gt;
				The request will be processed at a domain controller for domain furtheringthemagic.com.&lt;br /&gt;&lt;br /&gt;
				Group name     Domain Computers&lt;br /&gt;
				Comment        All workstations and servers joined to the domain&lt;br /&gt;&lt;br /&gt;
				Members&lt;br /&gt;&lt;br /&gt;
				-------​--------​-------​--------​-------​---------​-------​----------​--------​--------&lt;br /&gt;
				DESKTOP-G71S4PF$&lt;br /&gt;
				The command completed successfully.
			&lt;/div&gt;&lt;p&gt;CyberChef recipe to decode obfuscated PowerShell payload from malicious finger service on 64.190.113.206:79:&lt;/p&gt;&lt;div style="background-color: #dff0d8; border: 2px solid #b3dba2; padding: 10px; margin: 10px;"&gt;
				Fork(',','',false)&lt;br /&gt;
				Pad_lines('End',5,',6044')&lt;br /&gt;
				Subtract('Comma')&lt;br /&gt;
				From_Charcode('Space',10)
			&lt;/div&gt;&lt;p&gt;&lt;b&gt;Update 2026-01-21&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
				Our classification of the final payload has been updated from AsyncRAT to &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/ps1.ghostweaver"&gt;GhostWeaver&lt;/a&gt; thanks to feedback from &lt;a href="https://x.com/DonPasci"&gt;Don Pasci&lt;/a&gt;.
				Don referenced a writeup by Recorded Future's Insikt Group, called &lt;a href="https://www.recordedfuture.com/research/uncovering-mintsloader-with-recorded-future-malware-intelligence-hunting"&gt;Uncovering MintsLoader With Recorded Future Malware Intelligence Hunting&lt;/a&gt;, which states the following:
			&lt;/p&gt;&lt;blockquote&gt;GhostWeaver has periodically been misclassified as AsyncRAT. [...] GhostWeaver and AsyncRAT share certain characteristics within their self-signed X.509 certificates, such as identical expiration dates and serial number lengths; however, these similarities may simply reflect common certificate-generation methods rather than meaningful operational overlap.&lt;/blockquote&gt;&lt;p&gt;We also believe that some of the PowerShell related traffic was caused by &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/js.mints_loader"&gt;MintsLoader&lt;/a&gt;.
		&lt;/p&gt;&lt;p&gt;&lt;b&gt;IOC List&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;103.27.157.146:4444 (unknown "key007" reverse shell)&lt;/li&gt;&lt;li&gt;64.190.113.206:79 (finger)&lt;/li&gt;&lt;li&gt;checkifhuman[.]top (finger)&lt;/li&gt;&lt;li&gt;ey267te[.]top (MintsLoader)&lt;/li&gt;&lt;li&gt;64.52.80.153:80 (MintsLoader)&lt;/li&gt;&lt;li&gt;173.232.146.62:25658 (&lt;s&gt;AsyncRAT&lt;/s&gt; GhostWeaver)&lt;/li&gt;&lt;li&gt;08kcbghk807qtl9[.]fun:25658 (&lt;s&gt;AsyncRAT&lt;/s&gt; GhostWeaver)&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Network Forensics Training&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
				Check out our &lt;a href="https://www.netresec.com/?page=Training"&gt;network forensic trainings&lt;/a&gt; if you want to learn more about decoding malware C2 traffic.
				I'm teaching a live online &lt;a href="https://www.netresec.com/?page=TrainingIR"&gt;Network Forensics for Incident Response&lt;/a&gt; class on February 23-26.
			&lt;/p&gt;</content:encoded>
    </item>
    <item>
      <title>Latrodectus BackConnect</title>
      <link>https://www.netresec.com/?page=Blog&amp;month=2025-12&amp;post=Latrodectus-BackConnect</link>
      <pubDate>Wed, 10 Dec 2025 13:00:00 GMT</pubDate>
      <dc:creator>Erik Hjelmvik</dc:creator>
      <enclosure url="https://media.netresec.com/images/NetworkMinerProfessional_3-1_Images_BackConnect_523x655.webp" type="image/webp" />
      <category>Latrodectus</category>
      <category>BackConnect</category>
      <category>IcedID</category>
      <category>VNC</category>
      <category>Keyhole</category>
      <category>Reverse shell</category>
      <category>NetworkMiner</category>
      <category>The DFIR Report</category>
      <category>Cyrillic</category>
      <guid>https://www.netresec.com/?page=Blog&amp;month=2025-12&amp;post=Latrodectus-BackConnect</guid>
      <description>This blog post demonstrates how artifacts, such as reverse shell commands and VNC session screenshots, can be extracted from Latrodectus BackConnect C2 traffic with NetworkMiner. I recently learned that the great folks from The DFIR Report have done a writeup covering the Latrodectus backdoor. Their[...]</description>
      <content:encoded>&lt;img src="https://media.netresec.com/images/Latrodectus-BackConnect_2000x2338.webp" alt="Latrodectus BackConnect spider" width="2000" height="2338" style="float: right; margin-left: 10px; max-width: 50%; height:auto" /&gt;&lt;p&gt;This blog post demonstrates how artifacts, such as reverse shell commands and VNC session screenshots, can be extracted from Latrodectus BackConnect C2 traffic with &lt;a href="https://www.netresec.com/?page=NetworkMiner"&gt;NetworkMiner&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;
				I recently learned that the great folks from &lt;a href="https://thedfirreport.com"&gt;The DFIR Report&lt;/a&gt; have done a writeup covering the Latrodectus backdoor. Their report is titled &lt;a href="https://thedfirreport.com/2025/09/29/from-a-single-click-how-lunar-spider-enabled-a-near-two-month-intrusion/"&gt;From a Single Click: How Lunar Spider Enabled a Near Two-Month Intrusion&lt;/a&gt;.
			&lt;/p&gt;&lt;p&gt;
				I found it particularly interesting that the threat actors used &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.latrodectus"&gt;Latrodectus&lt;/a&gt; to drop a BackConnect RAT to the victim PC. I have verified that this RAT’s Command and Control (C2) traffic is using the exact same &lt;a href="https://netresec.com/?b=22A38f9"&gt;BackConnect C2 protocol&lt;/a&gt; as what would previously be seen in &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.icedid"&gt;IcedID&lt;/a&gt; and &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.qakbot"&gt;QakBot&lt;/a&gt; infections.
			&lt;/p&gt;&lt;p&gt;
				This BackConnect RAT supports features such as:
				&lt;ul&gt;&lt;li&gt;Reverse VNC (&lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.keyhole"&gt;Keyhole&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Reverse SOCKS&lt;/li&gt;&lt;li&gt;Reverse shell (cmd.exe or  powershell)&lt;/li&gt;&lt;li&gt;File manager&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;NetworkMiner&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
				I immediately recognized the &lt;a href="https://netresec.com/?b=22A38f9"&gt;BackConnect protocol&lt;/a&gt; because I spent many hours reverse engineering that protocol back in 2022. I later spent even more time building a parser for it in 2023. This BackConnect parser was eventually published as part of the &lt;a href="https://netresec.com/?b=23A41e6"&gt;NetworkMiner 2.8.1 release&lt;/a&gt;.
			&lt;/p&gt;&lt;p&gt;
				I was happy to see that NetworkMiner could parse the BackConnect traffic in The DFIR Report’s &lt;a href="https://thedfirreport.com/2025/09/29/from-a-single-click-how-lunar-spider-enabled-a-near-two-month-intrusion/"&gt;Latrodectus case&lt;/a&gt; (#TB28761).
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/NetworkMinerProfessional_3-1_Images_BackConnect_523x655.webp" alt="Images extracted from BackConnect traffic by NetworkMiner Professional 3.1" width="523" height="655" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;
				The only caveat was that I had to use &lt;a href="https://www.netresec.com/?page=BuyNetworkMiner"&gt;NetworkMiner Professional&lt;/a&gt;, because it has a built-in protocol detection feature that detects the BackConnect traffic and applies the correct parser. That feature isn’t included in the free version of NetworkMiner, which is why it doesn’t know what to do with this strange looking TCP traffic to port 443.
			&lt;/p&gt;&lt;p&gt;
				Below are some screenshots extracted with NetworkMiner Professional from the BackConnect reverse VNC traffic.
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/VNC_58D23BBC_240513142808.jpg" alt="Keyhole reverse VNC session" width="1024" height="832" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;&lt;i&gt;Image: Keyhole reverse VNC session&lt;/i&gt;&lt;/p&gt;&lt;img src="https://media.netresec.com/images/VNC_58D222F7_240513125919_REDACTED.webp" alt="Attacker fails to inspect the file ad_users.txt" width="1024" height="832" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;&lt;i&gt;Image: Attacker fails to inspect ad_users.txt&lt;/i&gt;&lt;/p&gt;&lt;img src="https://media.netresec.com/images/VNC_58D23D61_240514162001_REDACTED.webp" alt="Attacker launches additional malware with rundll" width="1024" height="832" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;&lt;i&gt;
					Image: Attacker launches additional malware with rundll
				&lt;/i&gt;&lt;/p&gt;&lt;img src="https://media.netresec.com/images/VNC_58D23755_240514163635.jpg" alt="Task Manager in BackConnect VNC session" width="1024" height="832" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;
				The reverse VNC activity spanned a period of over two weeks, which is very impressive for this type of intrusion data set. The threat actors used the BackConnect reverse VNC service to access the machine several times during this period, for example to steal credentials and install additional malware.
			&lt;/p&gt;&lt;p&gt;
				A histogram of interactive BackConnect events, including reverse shell, VNC and file manager sessions, show that the majority of the work was carried out around 12pm UTC.
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/BackConnect-working-hours_943x530.webp" alt="BackConnect working hours histogram" width="943" height="530" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;&lt;b&gt;Keylog of the Attacker&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
				Not only does the BackConnect network traffic from the intrusion allow us to extract screenshots from the VNC traffic. NetworkMiner also extracts the attacker’s hands-on keyboard activity.
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/NetworkMinerProfessional_3-1_Parameters_BackConnect_Key-pressed_REDACTED_524x675.webp" alt="Keys pressed by attacker in BackConnect VNC session" width="524" height="675" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;
				The keylog shows that the attacker accidentally typed &lt;nobr&gt;“cd //”&lt;/nobr&gt; instead of &lt;nobr&gt;“cd ..”&lt;/nobr&gt; at one point. Here’s the screenshot that NetworkMiner extracted from the reverse VNC traffic after the attacker had corrected the typo.
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/VNC_58D23D61_240514161620.jpg" alt="Command shell in VNC session" width="1024" height="832" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;
				This typo might seem a bit odd, but if you compare the US keyboard layout with the Russian Cyrillic one, then you’ll see that the dot key on the Cyrillic keyboard is at the same place as slash on the US keyboard.
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/KB_Russian_1280x427.webp" alt="Russian windows keyboard layout aka JCUKEN for Russian with dot character marked" width="1280" height="427" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;&lt;i&gt;
					Image: Russian Windows keyboard layout &lt;a href="https://en.wikipedia.org/wiki/File:KB_Russian.svg"&gt;from Wikipedia&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;
				This reminds me of another BackConnect infection, captured by &lt;a href="https://infosec.exchange/@malware_traffic"&gt;Brad Duncan&lt;/a&gt;, which he named &lt;a href="https://malware-traffic-analysis.net/2023/09/28/index.html"&gt;IcedID (BokBot) infection with Keyhole VNC and Cobalt Strike&lt;/a&gt;. Here’s a screenshot that NetworkMiner extracted from the PCAP file shared by Brad:
			&lt;/p&gt;&lt;a href="https://media.netresec.com/images/VNC_C40394EC_230928155157.jpg"&gt;&lt;img src="https://media.netresec.com/images/VNC_C40394EC_230928155157_520x317.webp" alt="Attacker types фьфящт instead of amazon in BackConnect VNC session" width="520" height="317" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;/a&gt;&lt;p&gt;
				The attacker can be seen typing “фьфящт” into the browser’s address bar in that VNC session. Фьфящт doesn’t mean anything in Russian, but the individual positions on the Russian keyboard corresponds to “amazon” on a standard Latin keyboard layout.
			&lt;/p&gt;&lt;p&gt;&lt;b&gt;Reverse Shell&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
				NetworkMiner also extracts commands from BackConnect reverse shell sessions.
			&lt;/p&gt;&lt;img src="https://media.netresec.com/images/NetworkMinerProfessional_3-1_Parameters_BackConnect_Shell-command_REDACTED2_524x526.webp" alt="Shell commands from BackConnect session displayed in NetworkMiner Professional" width="524" height="526" style="clear: both; max-width: 100%; height:auto" /&gt;&lt;p&gt;
				This screenshot shows that the attacker sent the following command to the reverse shell:
			&lt;/p&gt;&lt;div style="font-family: 'Lucida Console', Consolas, Monaco, 'Courier New'; background-color: #000000; color: #eeeeee; border: 1px solid #999999; padding: 10px; margin: 10px; overflow: auto; max-width: 100%" x-ms-format-detection="none"&gt;
				rundll32 C:\ProgramData\sys.dll,StartUp471
			&lt;/div&gt;&lt;p&gt;
				This command launched a &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.cobalt_strike"&gt;Cobalt Strike&lt;/a&gt; implant that connected to avtechupdate[.]com. Analysis of the Cobalt Strike C2 traffic is not in the scope for this blog post though, but the &lt;a href="https://thedfirreport.com/2025/09/29/from-a-single-click-how-lunar-spider-enabled-a-near-two-month-intrusion/"&gt;original writeup&lt;/a&gt; for this lab contains additional details on the Cobalt Strike infection.
			&lt;/p&gt;&lt;p&gt;
				The attacker later issued another rundll command to launch another red-team/penetration testing tool, namely &lt;a href="https://malpedia.caad.fkie.fraunhofer.de/details/win.brute_ratel_c4"&gt;Brute Ratel C4&lt;/a&gt;.
			&lt;/p&gt;&lt;div style="font-family: 'Lucida Console', Consolas, Monaco, 'Courier New'; background-color: #000000; color: #eeeeee; border: 1px solid #999999; padding: 10px; margin: 10px; overflow: auto; max-width: 100%" x-ms-format-detection="none"&gt;
				rundll32 wscadminui.dll, wsca
			&lt;/div&gt;&lt;p&gt;
				This Brute Ratel backdoor connected to C2 servers on erbolsan[.]com and a few other domains (see IOC list). The DFIR Report’s &lt;a href="https://thedfirreport.com/2025/09/29/from-a-single-click-how-lunar-spider-enabled-a-near-two-month-intrusion/"&gt;writeup&lt;/a&gt; contains additional information about that payload as well.
			&lt;/p&gt;&lt;p&gt;&lt;b&gt;About The DFIR Report&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
				The DFIR Report provide analysis of cyber intrusions, detailing the tactics, techniques, and procedures used by attackers. They share insights into various attacks, from initial access to execution, and offer private threat briefs and reports for organizations.
			&lt;/p&gt;&lt;p&gt;
				A lab containing Elastic or Splunk data from this infection can be purchased from &lt;a href="https://dfirlabs.thedfirreport.com/store"&gt;The DFIR Report’s store&lt;/a&gt;. Look for the lab titled “The Lunar Tangled Malware Web - Public Case #28761”. The DFIR Report also sell access to a &lt;a href="https://thedfirreport.com/services/threat-intelligence/"&gt;threat intelligence service&lt;/a&gt;, which contains even more detailed lab data from this and other malware infections.
			&lt;/p&gt;&lt;p&gt;
				Netresec is not affiliated with The DFIR Report.
			&lt;/p&gt;&lt;p&gt;&lt;b&gt;IOC List&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
				The analyzed infection is from 2024, so these indicators are in no way fresh. They are included here for research purposes and to facilitate retro hunting.
			&lt;/p&gt;&lt;p&gt;
				BackConnect C2 ip:port
				&lt;ul&gt;&lt;li&gt;185.93.221.12:443&lt;/li&gt;&lt;li&gt;193.168.143.196:443&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;
				Latrodectus domains
				&lt;ul&gt;&lt;li&gt;grasmetral[.]com&lt;/li&gt;&lt;li&gt;illoskanawer[.]com&lt;/li&gt;&lt;li&gt;jarkaairbo[.]com&lt;/li&gt;&lt;li&gt;scupolasta[.]store&lt;/li&gt;&lt;li&gt;workspacin[.]cloud&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;
				Cobalt Strike C2 URI
				&lt;ul&gt;&lt;li&gt;hxxps://resources.avtechupdate[.]com/samlss/vm.ico&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;
				Brute Ratel C4 domains
				&lt;ul&gt;&lt;li&gt;dauled[.]com&lt;/li&gt;&lt;li&gt;erbolsan[.]com&lt;/li&gt;&lt;li&gt;kasym500[.]com&lt;/li&gt;&lt;li&gt;kasymdev[.]com&lt;/li&gt;&lt;li&gt;samderat200[.]com&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Network Forensics Training&lt;/b&gt;&lt;/p&gt;&lt;img src="https://media.netresec.com/images/Training_IR_1000x975.webp" alt="Network forensics training for incident response logo" width="1000" height="975" style="float: right; margin-left: 10px; max-width: 30%; height:auto" /&gt;&lt;p&gt;
				Check out our &lt;a href="https://www.netresec.com/?page=Training"&gt;network forensics training&lt;/a&gt; if you want to learn more about analyzing malware traffic in PCAP files.
			&lt;/p&gt;&lt;p&gt;
				I will teach an online &lt;a href="https://www.netresec.com/?page=TrainingIR"&gt;class for incident responders and blue teams&lt;/a&gt; on February 23-26. That class allows a maximum of 15 attendees in order to provide a good environment for taking questions. So don’t miss out on this chance to get your hands dirty with some packet analysis together with me!
			&lt;/p&gt;</content:encoded>
    </item>
  </channel>
</rss>